IHE Pharmacy Medication Overview
0.1.0 - ci-build
IHE Pharmacy Medication Overview, published by Integrating the Healthcare Enterprise (IHE). This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/IHE/pharm-meow/tree/jct-draft and changes regularly. See the Directory of published versions
Built from commit 62c0f394. Branch: jct-draft.
The Retrieve Medication Overview transaction [PHARM-11] allows a Medication Overview Consumer to retrieve a complete, self-contained medication overview from a Medication Overview Responder.
The response is a MedicationOverviewBundle — a Bundle of type document — that carries authorship metadata via a Composition, and is suitable for handover, discharge summaries, and legal records. Unlike PHARM-12, which returns a live searchset of individual resources, this transaction returns a snapshot that is attributed and immutable.
The Consumer may either retrieve a specific known overview by identifier, or search for available overviews matching criteria such as patient, overview type, and date.
| Actor | Role |
|---|---|
| Medication Overview Consumer | Initiates the retrieval; processes the returned overview Bundle |
| Medication Overview Responder | Stores medication overviews and responds to retrieval requests |
Note: The Medication Overview Responder supports this transaction only if the Document Option is declared. A Responder that does not store pre-assembled overviews MAY instead support on-demand generation (see Option: On-Demand Generation).
This transaction supports two request patterns. Both return a MedicationOverviewBundle. Systems SHALL support Pattern A (direct fetch); Pattern B (search for overviews) is required if the Responder holds multiple overviews per patient.
Used when the Consumer already has an identifier for a specific overview (e.g. obtained from a prior directory query or notification).
GET [base]/Bundle/[logical-id]
or, using a business identifier:
GET [base]/Bundle?identifier=[system]|[value]
Used when the Consumer wants to discover what overviews exist for a patient and retrieve the most appropriate one.
GET [base]/Bundle?type=document&patient=[ref]&[optional-parameters]
| Parameter | Type | Description |
|---|---|---|
patient |
reference |
Required for Pattern B. The patient whose overviews are requested. Supports local reference or identifier token (patient.identifier=[system]\|[value]). |
type |
token |
The overview type / medication list category. Bound to the medication list type ValueSet (open issue #42). Examples: active medication list, discharge medication list, reconciled medication list. |
date |
date |
Filter by overview creation date. Supports gt, lt, ge, le prefixes. |
_sort=date |
— | Sort results by date descending to retrieve the most recent overview first. |
_count |
— | Limit number of overviews returned (e.g. _count=1 for most recent only). |
Fetch an overview by logical id:
GET [base]/Bundle/550e8400-e29b-41d4-a716-446655440000
Find the most recent active medication list for a patient:
GET [base]/Bundle?type=document
&patient=Patient/123
&type=http://loinc.org|10160-0
&_sort=-date
&_count=1
Find all discharge medication overviews for a patient since a date:
GET [base]/Bundle?type=document
&patient=Patient/123
&type=http://loinc.org|56445-0
&date=ge2024-01-01
Using a national patient identifier:
GET [base]/Bundle?type=document
&patient.identifier=urn:oid:2.16.840.1.113883.2.51.1|A123456789
&_sort=-date
The type parameter selects the kind of medication overview. The following types are anticipated; the ValueSet is under development (see issue #42):
| Overview Type | Provisional code | Description |
|---|---|---|
| Active Medication List | LOINC 10160-0 | All currently active treatment lines |
| Discharge Medication List | LOINC 56445-0 | Medication overview produced at discharge |
| Reconciled Medication List | TBD | Result of a formal medication reconciliation process |
| Aggregated Overview | TBD | Assembled from multiple sources |
Open issue: Finalize the ValueSet for overview type codes, considering existing LOINC codes and the need for additional types (issue #42).
200 OK (Pattern A)A single MedicationOverviewBundle resource is returned, conforming to MedicationOverviewBundle.
The Bundle SHALL contain:
MedicationOverviewComposition — authorship, date, type, and section structurePatient — subject of the overviewMedicationTreatmentLine — the treatment lines (mandatory clinical content)MedicationTreatment (CarePlan) — grouping of treatment lines (conditional; present when treatment grouping is represented)MedicationRequest — related prescriptions (optional; included based on Composition sections)MedicationDispense — related dispenses (optional)MedicationAdministration — related administrations (optional)Medication — medication product details referenced by treatment lines200 OK (Pattern B)A Bundle of type searchset is returned. Each entry in the searchset is a MedicationOverviewBundle.
Bundle.total reflects the number of matching overviews.MedicationOverviewBundle or a reference that the Consumer can dereference to retrieve the full overview.Design question: Should Pattern B return full overview Bundles inline in the searchset, or references? Full inlining is simple but produces large responses. Returning references (with a subsequent Pattern A fetch) is more scalable. This decision is open.
200 OKAn empty searchset Bundle (total = 0) for Pattern B. The Responder SHALL NOT return 404 when there are simply no overviews matching the criteria.
| HTTP Status | Meaning |
|---|---|
400 Bad Request |
Missing required parameter or malformed request |
401 Unauthorized |
Missing or invalid IUA authorization token |
403 Forbidden |
Requester is not authorized to access this patient's overviews |
404 Not Found |
Specific overview id does not exist (Pattern A only) |
410 Gone |
Overview existed but has been superseded or retracted |
All error responses SHALL include an OperationOutcome.
A Responder that does not store pre-assembled overviews MAY support on-demand generation using the FHIR $document operation on a Composition:
GET [base]/Composition/[id]/$document
In this case:
MedicationOverviewComposition resource (with section references to live resources).$document, it assembles and returns a complete MedicationOverviewBundle.Open question: Should this option be normative (i.e. a defined actor option) or informative? Declare as an Actor Option if on-demand generation is expected to be a distinct implementation pattern.
MedicationOverviewBundle conforming to MedicationOverviewBundle for a successful Pattern A request.404 for Pattern A requests when the overview identifier does not exist.410 Gone if an overview has been explicitly retracted or replaced.MedicationOverviewBundle, including all defined section types.Composition.author and Composition.date for provenance purposes.The Medication Overview Responder (Document Option) SHALL declare:
{
"type": "Bundle",
"interaction": [
{ "code": "read" },
{ "code": "search-type" }
],
"searchParam": [
{ "name": "type", "type": "token", "documentation": "Filter by overview type (overview category)" },
{ "name": "patient", "type": "reference", "documentation": "Required for patient-scoped search" },
{ "name": "date", "type": "date" }
]
}
If on-demand generation via $document is supported:
{
"type": "Composition",
"operation": [
{
"name": "document",
"definition": "http://hl7.org/fhir/OperationDefinition/Composition-document"
}
]
}
| Aspect | PHARM-11 (Retrieve Overview) | PHARM-12 (Query Resources) |
|---|---|---|
| Response type | Bundle type=document |
Bundle type=searchset |
| Authorship | Composition with explicit author and date |
None — server-assembled view |
| Immutability | Snapshot fixed at overview creation time | Always reflects current state |
| Use case | Handover, discharge, legal record, patient communication | EHR display, CDS, aggregation, synchronisation |
| Mandatory content | MedicationTreatmentLine + Composition + Patient | MedicationTreatmentLine |
| Actor option | Optional (Document Option) | Required (base capability) |
Composition.confidentiality SHALL be subject to additional access control enforcement.| Issue | Description |
|---|---|
| #42 | Finalize ValueSet for overview type / medication list category codes |
| #25 | Use cases needed to confirm which overview types are in scope |
| #39 | MedicationTreatment (CarePlan) profile completion — affects Bundle content |
| — | Decide: Pattern B returns full overviews inline or references? |
| — | Decide: On-demand $document — informative or a named actor option? |
| — | Define retraction/replacement semantics (superseded overviews, 410 Gone) |