Implementation guide for digital medicines

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

Known Dosage Structure Limitations

The following edge cases have been identified which are not sufficiently supported as coded structures within the R4 Dosage structure. Until such a time when the R4 FHIR UK Core profiles are updated with either an extension or an internationally agreed change to the HL7 FHIR standard, a work-around is required.

1. Combination pack instructions

Workaround: Use a free-text `Dosage.additionalInstruction`.

It is common practice to provide a dosage instruction for the combination pack “Migraleve tablets” with instructions for when to take the pink tablets and when to take the yellow tablets. With the current R4 Dosage structure, these instructions would have to be conveyed in free-text using the Dosage.patientInstructions.

In secondary care the individual components of the pack should be prescribed as separate items.

In primary care the combination pack is prescribed and therefore the medication request must reference the medication resource for the dm+d code of the combination product. The medication request then links to 2 dosing instructions which describe how each tablet should be taken.

See an example for Migraleve tablets.

2. Maximum dose per course

Workaround: Use a free-text `Dosage.additionalInstruction`.

A maximum dose for three scenarios is supported within the R4 Dosage structure;

  • maxDosePerPeriod - define a maximum dose over a given period of time
  • maxDosePerAdministration - defines a maximum dose per administration
  • maxDosePerLifetime - defines the maximum dose during the lifetime of the patient

Not currently supported is how to define a maximum dose per course.

With the current R4 Dosage structure, a maximum dose per course would have to be conveyed in free-text using the Dosage.additionalInstruction.

See an example for Colchicine tablets.

3. Periods of no medicine administration

As part of a MedicationRequest

Note: This section is under review as a timing instruction with a 0 (zero) dose/rate quantity may be a suitable way to define a period of no medicine administration.

There is no clear way in the R4 Dosage structure to define a period of no medicine administration within a MedicationRequest resource.

The example given above for Colchicine tablets also includes an instruction for a period of time where medication should not be taken;

Do not repeat course for 3 days

Another clinical example would be for a Lidocaine medicated plaster. A typical written dosage instruction would be;

Apply 2 patches once daily to the affected area for up to 12 hours, followed by a 12-hour plaster-free period; to be applied to intact, dry, non-hairy, non-irritated skin.

The R4 Dosage structure cannot describe, in a machine readable way, the clauses "Do not repeat course for 3 days" and “followed by a 12-hour plaster-free period”.

Workaround: Within a MedicationRequest use a free-text Dosage.additionalInstruction

Note: This problem is not applicable to the MedicationDispense resource.

As part of a MedicationAdministration or MedicationStatement

Within medicine administration records it is important, for certain medication, to clearly state periods where no medication was administered.

Two approaches are possible within the FHIR standard.

The first is to infer periods of no administration where there are no MedicationAdministration or MedicationStatement records that cover a given period of time. This approach is not recommended as not all records will be defined using an effectivePeriod.start and effectivePeriod.end date/time range. Some records will just be recorded with an effectiveDateTime. Depending on how specific the dosage instruction has been defined, the expected administration period could be calculated. However this approach is based on assumptions, not facts.

The second, and preferred solution, is to record a zero quantity and a status of "on-hold" within a MedicationAdministration or MedicationStatement record for a medicine for a specific effectivePeriod. This example is an administration record of a 1-hour pause during a Heperain infusion. The rateQuantity is "0" (zero). The status is "on-hold".

<MedicationAdministration xmlns="">
    <id value="f8fced11-53c3-47c3-92a8-ff49dc1b0e0b" />
        <profile value="" />
    <status value="on-hold" />
            <system value="" />
            <code value="36054511000001107" />
            <display value="Heparin sodium 20,000units/20ml solution for injection ampoules" />
        <reference value="Patient/UKCore-Patient-RachelSmith-Example" />
        <start value="2021-03-26T16:30:00+00:00" />
        <end value="2021-03-26T17:30:00+00:00" />
        <reference value="MedicationRequest/203c8dce-aaec-4349-9335-a572ad48c553" />
                <system value="" />
                <code value="47625008" />
                <display value="Intravenous" />
                <system value="" />
                <code value="261754007" />
                <display value="Continuous infusion" />
            <value value="0" />
            <unit value="millilitre per hour" />
            <system value="" />
            <code value="mL/h" />
    "resourceType": "MedicationAdministration",
    "id": "f8fced11-53c3-47c3-92a8-ff49dc1b0e0b",
    "meta": {
        "profile":  [
    "status": "on-hold",
    "medicationCodeableConcept": {
        "coding":  [
                "system": "",
                "code": "36054511000001107",
                "display": "Heparin sodium 20,000units/20ml solution for injection ampoules"
    "subject": {
        "reference": "Patient/UKCore-Patient-RachelSmith-Example"
    "effectivePeriod": {
        "start": "2021-03-26T16:30:00+00:00",
        "end": "2021-03-26T17:30:00+00:00"
    "request": {
        "reference": "MedicationRequest/203c8dce-aaec-4349-9335-a572ad48c553"
    "dosage": {
        "method": {
            "coding":  [
                    "system": "",
                    "code": "261754007",
                    "display": "Continuous infusion"
        "route": {
            "coding":  [
                    "system": "",
                    "code": "47625008",
                    "display": "Intravenous"
        "rateQuantity": {
            "value": 0,
            "unit": "millilitre per hour",
            "system": "",
            "code": "mL/h"
MedicationAdministration.medicationCodeableConcept[0].coding[0].display[0]Heparin sodium 20,000units/20ml solution for injection ampoules
MedicationAdministration.dosage[0].method[0].coding[0].display[0]Continuous infusion
MedicationAdministration.dosage[0].rateQuantity[0].unit[0]millilitre per hour

4. Instructions for a specific device

Workaround: Use a Virtual Medicinal Product (VMP) or Actual Medicinal Product (AMP) concept, or express within a free-text `Dosage.additionalInstruction`.

In some cases, with a dose-based instruction, the type of device to use for the administration of the medication needs to be specified.

For example, Salbutamol medication may be inhaled using one of four types of device;

  • Nebuliser
  • Metered dose inhaler
  • Breath actuated inhaler
  • Dry powder inhaler

Whilst each of these devices is a coded term within SNOMED-CT, it would be potentially confusing to add a coded device as an additional instruction. None of the R4 profiled resources referenced within this guidance contain a structure where a coded device can be specified as part of the medication request.

Until supported via another means, where a specific type of device needs to be specified, either prescribe using a product-based dm+d concept (e.g. VMP or AMP) or specify the request for any type of device to be used as free-text within Dosage.additionalInstruction.

5. RESOLVED: Specifying a Trade Family / Brand

Resolved: The UK Core profiled Medication resource includes the extension Extension-UKCore-MedicationTradeFamily to convey a Trade Family concept.

This is now only a limitation when using a FHIR implementation not derived from UKCore.

back to top