R4 Draft for Comment

This page is part of the FHIR Specification (v3.2.0: R4 Ballot 1). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

11.3 Resource MedicationDispense - Content

Pharmacy Work GroupMaturity Level: 2 Trial Use Compartments: Patient, Practitioner

Indicates that a medication product is to be or has been dispensed for a named person/patient. This includes a description of the medication product (supply) provided and the instructions for administering the medication. The medication dispense is the result of a pharmacy system responding to a medication order.

This resource covers the supply of medications to a patient. Examples include dispensing and pick-up from an out-patient or community pharmacy, dispensing patient-specific medications from in-patient pharmacy to ward, as well as issuing a single dose from ward stock to a patient for consumption. The medication dispense is the result of a pharmacy system responding to a medication order.

MedicationDispense is an event resource from a FHIR workflow perspective - see Workflow Event

The Medication domain includes a number of related resources

MedicationRequest An order for both supply of the medication and the instructions for administration of the medicine to a patient.
MedicationDispense Provision of a supply of a medication with the intention that it is subsequently consumed by a patient (usually in response to a prescription).
MedicationAdministration When a patient actually consumes a medicine, or it is otherwise administered to them
MedicationStatement This is a record of a medication being taken by a patient or that a medication has been given to a patient, where the record is the result of a report from the patient or another clinician. A medication statement is not a part of the prescribe->dispense->administer sequence, but is a report that such a sequence (or at least a part of it) did take place, resulting in a belief that the patient has received a particular medication.

This resource does not deal with the supply or transfer of non-medication related items to a patient.

The supply and the associated administration instructions might not exactly follow the original order (prescription), either because some details were left for completion at this point in the process or because the dispenser exercised their clinical judgment to make some appropriate modification.

This resource is referenced by ChargeItem, MedicationStatement and Observation

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationDispense ITUDomainResourceDispensing a medication to a named patient
+ whenHandedOver cannot be before whenPrepared
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier 0..*IdentifierExternal identifier
... partOf 0..*Reference(Procedure)Event that dispense is part of
... status ?!Σ0..1codepreparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped
MedicationDispenseStatus (Required)
... category 0..1CodeableConceptType of medication dispense
MedicationDispenseCategory (Preferred)
... medication[x] Σ1..1What medication was supplied
SNOMED CT Medication Codes (Example)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(Medication)
... subject Σ0..1Reference(Patient | Group)Who the dispense is for
... context 0..1Reference(Encounter | EpisodeOfCare)Encounter / Episode associated with event
... supportingInformation 0..*Reference(Any)Information that supports the dispensing of the medication
... performer 0..*BackboneElementWho performed event
.... function 0..1CodeableConceptWho performed the dispense and what they did
MedicationDispensePerformerFunction (Example)
.... actor 1..1Reference(Practitioner | PractitionerRole | Organization | Patient | Device | RelatedPerson)Individual who was performing
... location 0..1Reference(Location)Where the dispense occurred
... authorizingPrescription 0..*Reference(MedicationRequest)Medication order that authorizes the dispense
... type 0..1CodeableConceptTrial fill, partial fill, emergency fill, etc.
ActPharmacySupplyType (Example)
... quantity 0..1SimpleQuantityAmount dispensed
... daysSupply 0..1SimpleQuantityAmount of medication expressed as a timing amount
... whenPrepared Σ0..1dateTimeWhen product was packaged and reviewed
... whenHandedOver 0..1dateTimeWhen product was given out
... destination 0..1Reference(Location)Where the medication was sent
... receiver 0..*Reference(Patient | Practitioner)Who collected the medication
... note 0..*AnnotationInformation about the dispense
... dosageInstruction 0..*DosageHow the medication is to be used by the patient or administered by the caregiver
... substitution 0..1BackboneElementWhether a substitution was performed on the dispense
.... wasSubstituted 1..1booleanWhether a substitution was or was not performed on the dispense
.... type 0..1CodeableConceptCode signifying whether a different drug was dispensed from what was prescribed
ActSubstanceAdminSubstitutionCode (Example)
.... reason 0..*CodeableConceptWhy was substitution made
SubstanceAdminSubstitutionReason (Example)
.... responsibleParty 0..*Reference(Practitioner)Who is responsible for the substitution
... detectedIssue 0..*Reference(DetectedIssue)Clinical issue with action
... statusReason[x] 0..1Why a dispense was not performed
MedicationDispenseStatusReason (Example)
.... statusReasonCodeableConceptCodeableConcept
.... statusReasonReferenceReference(DetectedIssue)
... eventHistory 0..*Reference(Provenance)A list of releveant lifecycle events

doco Documentation for this format

UML Diagram (Legend)

