Schema Care

Extracting Drug Strength Dose and Refills From Prescriptions

By Schema CarePublished Updated

Extracting drug, strength, dose and refills from prescriptions means splitting each prescription line into separate fields: the drug name, the strength of one unit, the dose per administration, the route and frequency from the directions, the quantity to dispense, the number of refills and the prescriber. Record each exactly as written, then expand abbreviations into separate normalized fields.

Which fields does a prescription hold?

A prescription holds a small, fixed set of fields: who it is for, which drug, what strength, how much to take and how often, how much to dispense, how many refills, and who wrote it and when. Paper, fax and printed e-prescription copies arrange them differently, but the same fields appear on nearly all of them.

Coded health data names the same parts. The ONC USCDI Medications data class in published version 6 lists Medications (coded in RxNorm), Dose, Dose Unit of Measure (in UCUM), Route of Administration, Indication, Dispense Status and Medication Instructions, which it describes as directions that may include route, quantity, timing or frequency, and special instructions such as PRN. The HL7 FHIR R4 MedicationRequest resource adds the dispensing side: a quantity "to be dispensed for one fill", a number of repeats allowed, the requester and the date the prescription was authored.

For extraction, one prescription line becomes one record with these fields:

FieldWhat it holdsExample value (fictional)
PatientName and date of birth as printedLena Marsh, 1981-04-09
DrugThe drug name as writtenZorvatrin
StrengthAmount of drug in one unit25 mg
Dose formTablet, capsule, solutiontablet
Sig (as written)The directions, unchanged1 tab PO BID
DoseUnits per administration1 tablet
RouteHow it is takenoral
FrequencyHow oftentwice a day
QuantityAmount to dispense60
RefillsFills after the first2
PrescriberName and any printed identifierDr. Ana Feld (example)
Date writtenThe date on the prescription2025-05-20
SourceDocument and pageFaxed prescription, page 1

Keep the sig as written in its own field even after you split it. The original text is the only thing a reviewer can compare against, and it preserves wording such as "with food" that does not fit a structured field. All drug names in this post are invented, so no example here describes a real product or a real dose.

Strength versus dose on a prescription

Strength and dose are different fields on a prescription. Strength is the amount of drug in one unit of the product, such as 25 mg per tablet or 5 mg per mL. Dose is how much the patient takes each time, such as one tablet or 10 mL. Mixing them up is one of the most common extraction errors.

Drug naming standards build strength into the product name. The NLM RxNorm overview says a normalized name "consists of the ingredient, strength, and dose form (in that order)", with its own example "Naproxen 250 MG Oral Tablet". That is the product, not the instruction. The dose comes from the directions: "take 2 tablets" of a 250 mg tablet is a dose of two tablets, which a downstream system may express as 500 mg.

Three patterns cause most strength and dose confusion:

  • Strength written only once. "Zorvatrin 25 mg, 2 tabs daily" has a strength of 25 mg and a dose of 2 tablets. Storing 25 mg as the dose loses half the instruction.
  • Liquid products. "Pellaxa 5 mg/5 mL, 10 mL BID" has a concentration as its strength and a volume as its dose. Keep the ratio intact; do not reduce it to "5 mg".
  • Dose ranges. "1 to 2 tabs" is a range. Store a minimum and maximum, or keep the text, but do not pick one number.

Do not calculate a total dose unless your project's data dictionary asks for it, and if it does, store the result in a separate derived field. The extracted record should still show the strength and the dose exactly as the prescriber wrote them, so any arithmetic can be checked.

Sig abbreviations and how to normalize them

Sig abbreviations are the shorthand prescribers use in the directions, such as "1 tab PO BID". Normalizing them means keeping the original string and filling separate fields for dose, route, frequency and any as-needed condition, using a fixed table that maps each abbreviation to one standard value. The table is written once and applied the same way every time.

Standard code lists give you a defensible mapping instead of a homemade one. The HL7 timing abbreviation code system defines BID as twice a day, TID as three times a day, QID as four times a day and Q4H as every four hours, each at times the institution sets. The NCI Thesaurus entry for oral route of administration lists PO as an abbreviation for oral. The HL7 FHIR R4 Dosage data type shows the target shape: free text for the sig, plus timing, an as-needed flag or condition, route and dose.

So "1 tab PO BID" becomes dose 1 tablet, route oral, frequency twice a day, as needed no, sig "1 tab PO BID". A few rules keep normalization honest:

  1. Map only what the table covers. If an abbreviation is not in your table, leave the structured field blank and flag the line.
  2. Keep PRN conditions as text. "PRN pain" sets the as-needed flag and keeps "pain" as the condition, word for word.
  3. Do not resolve ambiguous abbreviations by guessing. Some abbreviations have more than one meaning or are easily misread (see the last section). Those go to a person.
  4. Keep the original casing and punctuation in the sig field. "q.d." and "QD" are the same to a person but may matter to an audit.

