MedicationRequest — détail : prescription électronique
Modélisation FHIR de l'ordonnance électronique (eRx). Cœur du workflow eRx US (NCPDP SCRIPT mapping) et FR (DMP / Mon Espace Santé). Inclut le statut/intent, la posologie structurée, la dispensation et la traçabilité prescripteur.
Intent & status workflow
intent distingue :
proposal— suggestion non-engageante (ex : CDSS).plan— protocole théorique (avant prescription effective).order— prescription effective (avec autorité légale).original-order— première prescription d'une série.reflex-order— déclenchée automatiquement par règle clinique.filler-order— pharmacie qui crée l'order interne.instance-order— instance d'un ordre cyclique.option— choix parmi plusieurs.
status : active | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown.
Champs clés
| Champ | Cardinalité | Rôle |
|---|---|---|
status | 1..1 | État courant. |
intent | 1..1 | Voir ci-dessus. |
category | 0..* | inpatient / outpatient / community / discharge. |
medication[x] | 1..1 | CodeableConcept (ATC, RxNorm, CIS) ou Reference(Medication). |
subject | 1..1 | Patient / Group. |
requester | 0..1 | Practitioner / PractitionerRole / Organization / Patient. |
dosageInstruction | 0..* | Posologie structurée (voir section dédiée). |
dispenseRequest | 0..1 | Quantité, refills, durée. |
substitution | 0..1 | Générique autorisé ou pas. |
dosageInstruction structurée
R5 unifie la posologie via la datatype Dosage. Composants :
timing.repeat— fréquence, période, durée.asNeeded[x]— boolean ou CodeableConcept (indication PRN).route— SNOMED CT route d'administration.method— méthode (Inject, Inhale, Apply).doseAndRate.doseQuantity— dose par prise.maxDosePerPeriod— Ratio dose max/période (cap journalier).maxDosePerAdministration— dose max par prise.
Exemple : Doliprane 500 mg PRN douleur
{
"resourceType": "MedicationRequest",
"id": "rx-doliprane-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://fhir.fr/CodeSystem/cis",
"code": "65142359",
"display": "Doliprane 500 mg, comprime"
}]
},
"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 - RPPS 10003040506"
},
"courseOfTherapyType": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/medicationrequest-course-of-therapy",
"code": "acute"
}]
},
"dosageInstruction": [{
"sequence": 1,
"text": "1 comprime toutes les 6 heures si douleur, max 6 par jour",
"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" }]
}
}
} Pièges courants
- Code médicament sans ATC + identifiant local — pour la France, CIS (ANSM) est obligatoire pour le DMP. ATC sert au monitoring populationnel mais pas à la dispensation.
- intent = proposal traité comme order — confusion fréquente côté CDSS qui pousse une « proposal » et le SIH la dispense. À filtrer en amont.
- maxDosePerPeriod absent — la dose paracétamol doit avoir un cap journalier (3 g pour adulte, 60 mg/kg pour enfant). Sans cap, alerte clinique inopérante.
- substitution.allowedBoolean=false sans raison — la mention « non substituable » doit avoir un v3-ActReason valide.