MedicationDispense (DomainResource)Identifier assigned by the dispensing facility - this is an identifier assigned outside FHIRidentifier : Identifier [0..*]The procedure that the dispense is done because ofpartOf : Reference [0..*] « Procedure »A code specifying the state of the set of dispense events (this element modifies the meaning of other elements)status : code [0..1] « A coded concept specifying the state of the dispense event. (Strength=Required)MedicationDispenseStatus! »Indicates type of medication dispense and where the medication is expected to be consumed or administeredcategory : CodeableConcept [0..1] « A code describing where the dispensed medication is expected to be consumed or administered (Strength=Preferred)MedicationDispenseCategory? »Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medicationsmedication[x] : Type [1..1] « CodeableConcept|Reference(Medication); A coded concept identifying which substance or product can be dispensed (Strength=Example) SNOMED CT Medication ?? »A link to a resource representing the person or the group to whom the medication will be givensubject : Reference [0..1] « Patient|Group »The encounter or episode of care that establishes the context for this eventcontext : Reference [0..1] « Encounter|EpisodeOfCare »Additional information that supports the medication being dispensedsupportingInformation : Reference [0..*] « Any »The principal physical locaiton where the dispense was performedlocation : Reference [0..1] « Location »Indicates the medication order that is being dispensed againstauthorizingPrescription : Reference [0..*] « MedicationRequest »Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etctype : CodeableConcept [0..1] « Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc. (Strength=Example)ActPharmacySupplyType?? »The amount of medication that has been dispensed. Includes unit of measurequantity : Quantity(SimpleQuantity) [0..1]The amount of medication expressed as a timing amountdaysSupply : Quantity(SimpleQuantity) [0..1]The time when the dispensed product was packaged and reviewedwhenPrepared : dateTime [0..1]The time the dispensed product was provided to the patient or their representativewhenHandedOver : dateTime [0..1]Identification of the facility/location where the medication was shipped to, as part of the dispense eventdestination : Reference [0..1] « Location »Identifies the person who picked up the medication. This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professionalreceiver : Reference [0..*] « Patient|Practitioner »Extra information about the dispense that could not be conveyed in the other attributesnote : Annotation [0..*]Indicates how the medication is to be used by the patientdosageInstruction : Dosage [0..*]Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, duplicate therapy, dosage alert etcdetectedIssue : Reference [0..*] « DetectedIssue »Indicates the reason why a dispense was not performedstatusReason[x] : Type [0..1] « CodeableConcept|Reference( DetectedIssue); A code describing why a dispense was not performed (Strength=Example)MedicationDispenseStatusReason?? »A summary of the events of interest that have occurred, such as when the dispense was verifiedeventHistory : Reference [0..*] « Provenance »PerformerDistinguishes the type of performer in the dispense. For example, date enterer, packager, final checkerfunction : CodeableConcept [0..1] « A code describing the role an individual played in dispensing a medication (Strength=Example)MedicationDispensePerformerFu...?? »The device, practitioner, etc. who performed the action. It should be assumed that the actor is the dispenser of the medicationactor : Reference [1..1] « Practitioner|PractitionerRole| Organization|Patient|Device|RelatedPerson »SubstitutionTrue if the dispenser dispensed a different drug or product from what was prescribedwasSubstituted : boolean [1..1]A code signifying whether a different drug was dispensed from what was prescribedtype : CodeableConcept [0..1] « A coded concept describing whether a different medicinal product may be dispensed other than the product as specified exactly in the prescription (Strength=Example)ActSubstanceAdminSubstitution...?? »Indicates the reason for the substitution of (or lack of substitution) from what was prescribedreason : CodeableConcept [0..*] « A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribed (Strength=Example)SubstanceAdminSubstitutionRea...?? »The person or organization that has primary responsibility for the substitutionresponsibleParty : Reference [0..*] « Practitioner »Indicates who or what performed the eventperformer[0..*]Indicates whether or not substitution was made as part of the dispense. In some cases substitution will be expected but does not happen, in other cases substitution is not expected but does happen. This block explains what substitution did or did not happen and why. If nothing is specified, substitution was not donesubstitution[0..1]

XML Template

<MedicationDispense xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier External identifier --></identifier>
 <partOf><!-- 0..* Reference(Procedure) Event that dispense is part of --></partOf>
 <status value="[code]"/><!-- 0..1 preparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped -->
 <category><!-- 0..1 CodeableConcept Type of medication dispense --></category>
 <medication[x]><!-- 1..1 CodeableConcept|Reference(Medication) What medication was supplied --></medication[x]>
 <subject><!-- 0..1 Reference(Patient|Group) Who the dispense is for --></subject>
 <context><!-- 0..1 Reference(Encounter|EpisodeOfCare) Encounter / Episode associated with event --></context>
 <supportingInformation><!-- 0..* Reference(Any) Information that supports the dispensing of the medication --></supportingInformation>
 <performer>  <!-- 0..* Who performed event -->
  <function><!-- 0..1 CodeableConcept Who performed the dispense and what they did --></function>
  <actor><!-- 1..1 Reference(Practitioner|PractitionerRole|Organization|Patient|
    Device|RelatedPerson) Individual who was performing --></actor>
 </performer>
 <location><!-- 0..1 Reference(Location) Where the dispense occurred --></location>
 <authorizingPrescription><!-- 0..* Reference(MedicationRequest) Medication order that authorizes the dispense --></authorizingPrescription>
 <type><!-- 0..1 CodeableConcept Trial fill, partial fill, emergency fill, etc. --></type>
 <quantity><!-- 0..1 Quantity(SimpleQuantity) Amount dispensed --></quantity>
 <daysSupply><!-- 0..1 Quantity(SimpleQuantity) Amount of medication expressed as a timing amount --></daysSupply>
 <whenPrepared value="[dateTime]"/><!-- 0..1 When product was packaged and reviewed -->
 <whenHandedOver value="[dateTime]"/><!-- 0..1 When product was given out -->
 <destination><!-- 0..1 Reference(Location) Where the medication was sent --></destination>
 <receiver><!-- 0..* Reference(Patient|Practitioner) Who collected the medication --></receiver>
 <note><!-- 0..* Annotation Information about the dispense --></note>
 <dosageInstruction><!-- 0..* Dosage How the medication is to be used by the patient or administered by the caregiver --></dosageInstruction>
 <substitution>  <!-- 0..1 Whether a substitution was performed on the dispense -->
  <wasSubstituted value="[boolean]"/><!-- 1..1 Whether a substitution was or was not performed on the dispense -->
  <type><!-- 0..1 CodeableConcept Code signifying whether a different drug was dispensed from what was prescribed --></type>
  <reason><!-- 0..* CodeableConcept Why was substitution made --></reason>
  <responsibleParty><!-- 0..* Reference(Practitioner) Who is responsible for the substitution --></responsibleParty>
 </substitution>
 <detectedIssue><!-- 0..* Reference(DetectedIssue) Clinical issue with action --></detectedIssue>
 <statusReason[x]><!-- 0..1 CodeableConcept|Reference(DetectedIssue) Why a dispense was not performed --></statusReason[x]>
 <eventHistory><!-- 0..* Reference(Provenance) A list of releveant lifecycle events --></eventHistory>
