GP Connect (Patient Facing) Prescriptions - FHIR API

This guidance is under active development by NHS Digital and content may be added or updated on a regular basis.
Note: This is a deprecated version (draft) of the specification - please see the latest for the latest version.

UKCore-MedicationRequest

MedicationRequest

Command 'tree' could not render: File was not found for 'https://fhir.hl7.org.uk/StructureDefinition/UKCore-MedicationRequest'
Command 'dict' could not render: File was not found for 'https://fhir.hl7.org.uk/StructureDefinition/UKCore-MedicationRequest'
{
    "resourceType": "MedicationRequest",
    "id": "b269d1d7-1acf-47bb-8b3c-e38b583d9a07",
    "extension":  [
        {
            "url": "https://fhir.hl7.org.uk/StructureDefinition/Extension-UKCore-MedicationRepeatInformation",
            "extension":  [
                {
                    "url": "numberOfPrescriptionsIssued",
                    "valueUnsignedInt": 1
                },
                {
                    "url": "authorisationExpiryDate",
                    "valueDateTime": "2023-09-10T19:00:00.000Z"
                }
            ]
        }
    ],
    "identifier":  [
        {
            "system": "https://fhir.nhs.uk/Id/prescription-order-number",
            "value": "CDT38E-Y765968-4FG3BQ"
        }
    ],
    "status": "active",
    "intent": "plan",
    "category":  [
        {
            "coding":  [
                {
                    "system": "http://terminology.hl7.or/CodeSystem/medicationrequest-category",
                    "code": "community",
                    "display": "Community"
                }
            ]
        }
    ],
    "medicationCodeableConcept": {
        "coding":  [
            {
                "system": "http://snomed.info/ct",
                "code": "3113111000001106",
                "display": "Pulmicort 100 Turbohaler (AstraZeneca UK Ltd)"
            }
        ]
    },
    "subject": {
        "reference": "Patient/9000000009",
        "identifier": {
            "system": "https://fhir.nhs.uk/Id/nhs-number",
            "value": "9000000009"
        },
        "display": "Jane Smith"
    },
    "requester": {
        "reference": "Practitioner/16708936-6397-4e03-b84f-4aaa790633e0"
    },
    "courseOfTherapyType": {
        "coding":  [
            {
                "system": "https://fhir.hl7.org.uk/CodeSystem/UKCore-MedicationRequestCourseOfTherapy",
                "code": "continuous",
                "display": "Continuous long term therapy"
            }
        ]
    },
    "authoredOn": "2022-10-13T16:20:27+07:00",
    "substitution": {
        "allowedBoolean": false
    },
    "dosageInstruction":  [
        {
            "text": "One to two puffs to be inhaled as needed",
            "method": {
                "coding":  [
                    {
                        "system": "http://snomed.info/sct",
                        "code": "420652005",
                        "display": "Until Gone"
                    }
                ]
            }
        }
    ]
}

Definition

An order or request for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called "MedicationRequest" rather than "MedicationPrescription" or "MedicationOrder" to generalize the use across inpatient and outpatient settings, including care plans and so on, and to harmonize with workflow patterns.

Minimum Viable Content

The minimum viable content that all provider and consumer systems should support contains the following elements:

Element Required?
id
meta.profile
extension[medicationRepeatInformation]
identifier
status
statusReason
intent
category
priority
doNotPerform
reported
medicationCodeableConcept
subject
encounter
supportingInformation
authoredOn
requester
performer
performerType
recorder
reasonCode
reasonReference
instantiatesCanonical
instantiatesUri
basedOn
groupIdentifier
courseOfTherapyType
insurance
note
dispenseRequest
substitution
priorPrescription
detectedIssue
eventHistory

id

DataType Optionality Cardinality
identifier required 1:1

The logical identifier of the MedicationRequest resource.

Example

 "id":"44f85d15-8744-47c2-a790-4f5e38aacdb0" 

meta.profile

DataType Optionality Cardinality
uri required 1:1

The MedicationRequest profile URL.

Fixed value: https://fhir.hl7.org.uk/StructureDefinition/UKCore-MedicationRequest

