A case study showing the proposed adoption of FHIR to address needs of Bristol Connecting Care during medication reconcilliation. (Currently not implemented)

Client’s Context

Connecting Care is a local electronic patient record that allows health and social care professionals directly involved in your care, to share a summary of your medical record.

Case Overview

The pharmacists and technicians within secondary care would like to retrieve a patient’s medications history to prepare a list or reconciled medications. While the pharmacist’s need is around medication reconciliation, the requirement for interoperability is to obtain a list of “current” medications from external systems such as the GP systems.

Problem Statement

The Pharmacist does not have a consolidated view of a patient’s medications because the information is distributed across a number of systems.

Business Process

High level business process diagram showing the requirement to display medication from either a specific system or all systems.

Use Case Diagram

Use Case Diagram showing the Pharamacists use cases being explored.

User Stories

While the scope is initially demonstrated in the use case diagram, it is possible to refine the scope further within user stories that originate from conversations with the user. For example, from the perspective of the current Care Connect specification, security is outside of the scope of profile definition and further discussions would be required within the trust to clarify where responsibility lies.

FeatureUser Story
Medication List (View)As a Pharmacist (Hospital Services) I want to retrieve a patient's medications using their NHS Number so that I can find prescribed medications for a patient when I know the 'Traced' and 'Verified' NHS Number.
Medication List (View)As a Pharmacist (Hospital Services) I want to retrieve a patient's medications using a local system number (e.g an MRN) so that I can find medications for a patient when I don't know the traced and verified NHS Number.
Medication List (View)As a Pharmacist (Hospital Services) I want retrieve all of a patient's medications from one or more specific system so I can build an accurate list of reconciled medications.
Medication List (View)As a Pharmacist (Hospital Services) I want to know the first issue of a prescription of medication for the patient so that I know how long the patient has been on a particular medication and I can see if this has changed over time.
Medication List (View)As a Pharmacist (Hospital Services) know the current issue of a prescription of medication for the patient so that I can include this in my reconciliation and I can identify how this have changed since the initial issue.
Medication List (View)As a Pharmacist (Hospital Services) I want to know know the last issue of a prescription of medication for the patient so that I know how long the patient was expected to be issued with that medication.
Medication List (View)As a Pharmacist (Hospital Services) I want to display patient medications from different sources in a single consolidated view so I can more easily reconcile them into a single list.
Medication List (View)As a Pharmacist (Hospital Services) I want to know if results have not been returned due to a error so that I can consider the impact of missing information on my reconciliation.

FHIR Resource Mapping

An initial dataset was extracted from the initial requirements and these can be mapped to various FHIR Resources. It is possible to see that the required data items are spread across a number of different (but related) resources.

Data ItemMedicationMedicationRequestMedicationStatement
Additional instructionsdosageInstruction.additionalInstructiondosage.additionalInstruction
Cancellation reasonextension.statusReason
Date authorised untildispenseRequest.validityPeriod.end
Date of first issue
Date of last issue
Drug name (Brand) if applicablecode
Drug name (generic)code, isBrand
History of courses for same ingredient
Issue date
Issue notes
Issue quantity
Issue status (either a date of issue or 'Not yet issued')
Issue type (acute, repeat, repeat dispensing or automatic)
Number of authorised issuesdispenseRequest.numberOfRepeatsAllowed
Number of issues
Person recordedrequester
Prescribed dosedosedose
Prescribed frequencyraterate
Prescription delivery methodmethodmethod
Product form
Product strength
Role of person
Source system identity
Status of medicationstatusstatus

The elements of this requirement focus around medication resources so the process of determining the best solution can begin with the FHIR Medications Module. This provides a list of medication and describes their relation to each other. The pharmicist is ultimately looking for ‘current’ medications from any of the supplying systems. There are two resources that are appropriate to obtain a list of medications: MedicationRequest and MedicationStatement. The process to determine what is considered “current” is not defined at this stage because the first proof of concepts will retrieve all prescriptions from one system leaving the pharmacist to make a judgement about the relevance of each during reconciliation. This will however need revisiting in future stages as a wider gamut of systems are brought into the solution.

While a MedicationStatement is a resource that is designed to indicate the medication that is currently being taken by the patient, it has a broad scope when compared to a MedicationRequest. A MedicationStatement can include medications currently being taken, previously taken, and knowledge that could be sourced from the patient directly, or somebody that has a relationship with the patient. Once the medications are reconciled, a MedicationStatement is the only way to share current medications in their entirety.

Supplying systems may not have sufficient data to create a MedicationStatement, but may have a history of prescriptions that have been created for a patient. This is common amongst Primary Care systems. In this situation, it is possible to list prescriptions as a way of determining medication history. This leaves the Pharmacist’s reconcilliation process to determine which of these prescriptions are “current”. This could be challenging if the patient has an extensive history recorded by the providing system.

Forming an API request for MedicationRequest that only returns ‘current’ MedicationRequests is a complex requirement. Alternatively, FHIR does have provision for a dedicated operation that allows the provider to serve a list of current MedicationRequests (or MedicationStatements). This is achieved with a “Current Resource List”; more specifically by adopting the list search mechanism $current-medication.