</MedicationDispense>

JSON Template

{doco
  "resourceType" : "MedicationDispense",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External identifier
  "partOf" : [{ Reference(Procedure) }], // Event that dispense is part of
  "status" : "<code>", // preparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped
  "category" : { CodeableConcept }, // Type of medication dispense
  // medication[x]: What medication was supplied. One of these 2:
  "medicationCodeableConcept" : { CodeableConcept },
  "medicationReference" : { Reference(Medication) },
  "subject" : { Reference(Patient|Group) }, // Who the dispense is for
  "context" : { Reference(Encounter|EpisodeOfCare) }, // Encounter / Episode associated with event
  "supportingInformation" : [{ Reference(Any) }], // Information that supports the dispensing of the medication
  "performer" : [{ // Who performed event
    "function" : { CodeableConcept }, // Who performed the dispense and what they did
    "actor" : { Reference(Practitioner|PractitionerRole|Organization|Patient|
    Device|RelatedPerson) } // R!  Individual who was performing
  }],
  "location" : { Reference(Location) }, // Where the dispense occurred
  "authorizingPrescription" : [{ Reference(MedicationRequest) }], // Medication order that authorizes the dispense
  "type" : { CodeableConcept }, // Trial fill, partial fill, emergency fill, etc.
  "quantity" : { Quantity(SimpleQuantity) }, // Amount dispensed
  "daysSupply" : { Quantity(SimpleQuantity) }, // Amount of medication expressed as a timing amount
  "whenPrepared" : "<dateTime>", // When product was packaged and reviewed
  "whenHandedOver" : "<dateTime>", // When product was given out
  "destination" : { Reference(Location) }, // Where the medication was sent
  "receiver" : [{ Reference(Patient|Practitioner) }], // Who collected the medication
  "note" : [{ Annotation }], // Information about the dispense
  "dosageInstruction" : [{ Dosage }], // How the medication is to be used by the patient or administered by the caregiver
  "substitution" : { // Whether a substitution was performed on the dispense
    "wasSubstituted" : <boolean>, // R!  Whether a substitution was or was not performed on the dispense
    "type" : { CodeableConcept }, // Code signifying whether a different drug was dispensed from what was prescribed
    "reason" : [{ CodeableConcept }], // Why was substitution made
    "responsibleParty" : [{ Reference(Practitioner) }] // Who is responsible for the substitution
  },
  "detectedIssue" : [{ Reference(DetectedIssue) }], // Clinical issue with action
  // statusReason[x]: Why a dispense was not performed. One of these 2:
  "statusReasonCodeableConcept" : { CodeableConcept },
  "statusReasonReference" : { Reference(DetectedIssue) },
  "eventHistory" : [{ Reference(Provenance) }] // A list of releveant lifecycle events
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:MedicationDispense;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:MedicationDispense.identifier [ Identifier ], ... ; # 0..* External identifier
  fhir:MedicationDispense.partOf [ Reference(Procedure) ], ... ; # 0..* Event that dispense is part of
  fhir:MedicationDispense.status [ code ]; # 0..1 preparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped
  fhir:MedicationDispense.category [ CodeableConcept ]; # 0..1 Type of medication dispense
  # MedicationDispense.medication[x] : 1..1 What medication was supplied. One of these 2
    fhir:MedicationDispense.medicationCodeableConcept [ CodeableConcept ]
    fhir:MedicationDispense.medicationReference [ Reference(Medication) ]
  fhir:MedicationDispense.subject [ Reference(Patient|Group) ]; # 0..1 Who the dispense is for
  fhir:MedicationDispense.context [ Reference(Encounter|EpisodeOfCare) ]; # 0..1 Encounter / Episode associated with event
  fhir:MedicationDispense.supportingInformation [ Reference(Any) ], ... ; # 0..* Information that supports the dispensing of the medication
  fhir:MedicationDispense.performer [ # 0..* Who performed event
    fhir:MedicationDispense.performer.function [ CodeableConcept ]; # 0..1 Who performed the dispense and what they did
    fhir:MedicationDispense.performer.actor [ Reference(Practitioner|PractitionerRole|Organization|Patient|Device|RelatedPerson) ]; # 1..1 Individual who was performing
  ], ...;
  fhir:MedicationDispense.location [ Reference(Location) ]; # 0..1 Where the dispense occurred
  fhir:MedicationDispense.authorizingPrescription [ Reference(MedicationRequest) ], ... ; # 0..* Medication order that authorizes the dispense
  fhir:MedicationDispense.type [ CodeableConcept ]; # 0..1 Trial fill, partial fill, emergency fill, etc.
  fhir:MedicationDispense.quantity [ Quantity(SimpleQuantity) ]; # 0..1 Amount dispensed
  fhir:MedicationDispense.daysSupply [ Quantity(SimpleQuantity) ]; # 0..1 Amount of medication expressed as a timing amount
  fhir:MedicationDispense.whenPrepared [ dateTime ]; # 0..1 When product was packaged and reviewed
  fhir:MedicationDispense.whenHandedOver [ dateTime ]; # 0..1 When product was given out
  fhir:MedicationDispense.destination [ Reference(Location) ]; # 0..1 Where the medication was sent
  fhir:MedicationDispense.receiver [ Reference(Patient|Practitioner) ], ... ; # 0..* Who collected the medication
  fhir:MedicationDispense.note [ Annotation ], ... ; # 0..* Information about the dispense
  fhir:MedicationDispense.dosageInstruction [ Dosage ], ... ; # 0..* How the medication is to be used by the patient or administered by the caregiver
  fhir:MedicationDispense.substitution [ # 0..1 Whether a substitution was performed on the dispense
    fhir:MedicationDispense.substitution.wasSubstituted [ boolean ]; # 1..1 Whether a substitution was or was not performed on the dispense
    fhir:MedicationDispense.substitution.type [ CodeableConcept ]; # 0..1 Code signifying whether a different drug was dispensed from what was prescribed
    fhir:MedicationDispense.substitution.reason [ CodeableConcept ], ... ; # 0..* Why was substitution made
    fhir:MedicationDispense.substitution.responsibleParty [ Reference(Practitioner) ], ... ; # 0..* Who is responsible for the substitution
  ];
  fhir:MedicationDispense.detectedIssue [ Reference(DetectedIssue) ], ... ; # 0..* Clinical issue with action
  # MedicationDispense.statusReason[x] : 0..1 Why a dispense was not performed. One of these 2
    fhir:MedicationDispense.statusReasonCodeableConcept [ CodeableConcept ]
    fhir:MedicationDispense.statusReasonReference [ Reference(DetectedIssue) ]
  fhir:MedicationDispense.eventHistory [ Reference(Provenance) ], ... ; # 0..* A list of releveant lifecycle events
]

