HL7 RXE → FHIR MedicationRequest
In an RDE (pharmacy order) message, the RXE (encoded order) segment becomes a FHIR R4 MedicationRequest. The give code is required; the dose becomes a quantity or, for a min–max, a dose range — and the status comes from the order control, never fabricated.
An HL7 RXE segment maps to a FHIR MedicationRequest: RXE-2→medicationCodeableConcept (RxNorm), RXE-3/4/5→dosageInstruction.doseAndRate (quantity or range + unit), RXE-7→dosage text, RXE-15→identifier, with intent order and status from the ORC.
Field-by-field
| HL7 field | FHIR path | Notes |
|---|---|---|
| RXE-2 | MedicationRequest.medicationCodeableConcept | Give code (RxNorm). Required — without it the segment is surfaced, not mapped. |
| RXE-3 / RXE-4 / RXE-5 | dosageInstruction.doseAndRate | Give amount min/max + units → doseQuantity, or doseRange when both are numeric. |
| RXE-7 | dosageInstruction.text | Administration instructions. |
| RXE-15 | MedicationRequest.identifier | Prescription number. |
| (from ORC) | MedicationRequest.status / intent | Intent order; status from ORC-5/ORC-1 (unknown when absent — never invented). |
| RXE-1, 6, 10, 13, 21 | — surfaced | Dose frequency, dosage form, dispense amount, ordering-provider DEA, special dispensing instructions are surfaced for review. |
Live example
This is produced by the actual converter — paste your own message and it runs the same way, entirely in your browser.
MSH|^~\&|RDE|PHARM|ZK|MERIDIAN|20240101103000||RDE^O11|MSG1|P|2.5.1 PID|1||MRN123^^^HOSP^MR||DOE^JANE||19850312|F ORC|NW RXE|1^BID|310965^Lisinopril 10 MG Oral Tablet^RXNORM|10||mg|TAB
{
"resourceType": "MedicationRequest",
"id": "medication-1",
"status": "active",
"intent": "order",
"medicationCodeableConcept": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "310965",
"display": "Lisinopril 10 MG Oral Tablet"
}
],
"text": "Lisinopril 10 MG Oral Tablet"
},
"subject": {
"reference": "urn:uuid:00000000-0000-4000-8000-000000000001"
},
"dosageInstruction": [
{
"doseAndRate": [
{
"doseQuantity": {
"value": 10,
"unit": "mg"
}
}
]
}
]
}What didn’t map (surfaced, never dropped)
The engine flags every field it can’t place in FHIR so a human can decide — nothing is silently lost.
- RXE-1 (Quantity/timing (dose frequency)) present but not yet mapped to FHIR; value preserved for review: 1^BID
- RXE-6 (Dosage form) present but not yet mapped to FHIR; value preserved for review: TAB
Related mappings
Zkeleton builds conversion and data infrastructure for healthcare. This converter is free, runs entirely in your browser, and never sends a message anywhere — we keep it open because clean data plumbing should be a commodity, not a toll.