ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

MedicationRequest — Medication prescription

The medication prescription in FHIR. Covers outpatient e-prescriptions, hospital orders, named prescriptions, and refills.

Purpose

MedicationRequest represents an order, request or recommendation for medication for a patient. The FHIR counterpart of OrderMessage for medications. Covers:

  • outpatient e-prescriptions sent to a pharmacist;
  • inpatient orders dispensed by the hospital pharmacy;
  • named individual prescriptions;
  • refills for chronic treatments;
  • clinical decision support recommendations (intent plan, proposal).

For the actual dispense event, see MedicationDispense. For observed administration, see MedicationAdministration (hospital). For the patient's known regimen without an identifiable prescription, see MedicationStatement.

Key fields

FieldTypeCardinalityRole
identifierIdentifier[]0..*External identifiers (prescription number).
statuscode1..1active, on-hold, ended, stopped, completed, cancelled, entered-in-error, draft, unknown.
statusReasonCodeableConcept0..1Status reason (stopped on side effect, allergy…).
intentcode1..1proposal, plan, order, original-order, reflex-order, filler-order, instance-order, option.
categoryCodeableConcept[]0..*Administration location (inpatient, outpatient, community, discharge…).
prioritycode0..1routine, urgent, asap, stat.
doNotPerformboolean0..1Explicit contra-indication — do NOT prescribe.
medicationCodeableReference(Medication)1..1Medication — RxNorm, ATC, local code, or Medication resource.
subjectReference(Patient | Group)1..1Patient.
encounterReference(Encounter)0..1Prescription encounter.
authoredOndateTime0..1Prescription date.
requesterReference0..1Prescriber (Practitioner, PractitionerRole, Organization, Patient…).
reasonCodeableReference(Condition | Observation)[]0..*Reason (clinical indication).
courseOfTherapyTypeCodeableConcept0..1Course type (acute, continuous, seasonal).
insuranceReference(Coverage | ClaimResponse)[]0..*Associated coverage.
noteAnnotation[]0..*Prescriber notes.
dosageInstructionDosage[]0..*Dosage (see dedicated section).
dispenseRequestBackboneElement0..1Dispense conditions (quantity, refills, validity, expected dispenser).
substitutionBackboneElement0..1Generic substitution allowed or not.
priorPrescriptionReference(MedicationRequest)0..1Previous prescription (refill chain).

dosageInstruction

Central sub-element that structures dosage. Main fields:

  • text — human-readable free-text ("1 capsule 3 times daily for 7 days").
  • timing.repeat.frequency + timing.repeat.period + timing.repeat.periodUnit — frequency.
  • timing.repeat.boundsDuration or boundsPeriod — total duration.
  • route — route of administration (SNOMED CT).
  • method — method (slow infusion, sublingual…).
  • doseAndRate[].doseQuantity or doseRange — unit dose.
  • doseAndRate[].rateQuantity — flow rate (infusions).
  • maxDosePerPeriod — maximum dose per period.
  • asNeededFor — PRN medication with indication.

JSON example

Amoxicillin 500 mg PO, 3×/day, 7 days, indication otitis media:

