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 — detail: e-prescription

FHIR modelling of the e-prescription (eRx). Core of US eRx workflow (NCPDP SCRIPT mapping) and EU national health records. Includes intent/status, structured dosage, dispensing, and prescriber traceability.

Intent & status workflow

intent distinguishes:

  • proposal — non-binding suggestion (e.g. CDSS).
  • plan — theoretical protocol (before effective prescription).
  • order — effective prescription (with legal authority).
  • original-order — first prescription of a series.
  • reflex-order — automatically triggered by a clinical rule.
  • filler-order — pharmacy creating the internal order.
  • instance-order — instance of a cyclic order.
  • option — choice among multiple.

status: active | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown.

Key fields

FieldCardinalityRole
status1..1Current state.
intent1..1See above.
category0..*inpatient / outpatient / community / discharge.
medication[x]1..1CodeableConcept (ATC, RxNorm, CIS) or Reference(Medication).
subject1..1Patient / Group.
requester0..1Practitioner / PractitionerRole / Organization / Patient.
dosageInstruction0..*Structured dosage (see dedicated section).
dispenseRequest0..1Quantity, refills, duration.
substitution0..1Generic substitution allowed or not.

Structured dosageInstruction

R5 unifies dosage via the Dosage datatype. Components:

  • timing.repeat — frequency, period, duration.
  • asNeeded[x] — boolean or CodeableConcept (PRN indication).
  • route — SNOMED CT administration route.
  • method — method (Inject, Inhale, Apply).
  • doseAndRate.doseQuantity — dose per administration.
  • maxDosePerPeriod — Ratio max dose/period (daily cap).
  • maxDosePerAdministration — max dose per single dose.

Example: Acetaminophen 500 mg PRN for pain

json medicationrequest-acetaminophen.json
{
  "resourceType": "MedicationRequest",
  "id": "rx-acetaminophen-2026-887",
  "status": "active",
  "intent": "order",
  "category": [{
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-admin-location",
      "code": "outpatient"
    }]
  }],
  "priority": "routine",
  "medicationCodeableConcept": {
    "coding": [{
      "system": "http://www.whocc.no/atc",
      "code": "N02BE01",
      "display": "Paracetamol"
    }, {
      "system": "http://www.nlm.nih.gov/research/umls/rxnorm",
      "code": "313988",
      "display": "Acetaminophen 500 MG Oral Tablet"
    }]
  },
  "subject": { "reference": "Patient/marie-durand-887" },
  "encounter": { "reference": "Encounter/cons-2026-05-19-887" },
  "authoredOn": "2026-05-19T15:30:00+02:00",
  "requester": {
    "reference": "Practitioner/dr-bernard-claude",
    "display": "Dr Claude BERNARD - NPI 1234567890"
  },
  "courseOfTherapyType": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-course-of-therapy",
      "code": "acute"
    }]
  },
  "dosageInstruction": [{
    "sequence": 1,
    "text": "1 tablet every 6 hours as needed for pain, max 6 per day",
    "timing": {
      "repeat": {
        "boundsDuration": { "value": 5, "unit": "d", "system": "http://unitsofmeasure.org" },
        "frequency": 4,
        "period": 1,
        "periodUnit": "d"
      }
    },
    "asNeededCodeableConcept": {
      "coding": [{ "system": "http://snomed.info/sct", "code": "22253000", "display": "Pain" }]
    },
    "route": {
      "coding": [{ "system": "http://snomed.info/sct", "code": "26643006", "display": "Oral route" }]
    },
    "doseAndRate": [{
      "doseQuantity": { "value": 500, "unit": "mg", "system": "http://unitsofmeasure.org" }
    }],
    "maxDosePerPeriod": [{
      "numerator": { "value": 3000, "unit": "mg", "system": "http://unitsofmeasure.org" },
      "denominator": { "value": 1, "unit": "d", "system": "http://unitsofmeasure.org" }
    }]
  }],
  "dispenseRequest": {
    "quantity": { "value": 20, "unit": "tablets" },
    "numberOfRepeatsAllowed": 0,
    "expectedSupplyDuration": { "value": 5, "unit": "d", "system": "http://unitsofmeasure.org" }
  },
  "substitution": {
    "allowedBoolean": true,
    "reason": {
      "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "FP" }]
    }
  }
}

Common pitfalls

  • Medication code without ATC + local identifier — for France, CIS (ANSM) is mandatory for the DMP. ATC is used for population monitoring but not dispensing.
  • intent = proposal treated as order — frequent CDSS confusion: a "proposal" is pushed and the HIS dispenses it. Filter upstream.
  • maxDosePerPeriod missing — acetaminophen dose must have a daily cap (3 g for adults, 60 mg/kg for children). Without cap, clinical alerts are ineffective.
  • substitution.allowedBoolean=false without reason — "non-substitutable" mention must have a valid v3-ActReason.