Changes since DSTU2

MedicationDispense
MedicationDispense.identifier
  • Max Cardinality changed from 1 to *
MedicationDispense.partOf
  • Added Element
MedicationDispense.category
  • Added Element
MedicationDispense.subject
  • Renamed from patient to subject
  • Add Reference(Group)
MedicationDispense.context
  • Added Element
MedicationDispense.supportingInformation
  • Added Element
MedicationDispense.performer
  • Added Element
MedicationDispense.performer.function
  • Added Element
MedicationDispense.performer.actor
  • Added Element
MedicationDispense.location
  • Added Element
MedicationDispense.authorizingPrescription
  • Type changed from Reference(MedicationOrder) to Reference(MedicationRequest)
MedicationDispense.note
  • Max Cardinality changed from 1 to *
  • Type changed from string to Annotation
MedicationDispense.dosageInstruction
  • Type changed from BackboneElement to Dosage
MedicationDispense.substitution.wasSubstituted
  • Added Element
MedicationDispense.substitution.type
  • Min Cardinality changed from 1 to 0
MedicationDispense.detectedIssue
  • Added Element
MedicationDispense.statusReason[x]
  • Added Element
MedicationDispense.eventHistory
  • Added Element
MedicationDispense.dispenser
  • deleted
MedicationDispense.dosageInstruction.text
  • deleted
MedicationDispense.dosageInstruction.additionalInstructions
  • deleted
MedicationDispense.dosageInstruction.timing
  • deleted
MedicationDispense.dosageInstruction.asNeeded[x]
  • deleted
MedicationDispense.dosageInstruction.site[x]
  • deleted
MedicationDispense.dosageInstruction.route
  • deleted
MedicationDispense.dosageInstruction.method
  • deleted
MedicationDispense.dosageInstruction.dose[x]
  • deleted
MedicationDispense.dosageInstruction.rate[x]
  • deleted
