Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page will be used to capture discussion around how to query for medication lists using FHIR Resources.



Document guidance on how to retrieve a medication list.  This guidance would cover lists like: 

  1. active medication list  - as represented by the patient
  2. active medication list - as represented by a healthcare organization
  3. dispense related medication lists
  4. administration related medication lists
    1. Medication to be administered
    2. Medication that has been administered
    3. Medication that has been "reported" to be administrated
  5. Medication history lists  - based on MedicationUsage resource

There may be other lists of medications - EHRs or ePrescribing systems sometimes present to their users, list of active medication orders, orders on hold, orders that have run to completion, orders that are not filtered by any status, whether active or in another state e.g. hold, completed, entered in error, etc. 

to do: define what "active", "current", "regular", chronic

to do: define what it means when the patient states "I am currently taking a medication"

to do: what it means when we document what a patient "should be taking" and how to represent that in FHIR


In US-Meds IG (STU3), the active medication list was retrieved by querying MedicationStatement exclusively where status = active.

In STU3, MedicationStatement had two elements for taken (Boolean) and status.

  • Taken was used to represent the medication usage (in the past)

  • Status was used to infer whether the medication should be on the “active meds list” (i.e. whether the patient should be taking the medication going forward)

In R4, MedicationStatement added not-taken into the status value set (and removed the taken Boolean). 

In R4, MedicationRequest was enhanced to add a new reported[x] element that indicates whether the MedicationRequest was reported (insert definition).

In R5, MedicationUsage was enhanced to add a new Adherence element that indicates whether the patient has Taken, Taken as Directed, Not Taken as Directed a medication. In addition the MedicationUsage.status element has updated the value set for status to:  Completed, Entered in Error, Unknown

The Problem

Using MedicationStatement exclusively in R4 doesn’t work since we lost the ability to use MedicationStatement.status to convey whether a not-taken medication is active or not.  Some not-taken medications are associated with active orders/prescriptions while other not-taken statements are associated with old orders/prescriptions that have since been completed or stopped. 

Using MedicationRequest exclusively in R4 doesn’t work since it is still not scoped to handle patient statements about their over-the-counter (OTC) medication usage that don’t have an underlying prescription or request.

Using both MedicationStatement and MedicationRequest introduces patient safety risk if an application made a false assumption that all active medications were returned from a single resource.

Furthermore, the boundaries between MedicationStatement and a reported MedicationRequest present a challenge for systems that don’t make that fine distinction.  For example, the following use cases are often handled in the same way:

* Patient conveys to provider A that another provider B prescribed a given medication (this is debatable whether it is a MedicationStatement or a recorded MedicationRequest)

* Patient conveys they took an OTC medication (this is a MedicationStatement – since the patient isn’t requesting a new prescription)

* The system programmatically learns of an existing medication and makes a non-authoritative copy (this is a recorded MedicationRequest)

Most systems CAN differentiate between:

* What the patient said about their medication usage (taken vs not taken)

* Whether the provider wants to keep the recorded MedicationRequest or MedicationStatement on the active medication list

In summary, we have a bit of a catch 22 where:

* We can’t use MedicationStatement exclusively (when status = not-taken), nor can we use MedicationStatement to convey status of what was ordered (when usage differs from what was ordered).

* We can’t use MedicationRequest exclusively (when scope excludes patient statements about OTC medications)

* Systems often don’t differentiate between reported MedicationRequests vs MedicationStatements, so the boundaries are challenging to honor.

R4 Next Steps

Base specification allows the active med list to use MedicationRequest or MedicationStatement

Argonaut / US-Core IGs proposal to use MedicationRequest exclusively

R5 Next Steps

Clarify boundaries between reported MedicationRequest and MedicationUsage (and confirm that systems can honor those proposed boundaries)

Review MedicationUsage.status value set to ensure that the codes are limited to medication usage and not conveying an order status.reviewed and updated to support:  Completed, Entered in Error, Unknown and removed all other status values.  

MedicationUsage was enhanced to add a new Adherence element that indicates whether the patient has Taken, Taken as Directed, Not Taken as Directed a medication. 



  • Should pull requirements together and include the context on the medication lists and their use
  • New Zealand - strongly view that MedicationStatement - patient's lists of medications drawn from multiple sources - national repositories, pharmacies, prescribing systems
  • need to consider how to get this done in light of updates to US Core