Play with FHIR ®

A lightweight REST-based access layer for standard HL7-defined data models. Read the spec

Get FHIR'd up! Epic's Sandbox now supports DSTU2 resources. All resources below are supported in Epic's 2015 release and forward.

New to FHIR? Check out our tutorial to get started!

Medication Order + Medication Statement + Medication

The FHIR MedicationOrder resource defines detailed information about a medication that was ordered for a patient. This includes prescriptions or OTC drugs ordered in an ambulatory clinic. It is not used for diet orders or durable medical equipment. It also contains information about how the medication should be taken by or given to the patient.

The FHIR MedicationStatement resource defines detailed information about medications being consumed by a patient. This includes medication prescriptions, OTC drugs ordered in an ambulatory clinic, and medications reported by a patient. The medication information may come from e.g. the patient's memory, from a prescription bottle, or from a list of medications the patient, clinician or other party maintains and therefore is often, if not always, less specific than the medicationOrder resource.

The FHIR Medication resource defines detailed information about a medication product or a medication package. The Medication resource is not specific to any patient.

To play in an interactive sandbox, navigate to this page
using Chrome, Safari, or Firefox ("FHIRFox"??).
 Click the button. Go on.
See more

Endpoints

MedicationOrder Search Interaction

Relative URL FHIR Interaction HTTP Method Action
/MedicationOrder?[parameter=value] Search Get Retrieves MedicationOrder resources that meet the specified search criteria.

The search interaction enables the client to query for all medications associated with a given patient's medication list. The client, having established the patient in question, now wishes to retrieve the list of that patient's medications. Currently, Epic's sandbox supports the following search parameters:

Note: To ensure clinical safety for a patient, searches filtered with a datewritten search parameter will return all active medications in addition to other data returned in the search.
Parameter Name Parameter Type Description
_id Reference Search for MedicationOrder resources using one or more server ids (equivalent to one or more Get /MedicationOrder/{ID} requests)
patient Reference Search for MedicationOrder resources for a specified patient ID.
status Token Further refine a search for MedicationOrder resources for a given patient by specifying additional status flags. By default, active medications are returned. Statuses of completed and stopped may also be specified, but the active status must be specified in addition to any other non-active statuses for a valid search.
dateWritten Date Further refine a search for MedicationOrder resources for a given patient by specifying a date or a range of dates for when the medication was ordered. Note: all active medications will be returned regardless of date range provided on the search.
Examples
Query Result
/MedicationOrder?patient=Tbt3KuCY0B5PSrJvCu2j-PlK.aiHsu2xUjUM8bWpetXoB Returns all active MedicationOrder resources for Jason Argonaut.
/MedicationOrder?patient=Tbt3KuCY0B5PSrJvCu2j-PlK.aiHsu2xUjUM8bWpetXoB&status=active,completed Returns active and completed MedicationOrder resources for Jason Argonaut.

MedicationOrder Read Interaction

Relative URL FHIR Interaction HTTP Method Action
/MedicationOrder/{ID} Read Get Retrieve details about MedicationOrder ID

The Read interaction enables the look up of a MedicationOrder resource by a constant server ID. Clients can store only the server ID, and with a single request, retrieve the most up-to-date information about the MedicationOrder. Read interactions typically begin with a client having previously established a relationship, often through querying for patients through the Search interaction.

MedicationStatement Search Interaction

Relative URL FHIR Interaction HTTP Method Action
/MedicationStatement?[parameter=value] Search Get Retrieves MedicationStatement resources that meet the specified search criteria.

The search interaction enables the client to query for all medications associated with a given patient's medication list. The client, having established the patient in question, now wishes to retrieve the list of that patient's medications. Currently, Epic's sandbox supports the following search parameters:

