MedicationRequest Handling in FHIR: 5 Patterns for E-Prescribing in 2026

Diagram: MedicationRequest Handling in FHIR: 5 Patterns for E-Prescribing in 2026. Diagram illustrating the article's core structure and decision points.

E-prescribing on FHIR looks straightforward on paper — pick a MedicationRequest resource, populate the ingredient, quantity, and prescriber, POST it to your FHIR server. In production, five patterns handle the parts the resource definition leaves ambiguous.

Pattern 1: External MedicationCodeableConcept vs. contained Medication. The MedicationRequest resource supports both a coded reference to an RxNorm/SNOMED concept and a contained Medication resource with detailed ingredient breakdown. The unspoken tradeoff: contained Medication scales badly because every prescription of a compound ends up with a bespoke resource. Systems averaging >1M prescriptions/year should normalize on a canonical Medication resource per RxNorm ingredient set and reference it by URL. The US Core MedicationRequest profile recommends this same pattern for CMS-0057 attestation traffic.

Pattern 2: dispenseRequest.quantity semantics for compound scripts. The quantity element on MedicationRequest.dispenseRequest is ambiguous for compounded prescriptions where the doctor writes "180 g of X" but the pharmacy dispenses "3 × 60 g jars". Two production practices seen: (a) use dispenseRequest.quantity for what the pharmacy will bill and store the prescribed amount in a separate patient-intent extension; (b) generate two dispenseRequests, one authorized, one actual. Pattern (a) has fewer downstream reconciliation problems and aligns with the NCPDP-to-FHIR mapping guidance for compound scripts.

Pattern 3: substitution.allowedBoolean when payer changes formulary mid-fill. NCPDP SCRIPT has a well-understood "brand medically necessary" DAW code that maps to MedicationRequest.substitution. What the spec doesn't cover: what happens when payer flips a brand to formulary-preferred generic between authorization and first fill. In production, EHRs that don't re-check substitution.allowed before dispensing generate 12–15% avoidable pharmacy callback rate. The MedicationRequest R4 specification leaves the timing question open, and pharmacy operations teams generally recommend a re-check at each fill event.

Pattern 4: dosageInstruction as structured data vs. free text. The spec allows either a structured Dosage object or a plain-text text field. Real EHRs still hit text-only in ~40% of prescriptions because the dose complexity (titrate up, PRN, sliding scale) exceeds what the structured Dosage object cleanly represents. Downstream systems that need structured dosage — pharmacy adherence tools, decision-support — should treat text as input and run their own parser rather than assume upstream structuring.

Pattern 5: Sig tapering — the recurring blind spot. FHIR has no first-class way to express "taper prednisone 40 mg × 3 days, then 30 mg × 3 days, etc." The US Core MedicationRequest profile acknowledges this gap and suggests either N discrete MedicationRequests linked by basedOn, or Dosage.sequence with N Dosage elements. The N-MedicationRequests approach fits pharmacy workflows better because dispense events map cleanly; Dosage.sequence keeps the "one script" mental model but forces pharmacy systems to synthesize dispense events.

Vendor support matrix (2026)

System Structured Dosage Taper dispenseRequest.quantity substitution.allowed
Epic (Rx) Yes Basic Full Yes
Cerner Powerchart Yes No Full Yes
Athenaclinicals Partial No Full Partial
InterSystems IRIS for Health Yes Yes Full Yes

The MedicationRequest resource does the job for common prescribing, and the five patterns above cover the recurring rough edges. What still requires implementer decisions is compound dispensing and taper sequencing — neither is a FHIR problem, but the resource shape doesn't solve them automatically.