FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions icon

11.3 Resource MedicationDispense - Content

Pharmacy icon Work GroupMaturity Level: 2 Trial UseSecurity Category: Patient Compartments: Encounter, 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 outpatient or community pharmacy, dispensing patient-specific medications from inpatient pharmacy to ward, as well as issuing a single dose from ward stock to a patient for consumption. The medication dispense can be 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 the medication 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.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationDispense TUDomainResourceDispensing a medication to a named patient
+ Rule: whenHandedOver cannot be before whenPrepared

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier 0..*IdentifierExternal identifier

... basedOn 0..*Reference(CarePlan)Plan that is fulfilled by this dispense

... partOf 0..*Reference(Procedure | MedicationAdministration)Event that dispense is part of

... status ?!Σ1..1codepreparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
Binding: MedicationDispense Status Codes (Required)
... notPerformedReason 0..1CodeableReference(DetectedIssue)Why a dispense was not performed
Binding: MedicationDispense Status Reason Codes (Example)
... statusChanged 0..1dateTimeWhen the status changed
... category 0..*CodeableConceptType of medication dispense
Binding: MedicationDispense Administration Location Codes (Example)

... medication Σ1..1CodeableReference(Medication)What medication was supplied
Binding: SNOMED CT Medication Codes (Example)
... subject Σ1..1Reference(Patient | Group)Who the dispense is for
... encounter 0..1Reference(Encounter)Encounter 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
Binding: MedicationDispense Performer Function Codes (Example)
.... actor 1..1Reference(Practitioner | PractitionerRole | Organization | Patient | Device | RelatedPerson | CareTeam)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
Binding: ActPharmacySupplyType icon (Example)
... quantity 0..1SimpleQuantityAmount dispensed
... daysSupply 0..1SimpleQuantityAmount of medication expressed as a timing amount
... recorded 0..1dateTimeWhen the recording of the dispense started
... whenPrepared ΣC0..1dateTimeWhen product was packaged and reviewed
... whenHandedOver C0..1dateTimeWhen product was given out
... destination 0..1Reference(Location)Where the medication was/will be sent
... receiver 0..*Reference(Patient | Practitioner | RelatedPerson | Location | PractitionerRole)Who collected the medication or where the medication was delivered

... note 0..*AnnotationInformation about the dispense

... renderedDosageInstruction 0..1markdownFull representation of the dosage instructions
... 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
Binding: ActSubstanceAdminSubstitutionCode icon (Example)
.... reason 0..*CodeableConceptWhy was substitution made
Binding: SubstanceAdminSubstitutionReason icon (Example)

.... responsibleParty 0..1Reference(Practitioner | PractitionerRole | Organization)Who is responsible for the substitution
... eventHistory 0..*Reference(Provenance)A list of relevant lifecycle events


doco Documentation for this format icon

See the Extensions for this resource

UML Diagram (Legend)