Note: To ensure clinical safety for a patient, searches filtered with a effectiveDate search parameter will return all active medications in addition to other data returned in the search.
Parameter Name Parameter Type Description
_id Reference Search for MedicationStatement resources using one or more server ids (equivalent to one or more Get /MedicationStatement/{ID} requests)
patient Reference Search for MedicationStatement resources for a specified patient ID.
status Token Further refine a search for MedicationStatement resources for a given patient by specifying additional status flags. By default, active medications are returned. Statuses of completed and intended may also be specified, but the active status must be specified in addition to any other non-active statuses for a valid search.
effectiveDate Date Further refine a search for MedicationStatement resources for a given patient by specifying a date or a range of dates for when the medication was ordered. Note: all active medications will be returned regardless of date range provided on the search.
Examples
Query Result
/MedicationStatement?patient=Tbt3KuCY0B5PSrJvCu2j-PlK.aiHsu2xUjUM8bWpetXoB Returns all active MedicationStatement resources for Jason Argonaut.
/MedicationStatement?patient=Tbt3KuCY0B5PSrJvCu2j-PlK.aiHsu2xUjUM8bWpetXoB&status=active,completed Returns active and completed MedicationStatement resources for Jason Argonaut.

MedicationStatement Read Interaction

Relative URL FHIR Interaction HTTP Method Action
/MedicationStatement/{ID} Read Get Retrieve details about MedicationStatement ID

The Read interaction enables the look up of a MedicationStatement resource by a constant server ID. Clients can store only the server ID, and with a single request, retrieve the most up-to-date information about the MedicationStatement. Read interactions typically begin with a client having previously established a relationship, often through querying for patients through the Search interaction.

Medication Read Interaction

Relative URL FHIR Interaction HTTP Method Action
/Medication/{ID} Read Get Retrieve details about Medication ID

The read interaction enables the look up of a Medication resource by a constant server ID. The read interaction allows clients to store only the server ID, and with a single request, retrieve the most up-to-date information about the medication. Read interactions typically begin with a client having previously established a relationship, often through querying for patients through the search interaction.

Errors

When things go wrong, the Epic EMR responds with an error code and a human-readable description to describe the incorrect submission. Currently, the error code is not included in the REST version of the specification, but it is provided here for your reference. These codes are meant for developer use only - they should not be presented to end users. Instead, your application should interpret the codes and provide user-friendly resolution steps when data cannot be filed.

FHIR Errors come in two flavors:

  • Fatal Errors cause the response to contain no results and are usually due to requests from the client processed as invalid - missing or invalid data in the request, unauthorized access, or expired content in the system.
  • Warning Errors accompany a successful response and are used to indicate that part of a request could not be fulfilled - for example, if a status is unknown, but the request can be fulfilled, the API will return the data and indicate that part of the request couldn't be understood.

FHIR Error Codes

Error Code Severity Description Example
4100 Fatal The resource request contained an invalid parameter Invalid parameter such as a non existent patient ID: AllergyIntolerance?patient=foo
4101 Warning Resource request returns no results A request for data that was otherwise valid but no information was documented or found (i.e. a patient with no pertinent implanted devices, or a demographic search where no patients met the search criteria).
4102 Fatal The read resource request contained an invalid ID Invalid Resource ID: AllergyIntolerance/foo
4107 Fatal The read resource request has been merged Requesting a Patient which has been merged - in this event, in addition to the error response, we will respond with an HTTP Redirect status. To browsers and many HTTP clients, the redirect will be transparent.
4110 Fatal No parameters are provided in the search request An invalid search request such as : AllergyIntolerance?
4111 Fatal Required search parameter missing from request A request missing a required parameter (such as the patient): Condition?category=diagnosis
4112 Fatal The resource request contained an invalid combination of parameters A search containing multiple different patient ID: AllergyIntolerance?patient=[ID 1]&patient=[ID 2]
4113 Fatal Session ID for cached search results has expired. Making a request for previously accessed paginated search results after the search has expired.
4115 Fatal Required search parameter has an invalid value An invalid parameter required for searching: Condition?Patient=[ID]&category=foo
4117 Warning No CVX code for Immunization resource Request for an Immunization resource without a documented CVX code.
4118 Fatal User not authorized for request Request data that the authenticated user is not allowed access to view (i.e. a patient asking for data about a stranger's allergies).
4119 Warning Additional data may be present for patient Request data while authenticated as an authorized patient or patient proxy. Inidicates that data available to the patient may not be the complete medical record within the system.