Medication Prescription and Dispense (MPD)
0.1.0 - ci-build International flag

Medication Prescription and Dispense (MPD), 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-mpd/tree/master and changes regularly. See the Directory of published versions

Single- and multiline prescriptions

In some jurisdictions, a prescription is modeled as having only one line - one prescription means one medication. In other countries or models, a prescription is a group of medication lines. This is normally legally established, and it is important to support both these cases.

The IHE MPD profile provides a common model that supports both these cases. This allows different types of implementations to use IHE, and allows for interoperability between these different systems, understanding the data needs and assumptions.

The model describes the medication prescription and dispensing processes. It supports the two common scenarios:

  1. Single-line Prescriptions: Each prescription corresponds to one line.
  2. Multi-line Prescriptions: A prescription can contain multiple lines.

This diagram shows the two models side by side, and their correspondence:

IHEMedicationOrderModelgroupIdentifier 0..1identifier 1..*prescriber 1..1issueDate 1..1patient 1..1recorder 0..1recordingDate 0..1status 1..1statusReason 0..*basedOn 0..1category 0..*validFrom 0..1validUntil 0..1prescriptionIntent 0..1medication 1..1indication 0..*indicationText 0..*indicationReference 0..*treatmentPeriod 0..1quantityPrescribed 0..1dosageInstructions 0..*preparationInstructions 0..1substitution 0..1allowed[x] 0..1reason[x] 0..1offLabel 0..1isOffLabelUse 1..1reason[x] 0..*repeatsAllowed 0..1minimumDispenseInterval 0..1comment 0..*IHEMultilineOrderidentifier 1..*patient 1..1prescriber 1..1issueDate 1..1recorder 0..1recordingDate 0..1validFrom 0..1validUntil 0..1medicationLine 1..*status 1..1statusReason 0..*category 0..*basedOn 0..1medication 1..1prescriptionIntent 0..1indication 0..*indicationText 0..1indicationReference 0..*treatmentPeriod 0..1quantityPrescribed 0..1dosageInstructions 0..*preparationInstructions 0..1substitution 0..1allowed[x] 0..1reason[x] 0..1offLabel 0..1isOffLabelUse 1..1reason[x] 0..*repeatsAllowed 0..1minimumDispenseInterval 0..1comment 0..*


Core Entities and Relationships:

  • Medication Product: Denotes a specific medication product.

  • Prescription: Represents an overall prescription. In single-line prescriptions, this entity is not used.

  • Prescription Line: Detailed line item within a prescription.

  • Dispense: The dispensation of a medication, always tied to a Prescription Line.

Relationship with Dispense:

  • For multi-line prescriptions, a Prescription can contain multiple Prescription Lines.
  • Both Prescription Line and Dispense refer to Medication Product.

Compatibility

The two approaches are made compatible by using the same objects and relationships, and by putting the group as an identifier.

Systems processing prescriptions that uses a different approach can safely process data:

  • A system working with single-line prescriptions can see that the prescription line has a grouping and can optionally retrieve the entire group (prescription)

A Dispensation is always related to an individual Prescription Line.

Coordinating several requests

Coordinating the execution of requests is done using the Task resource, as defined in the Clinical Order Workflows Implementation Guide.

In some cases, dispenses for multiple prescription lines must be done in one single place or occasion. This drives the need for Task.focus to support multiple requests (one request for each prescription line).

While prior to R6, Task.focus has cardinality 0..1, implementers can use a built-in extension mechanism that "imports" an element as an extension. In this case, the task.focus element is imported as an additional extension on Task, thus allowing task.focus to effectively point to several requests.

Profile: GroupCoordinationTask
Parent: Task
* extension contains http://hl7.org/fhir/4.0/StructureDefinition/extension-Task.focus named focus 0..* MS