The following diagram shows an Entity Relationship containing the FHIR Medications Module. It also includes the Resource List which is the most appropriate method for accessing the current medications in this instance.

Entity relationship showing the FHIR Medications Module including the Resource List.

This diagram also highlights where most of the required dataset resides within the FHIR Medication Module. Some of the required data will also require additional resources to fully satisfy and may also have to be derived.

Bristol are initially retreiving medication history from a system which only records the prescription of controlled drugs. This means that the expected medication history for one patient held on the system is likely to be small. For this reason, the initial requests being implemented will be for MedicationRequest using the following API signature.

GET [baseUlr]/MedicationRequest?patient=[id]

POC Architectural Overview

Architectural overview showing the scope of the POC.

While the intention at Bristol if to retreive prescription information from a variety of systems, initially the plan is only to retreive prescription information from the Theseus system which will only have information about the prescription of controlled drugs. The number of records expected against for patient is expected to be small. For this reason, the first proof of concept will demonstrate MedicationRequests being returned from an appropriate query for patient, directly against the MedicationRequest resource.

API Signature Examples

Initial POC

The initial POC proposal only requires all MedicationRequests to be returned from a single source.
As a Pharmacist (Hospital Services) I want to retrieve a patient’s medications using their NHS Number so that I can find prescribed medications for a patient when I know the ‘Traced’ and ‘Verified’ NHS Number.
The following example is the simplest form of the request and does require the client to have retreived the patient identifier with a previous query against patient. All supplying systems that support MedicationRequest will support this approach.

GET [baseUrl]/MedicationRequest?patient=[id]

An alternative approach to building the full request in a single call is possible but the support of this is not mandated.

GET [baseUrl]/MedicationRequest?patient.identifier=https://fhir.nhs.uk/Id/nhs-number|9876543210


As a Pharmacist (Hospital Services) I want to retrieve a patient’s medications using a local system number (e.g an Trust/Hospital Number or Master Patient ID (MPI)) so that I can find medications for a patient when I don’t know the traced and verified NHS Number.

GET [baseUrl]/MedicationRequest?patient=[id]

or

GET [baseUrl]/MedicationRequest?patient.identifier=https://fhir.example.nhs.uk/PAS/Patient|123345


For Future Consideration

As a Pharmacist (Hospital Services) I want to retrieve all of a patient’s medications from one or more specific systems so I can build an accurate list of reconciled medications.

GET [baseUrl]
/MedicationRequest?patient.identifier=https://fhir.nhs.uk/Id/nhs-number|9876543210&identifier=https://theccg.systemsupplier.co.uk/Sys1|


As a Pharmacist (Hospital Services) I want to know the first issue of a prescription of medication for the patient so that I know how long the patient has been on a particular medication and I can see if this has changed over time.

GET [baseUrl]/MedicationStatement?patient.identifier=https://fhir.nhs.uk/Id/nhs-number|9876543210&code=http://snomed.info/sct|[SNOMED ConceptID of Drug]

The first issue of a prescription can be deduced from the results.


As a Pharmacist (Hospital Services) I want to know the current issue of a prescription of medication for the patient so that I can include this in my reconciliation and I can identify how this have changed since the initial issue.

GET [baseUrl]/MedicationRequest?patient.identifier=https://fhir.nhs.uk/Id/nhs-number|9876543210&code=http://snomed.info/sct|[SNOMED ConceptID of Drug]

The current issue of a prescription can be deduced from the list if issues by identifying the most recent in the returned list.


As a Pharmacist (Hospital Services) I want to know the last issue of a prescription of medication for the patient so that I know how long the patient was expected to be issued with that medication.

GET [baseUrl]/MedicationRequest?patient.identifier=https://fhir.nhs.uk/Id/nhs-number|9876543210&code=http://snomed.info/sct|[SNOMED ConceptID of Drug]

The last issue of a prescription can be deduced by ordering the returned medications


As a Pharmacist (Hospital Services) I want to display patient medications from different sources in a single consolidated view so I can more easily reconcile them into a single list.

CC profiles - MedicationStatement and it’s containing profiles are structured and can be returned in Json, Xml or any other format.


As a Pharmacist (Hospital Services) I want to know if results have not been returned due to a error so that I can consider the impact of missing information on my reconciliation.

404- Resource not found
410- Resource deleted

Search Query Parameters

This can be found on the API page depending on which resource you are searching:

Medication Individuals
MedicationOrder Patient
MedicationStatement

POC Sequence Diagram

Sequence diagram showing the flow of information between actors



Acceptance Criteria

While the acceptance criteria is not fully developed, below is an example of some possible criteria that could be defined.

FeatureUser Story
Medication List (View)As a Pharmacist (Hospital Services) I want to retrieve all prescriptions from all available systems for a specific patient so I can build a complete list of reconciled medications for the patient.
  • I am able to call an API with the URL: GET /MedicationOrder?patient.identifier=https://fhir/nhs.net/Id/nhs-number|9876543210.
  • I am able to pass NHS number as an input parameter
  • The API returns profile "MedicationOrder" with medications information about patient as a populated JSON object in the following format: <<Json Object>>
Tags: userstories