Fictional prescription lines, extracted

Every drug name, patient and value below is invented for this example.

Line as writtenDrugStrengthDoseRouteFrequencyQtyRefills
Zorvatrin 25 mg tab, 1 tab PO BID, #60, RF x2Zorvatrin25 mg1 tabletoraltwice a day602
Pellaxa 5 mg/5 mL soln, 10 mL PO TID, disp 300 mL, no refillsPellaxa5 mg/5 mL10 mLoralthree times a day300 mL0
Quindrel 10 mg cap, 1 cap PO Q4H PRN cough, #20, NRQuindrel10 mg1 capsuleoralevery 4 hours, as needed (cough)200
Tavimet 0.5 mg tab, 1/2 tab PO daily, #15, refills: 5Tavimet0.5 mghalf tabletoraldaily155

How are refills and quantity written on prescriptions?

Refills and quantity are written in many shorthand forms. Quantity may appear as "#60", "disp: 60", "qty 60" or "sixty (60)". Refills may appear as "RF x3", "refills: 3", "3 refills", "NR", "no refills" or a checked box. Each needs a fixed reading so that "RF x3" always becomes the number 3.

The key point is what a refill count means. The FHIR MedicationRequest resource defines its repeats field as the number of times a prescription may be dispensed "in addition to the original dispense", and notes that a prescriber may explicitly permit zero refills. So "RF x3" means up to four fills in total, and the extracted refills field should hold 3, not 4.

Some prescriptions carry rules that limit what a refill field can say. For controlled substances, federal regulation sets hard limits: 21 CFR 1306.12 states that refilling a Schedule II prescription is prohibited, and 21 CFR 1306.22 says Schedule III or IV prescriptions may not be filled or refilled more than six months after issue or refilled more than five times. For extraction, those rules are a data check: a refill count above five on a line marked as Schedule III or IV does not fit that rule, so it may be a misread, or the schedule mark may be. Flag it; do not correct it.

Edge cases worth writing into the data dictionary:

  • "PRN refills" or "refill as needed": keep as text and flag; there is no number to store.
  • Blank refill field: record as "not stated", which is different from zero.
  • Quantity in words and numbers that disagree: "thirty (60)" goes to review.
  • Days' supply instead of quantity: "30-day supply" is not a quantity. Store it in its own field.

How a single prescription fits into a full medication list built from many documents is covered in the fields every medication list entry needs.

Prescription misreads that change a drug or number

Prescription misreads that matter most are the ones that change a number by a factor of ten or more, or swap one drug name for another. Decimal points, zeros, unit abbreviations and look-alike drug names cause most of them. Each needs a check that sends the line to a person rather than letting a confident wrong value through.

Medication safety groups have documented the patterns for years. An FDA page on preventing medication errors, written for animal drugs reports tenfold overdoses in people from written doses where "5.0 mg" was misread as "50 mg" and ".5 mg" was mistaken for "5 mg", and lists "U" for units misread as a zero. ISMP Canada's list of dangerous abbreviations, adapted from the ISMP list and reaffirmed in 2018, adds that QD and QOD have been mistaken for each other or for QID, that "cc" has been mistaken for "u", and that "µg" has been mistaken for "mg".

Those same patterns hit OCR, because a scanner sees what a pharmacist sees:

  • Trailing zeros: "5.0" with a faint decimal reads as 50.
  • Missing leading zeros: ".5" with a faint dot reads as 5. The fictional Tavimet line above is written "0.5 mg" for this reason.
  • U for units: "10U" reads as 100.
  • QD and QOD: one dot or letter decides between daily and every other day.
  • Look-alike drug names: two names that differ by one or two letters read as each other in poor handwriting. A drug-name check against your formulary list catches names that do not exist, but not a swap between two real ones.

Checks for extraction are about the page, not the patient. A strength that does not match any product strength on the project's reference list, a number with a trailing zero, or an abbreviation from the dangerous list should each route the line to review with the image beside it. Deciding whether a dose is right for anyone is clinical work and outside extraction.

This is where field-level evidence earns its place. Schema Care reads prescriptions into drug, strength, dose, quantity, refills and prescriber, gives each field a confidence score, and sends the uncertain ones to a reviewer, as the document types Schema Care reads list shows. Prescriptions often arrive by fax inside larger packets; the medical faxes and referrals category covers that intake. Dating each document in those packets is covered in finding encounter dates in a long medical record, and how charts differ between systems is explained in electronic health records and electronic medical records.

All posts in Clinical Records and Abstraction