Design Overview
A FHIR Dosage structure will always be included within the relevant FHIR Resource, e.g. MedicationRequest
, MedicationDispense
, or MedicationStatement
. The resource defines the medication, the Dosage defined the dose.
All references to medication must use the NHS standard of dm+d, which is published as an independent terminology product using XML format data as well as being included in the SNOMED-CT UK Drug extension.
The dm+d code used within a medication resource will vary depending on the level of detail required by the prescriber. The most generic instruction would specify a Virtual Therapeutic Moiety (VTM) plus a dosage instruction.
The most specific instruction, for the purposes of prescribing, would specify an Actual Medicinal Product (AMP) plus a dosage instruction.
NHS dm+d concepts and impact on use of Dosage
Virtual Therapeutic Moiety (VTM)
The most generic representation of a medication that only conveys the medication, e.g. Paracetamol
.
The Dosage would typically express the dose as a weight or volume of medication, plus all other instructions required by the prescriber.
For example;
100 milligrams - twice a day - for 7 days
instead of
2 tablets - twice a day - for 7 days
(as when using a VTM the strength of a tablet would not be known)
<!-- Example referencing a Virtual Therapeutic Moiety (VTM) as a contained resource --> <MedicationRequest xmlns="http://hl7.org/fhir"> <id value="0e79d939-bca0-4970-9e26-8c12e9a45620" /> <contained> <Medication> <id value="med1" /> <code> <coding> <system value="http://snomed.info/sct" /> <code value="90332006" /> <display value="Paracetamol" /> </coding> </code> </Medication> </contained> <status value="active" /> <intent value="order" /> <medicationReference> <reference value="#med1" /> </medicationReference> <subject> <identifier> <system value="https://fhir.nhs.uk/Id/nhs-number" /> <value value="9999999999" /> </identifier> </subject> <dosageInstruction> <timing> <repeat> <frequencyMax value="4" /> <period value="1" /> <periodUnit value="d" /> </repeat> </timing> <route> <coding> <system value="http://snomed.info/sct" /> <code value="26643006" /> <display value="oral" /> </coding> </route> <doseQuantity> <value value="500" /> <unit value="milligram" /> <system value="http://unitsofmeasure.org" /> <code value="mg" /> </doseQuantity> </dosageInstruction> </MedicationRequest>
{ "resourceType": "MedicationRequest", "id": "0e79d939-bca0-4970-9e26-8c12e9a45620", "contained": [ { "resourceType": "Medication", "id": "med1", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "90332006", "display": "Paracetamol" } ] } } ], "status": "active", "intent": "order", "medicationReference": { "reference": "#med1" }, "subject": { "identifier": { "system": "https://fhir.nhs.uk/Id/nhs-number", "value": "9999999999" } }, "dosageInstruction": [ { "timing": { "repeat": { "frequencyMax": 4, "period": 1, "periodUnit": "d" } }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "oral" } ] }, "doseQuantity": { "value": 500, "unit": "milligram", "system": "http://unitsofmeasure.org", "code": "mg" } } ] }
MedicationRequest.id[0] | 0e79d939-bca0-4970-9e26-8c12e9a45620 |
MedicationRequest.contained[0].id[0] | med1 |
MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.contained[0].code[0].coding[0].code[0] | 90332006 |
MedicationRequest.contained[0].code[0].coding[0].display[0] | Paracetamol |
MedicationRequest.status[0] | active |
MedicationRequest.intent[0] | order |
MedicationRequest.medication[0].reference[0] | #med1 |
MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].frequencyMax[0] | 4 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
MedicationRequest.dosageInstruction[0].route[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.dosageInstruction[0].route[0].coding[0].code[0] | 26643006 |
MedicationRequest.dosageInstruction[0].route[0].coding[0].display[0] | oral |
MedicationRequest.dosageInstruction[0].dose[0].value[0] | 500 |
MedicationRequest.dosageInstruction[0].dose[0].unit[0] | milligram |
MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://unitsofmeasure.org |
MedicationRequest.dosageInstruction[0].dose[0].code[0] | mg |
MedicationRequest |
id : 0e79d939-bca0-4970-9e26-8c12e9a45620 |
contained |
id : med1 |
code |
coding |
system : http://snomed.info/sct |
code : 90332006 |
display : Paracetamol |
status : active |
intent : order |
medication |
reference : #med1 |
subject |
identifier |
system : https://fhir.nhs.uk/Id/nhs-number |
value : 9999999999 |
dosageInstruction |
timing |
repeat |
frequencyMax : 4 |
period : 1 |
periodUnit : d |
route |
coding |
system : http://snomed.info/sct |
code : 26643006 |
display : oral |
dose |
value : 500 |
unit : milligram |
system : http://unitsofmeasure.org |
code : mg |
Virtual Therapeutic Moiety (VTM) + Form
The prescriber may give a specific instruction for the form of the medication, e.g. suppository
, within the Medication.form
element.
The Dosage would typically express the dose as a weight or volume of medication, plus the form and other instructions required by the prescriber.
Note: The FHIR Medication resource can only include a single form as a CodeableConcept element. The Dosage structure does not contain an coded element that can convey a form.
<!-- Example referencing a Virtual Therapeutic Moiety (VTM) with a coded form as a contained resource --> <MedicationRequest xmlns="http://hl7.org/fhir"> <id value="242cbc01-3c9e-4811-b42d-b4b0a5c32678" /> <contained> <Medication> <id value="med1" /> <code> <coding> <system value="http://snomed.info/sct" /> <code value="90332006" /> <display value="Paracetamol" /> </coding> </code> <form> <coding> <system value="http://snomed.info/sct" /> <code value="385194003" /> <display value="suppository" /> </coding> </form> </Medication> </contained> <intent value="order" /> <medicationReference> <reference value="#med1" /> </medicationReference> <subject> <identifier> <system value="https://fhir.nhs.uk/Id/nhs-number" /> <value value="9999999999" /> </identifier> </subject> <dosageInstruction> <timing> <repeat> <frequencyMax value="4" /> <period value="1" /> <periodUnit value="d" /> </repeat> </timing> <route> <coding> <system value="http://snomed.info/sct" /> <code value="26643006" /> <display value="oral" /> </coding> </route> <doseQuantity> <value value="500" /> <unit value="milligram" /> <system value="http://unitsofmeasure.org" /> <code value="mg" /> </doseQuantity> </dosageInstruction> </MedicationRequest>
{ "resourceType": "MedicationRequest", "id": "242cbc01-3c9e-4811-b42d-b4b0a5c32678", "contained": [ { "resourceType": "Medication", "id": "med1", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "90332006", "display": "Paracetamol" } ] }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "385194003", "display": "suppository" } ] } } ], "intent": "order", "medicationReference": { "reference": "#med1" }, "subject": { "identifier": { "system": "https://fhir.nhs.uk/Id/nhs-number", "value": "9999999999" } }, "dosageInstruction": [ { "timing": { "repeat": { "frequencyMax": 4, "period": 1, "periodUnit": "d" } }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "oral" } ] }, "doseQuantity": { "value": 500, "unit": "milligram", "system": "http://unitsofmeasure.org", "code": "mg" } } ] }
MedicationRequest.id[0] | 242cbc01-3c9e-4811-b42d-b4b0a5c32678 |
MedicationRequest.contained[0].id[0] | med1 |
MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.contained[0].code[0].coding[0].code[0] | 90332006 |
MedicationRequest.contained[0].code[0].coding[0].display[0] | Paracetamol |
MedicationRequest.contained[0].form[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.contained[0].form[0].coding[0].code[0] | 385194003 |
MedicationRequest.contained[0].form[0].coding[0].display[0] | suppository |
MedicationRequest.intent[0] | order |
MedicationRequest.medication[0].reference[0] | #med1 |
MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].frequencyMax[0] | 4 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
MedicationRequest.dosageInstruction[0].route[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.dosageInstruction[0].route[0].coding[0].code[0] | 26643006 |
MedicationRequest.dosageInstruction[0].route[0].coding[0].display[0] | oral |
MedicationRequest.dosageInstruction[0].dose[0].value[0] | 500 |
MedicationRequest.dosageInstruction[0].dose[0].unit[0] | milligram |
MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://unitsofmeasure.org |
MedicationRequest.dosageInstruction[0].dose[0].code[0] | mg |
MedicationRequest |
id : 242cbc01-3c9e-4811-b42d-b4b0a5c32678 |
contained |
id : med1 |
code |
coding |
system : http://snomed.info/sct |
code : 90332006 |
display : Paracetamol |
form |
coding |
system : http://snomed.info/sct |
code : 385194003 |
display : suppository |
intent : order |
medication |
reference : #med1 |
subject |
identifier |
system : https://fhir.nhs.uk/Id/nhs-number |
value : 9999999999 |
dosageInstruction |
timing |
repeat |
frequencyMax : 4 |
period : 1 |
periodUnit : d |
route |
coding |
system : http://snomed.info/sct |
code : 26643006 |
display : oral |
dose |
value : 500 |
unit : milligram |
system : http://unitsofmeasure.org |
code : mg |
Virtual Therapeutic Moiety (VTM) + Trade Family
The use of a VTM with a Trade Family is a use case not currently supported within FHIR STU3, or through a UK extension. There is currently no part of the Medication resource or the Dosage structure that is suitable to convey a coded Trade Family.
Virtual Medicinal Product (VMP)
A VMP comprises of a medication + strength + form.
The Dosage would typically express the dose using the dm+d unit form dose unit of measure, plus all other instructions required by the prescriber.
For example;
2 tablets - twice a day - for 7 days
instead of
100 milligrams - twice a day - for 7 days
(if the VMP has a strength of 50mg per tablet)
<!-- Example referencing a Virtual Medicinal Product (VMP) as a contained resource --> <MedicationRequest xmlns="http://hl7.org/fhir"> <id value="74760139-928c-4d3e-9659-ee2853419f75" /> <contained> <Medication> <id value="med1" /> <code> <coding> <system value="http://snomed.info/sct" /> <code value="319996000" /> <display value="Simvastatin 10mg tablets" /> </coding> </code> </Medication> </contained> <intent value="order" /> <medicationReference> <reference value="#med1" /> </medicationReference> <subject> <identifier> <system value="https://fhir.nhs.uk/Id/nhs-number" /> <value value="9999999999" /> </identifier> </subject> <dosageInstruction> <timing> <repeat> <frequency value="1" /> <period value="1" /> <periodUnit value="d" /> </repeat> </timing> <route> <coding> <system value="http://snomed.info/sct" /> <code value="26643006" /> <display value="oral" /> </coding> </route> <doseQuantity> <value value="40" /> <unit value="milligram" /> <system value="http://unitsofmeasure.org" /> <code value="mg" /> </doseQuantity> </dosageInstruction> </MedicationRequest>
{ "resourceType": "MedicationRequest", "id": "74760139-928c-4d3e-9659-ee2853419f75", "contained": [ { "resourceType": "Medication", "id": "med1", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "319996000", "display": "Simvastatin 10mg tablets" } ] } } ], "intent": "order", "medicationReference": { "reference": "#med1" }, "subject": { "identifier": { "system": "https://fhir.nhs.uk/Id/nhs-number", "value": "9999999999" } }, "dosageInstruction": [ { "timing": { "repeat": { "frequency": 1, "period": 1, "periodUnit": "d" } }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "oral" } ] }, "doseQuantity": { "value": 40, "unit": "milligram", "system": "http://unitsofmeasure.org", "code": "mg" } } ] }
MedicationRequest.id[0] | 74760139-928c-4d3e-9659-ee2853419f75 |
MedicationRequest.contained[0].id[0] | med1 |
MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.contained[0].code[0].coding[0].code[0] | 319996000 |
MedicationRequest.contained[0].code[0].coding[0].display[0] | Simvastatin 10mg tablets |
MedicationRequest.intent[0] | order |
MedicationRequest.medication[0].reference[0] | #med1 |
MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].frequency[0] | 1 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
MedicationRequest.dosageInstruction[0].route[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.dosageInstruction[0].route[0].coding[0].code[0] | 26643006 |
MedicationRequest.dosageInstruction[0].route[0].coding[0].display[0] | oral |
MedicationRequest.dosageInstruction[0].dose[0].value[0] | 40 |
MedicationRequest.dosageInstruction[0].dose[0].unit[0] | milligram |
MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://unitsofmeasure.org |
MedicationRequest.dosageInstruction[0].dose[0].code[0] | mg |
MedicationRequest |
id : 74760139-928c-4d3e-9659-ee2853419f75 |
contained |
id : med1 |
code |
coding |
system : http://snomed.info/sct |
code : 319996000 |
display : Simvastatin 10mg tablets |
intent : order |
medication |
reference : #med1 |
subject |
identifier |
system : https://fhir.nhs.uk/Id/nhs-number |
value : 9999999999 |
dosageInstruction |
timing |
repeat |
frequency : 1 |
period : 1 |
periodUnit : d |
route |
coding |
system : http://snomed.info/sct |
code : 26643006 |
display : oral |
dose |
value : 40 |
unit : milligram |
system : http://unitsofmeasure.org |
code : mg |
Virtual Medicinal Product (VMP) + Qty/UoM
A VMP plus a MedicationRequest.dispenseRequest
would be typical for primary care prescription instructions as used by the Electronic Prescription Service.
The Dosage would typically express the dose using the dm+d unit form dose unit of measure, the requested quantity, plus all other instructions required by the prescriber.
For example;
2 tablets - twice a day - 14 tablets
Actual Medicinal Product (AMP)
An AMP comprises of a medication + strength + form + manufacturer.
The Dosage would be as per the VMP.
<!-- Example referencing a Actual Medicinal Product (AMP) as a contained resource --> <MedicationRequest xmlns="http://hl7.org/fhir"> <id value="4a6a7910-a3ed-438f-947a-a6fd27c03a79" /> <contained> <Medication> <id value="med1" /> <code> <coding> <system value="http://snomed.info/sct" /> <code value="4896211000001101" /> <display value="Simvador 10mg tablets (Discovery Pharmaceuticals)" /> </coding> </code> </Medication> </contained> <intent value="order" /> <medicationReference> <reference value="#med1" /> </medicationReference> <subject> <identifier> <system value="https://fhir.nhs.uk/Id/nhs-number" /> <value value="9999999999" /> </identifier> </subject> <dosageInstruction> <timing> <repeat> <period value="1" /> <periodUnit value="d" /> <when value="EVE" /> </repeat> </timing> <route> <coding> <system value="http://snomed.info/sct" /> <code value="26643006" /> <display value="oral" /> </coding> </route> <doseQuantity> <value value="10" /> <unit value="milligram" /> <system value="http://unitsofmeasure.org" /> <code value="mg" /> </doseQuantity> </dosageInstruction> </MedicationRequest>
{ "resourceType": "MedicationRequest", "id": "4a6a7910-a3ed-438f-947a-a6fd27c03a79", "contained": [ { "resourceType": "Medication", "id": "med1", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "4896211000001101", "display": "Simvador 10mg tablets (Discovery Pharmaceuticals)" } ] } } ], "intent": "order", "medicationReference": { "reference": "#med1" }, "subject": { "identifier": { "system": "https://fhir.nhs.uk/Id/nhs-number", "value": "9999999999" } }, "dosageInstruction": [ { "timing": { "repeat": { "period": 1, "periodUnit": "d", "when": [ "EVE" ] } }, "route": { "coding": [ { "system": "http://snomed.info/sct", "code": "26643006", "display": "oral" } ] }, "doseQuantity": { "value": 10, "unit": "milligram", "system": "http://unitsofmeasure.org", "code": "mg" } } ] }
MedicationRequest.id[0] | 4a6a7910-a3ed-438f-947a-a6fd27c03a79 |
MedicationRequest.contained[0].id[0] | med1 |
MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.contained[0].code[0].coding[0].code[0] | 4896211000001101 |
MedicationRequest.contained[0].code[0].coding[0].display[0] | Simvador 10mg tablets (Discovery Pharmaceuticals) |
MedicationRequest.intent[0] | order |
MedicationRequest.medication[0].reference[0] | #med1 |
MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
MedicationRequest.dosageInstruction[0].timing[0].repeat[0].when[0] | EVE |
MedicationRequest.dosageInstruction[0].route[0].coding[0].system[0] | http://snomed.info/sct |
MedicationRequest.dosageInstruction[0].route[0].coding[0].code[0] | 26643006 |
MedicationRequest.dosageInstruction[0].route[0].coding[0].display[0] | oral |
MedicationRequest.dosageInstruction[0].dose[0].value[0] | 10 |
MedicationRequest.dosageInstruction[0].dose[0].unit[0] | milligram |
MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://unitsofmeasure.org |
MedicationRequest.dosageInstruction[0].dose[0].code[0] | mg |
MedicationRequest |
id : 4a6a7910-a3ed-438f-947a-a6fd27c03a79 |
contained |
id : med1 |
code |
coding |
system : http://snomed.info/sct |
code : 4896211000001101 |
display : Simvador 10mg tablets (Discovery Pharmaceuticals) |
intent : order |
medication |
reference : #med1 |
subject |
identifier |
system : https://fhir.nhs.uk/Id/nhs-number |
value : 9999999999 |
dosageInstruction |
timing |
repeat |
period : 1 |
periodUnit : d |
when : EVE |
route |
coding |
system : http://snomed.info/sct |
code : 26643006 |
display : oral |
dose |
value : 10 |
unit : milligram |
system : http://unitsofmeasure.org |
code : mg |
Actual Medicinal Product (AMP) + Qty/UoM
The Dosage would be as per the VMP + Qty/UoM.