MedicationDispense.dosageInstruction.maxDosePerPeriod
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R2 <--> R3 Conversion Maps (status = 7 tests that all execute ok. 7 fail round-trip testing and 1 r3 resources are invalid (2 errors).).

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationDispense ITUDomainResourceDispensing a medication to a named patient
+ whenHandedOver cannot be before whenPrepared
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier 0..*IdentifierExternal identifier
... partOf 0..*Reference(Procedure)Event that dispense is part of
... status ?!Σ0..1codepreparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped
MedicationDispenseStatus (Required)
... category 0..1CodeableConceptType of medication dispense
MedicationDispenseCategory (Preferred)
... medication[x] Σ1..1What medication was supplied
SNOMED CT Medication Codes (Example)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(Medication)
... subject Σ0..1Reference(Patient | Group)Who the dispense is for
... context 0..1Reference(Encounter | EpisodeOfCare)Encounter / Episode associated with event
... supportingInformation 0..*Reference(Any)Information that supports the dispensing of the medication
... performer 0..*BackboneElementWho performed event
.... function 0..1CodeableConceptWho performed the dispense and what they did
MedicationDispensePerformerFunction (Example)
.... actor 1..1Reference(Practitioner | PractitionerRole | Organization | Patient | Device | RelatedPerson)Individual who was performing
... location 0..1Reference(Location)Where the dispense occurred
... authorizingPrescription 0..*Reference(MedicationRequest)Medication order that authorizes the dispense
... type 0..1CodeableConceptTrial fill, partial fill, emergency fill, etc.
ActPharmacySupplyType (Example)
... quantity 0..1SimpleQuantityAmount dispensed
... daysSupply 0..1SimpleQuantityAmount of medication expressed as a timing amount
... whenPrepared Σ0..1dateTimeWhen product was packaged and reviewed
... whenHandedOver 0..1dateTimeWhen product was given out
... destination 0..1Reference(Location)Where the medication was sent
... receiver 0..*Reference(Patient | Practitioner)Who collected the medication
... note 0..*AnnotationInformation about the dispense
... dosageInstruction 0..*DosageHow the medication is to be used by the patient or administered by the caregiver
... substitution 0..1BackboneElementWhether a substitution was performed on the dispense
.... wasSubstituted 1..1booleanWhether a substitution was or was not performed on the dispense
.... type 0..1CodeableConceptCode signifying whether a different drug was dispensed from what was prescribed
ActSubstanceAdminSubstitutionCode (Example)
.... reason 0..*CodeableConceptWhy was substitution made
SubstanceAdminSubstitutionReason (Example)
.... responsibleParty 0..*Reference(Practitioner)Who is responsible for the substitution
... detectedIssue 0..*Reference(DetectedIssue)Clinical issue with action
... statusReason[x] 0..1Why a dispense was not performed
MedicationDispenseStatusReason (Example)
.... statusReasonCodeableConceptCodeableConcept
.... statusReasonReferenceReference(DetectedIssue)
... eventHistory 0..*Reference(Provenance)A list of releveant lifecycle events

doco Documentation for this format

UML Diagram (Legend)

MedicationDispense (DomainResource)Identifier assigned by the dispensing facility - this is an identifier assigned outside FHIRidentifier : Identifier [0..*]The procedure that the dispense is done because ofpartOf : Reference [0..*] « Procedure »A code specifying the state of the set of dispense events (this element modifies the meaning of other elements)status : code [0..1] « A coded concept specifying the state of the dispense event. (Strength=Required)MedicationDispenseStatus! »Indicates type of medication dispense and where the medication is expected to be consumed or administeredcategory : CodeableConcept [0..1] « A code describing where the dispensed medication is expected to be consumed or administered (Strength=Preferred)MedicationDispenseCategory? »Identifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medicationsmedication[x] : Type [1..1] « CodeableConcept|Reference(Medication); A coded concept identifying which substance or product can be dispensed (Strength=Example) SNOMED CT Medication ?? »A link to a resource representing the person or the group to whom the medication will be givensubject : Reference [0..1] « Patient|Group »The encounter or episode of care that establishes the context for this eventcontext : Reference [0..1] « Encounter|EpisodeOfCare »Additional information that supports the medication being dispensedsupportingInformation : Reference [0..*] « Any »The principal physical locaiton where the dispense was performedlocation : Reference [0..1] « Location »Indicates the medication order that is being dispensed againstauthorizingPrescription : Reference [0..*] « MedicationRequest »Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etctype : CodeableConcept [0..1] « Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc. (Strength=Example)ActPharmacySupplyType?? »The amount of medication that has been dispensed. Includes unit of measurequantity : Quantity(SimpleQuantity) [0..1]The amount of medication expressed as a timing amountdaysSupply : Quantity(SimpleQuantity) [0..1]The time when the dispensed product was packaged and reviewedwhenPrepared : dateTime [0..1]The time the dispensed product was provided to the patient or their representativewhenHandedOver : dateTime [0..1]Identification of the facility/location where the medication was shipped to, as part of the dispense eventdestination : Reference [0..1] « Location »Identifies the person who picked up the medication. This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professionalreceiver : Reference [0..*] « Patient|Practitioner »Extra information about the dispense that could not be conveyed in the other attributesnote : Annotation [0..*]Indicates how the medication is to be used by the patientdosageInstruction : Dosage [0..*]Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, duplicate therapy, dosage alert etcdetectedIssue : Reference [0..*] « DetectedIssue »Indicates the reason why a dispense was not performedstatusReason[x] : Type [0..1] « CodeableConcept|Reference( DetectedIssue); A code describing why a dispense was not performed (Strength=Example)MedicationDispenseStatusReason?? »A summary of the events of interest that have occurred, such as when the dispense was verifiedeventHistory : Reference [0..*] « Provenance »PerformerDistinguishes the type of performer in the dispense. For example, date enterer, packager, final checkerfunction : CodeableConcept [0..1] « A code describing the role an individual played in dispensing a medication (Strength=Example)MedicationDispensePerformerFu...?? »The device, practitioner, etc. who performed the action. It should be assumed that the actor is the dispenser of the medicationactor : Reference [1..1] « Practitioner|PractitionerRole| Organization|Patient|Device|RelatedPerson »SubstitutionTrue if the dispenser dispensed a different drug or product from what was prescribedwasSubstituted : boolean [1..1]A code signifying whether a different drug was dispensed from what was prescribedtype : CodeableConcept [0..1] « A coded concept describing whether a different medicinal product may be dispensed other than the product as specified exactly in the prescription (Strength=Example)ActSubstanceAdminSubstitution...?? »Indicates the reason for the substitution of (or lack of substitution) from what was prescribedreason : CodeableConcept [0..*] « A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribed (Strength=Example)SubstanceAdminSubstitutionRea...?? »The person or organization that has primary responsibility for the substitutionresponsibleParty : Reference [0..*] « Practitioner »Indicates who or what performed the eventperformer[0..*]Indicates whether or not substitution was made as part of the dispense. In some cases substitution will be expected but does not happen, in other cases substitution is not expected but does happen. This block explains what substitution did or did not happen and why. If nothing is specified, substitution was not donesubstitution[0..1]