MedicationDispense (DomainResource)Identifiers associated with this Medication Dispense that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to serveridentifier : Identifier [0..*]A plan that is fulfilled in whole or in part by this MedicationDispensebasedOn : Reference [0..*] « CarePlan »The procedure or medication administration that triggered the dispensepartOf : Reference [0..*] « Procedure|MedicationAdministration »A code specifying the state of the set of dispense events (this element modifies the meaning of other elements)status : code [1..1] « A coded concept specifying the state of the dispense event. (Strength=Required)MedicationDispenseStatusCodes! »Indicates the reason why a dispense was not performednotPerformedReason : CodeableReference [0..1] « DetectedIssue; null (Strength=Example) MedicationDispenseStatusReaso...?? »The date (and maybe time) when the status of the dispense record changedstatusChanged : dateTime [0..1]Indicates the type of medication dispense (for example, drug classification like ATC, where meds would be administered, legal category of the medication.)category : CodeableConcept [0..*] « null (Strength=Example)MedicationDispenseAdministrat...?? »Identifies the medication supplied. 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 : CodeableReference [1..1] « Medication; null (Strength=Example) SNOMEDCTMedicationCodes?? »A link to a resource representing the person or the group to whom the medication will be givensubject : Reference [1..1] « Patient|Group »The encounter that establishes the context for this eventencounter : Reference [0..1] « Encounter »Additional information that supports the medication being dispensed. For example, there may be requirements that a specific lab test has been completed prior to dispensing or the patient's weight at the time of dispensing is documentedsupportingInformation : Reference [0..*] « Any »The principal physical location 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 date (and maybe time) when the dispense activity started if whenPrepared or whenHandedOver is not populatedrecorded : dateTime [0..1]The time when the dispensed product was packaged and reviewedwhenPrepared : dateTime [0..1] « This element has or is affected by some invariantsC »The time the dispensed product was provided to the patient or their representativewhenHandedOver : dateTime [0..1] « This element has or is affected by some invariantsC »Identification of the facility/location where the medication was/will be shipped to, as part of the dispense eventdestination : Reference [0..1] « Location »Identifies the person who picked up the medication or the location of where the medication was delivered. This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional or a locationreceiver : Reference [0..*] « Patient|Practitioner|RelatedPerson| Location|PractitionerRole »Extra information about the dispense that could not be conveyed in the other attributesnote : Annotation [0..*]The full representation of the dose of the medication included in all dosage instructions. To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering dosesrenderedDosageInstruction : markdown [0..1]Indicates how the medication is to be used by the patientdosageInstruction : Dosage [0..*]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] « null (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|CareTeam »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 (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..1] « Practitioner|PractitionerRole| Organization »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>
 <basedOn><!-- 0..* Reference(CarePlan) Plan that is fulfilled by this dispense --></basedOn>
 <partOf><!-- 0..* Reference(MedicationAdministration|Procedure) Event that dispense is part of --></partOf>
 <status value="[code]"/><!-- 1..1 preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown -->
 <notPerformedReason><!-- 0..1 CodeableReference(DetectedIssue) Why a dispense was not performed --></notPerformedReason>
 <statusChanged value="[dateTime]"/><!-- 0..1 When the status changed -->
 <category><!-- 0..* CodeableConcept Type of medication dispense --></category>
 <medication><!-- 1..1 CodeableReference(Medication) What medication was supplied --></medication>
 <subject><!-- 1..1 Reference(Group|Patient) Who the dispense is for --></subject>
 <encounter><!-- 0..1 Reference(Encounter) Encounter associated with event --></encounter>
 <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(CareTeam|Device|Organization|Patient|Practitioner|
    PractitionerRole|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 icon --></type>
 <quantity><!-- 0..1 Quantity(SimpleQuantity) Amount dispensed --></quantity>
 <daysSupply><!-- 0..1 Quantity(SimpleQuantity) Amount of medication expressed as a timing amount --></daysSupply>
 <recorded value="[dateTime]"/><!-- 0..1 When the recording of the dispense started -->
 <whenPrepared value="[dateTime]"/><!-- I 0..1 When product was packaged and reviewed -->
 <whenHandedOver value="[dateTime]"/><!-- I 0..1 When product was given out -->
 <destination><!-- 0..1 Reference(Location) Where the medication was/will be sent --></destination>
 <receiver><!-- 0..* Reference(Location|Patient|Practitioner|PractitionerRole|
   RelatedPerson) Who collected the medication or where the medication was delivered --></receiver>
 <note><!-- 0..* Annotation Information about the dispense --></note>
 <renderedDosageInstruction value="[markdown]"/><!-- 0..1 Full representation of the dosage instructions -->
 <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 icon --></type>
  <reason><!-- 0..* CodeableConcept Why was substitution made icon --></reason>
  <responsibleParty><!-- 0..1 Reference(Organization|Practitioner|
    PractitionerRole) Who is responsible for the substitution --></responsibleParty>
 </substitution>
 <eventHistory><!-- 0..* Reference(Provenance) A list of relevant 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
  "basedOn" : [{ Reference(CarePlan) }], // Plan that is fulfilled by this dispense
  "partOf" : [{ Reference(MedicationAdministration|Procedure) }], // Event that dispense is part of
  "status" : "<code>", // R!  preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
  "notPerformedReason" : { CodeableReference(DetectedIssue) }, // Why a dispense was not performed
  "statusChanged" : "<dateTime>", // When the status changed
  "category" : [{ CodeableConcept }], // Type of medication dispense
  "medication" : { CodeableReference(Medication) }, // R!  What medication was supplied
  "subject" : { Reference(Group|Patient) }, // R!  Who the dispense is for
  "encounter" : { Reference(Encounter) }, // Encounter 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(CareTeam|Device|Organization|Patient|Practitioner|
    PractitionerRole|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 icon
  "quantity" : { Quantity(SimpleQuantity) }, // Amount dispensed
  "daysSupply" : { Quantity(SimpleQuantity) }, // Amount of medication expressed as a timing amount
  "recorded" : "<dateTime>", // When the recording of the dispense started
  "whenPrepared" : "<dateTime>", // I When product was packaged and reviewed
  "whenHandedOver" : "<dateTime>", // I When product was given out
  "destination" : { Reference(Location) }, // Where the medication was/will be sent
  "receiver" : [{ Reference(Location|Patient|Practitioner|PractitionerRole|
   RelatedPerson) }], // Who collected the medication or where the medication was delivered
  "note" : [{ Annotation }], // Information about the dispense
  "renderedDosageInstruction" : "<markdown>", // Full representation of the dosage instructions
  "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 icon
    "reason" : [{ CodeableConcept }], // Why was substitution made icon
    "responsibleParty" : { Reference(Organization|Practitioner|
    PractitionerRole) } // Who is responsible for the substitution
  },
  "eventHistory" : [{ Reference(Provenance) }] // A list of relevant 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:identifier  ( [ Identifier ] ... ) ; # 0..* External identifier
  fhir:basedOn  ( [ Reference(CarePlan) ] ... ) ; # 0..* Plan that is fulfilled by this dispense
  fhir:partOf  ( [ Reference(MedicationAdministration|Procedure) ] ... ) ; # 0..* Event that dispense is part of
  fhir:status [ code ] ; # 1..1 preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
  fhir:notPerformedReason [ CodeableReference(DetectedIssue) ] ; # 0..1 Why a dispense was not performed
  fhir:statusChanged [ dateTime ] ; # 0..1 When the status changed
  fhir:category  ( [ CodeableConcept ] ... ) ; # 0..* Type of medication dispense
  fhir:medication [ CodeableReference(Medication) ] ; # 1..1 What medication was supplied
  fhir:subject [ Reference(Group|Patient) ] ; # 1..1 Who the dispense is for
  fhir:encounter [ Reference(Encounter) ] ; # 0..1 Encounter associated with event
  fhir:supportingInformation  ( [ Reference(Any) ] ... ) ; # 0..* Information that supports the dispensing of the medication
  fhir:performer ( [ # 0..* Who performed event
    fhir:function [ CodeableConcept ] ; # 0..1 Who performed the dispense and what they did
    fhir:actor [ Reference(CareTeam|Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 1..1 Individual who was performing
  ] ... ) ;
  fhir:location [ Reference(Location) ] ; # 0..1 Where the dispense occurred
  fhir:authorizingPrescription  ( [ Reference(MedicationRequest) ] ... ) ; # 0..* Medication order that authorizes the dispense
  fhir:type [ CodeableConcept ] ; # 0..1 Trial fill, partial fill, emergency fill, etc
  fhir:quantity [ Quantity(SimpleQuantity) ] ; # 0..1 Amount dispensed
  fhir:daysSupply [ Quantity(SimpleQuantity) ] ; # 0..1 Amount of medication expressed as a timing amount
  fhir:recorded [ dateTime ] ; # 0..1 When the recording of the dispense started
  fhir:whenPrepared [ dateTime ] ; # 0..1 I When product was packaged and reviewed
  fhir:whenHandedOver [ dateTime ] ; # 0..1 I When product was given out
  fhir:destination [ Reference(Location) ] ; # 0..1 Where the medication was/will be sent
  fhir:receiver  ( [ Reference(Location|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ... ) ; # 0..* Who collected the medication or where the medication was delivered
  fhir:note  ( [ Annotation ] ... ) ; # 0..* Information about the dispense
  fhir:renderedDosageInstruction [ markdown ] ; # 0..1 Full representation of the dosage instructions
  fhir:dosageInstruction  ( [ Dosage ] ... ) ; # 0..* How the medication is to be used by the patient or administered by the caregiver
  fhir:substitution [ # 0..1 Whether a substitution was performed on the dispense
    fhir:wasSubstituted [ boolean ] ; # 1..1 Whether a substitution was or was not performed on the dispense
    fhir:type [ CodeableConcept ] ; # 0..1 Code signifying whether a different drug was dispensed from what was prescribed
    fhir:reason  ( [ CodeableConcept ] ... ) ; # 0..* Why was substitution made
    fhir:responsibleParty [ Reference(Organization|Practitioner|PractitionerRole) ] ; # 0..1 Who is responsible for the substitution
  ] ;
  fhir:eventHistory  ( [ Reference(Provenance) ] ... ) ; # 0..* A list of relevant lifecycle events
]

Changes from both R4 and R4B

MedicationDispense
MedicationDispense.basedOn
  • Added Element
MedicationDispense.partOf
  • Type Reference: Added Target Type MedicationAdministration
MedicationDispense.notPerformedReason
  • Added Element
MedicationDispense.statusChanged
  • Added Element
MedicationDispense.category
  • Max Cardinality changed from 1 to *
MedicationDispense.medication
  • Renamed from medication[x] to medication
  • Add Type CodeableReference
  • Remove Types CodeableConcept, Reference(Medication)
MedicationDispense.subject
  • Min Cardinality changed from 0 to 1
MedicationDispense.encounter
  • Added Element
MedicationDispense.performer.actor
  • Type Reference: Added Target Type CareTeam
MedicationDispense.recorded
  • Added Element
MedicationDispense.receiver
  • Type Reference: Added Target Types RelatedPerson, Location, PractitionerRole
MedicationDispense.renderedDosageInstruction
  • Added Element
MedicationDispense.substitution.responsibleParty
  • Max Cardinality changed from * to 1
  • Type Reference: Added Target Type Organization
MedicationDispense.statusReason[x]
  • Deleted
MedicationDispense.context
  • Deleted
MedicationDispense.detectedIssue
  • Deleted

See the Full Difference for further information

This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.

See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationDispense TUDomainResourceDispensing a medication to a named patient
+ Rule: whenHandedOver cannot be before whenPrepared

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier 0..*IdentifierExternal identifier

... basedOn 0..*Reference(CarePlan)Plan that is fulfilled by this dispense

... partOf 0..*Reference(Procedure | MedicationAdministration)Event that dispense is part of

... status ?!Σ1..1codepreparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
Binding: MedicationDispense Status Codes (Required)
... notPerformedReason 0..1CodeableReference(DetectedIssue)Why a dispense was not performed
Binding: MedicationDispense Status Reason Codes (Example)
... statusChanged 0..1dateTimeWhen the status changed
... category 0..*CodeableConceptType of medication dispense
Binding: MedicationDispense Administration Location Codes (Example)

... medication Σ1..1CodeableReference(Medication)What medication was supplied
Binding: SNOMED CT Medication Codes (Example)
... subject Σ1..1Reference(Patient | Group)Who the dispense is for
... encounter 0..1Reference(Encounter)Encounter 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
Binding: MedicationDispense Performer Function Codes (Example)
.... actor 1..1Reference(Practitioner | PractitionerRole | Organization | Patient | Device | RelatedPerson | CareTeam)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
Binding: ActPharmacySupplyType icon (Example)
... quantity 0..1SimpleQuantityAmount dispensed
... daysSupply 0..1SimpleQuantityAmount of medication expressed as a timing amount
... recorded 0..1dateTimeWhen the recording of the dispense started
... whenPrepared ΣC0..1dateTimeWhen product was packaged and reviewed
... whenHandedOver C0..1dateTimeWhen product was given out
... destination 0..1Reference(Location)Where the medication was/will be sent
... receiver 0..*Reference(Patient | Practitioner | RelatedPerson | Location | PractitionerRole)Who collected the medication or where the medication was delivered

... note 0..*AnnotationInformation about the dispense

... renderedDosageInstruction 0..1markdownFull representation of the dosage instructions
... 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
Binding: ActSubstanceAdminSubstitutionCode icon (Example)
.... reason 0..*CodeableConceptWhy was substitution made
Binding: SubstanceAdminSubstitutionReason icon (Example)

.... responsibleParty 0..1Reference(Practitioner | PractitionerRole | Organization)Who is responsible for the substitution
... eventHistory 0..*Reference(Provenance)A list of relevant lifecycle events


doco Documentation for this format icon

See the Extensions for this resource

UML Diagram (Legend)

MedicationDispense (DomainResource)Identifiers associated with this Medication Dispense that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to serveridentifier : Identifier [0..*]A plan that is fulfilled in whole or in part by this MedicationDispensebasedOn : Reference [0..*] « CarePlan »The procedure or medication administration that triggered the dispensepartOf : Reference [0..*] « Procedure|MedicationAdministration »A code specifying the state of the set of dispense events (this element modifies the meaning of other elements)status : code [1..1] « A coded concept specifying the state of the dispense event. (Strength=Required)MedicationDispenseStatusCodes! »Indicates the reason why a dispense was not performednotPerformedReason : CodeableReference [0..1] « DetectedIssue; null (Strength=Example) MedicationDispenseStatusReaso...?? »The date (and maybe time) when the status of the dispense record changedstatusChanged : dateTime [0..1]Indicates the type of medication dispense (for example, drug classification like ATC, where meds would be administered, legal category of the medication.)category : CodeableConcept [0..*] « null (Strength=Example)MedicationDispenseAdministrat...?? »Identifies the medication supplied. 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 : CodeableReference [1..1] « Medication; null (Strength=Example) SNOMEDCTMedicationCodes?? »A link to a resource representing the person or the group to whom the medication will be givensubject : Reference [1..1] « Patient|Group »The encounter that establishes the context for this eventencounter : Reference [0..1] « Encounter »Additional information that supports the medication being dispensed. For example, there may be requirements that a specific lab test has been completed prior to dispensing or the patient's weight at the time of dispensing is documentedsupportingInformation : Reference [0..*] « Any »The principal physical location 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 date (and maybe time) when the dispense activity started if whenPrepared or whenHandedOver is not populatedrecorded : dateTime [0..1]The time when the dispensed product was packaged and reviewedwhenPrepared : dateTime [0..1] « This element has or is affected by some invariantsC »The time the dispensed product was provided to the patient or their representativewhenHandedOver : dateTime [0..1] « This element has or is affected by some invariantsC »Identification of the facility/location where the medication was/will be shipped to, as part of the dispense eventdestination : Reference [0..1] « Location »Identifies the person who picked up the medication or the location of where the medication was delivered. This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional or a locationreceiver : Reference [0..*] « Patient|Practitioner|RelatedPerson| Location|PractitionerRole »Extra information about the dispense that could not be conveyed in the other attributesnote : Annotation [0..*]The full representation of the dose of the medication included in all dosage instructions. To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering dosesrenderedDosageInstruction : markdown [0..1]Indicates how the medication is to be used by the patientdosageInstruction : Dosage [0..*]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] « null (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|CareTeam »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 (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..1] « Practitioner|PractitionerRole| Organization »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>
 <basedOn><!-- 0..* Reference(CarePlan) Plan that is fulfilled by this dispense --></basedOn>
 <partOf><!-- 0..* Reference(MedicationAdministration|Procedure) Event that dispense is part of --></partOf>
 <status value="[code]"/><!-- 1..1 preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown -->
 <notPerformedReason><!-- 0..1 CodeableReference(DetectedIssue) Why a dispense was not performed --></notPerformedReason>
 <statusChanged value="[dateTime]"/><!-- 0..1 When the status changed -->
 <category><!-- 0..* CodeableConcept Type of medication dispense --></category>
 <medication><!-- 1..1 CodeableReference(Medication) What medication was supplied --></medication>
 <subject><!-- 1..1 Reference(Group|Patient) Who the dispense is for --></subject>
 <encounter><!-- 0..1 Reference(Encounter) Encounter associated with event --></encounter>
 <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(CareTeam|Device|Organization|Patient|Practitioner|
    PractitionerRole|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 icon --></type>
 <quantity><!-- 0..1 Quantity(SimpleQuantity) Amount dispensed --></quantity>
 <daysSupply><!-- 0..1 Quantity(SimpleQuantity) Amount of medication expressed as a timing amount --></daysSupply>
 <recorded value="[dateTime]"/><!-- 0..1 When the recording of the dispense started -->
 <whenPrepared value="[dateTime]"/><!-- I 0..1 When product was packaged and reviewed -->
 <whenHandedOver value="[dateTime]"/><!-- I 0..1 When product was given out -->
 <destination><!-- 0..1 Reference(Location) Where the medication was/will be sent --></destination>
 <receiver><!-- 0..* Reference(Location|Patient|Practitioner|PractitionerRole|
   RelatedPerson) Who collected the medication or where the medication was delivered --></receiver>
 <note><!-- 0..* Annotation Information about the dispense --></note>
 <renderedDosageInstruction value="[markdown]"/><!-- 0..1 Full representation of the dosage instructions -->
 <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 icon --></type>
  <reason><!-- 0..* CodeableConcept Why was substitution made icon --></reason>
  <responsibleParty><!-- 0..1 Reference(Organization|Practitioner|
    PractitionerRole) Who is responsible for the substitution --></responsibleParty>
 </substitution>
 <eventHistory><!-- 0..* Reference(Provenance) A list of relevant 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
  "basedOn" : [{ Reference(CarePlan) }], // Plan that is fulfilled by this dispense
  "partOf" : [{ Reference(MedicationAdministration|Procedure) }], // Event that dispense is part of
  "status" : "<code>", // R!  preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
  "notPerformedReason" : { CodeableReference(DetectedIssue) }, // Why a dispense was not performed
  "statusChanged" : "<dateTime>", // When the status changed
  "category" : [{ CodeableConcept }], // Type of medication dispense
  "medication" : { CodeableReference(Medication) }, // R!  What medication was supplied
  "subject" : { Reference(Group|Patient) }, // R!  Who the dispense is for
  "encounter" : { Reference(Encounter) }, // Encounter 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(CareTeam|Device|Organization|Patient|Practitioner|
    PractitionerRole|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 icon
  "quantity" : { Quantity(SimpleQuantity) }, // Amount dispensed
  "daysSupply" : { Quantity(SimpleQuantity) }, // Amount of medication expressed as a timing amount
  "recorded" : "<dateTime>", // When the recording of the dispense started
  "whenPrepared" : "<dateTime>", // I When product was packaged and reviewed
  "whenHandedOver" : "<dateTime>", // I When product was given out
  "destination" : { Reference(Location) }, // Where the medication was/will be sent
  "receiver" : [{ Reference(Location|Patient|Practitioner|PractitionerRole|
   RelatedPerson) }], // Who collected the medication or where the medication was delivered
  "note" : [{ Annotation }], // Information about the dispense
  "renderedDosageInstruction" : "<markdown>", // Full representation of the dosage instructions
  "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 icon
    "reason" : [{ CodeableConcept }], // Why was substitution made icon
    "responsibleParty" : { Reference(Organization|Practitioner|
    PractitionerRole) } // Who is responsible for the substitution
  },
  "eventHistory" : [{ Reference(Provenance) }] // A list of relevant 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:identifier  ( [ Identifier ] ... ) ; # 0..* External identifier
  fhir:basedOn  ( [ Reference(CarePlan) ] ... ) ; # 0..* Plan that is fulfilled by this dispense
  fhir:partOf  ( [ Reference(MedicationAdministration|Procedure) ] ... ) ; # 0..* Event that dispense is part of
  fhir:status [ code ] ; # 1..1 preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
  fhir:notPerformedReason [ CodeableReference(DetectedIssue) ] ; # 0..1 Why a dispense was not performed
  fhir:statusChanged [ dateTime ] ; # 0..1 When the status changed
  fhir:category  ( [ CodeableConcept ] ... ) ; # 0..* Type of medication dispense
  fhir:medication [ CodeableReference(Medication) ] ; # 1..1 What medication was supplied
  fhir:subject [ Reference(Group|Patient) ] ; # 1..1 Who the dispense is for
  fhir:encounter [ Reference(Encounter) ] ; # 0..1 Encounter associated with event
  fhir:supportingInformation  ( [ Reference(Any) ] ... ) ; # 0..* Information that supports the dispensing of the medication
  fhir:performer ( [ # 0..* Who performed event
    fhir:function [ CodeableConcept ] ; # 0..1 Who performed the dispense and what they did
    fhir:actor [ Reference(CareTeam|Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 1..1 Individual who was performing
  ] ... ) ;
  fhir:location [ Reference(Location) ] ; # 0..1 Where the dispense occurred
  fhir:authorizingPrescription  ( [ Reference(MedicationRequest) ] ... ) ; # 0..* Medication order that authorizes the dispense
  fhir:type [ CodeableConcept ] ; # 0..1 Trial fill, partial fill, emergency fill, etc
  fhir:quantity [ Quantity(SimpleQuantity) ] ; # 0..1 Amount dispensed
  fhir:daysSupply [ Quantity(SimpleQuantity) ] ; # 0..1 Amount of medication expressed as a timing amount
  fhir:recorded [ dateTime ] ; # 0..1 When the recording of the dispense started
  fhir:whenPrepared [ dateTime ] ; # 0..1 I When product was packaged and reviewed
  fhir:whenHandedOver [ dateTime ] ; # 0..1 I When product was given out
  fhir:destination [ Reference(Location) ] ; # 0..1 Where the medication was/will be sent
  fhir:receiver  ( [ Reference(Location|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ... ) ; # 0..* Who collected the medication or where the medication was delivered
  fhir:note  ( [ Annotation ] ... ) ; # 0..* Information about the dispense
  fhir:renderedDosageInstruction [ markdown ] ; # 0..1 Full representation of the dosage instructions
  fhir:dosageInstruction  ( [ Dosage ] ... ) ; # 0..* How the medication is to be used by the patient or administered by the caregiver
  fhir:substitution [ # 0..1 Whether a substitution was performed on the dispense
    fhir:wasSubstituted [ boolean ] ; # 1..1 Whether a substitution was or was not performed on the dispense
    fhir:type [ CodeableConcept ] ; # 0..1 Code signifying whether a different drug was dispensed from what was prescribed
    fhir:reason  ( [ CodeableConcept ] ... ) ; # 0..* Why was substitution made
    fhir:responsibleParty [ Reference(Organization|Practitioner|PractitionerRole) ] ; # 0..1 Who is responsible for the substitution
  ] ;
  fhir:eventHistory  ( [ Reference(Provenance) ] ... ) ; # 0..* A list of relevant lifecycle events
]

Changes from both R4 and R4B

MedicationDispense
MedicationDispense.basedOn
  • Added Element
MedicationDispense.partOf
  • Type Reference: Added Target Type MedicationAdministration
MedicationDispense.notPerformedReason
  • Added Element
MedicationDispense.statusChanged
  • Added Element
MedicationDispense.category
  • Max Cardinality changed from 1 to *
MedicationDispense.medication
  • Renamed from medication[x] to medication
  • Add Type CodeableReference
  • Remove Types CodeableConcept, Reference(Medication)
MedicationDispense.subject
  • Min Cardinality changed from 0 to 1
MedicationDispense.encounter
  • Added Element
MedicationDispense.performer.actor
  • Type Reference: Added Target Type CareTeam
MedicationDispense.recorded
  • Added Element
MedicationDispense.receiver
  • Type Reference: Added Target Types RelatedPerson, Location, PractitionerRole
MedicationDispense.renderedDosageInstruction
  • Added Element
MedicationDispense.substitution.responsibleParty
  • Max Cardinality changed from * to 1
  • Type Reference: Added Target Type Organization
MedicationDispense.statusReason[x]
  • Deleted
MedicationDispense.context
  • Deleted
MedicationDispense.detectedIssue
  • Deleted

See the Full Difference for further information

This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.

See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)

 

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

PathValueSetTypeDocumentation
MedicationDispense.status MedicationDispenseStatusCodes Required

MedicationDispense Status Codes

MedicationDispense.notPerformedReason MedicationDispenseStatusReasonCodes Example

MedicationDispense Status Reason Codes

MedicationDispense.category MedicationDispenseAdministrationLocationCodes Example

MedicationDispense Administration Location Codes

MedicationDispense.medication SNOMEDCTMedicationCodes Example

This value set includes all drug or medicament substance codes and all pharmaceutical/biologic products from SNOMED CT - provided as an exemplar value set.

MedicationDispense.performer.function MedicationDispensePerformerFunctionCodes Example

MedicationDispense Performer Function Codes

MedicationDispense.type ActPharmacySupplyType icon Example

Identifies types of dispensing events

MedicationDispense.substitution.type ActSubstanceAdminSubstitutionCode icon Example

No description

MedicationDispense.substitution.reason SubstanceAdminSubstitutionReason icon Example

No description

UniqueKeyLevelLocationDescriptionExpression
img mdd-1Rule (base)whenHandedOver cannot be before whenPreparedwhenHandedOver.empty() or whenPrepared.empty() or whenHandedOver >= whenPrepared

Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
codetokenReturns dispenses of this medicine codeMedicationDispense.medication.concept22 Resources
destinationreferenceReturns dispenses that should be sent to a specific destinationMedicationDispense.destination
(Location)
encounterreferenceReturns dispenses with a specific encounterMedicationDispense.encounter
(Encounter)
29 Resources
identifiertokenReturns dispenses with this external identifierMedicationDispense.identifier65 Resources
locationreferenceReturns dispense for a given locationMedicationDispense.location
(Location)
medicationreferenceReturns dispenses of this medicine resourceMedicationDispense.medication.reference4 Resources
patientreferenceThe identity of a patient to list dispenses forMedicationDispense.subject.where(resolve() is Patient)
(Patient)
66 Resources
performerreferenceReturns dispenses performed by a specific individualMedicationDispense.performer.actor
(Practitioner, Organization, CareTeam, 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, PractitionerRole, RelatedPerson, Location)
recordeddateReturns dispenses where dispensing activity began on this dateMedicationDispense.recorded
responsiblepartyreferenceReturns dispenses with the specified responsible partyMedicationDispense.substitution.responsibleParty
(Practitioner, Organization, PractitionerRole)
statustokenReturns dispenses with a specified dispense statusMedicationDispense.status4 Resources
subjectreferenceThe identity of a patient for whom to list dispensesMedicationDispense.subject
(Group, Patient)
typetokenReturns dispenses of a specific typeMedicationDispense.type11 Resources
whenhandedoverdateReturns dispenses handed over on this dateMedicationDispense.whenHandedOver
whenprepareddateReturns dispenses prepared on this dateMedicationDispense.whenPrepared