Release 5 Ballot

This page is part of the FHIR Specification (v5.0.0-ballot: FHIR R5 Ballot Preview). 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 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
MedicationUsage 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
MedicationDispense Status Codes (Required)
... notPerformedReason 0..1CodeableReference(DetectedIssue)Why a dispense was not performed
MedicationDispense Status Reason Codes (Example)
... statusChanged 0..1dateTimeWhen the status changed
... category 0..*CodeableConceptType of medication dispense
MedicationDispense Administration Location Codes (Example)

... medication Σ1..1CodeableReference(Medication)What medication was supplied
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
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.
ActPharmacySupplyType (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 Σ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 | RelatedPerson | Location | PractitionerRole)Who collected the medication or where the medication was delivered

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

... renderedDosageInstruction 0..1stringFull 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
ActSubstanceAdminSubstitutionCode (Example)
.... reason 0..*CodeableConceptWhy was substitution made
SubstanceAdminSubstitutionReason (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

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] « null (Strength=Required)MedicationDispense Status ! »Indicates the reason why a dispense was not performednotPerformedReason : CodeableReference [0..1] « DetectedIssue; null (Strength=Example) MedicationDispense Status Rea...?? »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)MedicationDispense Administra...?? »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] « null (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]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 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 : string [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)MedicationDispense Performer ...?? »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] « null (Strength=Example)ActSubstanceAdminSubstitution...?? »Indicates the reason for the substitution (or lack of substitution) from what was prescribedreason : CodeableConcept [0..*] « null (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.  --></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]"/><!-- 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(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="[string]"/><!-- 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  --></type>
  <reason><!-- 0..* CodeableConcept Why was substitution made  --></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. 
  "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>", // When product was packaged and reviewed
  "whenHandedOver" : "<dateTime>", // When product was given out
  "destination" : { Reference(Location) }, // Where the medication was 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" : "<string>", // 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 
    "reason" : [{ CodeableConcept }], // Why was substitution made 
    "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:MedicationDispense.identifier [ Identifier ], ... ; # 0..* External identifier
  fhir:MedicationDispense.basedOn [ Reference(CarePlan) ], ... ; # 0..* Plan that is fulfilled by this dispense
  fhir:MedicationDispense.partOf [ Reference(MedicationAdministration|Procedure) ], ... ; # 0..* Event that dispense is part of
  fhir:MedicationDispense.status [ code ]; # 1..1 preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
  fhir:MedicationDispense.notPerformedReason [ CodeableReference(DetectedIssue) ]; # 0..1 Why a dispense was not performed
  fhir:MedicationDispense.statusChanged [ dateTime ]; # 0..1 When the status changed
  fhir:MedicationDispense.category [ CodeableConcept ], ... ; # 0..* Type of medication dispense
  fhir:MedicationDispense.medication [ CodeableReference(Medication) ]; # 1..1 What medication was supplied
  fhir:MedicationDispense.subject [ Reference(Group|Patient) ]; # 1..1 Who the dispense is for
  fhir:MedicationDispense.encounter [ Reference(Encounter) ]; # 0..1 Encounter 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(CareTeam|Device|Organization|Patient|Practitioner|PractitionerRole|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.recorded [ dateTime ]; # 0..1 When the recording of the dispense started
  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(Location|Patient|Practitioner|PractitionerRole|RelatedPerson) ], ... ; # 0..* Who collected the medication or where the medication was delivered
  fhir:MedicationDispense.note [ Annotation ], ... ; # 0..* Information about the dispense
  fhir:MedicationDispense.renderedDosageInstruction [ string ]; # 0..1 Full representation of the dosage instructions
  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(Organization|Practitioner|PractitionerRole) ]; # 0..1 Who is responsible for the substitution
  ];
  fhir:MedicationDispense.eventHistory [ Reference(Provenance) ], ... ; # 0..* A list of relevant lifecycle events
]

Changes since R4

MedicationDispense
MedicationDispense.basedOn
  • Added Element
MedicationDispense.partOf
  • Type Reference: Added Target Type MedicationAdministration
  • Type Reference: Added Target Type MedicationAdministration
MedicationDispense.notPerformedReason
  • Added Element