XML Template

<MedicationDispense xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier External identifier --></identifier>
 <partOf><!-- 0..* Reference(Procedure) Event that dispense is part of --></partOf>
 <status value="[code]"/><!-- 0..1 preparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped -->
 <category><!-- 0..1 CodeableConcept Type of medication dispense --></category>
 <medication[x]><!-- 1..1 CodeableConcept|Reference(Medication) What medication was supplied --></medication[x]>
 <subject><!-- 0..1 Reference(Patient|Group) Who the dispense is for --></subject>
 <context><!-- 0..1 Reference(Encounter|EpisodeOfCare) Encounter / Episode associated with event --></context>
 <supportingInformation><!-- 0..* Reference(Any) Information that supports the dispensing of the medication --></supportingInformation>
 <performer>  <!-- 0..* Who performed event -->
  <function><!-- 0..1 CodeableConcept Who performed the dispense and what they did --></function>
  <actor><!-- 1..1 Reference(Practitioner|PractitionerRole|Organization|Patient|
    Device|RelatedPerson) Individual who was performing --></actor>
 </performer>
 <location><!-- 0..1 Reference(Location) Where the dispense occurred --></location>
 <authorizingPrescription><!-- 0..* Reference(MedicationRequest) Medication order that authorizes the dispense --></authorizingPrescription>
 <type><!-- 0..1 CodeableConcept Trial fill, partial fill, emergency fill, etc. --></type>
 <quantity><!-- 0..1 Quantity(SimpleQuantity) Amount dispensed --></quantity>
 <daysSupply><!-- 0..1 Quantity(SimpleQuantity) Amount of medication expressed as a timing amount --></daysSupply>
 <whenPrepared value="[dateTime]"/><!-- 0..1 When product was packaged and reviewed -->
 <whenHandedOver value="[dateTime]"/><!-- 0..1 When product was given out -->
 <destination><!-- 0..1 Reference(Location) Where the medication was sent --></destination>
 <receiver><!-- 0..* Reference(Patient|Practitioner) Who collected the medication --></receiver>
 <note><!-- 0..* Annotation Information about the dispense --></note>
 <dosageInstruction><!-- 0..* Dosage How the medication is to be used by the patient or administered by the caregiver --></dosageInstruction>
 <substitution>  <!-- 0..1 Whether a substitution was performed on the dispense -->
  <wasSubstituted value="[boolean]"/><!-- 1..1 Whether a substitution was or was not performed on the dispense -->
  <type><!-- 0..1 CodeableConcept Code signifying whether a different drug was dispensed from what was prescribed --></type>
  <reason><!-- 0..* CodeableConcept Why was substitution made --></reason>
  <responsibleParty><!-- 0..* Reference(Practitioner) Who is responsible for the substitution --></responsibleParty>
 </substitution>
 <detectedIssue><!-- 0..* Reference(DetectedIssue) Clinical issue with action --></detectedIssue>
 <statusReason[x]><!-- 0..1 CodeableConcept|Reference(DetectedIssue) Why a dispense was not performed --></statusReason[x]>
 <eventHistory><!-- 0..* Reference(Provenance) A list of releveant lifecycle events --></eventHistory>
</MedicationDispense>

JSON Template

