1. Medication Workflow in FHIR
FHIR provides a series of Resources to describe the entire medication process, from prescribing to dispensing and administration.
Bác sĩ kê đơn Dược sĩ cấp phát Điều dưỡng cho thuốc
│ │ │
▼ ▼ ▼
MedicationRequest ──▶ MedicationDispense ──▶ MedicationAdministration
│ │
│ MedicationStatement ◀────────────┘
│ (bệnh nhân tự báo cáo)
▼
Medication
(thông tin thuốc)
2. Medication Resource
Medication Describe information about the drug: name, ingredients, dosage form, manufacturer.
{
"resourceType": "Medication",
"id": "med-amlodipine-5mg",
"code": {
"coding": [
{
"system": "http://www.whocc.no/atc",
"code": "C08CA01",
"display": "Amlodipine"
}
],
"text": "Amlodipine 5mg"
},
"doseForm": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "385055001",
"display": "Tablet dose form"
}
],
"text": "Viên nén"
},
"ingredient": [
{
"item": {
"concept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "386864001",
"display": "Amlodipine"
}
]
}
},
"isActive": true,
"strengthRatio": {
"numerator": {
"value": 5,
"unit": "mg",
"system": "http://unitsofmeasure.org",
"code": "mg"
},
"denominator": {
"value": 1,
"unit": "tablet",
"system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm",
"code": "TAB"
}
}
}
]
}
3. MedicationRequest — Prescription
MedicationRequest (formerly known as MedicationOrder) records drug prescription orders.
Important elements
| Element | Cardinality | Description |
|---|---|---|
| status. status | 1..1 | active | on-hold | ended | stopped | completed | canceled | draft. draft |
| intent. intent | 1..1 | proposals | plan | order | original-order | reflex-order | filler-order | instance-order | option. option |
| medication. medication. medication | 1..1 | Reference(Medication) or CodeableConcept |
| subject. subject | 1..1 | Reference(Patient) |
| encounter. encounter | 0..1 | Reference(Encounter) |
| requester | 0..1 | Reference(Practitioner) |
| dosageInstruction | 0..* | Dosage instructions |
| dispenseRequest | 0..1 | Dispensing requirements (quantity, refills, validityPeriod) |
| substitution | 0..1 | Are drug substitutions allowed? |
Example: Blood pressure prescription
{
"resourceType": "MedicationRequest",
"id": "mr-amlodipine-001",
"status": "active",
"intent": "order",
"medication": {
"reference": {
"reference": "Medication/med-amlodipine-5mg",
"display": "Amlodipine 5mg"
}
},
"subject": {
"reference": "Patient/patient-001",
"display": "Nguyễn Văn A"
},
"encounter": {
"reference": "Encounter/encounter-outpatient-001"
},
"authoredOn": "2025-01-15T08:40:00+07:00",
"requester": {
"reference": "Practitioner/practitioner-001",
"display": "BS. Trần Thị B"
},
"reason": [
{
"reference": {
"reference": "Condition/cond-hypertension-001",
"display": "Tăng huyết áp nguyên phát"
}
}
],
"dosageInstruction": [
{
"sequence": 1,
"text": "Uống 1 viên mỗi sáng sau ăn",
"timing": {
"repeat": {
"frequency": 1,
"period": 1,
"periodUnit": "d",
"when": ["ACM"]
}
},
"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"
}
]
},
"doseQuantity": {
"value": 1,
"unit": "tablet",
"system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm",
"code": "TAB"
}
}
]
}
],
"dispenseRequest": {
"numberOfRepeatsAllowed": 3,
"quantity": {
"value": 30,
"unit": "tablet"
},
"expectedSupplyDuration": {
"value": 30,
"unit": "days",
"system": "http://unitsofmeasure.org",
"code": "d"
}
}
}
4. MedicationAdministration
Record actual medication administration (nurse giving inpatient medication/injection).
{
"resourceType": "MedicationAdministration",
"id": "ma-001",
"status": "completed",
"medication": {
"reference": {
"reference": "Medication/med-amlodipine-5mg"
}
},
"subject": {
"reference": "Patient/patient-001"
},
"occurenceDateTime": "2025-01-16T07:00:00+07:00",
"performer": [
{
"actor": {
"reference": {
"reference": "Practitioner/practitioner-002",
"display": "ĐD. Lê Thị C"
}
}
}
],
"request": {
"reference": "MedicationRequest/mr-amlodipine-001"
},
"dosage": {
"text": "1 viên uống",
"route": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "26643006",
"display": "Oral route"
}
]
},
"dose": {
"value": 5,
"unit": "mg",
"system": "http://unitsofmeasure.org",
"code": "mg"
}
}
}
5. Immunization — Vaccination
{
"resourceType": "Immunization",
"id": "imm-covid-001",
"status": "completed",
"vaccineCode": {
"coding": [
{
"system": "http://hl7.org/fhir/sid/cvx",
"code": "208",
"display": "SARS-COV-2 (COVID-19) vaccine, mRNA, spike protein, LNP, preservative free, 30 mcg/0.3mL dose"
}
],
"text": "Pfizer-BioNTech COVID-19 Vaccine"
},
"patient": {
"reference": "Patient/patient-001"
},
"encounter": {
"reference": "Encounter/encounter-vaccination-001"
},
"occurrenceDateTime": "2024-03-15T09:30:00+07:00",
"primarySource": true,
"location": {
"reference": "Location/loc-vaccination-center"
},
"lotNumber": "EW0150",
"expirationDate": "2024-09-30",
"site": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ActSite",
"code": "LA",
"display": "Left arm"
}
]
},
"route": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-RouteOfAdministration",
"code": "IM",
"display": "Intramuscular"
}
]
},
"doseQuantity": {
"value": 0.3,
"unit": "mL",
"system": "http://unitsofmeasure.org",
"code": "mL"
},
"performer": [
{
"function": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0443",
"code": "AP",
"display": "Administering Provider"
}
]
},
"actor": {
"reference": "Practitioner/practitioner-002"
}
}
],
"protocolApplied": [
{
"series": "COVID-19 Primary Series",
"doseNumber": "2"
}
]
}
6. Drug coding system
| CodeSystem | Purpose | Scope |
|---|---|---|
| ATC (WHO) | Classification of drugs | International |
| RxNorm (NLM) | Standardized drug name | United States |
| SNOMED CT | Clinical terminology (including drugs) | International |
| CVX (CDC) | Vaccine code | United States (widely used) |
| NDC | National Drug Code | United States |
7. Summary
Medication — Drug information (ingredients, dosage form)
MedicationRequest — Prescription commands (dosage, dispense, substitution)
MedicationAdministration — Attribution for actual medicine
MedicationDispense — Pharmacist dispenses medicine
Immunization — Vaccination with complete vaccine information, dose, lot
Using CodeSystems: ATC, RxNorm, CVX, SNOMED CT