Capturing drug strength in a structured way in database

Currently for “Paracetamol Tablet” we store “100mg” as strength. Capturing strength is not useful for doing calculations of how many tablets to prescribe if doctor orders 1000 mg. If the strength is broken up into quantity and unit then this problem can be solved. Or is this something which should be handled some other way. Thanks

Strength is a property of the drug formulation. A paracetamol 100 mg tablet has a strength of 100 mg, no matter what the doctor says.

Dose is the amount of drug prescribed for the patient. In most cases for solid forms (tabs, capsules) this either matches the strength or is a multiple of it (rarely a fraction for tabs that are scored to be split). In some cases (can vary by doctor or by institutional culture), doctors will order by form units (e.g., tabs or capsules) instead of specifying milligrams. For liquid forms of drugs (e.g., solutions and intravenous fluids), the strength is often given as a concentration and the dose (amount to give patient) is frequently specified as a rate or a weight-based amount.

For outpatient prescriptions, quantity & quantity units specifies how much should be dispensed to the patient. In many cases, this is given using the same units as the drug form (e.g., tablets are dispensed as number of tablets), but this is not always the case. For example, some drugs are packaged or bottled and dispensed in these units (e.g., “1 bottle”, “2 vials”, or “1 package”).

So, I believe you are asking about dose and dose units, correct?

I believe that @vsingh is in fact talking about automatically calculating DrugOrder.quantity/quantityUnits for outpatient prescriptions, based on the Drug’s strength and the DrugOrder’s dose/doseStrength. E.g. automatically calculate the number of tablets needed if you write a prescription of {dose:1000, doseStrength:“mg”, frequency:5, duration:“days”} for the drug with {strength:“100mg”}.

Up until OpenMRS 1.9 we actually stored the two fields separately (see doseStrength and unit here). However this only works for the 80% case: you can’t represent a combination drug that way, so in OpenMRS 1.10 we changed the model to purely store this as a string.

In openmrs-core 1.11 we introduced a drug_ingredient table which lets you represent the precise composition of a drug. See DrugIngredient.java and TRUNK-2193.

Ways I can think of to approach this):

  1. Upgrade to openmrs-core 1.11, populate the drug_ingredient table, and calculate based on this
  2. Have the drug order entry UI push people to prescribe a number of pills rather than a number of mg. (This is what we did in the Ebola module, and it works well with the morning/noon/night dosing that Bahmni supports.)
  3. Make sure that Drug.strength’s String value is systematic, so 80% of the time you can parse it into strength + unit, and calculate based on that. (This would be a great thing to put in a new module called something like “unitcalculations”.)

The last options is definitely the least intrusive.

Yes i remember the late night discussion in Maputo on this now.

But yes I meant what @darius Darius is saying. Seems like option 1 is the best thing to do. We will analyse this on our side and get back with way forward. We will use option 3 to migrate data, since it has been stored in this fashion.

Thanks