{doco
  "resourceType" : "MedicationDispense",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External identifier
  "partOf" : [{ Reference(Procedure) }], // Event that dispense is part of
  "status" : "<code>", // preparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped
  "category" : { CodeableConcept }, // Type of medication dispense
  // medication[x]: What medication was supplied. One of these 2:
  "medicationCodeableConcept" : { CodeableConcept },
  "medicationReference" : { Reference(Medication) },
  "subject" : { Reference(Patient|Group) }, // Who the dispense is for
  "context" : { Reference(Encounter|EpisodeOfCare) }, // Encounter / Episode associated with event
  "supportingInformation" : [{ Reference(Any) }], // Information that supports the dispensing of the medication
  "performer" : [{ // Who performed event
    "function" : { CodeableConcept }, // Who performed the dispense and what they did
    "actor" : { Reference(Practitioner|PractitionerRole|Organization|Patient|
    Device|RelatedPerson) } // R!  Individual who was performing
  }],
  "location" : { Reference(Location) }, // Where the dispense occurred
  "authorizingPrescription" : [{ Reference(MedicationRequest) }], // Medication order that authorizes the dispense
  "type" : { CodeableConcept }, // Trial fill, partial fill, emergency fill, etc.
  "quantity" : { Quantity(SimpleQuantity) }, // Amount dispensed
  "daysSupply" : { Quantity(SimpleQuantity) }, // Amount of medication expressed as a timing amount
  "whenPrepared" : "<dateTime>", // When product was packaged and reviewed
  "whenHandedOver" : "<dateTime>", // When product was given out
  "destination" : { Reference(Location) }, // Where the medication was sent
  "receiver" : [{ Reference(Patient|Practitioner) }], // Who collected the medication
  "note" : [{ Annotation }], // Information about the dispense
  "dosageInstruction" : [{ Dosage }], // How the medication is to be used by the patient or administered by the caregiver
  "substitution" : { // Whether a substitution was performed on the dispense
    "wasSubstituted" : <boolean>, // R!  Whether a substitution was or was not performed on the dispense
    "type" : { CodeableConcept }, // Code signifying whether a different drug was dispensed from what was prescribed
    "reason" : [{ CodeableConcept }], // Why was substitution made
    "responsibleParty" : [{ Reference(Practitioner) }] // Who is responsible for the substitution
  },
  "detectedIssue" : [{ Reference(DetectedIssue) }], // Clinical issue with action
  // statusReason[x]: Why a dispense was not performed. One of these 2:
  "statusReasonCodeableConcept" : { CodeableConcept },
  "statusReasonReference" : { Reference(DetectedIssue) },
  "eventHistory" : [{ Reference(Provenance) }] // A list of releveant lifecycle events
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:MedicationDispense;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:MedicationDispense.identifier [ Identifier ], ... ; # 0..* External identifier
  fhir:MedicationDispense.partOf [ Reference(Procedure) ], ... ; # 0..* Event that dispense is part of
  fhir:MedicationDispense.status [ code ]; # 0..1 preparation | in-progress | not-done | on-hold | completed | entered-in-error | stopped
  fhir:MedicationDispense.category [ CodeableConcept ]; # 0..1 Type of medication dispense
  # MedicationDispense.medication[x] : 1..1 What medication was supplied. One of these 2
    fhir:MedicationDispense.medicationCodeableConcept [ CodeableConcept ]
    fhir:MedicationDispense.medicationReference [ Reference(Medication) ]
  fhir:MedicationDispense.subject [ Reference(Patient|Group) ]; # 0..1 Who the dispense is for
  fhir:MedicationDispense.context [ Reference(Encounter|EpisodeOfCare) ]; # 0..1 Encounter / Episode associated with event
  fhir:MedicationDispense.supportingInformation [ Reference(Any) ], ... ; # 0..* Information that supports the dispensing of the medication
  fhir:MedicationDispense.performer [ # 0..* Who performed event
    fhir:MedicationDispense.performer.function [ CodeableConcept ]; # 0..1 Who performed the dispense and what they did
    fhir:MedicationDispense.performer.actor [ Reference(Practitioner|PractitionerRole|Organization|Patient|Device|RelatedPerson) ]; # 1..1 Individual who was performing
  ], ...;
  fhir:MedicationDispense.location [ Reference(Location) ]; # 0..1 Where the dispense occurred
  fhir:MedicationDispense.authorizingPrescription [ Reference(MedicationRequest) ], ... ; # 0..* Medication order that authorizes the dispense
  fhir:MedicationDispense.type [ CodeableConcept ]; # 0..1 Trial fill, partial fill, emergency fill, etc.
  fhir:MedicationDispense.quantity [ Quantity(SimpleQuantity) ]; # 0..1 Amount dispensed
  fhir:MedicationDispense.daysSupply [ Quantity(SimpleQuantity) ]; # 0..1 Amount of medication expressed as a timing amount
  fhir:MedicationDispense.whenPrepared [ dateTime ]; # 0..1 When product was packaged and reviewed
  fhir:MedicationDispense.whenHandedOver [ dateTime ]; # 0..1 When product was given out
  fhir:MedicationDispense.destination [ Reference(Location) ]; # 0..1 Where the medication was sent
  fhir:MedicationDispense.receiver [ Reference(Patient|Practitioner) ], ... ; # 0..* Who collected the medication
  fhir:MedicationDispense.note [ Annotation ], ... ; # 0..* Information about the dispense
  fhir:MedicationDispense.dosageInstruction [ Dosage ], ... ; # 0..* How the medication is to be used by the patient or administered by the caregiver
  fhir:MedicationDispense.substitution [ # 0..1 Whether a substitution was performed on the dispense
    fhir:MedicationDispense.substitution.wasSubstituted [ boolean ]; # 1..1 Whether a substitution was or was not performed on the dispense
    fhir:MedicationDispense.substitution.type [ CodeableConcept ]; # 0..1 Code signifying whether a different drug was dispensed from what was prescribed
    fhir:MedicationDispense.substitution.reason [ CodeableConcept ], ... ; # 0..* Why was substitution made
    fhir:MedicationDispense.substitution.responsibleParty [ Reference(Practitioner) ], ... ; # 0..* Who is responsible for the substitution
  ];
  fhir:MedicationDispense.detectedIssue [ Reference(DetectedIssue) ], ... ; # 0..* Clinical issue with action
  # MedicationDispense.statusReason[x] : 0..1 Why a dispense was not performed. One of these 2
    fhir:MedicationDispense.statusReasonCodeableConcept [ CodeableConcept ]
    fhir:MedicationDispense.statusReasonReference [ Reference(DetectedIssue) ]
  fhir:MedicationDispense.eventHistory [ Reference(Provenance) ], ... ; # 0..* A list of releveant lifecycle events
]