Example

  "meta": {
    "profile": [
      "https://fhir.hl7.org.uk/StructureDefinition/UKCore-MedicationRequest"
    ]

extension:medicationRepeatInformation

DataType Optionality Cardinality
Extension conditional 0:1

Extension elements to hold details of repeat authorisation.

Only populate for a MedicationRequest with an intent = plan. For a MedicationRequest with an intent = order none of the repeatInformation fields are populated.

This extension must be present for continuous and continuous-repeat-dispensing therapy types.

medicationRepeatInformation.authorisationExpiryDate

Only populate for a MedicationRequest with an intent = plan. For a MedicationRequest with an intent = order this is not populated.

medicationRepeatInformation.numberOfPrescriptionsIssued

Running total of number of issues made against a repeat authorisation.

MUST be zero, if not yet issued.

Example

"extension": [
    {
        "url": "https://fhir.hl7.org.uk/StructureDefinition/Extension-UKCore-MedicationRepeatInformation",
        "extension": [
            {
                "url": "numberOfPrescriptionsIssued",
                "valueUnsignedInt": 2
            },
            {
                "url": "authorisationExpiryDate",
                "valueDateTime": "2022-10-11T19:00:00.000Z"
            }
        ]
    }
],

identifier

DataType Optionality Cardinality
identifier required 1:1

This MUST be populated with a globally unique and persistent identifier (that is, it doesn’t change between requests and therefore stored with the source data). This MUST be scoped by a provider specific namespace for the identifier.

Where consuming systems are integrating data from this resource to their local system, they MUST also persist this identifier at the same time.

If the EPS identifier is present (will only be with an intent of order) then the identifier.value is where the EPS Id SHOULD also be added. The codeSystem for this identifier is https://fhir.nhs.uk/Id/prescription-order-item-number

Example of intent order with EPS Id

    "identifier" : [
        {
            "system" : "https://fhir.nhs.uk/Id/prescription-order-item-number",
            "value" : "4857b9d3-b714-44b9-9e67-3df67275b785"
        },
    ]

Example of intent plan with uuid

"identifier": [
    {
        "system": "https://tools.ietf.org/html/rfc4122",
        "value": "42b4a841-9d69-4d13-bf91-ee5882e85765"
    }
],

Comment

This is a business identifier, not a resource identifier.

status

DataType Optionality Cardinality
code required 1:1

A code specifying the current state of the order. Generally, this will be active or completed state.

code Definition
active Represents an active authorisation - used for active medications/medical devices.
stopped Represents an authorisation which has been discontinued, cancelled or stopped.
completed Represents an authorisation which has run its course.

For MedicationRequest instances where intent is set to plan:

  • For repeats and repeat dispensed the status refers to the status of the plan (the entire cycle of prescriptions).
  • For acutes the status refers to the status of the prescription issue.

For MedicationRequest instances where intent is set to order:

  • The status refers to the status of the prescription issue.

Example

  "status" : "active",

statusReason

DataType Optionality Cardinality
code optional 0:1

Where a medication/medical device has been stopped (status == ‘stopped’), the reason is provided in the statusReason extension.

Mandatory for authorisations with stopped status.

Only populate for a MedicationRequest with an intent = plan. Do not populate for a MedicationRequest with an intent = order.

Example

"statusReason": {
    "coding": [
        {
            "system": "https://fhir.nhs.uk/CodeSystem/medicationrequest-status-reason",
            "code": "0001",
            "display": "Prescribing Error"
        }
    ]
},

intent

DataType Optionality Cardinality
code required 1:1

Whether the request is a plan or order.

  • plan represents an authorisation of a medication or medical device

  • order represents a prescription or issue of a medication/medical device

Example

 "intent" : "order",

category

DataType Optionality Cardinality
code required 1:1

Required as part of the resource. Must be set to "community" as this includes requests for medications to be administered or consumed by the patient in their home (this would include long term care or nursing homes, hospices, etc.)

    "category": [
      {
        "coding": [
          {
            "system": "http://terminology.hl7.or/CodeSystem/medicationrequest-category",
            "code": "community",
            "display": "Community"
          }
        ]
      }
    ],

medicationCodeableConcept

DataType Optionality Cardinality
code required 1:1
  • The medicationCodeableConcept.text should be the description for the medication.

  • The medicationCodeableConcept.coding.code should be the code for the medication.

    • Supported codesystems: DM+D
  • The medicationCodeableConcept.coding.display should be the description for the medication, i.e. the same value as medicationCodeableConcept.text.

Example

    "medicationCodeableConcept": [
      {
        "coding": [
          {
            "system": "https://dmd.nhs.uk",
            "code": 329526003,
            "display": "Apirin 300mg dispersible tablets"
          }
        ]
      }
    ],


subject

DataType Optionality Cardinality
Reference(Patient) required 1:1

Reference to the patient that the medication is for.

Example

  "subject" : {
    "reference" : "Patient/9000000009",
    "identifier" : {
      "system" : "https://fhir.nhs.uk/Id/nhs-number",
      "value" : "9000000009"
    },
    "display" : "Jane Smith"
  },

authoredOn

DataType Optionality Cardinality
dateTime required 1:1

Authorisation date, when the medication/medical device was authorised.

Example

"authoredOn" : "2022-10-13T16:20:27+07:00",

requester

DataType Optionality Cardinality
Reference optional 1:1

A business-required element identifying the clinically qualified human prescriber referenced by a PractitionerRole resource.

They may be other possible references depending on the use case the full list is below. The resource being referenced should conform to one of the following:

Example

 "requester" : {
    "reference" : "PractitionerRole/ed313d93-f470-420f-ae4e-2b7eb91d3f45",
    "display" : "Dr Jane Smith"
  },

basedOn

DataType Optionality Cardinality
Reference(MedicationRequest) Conditional 0..1

This field is used to create the links between MedicationRequest profiles to represent the medication ordering process as described here. This MUST be used when a profile has an intent element that is set to order and is basedOn a MedicationRequest profile that has an intent set to plan.

DO NOT USE for authorisations - that is, for a MedicationRequest with intent of plan.

Example

"basedOn": [
    {
    "reference": "MedicationRequest/06c7d0e2-1022-4e47-ac55-f6463d701a4f"
    }
],

groupIdentifier

DataType Optionality Cardinality
identifier required 1:1

The EPS prescriptionID if this medication or medical device has been prescribed via the Electronic Prescriptions Service. The element in the Identifier data type that MUST be populated when a groupIdentifier is populated is identifier.value.

All EPS prescribed drugs MUST have the prescriptionID present in this field and have system element set to https://fhir.nhs.uk/Id/prescription-order-number.

Example

 "groupIdentifier" : {
    "system" : "https://fhir.nhs.uk/Id/prescription-order-number",
    "value" : "PDI12E-Y765908-4FF3LQ"
  },

courseOfTherapyType

DataType Optionality Cardinality
Code required 1:1

Necessary in order to denote the type of therapy, such as an acute/one-off medication compared to a repeat/on-going medication.

Will be used in order to denote whether a prescription is acute or repeat.

Code System Display
continuous http://terminology.hl7.org/CodeSystem/medicationrequest-course-of-therapy Continuous long term therapy
acute http://terminology.hl7.org/CodeSystem/medicationrequest-course-of-therapy Short course (acute) therapy

Example

  "courseOfTherapyType" : {
    "coding" : [ {
      "system" : "https://fhir.hl7.org.uk/CodeSystem/UKCore-MedicationRequestCourseOfTherapy",
      "code" : "continuous",
      "display" : "Continuous long term therapy"
    } ]
  },

note

DataType Optionality Cardinality
Annotation optional 0:*

Use when the prescriber wishes to provide supporting textual information to the dispenser.

Example

      "note" : [ {
        "authorString" : "Patient",
        "text" : "Ran out of previous prescription"
      } ]

dosageInstruction

DataType Optionality Cardinality
Dosage required 0..*

Preferable as a structured dosage aligned to the FHIR Dose Syntax Guidance but as a minimum, dosage.text.

Example

  "dosageInstruction" : [ {
        "text" : "One to two puffs to be inhaled as needed",
        "method" : {
          "coding" : [ {
            "system" : "http://snomed.info/sct",
            "code" : 420652005,
            "display" : "Until Gone"
          } ]
        }
    } ]

dispenseRequest

DataType Optionality Cardinality
BackboneElement required 0..1
dispenseRequest.numberOfRepeatsAllowed
DataType Optionality Cardinality
unsignedInt optional 0..1

An integer indicating the number of times, in addition to the original dispense, (aka refills or repeats) that the patient can receive the prescribed medication. Usage Notes: This integer does not include the original order dispense. This means that if an order indicates dispense 30 tablets plus "3 repeats", then the order can be dispensed a total of 4 times and the patient can receive a total of 120 tablets. A prescriber may explicitly say that zero refills are permitted after the initial dispense.

The number of repeat issues authorised if specified. MUST be present where a continuous is authorised for a defined number of issues.

MUST NOT be specified where the number of repeat issues has not been defined. Therefore, the numberOfRepeats allowed is the total number of allowed issues. See also extension repeatInformation

Example
"numberOfRepeatsAllowed": 6,

dispenseRequest.quantity

DataType Optionality Cardinality
simpleQuantity required 0..1

The amount that is to be dispensed for one fill.

"quantity": {
    "value": 1,
    "unit": "inhaler",
    "system": "http://snomed.info/sct",
    "code": "334980009"
},

dispenseRequest.expectedSupplyDuration

DataType Optionality Cardinality
Duration required 0..1

Number of days’ supply per dispense.

"expectedSupplyDuration": {
    "value": 28,
    "unit": "days",
    "system": "http://unitsofmeasure.org",
    "code": "d"
},

dispenseRequest.performer

DataType Optionality Cardinality
Duration required 0..1

Patients pharmacy preferences may be sourced from PDS.

Patients pharmacy preferences may be overriden by an 'one-off pharmacy nomination' by populating the dispenseRequest.performer.identifier with the ODS code of the destination pharmacy. The one off ODS code can be obtained from input element of the corresponding Task resource.

    "performer": {
        "identifier": {
            "system": "https://fhir.nhs.uk/Id/ods-organization-code",
            "value": "FX748"
        }
    }

substitution

DataType Optionality Cardinality
BabckboneElement required 1..1

UK Core has profiled this element as mandatory and must have a default boolean value of false to denote substitution is not allowed.

Example

    "substitution": {
        "allowedBoolean": false
    }

back to top