MedicationDispense.statusChanged
  • Added Element
MedicationDispense.category
  • Max Cardinality changed from 1 to *
  • Max Cardinality changed from 1 to *
MedicationDispense.medication
  • Added Mandatory Element
MedicationDispense.subject
  • Min Cardinality changed from 0 to 1
  • Min Cardinality changed from 0 to 1
MedicationDispense.encounter
  • Added Element
MedicationDispense.performer.actor
  • Type Reference: Added Target Type CareTeam
  • Type Reference: Added Target Type CareTeam
MedicationDispense.recorded
  • Added Element
MedicationDispense.receiver
  • Type Reference: Added Target Types RelatedPerson, Location, PractitionerRole
  • 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
  • Type Reference: Added Target Type Organization
MedicationDispense.statusReason[x]
  • deleted
MedicationDispense.medication[x]
  • deleted
MedicationDispense.context
  • deleted
MedicationDispense.detectedIssue
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 31 tests that all execute ok. 6 fail round-trip testing and 31 r3 resources are invalid (0 errors).)

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
MedicationDispense Status Codes (Required)
... notPerformedReason 0..1CodeableReference(DetectedIssue)Why a dispense was not performed
MedicationDispense Status Reason Codes (Example)
... statusChanged 0..1dateTimeWhen the status changed
... category 0..*CodeableConceptType of medication dispense
MedicationDispense Administration Location Codes (Example)

... medication Σ1..1CodeableReference(Medication)What medication was supplied
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
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.
ActPharmacySupplyType (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 Σ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 | RelatedPerson | Location | PractitionerRole)Who collected the medication or where the medication was delivered

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

... renderedDosageInstruction 0..1stringFull 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
ActSubstanceAdminSubstitutionCode (Example)
.... reason 0..*CodeableConceptWhy was substitution made
SubstanceAdminSubstitutionReason (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

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] « null (Strength=Required)MedicationDispense Status ! »Indicates the reason why a dispense was not performednotPerformedReason : CodeableReference [0..1] « DetectedIssue; null (Strength=Example) MedicationDispense Status Rea...?? »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)MedicationDispense Administra...?? »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] « null (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]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 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 : string [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)MedicationDispense Performer ...?? »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] « null (Strength=Example)ActSubstanceAdminSubstitution...?? »Indicates the reason for the substitution (or lack of substitution) from what was prescribedreason : CodeableConcept [0..*] « null (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.  --></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]"/><!-- 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(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="[string]"/><!-- 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  --></type>
  <reason><!-- 0..* CodeableConcept Why was substitution made  --></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. 
  "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>", // When product was packaged and reviewed
  "whenHandedOver" : "<dateTime>", // When product was given out
  "destination" : { Reference(Location) }, // Where the medication was 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" : "<string>", // 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 
    "reason" : [{ CodeableConcept }], // Why was substitution made 
    "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:MedicationDispense.identifier [ Identifier ], ... ; # 0..* External identifier
  fhir:MedicationDispense.basedOn [ Reference(CarePlan) ], ... ; # 0..* Plan that is fulfilled by this dispense
  fhir:MedicationDispense.partOf [ Reference(MedicationAdministration|Procedure) ], ... ; # 0..* Event that dispense is part of
  fhir:MedicationDispense.status [ code ]; # 1..1 preparation | in-progress | cancelled | on-hold | completed | entered-in-error | stopped | declined | unknown
  fhir:MedicationDispense.notPerformedReason [ CodeableReference(DetectedIssue) ]; # 0..1 Why a dispense was not performed
  fhir:MedicationDispense.statusChanged [ dateTime ]; # 0..1 When the status changed
  fhir:MedicationDispense.category [ CodeableConcept ], ... ; # 0..* Type of medication dispense
  fhir:MedicationDispense.medication [ CodeableReference(Medication) ]; # 1..1 What medication was supplied
  fhir:MedicationDispense.subject [ Reference(Group|Patient) ]; # 1..1 Who the dispense is for
  fhir:MedicationDispense.encounter [ Reference(Encounter) ]; # 0..1 Encounter 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(CareTeam|Device|Organization|Patient|Practitioner|PractitionerRole|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.recorded [ dateTime ]; # 0..1 When the recording of the dispense started
  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(Location|Patient|Practitioner|PractitionerRole|RelatedPerson) ], ... ; # 0..* Who collected the medication or where the medication was delivered
  fhir:MedicationDispense.note [ Annotation ], ... ; # 0..* Information about the dispense
  fhir:MedicationDispense.renderedDosageInstruction [ string ]; # 0..1 Full representation of the dosage instructions
  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(Organization|Practitioner|PractitionerRole) ]; # 0..1 Who is responsible for the substitution
  ];
  fhir:MedicationDispense.eventHistory [ Reference(Provenance) ], ... ; # 0..* A list of relevant lifecycle events
]