Changes since DSTU2

MedicationDispense
MedicationDispense.identifier
  • Max Cardinality changed from 1 to *
MedicationDispense.partOf
  • Added Element
MedicationDispense.category
  • Added Element
MedicationDispense.subject
  • Renamed from patient to subject
  • Add Reference(Group)
MedicationDispense.context
  • Added Element
MedicationDispense.supportingInformation
  • Added Element
MedicationDispense.performer
  • Added Element
MedicationDispense.performer.function
  • Added Element
MedicationDispense.performer.actor
  • Added Element
MedicationDispense.location
  • Added Element
MedicationDispense.authorizingPrescription
  • Type changed from Reference(MedicationOrder) to Reference(MedicationRequest)
MedicationDispense.note
  • Max Cardinality changed from 1 to *
  • Type changed from string to Annotation
MedicationDispense.dosageInstruction
  • Type changed from BackboneElement to Dosage
MedicationDispense.substitution.wasSubstituted
  • Added Element
MedicationDispense.substitution.type
  • Min Cardinality changed from 1 to 0
MedicationDispense.detectedIssue
  • Added Element
MedicationDispense.statusReason[x]
  • Added Element
MedicationDispense.eventHistory
  • Added Element
MedicationDispense.dispenser
  • deleted
MedicationDispense.dosageInstruction.text
  • deleted
MedicationDispense.dosageInstruction.additionalInstructions
  • deleted
MedicationDispense.dosageInstruction.timing
  • deleted
MedicationDispense.dosageInstruction.asNeeded[x]
  • deleted
MedicationDispense.dosageInstruction.site[x]
  • deleted
MedicationDispense.dosageInstruction.route
  • deleted
MedicationDispense.dosageInstruction.method
  • deleted
MedicationDispense.dosageInstruction.dose[x]
  • deleted
MedicationDispense.dosageInstruction.rate[x]
  • deleted
MedicationDispense.dosageInstruction.maxDosePerPeriod
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R2 <--> R3 Conversion Maps (status = 7 tests that all execute ok. 7 fail round-trip testing and 1 r3 resources are invalid (2 errors).).

 

Alternate definitions: Master Definition (XML, JSON), XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions & the dependency analysis

PathDefinitionTypeReference
MedicationDispense.status A coded concept specifying the state of the dispense event.RequiredMedicationDispenseStatus
MedicationDispense.category A code describing where the dispensed medication is expected to be consumed or administeredPreferredMedicationDispenseCategory
MedicationDispense.medication[x] A coded concept identifying which substance or product can be dispensedExampleSNOMED CT Medication Codes
MedicationDispense.performer.function A code describing the role an individual played in dispensing a medicationExampleMedicationDispensePerformerFunction
MedicationDispense.type Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc.ExampleActPharmacySupplyType
MedicationDispense.substitution.type A coded concept describing whether a different medicinal product may be dispensed other than the product as specified exactly in the prescriptionExampleActSubstanceAdminSubstitutionCode
MedicationDispense.substitution.reason A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribedExampleSubstanceAdminSubstitutionReason
MedicationDispense.statusReason[x] A code describing why a dispense was not performedExampleMedicationDispenseStatusReason

  • mdd-1: whenHandedOver cannot be before whenPrepared (expression : whenHandedOver.empty() or whenPrepared.empty() or whenHandedOver >= whenPrepared)

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
codetokenReturn dispenses of this medicine codeMedicationDispense.medication.as(CodeableConcept)4 Resources
contextreferenceReturns dispenses with a specific context (episode or episode of care)MedicationDispense.context
(EpisodeOfCare, Encounter)
destinationreferenceReturn dispenses that should be sent to a specific destinationMedicationDispense.destination
(Location)
identifiertokenReturn dispenses with this external identifierMedicationDispense.identifier3 Resources
medicationreferenceReturn dispenses of this medicine resourceMedicationDispense.medication.as(Reference)
(Medication)
3 Resources
patientreferenceThe identity of a patient to list dispenses forMedicationDispense.subject
(Patient)
3 Resources
performerreferenceReturn dispenses performed by a specific individualMedicationDispense.performer.actor
(Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson)
prescriptionreferenceThe identity of a prescription to list dispenses fromMedicationDispense.authorizingPrescription
(MedicationRequest)
1 Resources
receiverreferenceThe identity of a receiver to list dispenses forMedicationDispense.receiver
(Practitioner, Patient)
responsiblepartyreferenceReturn dispenses with the specified responsible partyMedicationDispense.substitution.responsibleParty
(Practitioner)
statustokenReturn dispenses with a specified dispense statusMedicationDispense.status3 Resources
subjectreferenceThe identity of a patient to list dispenses forMedicationDispense.subject
(Group, Patient)
typetokenReturn dispenses of a specific typeMedicationDispense.type
whenhandedoverdateReturns dispenses handed over on this dateMedicationDispense.whenHandedOver
whenprepareddateReturns dispenses prepared on this dateMedicationDispense.whenPrepared