Implementation guide for interoperable medicines

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

Self-Assurance Guidance

All electronic transfers of medication and allergy/intolerance information between NHS systems in England must use the Information Standards Notice DAPB4013: Medicines and Allergy/Intolerance Data Transfer. The deadline for complying with the Standard is March 2023.

To support compliance with the Standard, the self-service FHIR Support Test Tool is available from NHS Digital to assist system suppliers and NHS organisations in the technical development of their solutions. This supports development of MedicationRequest, MedicationDispense and MedicationStatement FHIR Resources.

The test tool is intended to complement existing development processes and will not replace or act as the source of validation for interoperability. Suppliers and providers should work together to implement safe solutions with governance / assurance appropriate to the specific delivery.
In addition, to the support for the development of FHIR resources, the test tool supports validation for business rules for messages sent between ePMA and hospital pharmacy stock control systems.

Note: We recommend suppliers use the test tool early in the development process to avoid having to re-work messages at a later stage if they are found to be non-compliant.

How to access the FHIR supporting guidance materials

For additional information on the scope and purpose of the FHIR test tool as well as guidance on completing your clinical risk and safety assessment, please email medicinestandards@nhs.net and a guide will be sent to you


How to access the FHIR support test tool

Step 1: Request access to OpenTest and an OpenTest portal account

To access the test harness which is hosted by NHS Digital in Opentest, please email the platforms team at itoc.supportdesk@nhs.net confirming the following:

  • Your e-mail address
  • Your contact number
  • Your reason for contact (e.g. Access to the Interoperable Medicines Test Harness)

The confirmation reply has an attachment with credentials and details of how to access the environment.

If your product requires integration with the NHS Spine, you will need to read the information here.


Step 2: Download OpenVPN Community

The Self-Assurance Service Desk will contact you by e-mail when the access has been arranged, and you will receive an attachment with a suffix of .opvn - a file format designed to be opened via OpenVPN.

Important: Please ensure you download the community edition of OpenVPN rather than OpenVPN Connect, otherwise it will not work.

Navigate to the OpenVPN Community Downloads page and select the appropriate version from the available links.

The rest of this guide will cover the Windows 64-bit version.


Step 3: Import the OpenVPN Configuration

  1. Start off by saving the .ovpn attachment in the e-mail sent to you by the Self-Assurance Service Desk.

  2. Then search for the OpenVPN GUI in the windows menu and click on the icon to start the service.

start-menu-openvpn-gui

  1. An icon will appear in your taskbar. You may need to click the chevron ^ to see it.

taskbar-openvpn-gui-icon

  1. Right-click on the OpenVPN GUI icon and click "Import file..."

taskbar-openvpn-gui-icon-right-click-import-file

  1. Locate the .ovpn file saved from the attachment. The configuration will automatically be imported. Click "OK" when finished.

openvpn-gui-file-imported-successfully


Step 4: Connect to OpenTest

  1. Right-click on the OpenVPN GUI icon in the taskbar and click "Connect"

taskbar-openvpn-gui-icon-right-click-connect

  1. Connect to the OpenTest environment (the OpenVPN GUI icon will change colour if successful)

openvpn-connection-connected


Step 5: Download an API client

An API client allows a user to connect to an API and provide it with additional details that may not be able to be provided from a web browser. There are a variety of different API clients available - an example few below:

  1. Nightingale
  2. Insomnia
  3. Postman

It doesn't matter which one you decide to install. They will all work with the assurance tool.


Step 6: Send FHIR to the assurance tool

Setting up a collection

We recommend setting up a collection of queries to enable you to easily locate which are you need to test.

For example:

api-client-collection

Endpoints

FHIR Resource Method Url
R4 MedicationRequest POST http://192.168.128.27:8080/R4/MedicationRequest
R4 MedicationDispense POST http://192.168.128.27:8080/R4/MedicationDispense
R4 MedicationStatement POST http://192.168.128.27:8080/R4/MedicationStatement
STU3 MedicationRequest POST http://192.168.128.27:8080/STU3/MedicationRequest
STU3 MedicationDispense POST http://192.168.128.27:8080/STU3/MedicationDispense
STU3 MedicationStatement POST http://192.168.128.27:8080/STU3/MedicationStatement

Headers

Key Value Description
fromASID {value} This will be provided in the email from the Self-Assurance Service Desk
toASID 111111111111 A test value not authenticated by the test tool
Accept application/fhir+xml If using xml, application/fhir+json, if json
Content-Type application/fhir+xml If using xml, application/fhir+json, if json

Sending FHIR

Paste the appropriate FHIR within each query into the request body are of the API client. Ensure that the type is apporprioately set (e.g. xml or json).

Press Send.

Providing you're connected to OpenTest, and have setup the headers correctly, you will receive a 201: No Content response from the assurance tool.

Example MedicationRequest XML payload

<?xml version="1.0" encoding="utf-16"?>
<MedicationRequest>
  <id value="urn:med-req-1023938" />
  <status value="active" />
  <intent value="order" />
  <category>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/medicationrequest-category" />
      <code value="inpatient" />
      <display value="inpatient" />
    </coding>
  </category>
  <medicationReference>
    <reference value="urn:medication-38769117" />
    <display value="Amoxicillin" />
  </medicationReference>
  <subject>
    <reference value="urn:patient-011223344" />
    <display value="Mrs Anne Teak" />
  </subject>
  <authoredOn value="2020-05-15T15:00:00Z" />
  <requester>
    <reference value="urn:staff-1112" />
    <display value="Dr Maikeu Well" />
  </requester>
  <recorder>
    <reference value="urn:staff-1112" />
    <display value="Dr Maikeu Well" />
  </recorder>
  <dosageInstruction>
    <timing>
      <repeat>
        <frequency value="3" />
        <period value="1" />
        <periodUnit value="d" />
      </repeat>
    </timing>
    <route>
      <coding>
        <system value="http://snomed.info/sct" />
        <code value="26643006" />
        <display value="oral" />
      </coding>
    </route>
    <doseAndRate>
      <doseQuantity>
        <value value="500" />
        <unit value="milligram" />
        <system value="http://unitsofmeasure.org" />
        <code value="mg" />
      </doseQuantity>
    </doseAndRate>
  </dosageInstruction>
  <substitution>
    <allowedBoolean value="false" />
  </substitution>
</MedicationRequest>


Step 7: The conformance report

The assurance tool does not currently provide the output in the response body. Instead, it will send you an e-mail with two attachments.

  1. A log file containing what the assurance tool received
  2. A HTML file containing a report

The report will containing the following information:

  • Date and time the report was generated
  • Information pertanining to the rulset used for the validation
  • A high-level summary containing number of files checked, passes and failures
  • A results table by element and whether present.

Example output

Element required for MVP Element present in Test Message
id true
status false
intent false
category true
priority true
medication true
subject true
back to top