Changes since Release 4

MedicationDispense
MedicationDispense.basedOn
  • Added Element
MedicationDispense.partOf
  • Type Reference: Added Target Type MedicationAdministration
  • Type Reference: Added Target Type MedicationAdministration
MedicationDispense.notPerformedReason
  • Added Element
MedicationDispense.statusChanged
  • Added Element
MedicationDispense.category
  • Max Cardinality changed from 1 to *
  • Max Cardinality changed from 1 to *
MedicationDispense.medication
  • Added Mandatory Element
MedicationDispense.subject
  • Min Cardinality changed from 0 to 1
  • Min Cardinality changed from 0 to 1
MedicationDispense.encounter
  • Added Element
MedicationDispense.performer.actor
  • Type Reference: Added Target Type CareTeam
  • Type Reference: Added Target Type CareTeam
MedicationDispense.recorded
  • Added Element
MedicationDispense.receiver
  • Type Reference: Added Target Types RelatedPerson, Location, PractitionerRole
  • 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
  • Type Reference: Added Target Type Organization
MedicationDispense.statusReason[x]
  • deleted
MedicationDispense.medication[x]
  • deleted
MedicationDispense.context
  • deleted
MedicationDispense.detectedIssue
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 31 tests that all execute ok. 6 fail round-trip testing and 31 r3 resources are invalid (0 errors).)

 

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

PathDefinitionTypeReference
MedicationDispense.status

MedicationDispense Status Codes

RequiredMedicationDispense Status Codes
MedicationDispense.notPerformedReason

MedicationDispense Status Reason Codes

ExampleMedicationDispense Status Reason Codes
MedicationDispense.category

MedicationDispense Administration Location Codes

ExampleMedicationDispense Administration Location Codes
MedicationDispense.medication

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

ExampleSNOMEDCTMedicationCodes
MedicationDispense.performer.function

MedicationDispense Performer Function Codes

ExampleMedicationDispense Performer Function Codes
MedicationDispense.type

Identifies types of dispensing events

ExampleActPharmacySupplyType
MedicationDispense.substitution.type ExampleActSubstanceAdminSubstitutionCode
MedicationDispense.substitution.reason ExampleSubstanceAdminSubstitutionReason

UniqueKeyLevelLocationDescriptionExpression
 mdd-1Rule (base)whenHandedOver cannot be before whenPreparedwhenHandedOver.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
code DtokenReturns dispenses of this medicine codeMedicationDispense.medication.concept
destinationreferenceReturns dispenses that should be sent to a specific destinationMedicationDispense.destination
(Location)
encounterreferenceReturns dispenses with a specific encounterMedicationDispense.encounter
(Encounter)
identifiertokenReturns dispenses with this external identifierMedicationDispense.identifier
locationreferenceReturns dispense for a given locationMedicationDispense.location
(Location)
medication DreferenceReturns dispenses of this medicine resourceMedicationDispense.medication.reference
patientreferenceThe identity of a patient to list dispenses forMedicationDispense.subject.where(resolve() is Patient)
(Patient)
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)
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)
status NtokenReturns dispenses with a specified dispense statusMedicationDispense.status
subjectreferenceThe identity of a patient for whom to list dispensesMedicationDispense.subject
(Group, Patient)
typetokenReturns dispenses of a specific typeMedicationDispense.type
whenhandedover NdateReturns dispenses handed over on this dateMedicationDispense.whenHandedOver
whenprepared NdateReturns dispenses prepared on this dateMedicationDispense.whenPrepared