An order 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" to generalize the use across inpatient and outpatient settings as well as for care plans, etc.

0. References

1. Read

Return a single MedicationRequest for the specified id.

All requests SHALL contain a valid ‘Authorization’ header and SHALL contain an ‘Accept’ header. The `Accept` header indicates the format of the response the client is able to understand, this will be one of the following application/json+fhir or application/xml+fhir.

1.1. Response

A full set of response codes can be found here API Response Codes. FHIR Servers SHALL support the following response codes:

200 successful operation
404 resource not found
410 resource deleted

Fetches a bundle of all MedicationRequest resources for the specified patient.

All requests SHALL contain a valid ‘Authorization’ header and SHALL contain an ‘Accept’ header. The `Accept` header indicates the format of the response the client is able to understand, this will be one of the following application/json+fhir or application/xml+fhir.

2.1. Search Parameters

This implementation guide outlines some suggested search parameters for the MedicationRequest resource in the table below. To be conformant, provider systems are required to implement all of the SHALL parameters. Provider systems may implement the full list of search parameters for the MedicationRequest resource (HL7 FHIR STU3 MedicationRequest).


Name Type Description Conformance Path
code token Return administrations of this medication code MAY MedicationRequest.medicationCodeableConcept
dateWritten date Return prescriptions written on this date MAY MedicationRequest.dateWritten
patient reference The identity of a patient to list orders for SHALL MedicationRequest.patient
(Patient)
status token Status of the prescription SHOULD MedicationRequest.status

Systems SHOULD support the following search combinations:

  • patient + code

2.1.1. code

See token for details on this parameter. ‘code’ can be used multiple times as a search parameter

system is a uniform resource identifier which defines which CodeSystem the code belongs to. This is optional and if not present all matching codes will be returned regardles of CodeSystems.

To search for MedicationRequests with Insulin glulisine 100units/ml solution for injection 3ml pre-filled disposable devices using SNOMED CT

GET [baseUrl]/MedicationRequest?patient=1&code=http://snomed.info/sct|10097211000001102

Return all MedicationRequest resources with SNOMED CT code of 10097211000001102 for Patient with a logical Id of 1.
GET [baseUrl]/MedicationRequest?patient=1&code=10097211000001102

Return all MedicationRequest resources with code of from any CodeSystem for Patient with a logical Id of 1.

2.1.2. dateWritten

See date for details on this parameter. ‘dateWritten’ can be used multiple times as a search parameter

GET [baseUrl]/MedicationRequest?patient=1&dateWritten=ge2010-01-01&dateWritten=le2011-12-31

Return all MedicationRequest resources that have a dateWritten greater than or equal to 1st Jan 2010, a date less than or equal to 31st Dec 2011 and Patient with a logical id of 1.

2.1.3. patient

See reference for details on this parameter. The patient parameter can be used two ways:

This SHALL be supported for all endpoint provider systems.

id is the logical id of the patient on the server which can be obtained by a Patient resource query.

GET [baseUrl]/MedicationRequest?patient=42

Return all MedicationRequest resources for Patients with a logical id of 42

This SHOULD be supported by middleware systems (e.g. enterprise application integration (EAI) and the enterprise service bus (ESB)) and MAY be supported for endpoint provider systems.

system is a uniform resource identifier which defines which CodeSystem the identifer belongs to. For NHS Number this would be https://fhir.nhs.uk/Id/nhs-number and code would be the NHS Number.

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

Return all MedicationRequest resources for Patients with a NHS Number of 9876543210

2.1.4. status

See token for details on this parameter.

To filter on status ( active | on-hold | completed | entered-in-error | stopped | draft )

GET [baseUrl]/MedicationRequest?patient=1&status=active

Return all MedicationRequest resources with a status of active and Patient with a logical id of 1.

2.2. Search Response

If the search fails (cannot be executed, not that there is no matches), the return value is a status code 4xx or 5xx with an OperationOutcome.

If the search succeeds, the return content is a Bundle with type = searchset containing the results of the search as a list of resources in a defined order. The result list can be long, so servers MAY use paging. If they do, they SHALL use this Paging method for breaking the list into pages if appropriate. The server MAY also return an OperationOutcome resource with additional information about the search; if one is sent it SHALL NOT include any errors, and it shall be marked with an entry mode of include.

A full set of response codes can be found here API Response Codes. FHIR Servers SHALL support the following response codes:

200 successful operation
404 resource not found
410 resource deleted

3. Example

3.1 Request Query

Return all MedciationOrder resources for Patient with a NHS Number of 9876543210, the format of the response body will be xml. Replace ‘baseUrl’ with the actual base Url of the FHIR Server.

3.1.1. cURL

curl -H 'Accept: application/xml+fhir' -H 'Authorization: BEARER [token]' -X GET  '[baseUrl]/MedicationRequest?patient.identifier=https://fhir.nhs.uk/Id/nhs-number|9876543210'

3.2 Query Response

3.2.1 Http Headers

3.2.2 Http Body