json medicationrequest-example.json
{
  "resourceType": "MedicationRequest",
  "id": "example",
  "status": "active",
  "intent": "order",
  "category": [{
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-admin-location",
      "code": "inpatient",
      "display": "Inpatient"
    }]
  }],
  "priority": "routine",
  "medication": {
    "concept": {
      "coding": [{
        "system": "http://www.nlm.nih.gov/research/umls/rxnorm",
        "code": "197361",
        "display": "Amoxicillin 500 MG Oral Capsule"
      }, {
        "system": "http://snomed.info/sct",
        "code": "323510009",
        "display": "Amoxicillin 500mg capsule"
      }],
      "text": "Amoxicillin 500 mg oral capsule"
    }
  },
  "subject": { "reference": "Patient/example" },
  "encounter": { "reference": "Encounter/example" },
  "authoredOn": "2026-05-14T11:00:00+01:00",
  "requester": { "reference": "Practitioner/example" },
  "reason": [{
    "concept": {
      "coding": [{
        "system": "http://snomed.info/sct",
        "code": "65363002",
        "display": "Otitis media"
      }]
    }
  }],
  "dosageInstruction": [{
    "sequence": 1,
    "text": "1 capsule by mouth, 3 times daily, for 7 days.",
    "timing": {
      "repeat": {
        "frequency": 3,
        "period": 1,
        "periodUnit": "d",
        "boundsDuration": { "value": 7, "unit": "d", "system": "http://unitsofmeasure.org", "code": "d" }
      }
    },
    "route": {
      "coding": [{
        "system": "http://snomed.info/sct",
        "code": "26643006",
        "display": "Oral route"
      }]
    },
    "doseAndRate": [{
      "type": {
        "coding": [{
          "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type",
          "code": "ordered",
          "display": "Ordered"
        }]
      },
      "doseQuantity": {
        "value": 1,
        "unit": "capsule",
        "system": "http://unitsofmeasure.org",
        "code": "{capsule}"
      }
    }]
  }],
  "dispenseRequest": {
    "validityPeriod": {
      "start": "2026-05-14",
      "end": "2026-05-21"
    },
    "numberOfRepeatsAllowed": 0,
    "quantity": {
      "value": 21,
      "unit": "capsule",
      "system": "http://unitsofmeasure.org",
      "code": "{capsule}"
    }
  },
  "substitution": {
    "allowedBoolean": true
  }
}
  • medication dual-coded — RxNorm 197361 + SNOMED 323510009.
  • dosageInstruction with structured timing: 3 times per 1 day, bounds 7 days.
  • route = oral (SNOMED 26643006).
  • dispenseRequest.quantity = 21 capsules — consistent with 3 × 7.
  • substitution.allowedBoolean = true — generic substitution allowed.

REST API

  • GET /MedicationRequest/example — direct fetch.
  • GET /MedicationRequest?patient=example&status=active — active treatments.
  • GET /MedicationRequest?patient=example&authoredon=ge2026-01-01 — recent prescriptions.
  • GET /MedicationRequest?patient=example&medication.code=http://www.nlm.nih.gov/research/umls/rxnorm|197361 — history of amoxicillin.
  • $lookup on an RxNorm code to retrieve drug details.

Profiles

ProfileRegulatorRestrictions
US Core MedicationRequestHL7 US RealmMust carry status, intent, medication (RxNorm), subject, authoredOn, requester.
IPS MedicationRequestHL7 + CEN/TC 251Cross-border. medication coded SNOMED and/or ATC.
FR Core MedicationRequestANSFrench profile — CIP / UCD for the drug, ICD-10 for reason.

Common pitfalls

  • status=active + intent=plan: inconsistent. A plan is not an active prescription. For execution, intent=order.
  • medication.concept without RxNorm/ATC coding: free-text-only prescriptions are not interoperable. Always code.
  • dispenseRequest.quantitydosageInstruction × duration: an order of 3 tab/day for 7 days but 50 tablets dispensed is suspicious (and illegal in several jurisdictions).
  • Mixing doseQuantity and doseRange: only one at a time per doseAndRate.
  • Refill without priorPrescription: breaks chronic treatment traceability.
  • Malformed UCUM: mg is valid UCUM, milligram is not. {capsule} (with braces) for enumerable units.
  • Patient — subject.
  • Encounter — context.
  • Practitioner — prescriber.
  • Medication — drug detail (form, composition, manufacturer).
  • MedicationDispense — pharmacy dispense.
  • MedicationAdministration — observed administration (hospital).
  • MedicationStatement — known regimen (anamnesis).
  • Condition — referenced via reason (indication).
  • HL7 v2 equivalentORM^O01 segments RXO / RXE / RXR.