Dose syntax implementation guidance for FHIR STU3

This guidance is under active development by NHS Digital and content may be added or updated on a regular basis.

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

nhs-dmd-concepts-related-data


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
Example referencing a VTM as a contained resource.

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
Example referencing a Virtual Therapeutic Moiety (VTM) with a coded form as a contained resource.

Virtual Therapeutic Moiety (VTM) + Trade Family

Important
Trade Family coded concepts are not currently supported within FHIR profiles. Where a Trade Family needs to be specified, use an Actual Medicinal Product (AMP) concept.

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
Example referencing a Virtual Medicinal Product (VMP) as a contained resource

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
Example referencing a Actual Medicinal Product (AMP) as a contained resource

Actual Medicinal Product (AMP) + Qty/UoM

The Dosage would be as per the VMP + Qty/UoM.

back to top