ePMA Implementation Guidance for FHIR STU3

This guidance is under active development by NHS Digital and content may be added or updated on a regular basis.
Please note: This guidance has been superseded by the Implementation guide for digitial medicines, which contains up-to-date information.

MedicationDispense

idΣ0..1id
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
textI0..1Narrative
contained0..*Resource
extensionI0..*Extension
modifierExtension?! I0..*Extension
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ1..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference()
partOfI0..*Reference()
statusΣ ?!0..1codeBinding
category0..1CodeableConceptBinding
medicationCodeableConceptCodeableConcept
medicationReferenceReference()
subjectΣ I0..1Reference(Group | )
contextI0..1Reference( | https://fhir.hl7.org.uk/STU3/StructureDefinition/CareConnect-Encounter-1)
supportingInformationI0..*Reference(Resource)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
actorI1..1Reference(Device | | | | )
onBehalfOfI0..1Reference()
authorizingPrescriptionI0..*Reference()
type0..1CodeableConceptBinding
id0..1string
quantityTextI0..1Extension(string)
valueΣ0..1decimal
comparatorΣ ?!0..0codeBinding
unitΣ0..1string
systemΣ I0..1uri
codeΣ0..1code
daysSupplyI0..1SimpleQuantity
whenPreparedΣ0..1dateTime
whenHandedOver0..1dateTime
destinationI0..1Reference()
receiverI0..*Reference( | )
id0..1string
extensionI0..*Extension
authorStringstring
authorReferenceReference( | | )
timeΣ0..1dateTime
text1..1string
dosageInstruction0..*Dosage
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
wasSubstituted1..1boolean
type0..1CodeableConcept
reason0..*CodeableConcept
responsiblePartyI0..*Reference()
detectedIssueI0..*Reference(DetectedIssue)
notDone0..1boolean
notDoneReasonCodeableConceptCodeableConcept
notDoneReasonReferenceReference(DetectedIssue)
eventHistoryI0..*Reference(Provenance)
MedicationDispense
DefinitionIndicates 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.
Cardinality0...*
Comments

The WG will be updating the MedicationDispense resource to adjust each affected resource to align with the workflow pattern (see workflow.html).

Invariants
  • dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
    contained.contained.empty()
  • dom-1: If the resource is contained in another resource, it SHALL NOT contain any narrative
    contained.text.empty()
  • dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
    contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
  • dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource
    contained.where(('#'+id in %resource.descendants().reference).not()).empty()
  • mdd-1: whenHandedOver cannot be before whenPrepared
    whenHandedOver.empty() or whenPrepared.empty() or whenHandedOver >= whenPrepared
Mappings
  • rim: Entity. Role, or Act
  • workflow: ..Event
  • rim: Supply[moodCode=EVN]
  • w5: clinical.medication
MedicationDispense.id
DefinitionThe logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.
Cardinality0...1
Typeid
SummaryTrue
Comments

The only time that a resource does not have an id is when it is being submitted to the server using a create operation.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.meta
DefinitionThe metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource.
Cardinality0...1
TypeMeta
SummaryTrue
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.implicitRules
DefinitionA reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content.
Cardinality0...1
Typeuri
ModifierTrue
SummaryTrue
Comments

Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element.

This element is labelled as a modifier because the implicit rules may provide additional knowledge about the resource that modifies it's meaning or interpretation.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.language
DefinitionThe base language in which the resource is written.
Cardinality0...1
Typecode
Binding
A human language.
Common Languages (extensible)
Comments

Language is provided to support indexing and accessibility (typically, services such as text to speech use the language tag). The html language tag in the narrative applies to the narrative. The language tag on the resource may be used to specify the language of other presentations generated from the data in the resource Not all the content has to be in the base language. The Resource.language should not be assumed to apply to the narrative automatically. If a language is specified, it should it also be specified on the div element in the html (see rules in HTML5 for information about the relationship between xml:lang and the html lang attribute).

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.text
DefinitionA human-readable narrative that contains a summary of the resource, and may be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.
Cardinality0...1
TypeNarrative
Aliasnarrative, html, xhtml, display
Comments

Contained resources do not have narrative. Resources that are not contained SHOULD have a narrative. In some cases, a resource may only have text with little or no additional discrete data (as long as all minOccurs=1 elements are satisfied). This may be necessary for data from legacy systems where information is captured as a "text blob" or where text is additionally entered raw or narrated and encoded in formation is added later.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • rim: N/A
  • rim: Act.text?
MedicationDispense.contained
DefinitionThese resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope.
Cardinality0...*
TypeResource
Aliasinline resources, anonymous resources, contained resources
Comments

This should never be done when the content can be identified properly, as once identification is lost, it is extremely difficult (and context dependent) to restore it again.

Mappings
  • rim: Entity. Role, or Act
  • rim: N/A
MedicationDispense.extension
DefinitionMay be used to represent additional information that is not part of the basic definition of the resource. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Cardinality0...*
TypeExtension
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

SlicingUnordered, Open, by url(Value)
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.modifierExtension
DefinitionMay be used to represent additional information that is not part of the basic definition of the resource, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Cardinality0...*
TypeExtension
ModifierTrue
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

SlicingUnordered, Open, by url(Value)
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.identifier
DefinitionIdentifier assigned by the dispensing facility - this is an identifier assigned outside FHIR.
Cardinality0...*
TypeIdentifier
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: CX / EI (occasionally, more often EI maps to a resource id or a URL)
  • rim: II - see see identifier pattern at http://wiki.hl7.org/index.php?title=Common_Design_Patterns#Identifier_Pattern for relevant discussion. The Identifier class is a little looser than the v3 type II because it allows URIs as well as registered OIDs or GUIDs. Also maps to Role[classCode=IDENT]
  • servd: Identifier
  • workflow: …identifier
  • rim: .id
  • w5: id
MedicationDispense.identifier.id
Definitionunique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Cardinality0...1
Typestring
Comments

Note that FHIR strings may not exceed 1MB in size

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.identifier.extension
DefinitionMay be used to represent additional information that is not part of the basic definition of the element. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Cardinality0...*
TypeExtension
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

SlicingUnordered, Open, by url(Value)
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.identifier.use
DefinitionThe purpose of this identifier.
Cardinality0...1
Typecode
Binding
Identifies the purpose for this identifier, if known .
IdentifierUse (required)
ModifierTrue
SummaryTrue
Requirements

Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

Comments

This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one. Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: N/A
  • rim: Role.code or implied by context
MedicationDispense.identifier.type
DefinitionA coded type for the identifier that can be used to determine which identifier to use for a specific purpose.
Cardinality0...1
TypeCodeableConcept
Binding
A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.
Identifier Type Codes (extensible)
SummaryTrue
Requirements

Allows users to make use of identifiers when the identifier system is not known.

Comments

This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage.

Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: CE/CNE/CWE
  • rim: CD
  • orim: fhir:CodeableConcept rdfs:subClassOf dt:CD
  • v2: CX.5
  • rim: Role.code or implied by context
MedicationDispense.identifier.system
DefinitionEstablishes the namespace for the value - that is, a URL that describes a set values that are unique.
Cardinality1...1
Typeuri
SummaryTrue
Requirements

There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

Comments

see http://en.wikipedia.org/wiki/Uniform_resource_identifier

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Examples
General

http://www.acme.com/identifiers/patient


Mappings
  • rim: n/a
  • v2: CX.4 / EI-2-4
  • rim: II.root or Role.id.root
  • servd: ./IdentifierType
MedicationDispense.identifier.value
DefinitionThe portion of the identifier typically relevant to the user and which is unique within the context of the system.
Cardinality1...1
Typestring
SummaryTrue
Comments

If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the Rendered Value extension.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Examples
General

123456


Mappings
  • rim: n/a
  • v2: CX.1 / EI.1
  • rim: II.extension or II.root if system indicates OID or GUID (Or Role.id.extension or root)
  • servd: ./Value
MedicationDispense.identifier.period
DefinitionTime period during which identifier is/was valid for use.
Cardinality0...1
TypePeriod
SummaryTrue
Comments

This is not a duration - that's a measure of time (a separate type), but a duration that occurs at a fixed value of time. A Period specifies a range of time; the context of use will specify whether the entire range applies (e.g. "the patient was an inpatient of the hospital for this time range") or one value from the range applies (e.g. "give to the patient between these two times"). If duration is required, specify the type as Interval|Duration.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • per-1: If present, start SHALL have a lower value than end
    start.empty() or end.empty() or (start <= end)
Mappings
  • rim: n/a
  • v2: DR
  • rim: IVL<TS>[lowClosed="true" and highClosed="true"] or URG<TS>[lowClosed="true" and highClosed="true"]
  • v2: CX.7 + CX.8
  • rim: Role.effectiveTime or implied by context
  • servd: ./StartDate and ./EndDate
MedicationDispense.identifier.assigner
DefinitionOrganization that issued/manages the identifier.
Cardinality0...1
TypeReference()
SummaryTrue
Comments

The Identifier.assigner may omit the .reference element and only contain a .display element reflecting the name or other textual information about the assigning organization.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • v2: CX.4 / (CX.4,CX.9,CX.10)
  • rim: II.assigningAuthorityName but note that this is an improper use by the definition of the field. Also Role.scoper
  • servd: ./IdentifierIssuingAuthority
MedicationDispense.partOf
DefinitionThe procedure that the dispense is done because of.
Cardinality0...*
TypeReference()
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • workflow: …part of
  • rim: .outboundRelationship[typeCode=COMP]/target[classCode=PROC,moodCode=EVN]
MedicationDispense.status
DefinitionA code specifying the state of the set of dispense events.
Cardinality0...1
Typecode
Binding
A coded concept specifying the state of the dispense event.
MedicationDispenseStatus (required)
ModifierTrue
SummaryTrue
Comments

This element is labeled as a modifier because the status contains codes that mark the resource as not currently valid.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • workflow: …status
  • rim: .statusCode
  • w5: status
MedicationDispense.category
DefinitionIndicates type of medication dispense and where the medication is expected to be consumed or administered.
Cardinality0...1
TypeCodeableConcept
Binding
A code describing where the dispensed medication is expected to be consumed or administered
MedicationDispenseCategory (preferred)
Comments

Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: CE/CNE/CWE
  • rim: CD
  • orim: fhir:CodeableConcept rdfs:subClassOf dt:CD
  • rim: .inboundRelationship[typeCode=COMP].source[classCode=OBS, moodCode=EVN, code="type of medication dispense"].value
MedicationDispense.medication[x]
DefinitionIdentifies the medication being administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.
Cardinality1...1
TypeReference(), CodeableConcept
Binding
A coded concept identifying which substance or product can be dispensed
SNOMED CT Medication Codes (example)
SummaryTrue
Comments

If only a code is specified, then it needs to be a code for a specific product. If more information is required, then the use of the medication resource is recommended.  For example if you require form or lot number, then you must reference the Medication resource. .

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • workflow: …code
  • v2: RXD-2-Dispense/Give Code
  • rim: .participation[typeCode=PRD].role
  • w5: what
MedicationDispense.subject
DefinitionA link to a resource representing the person or the group to whom the medication will be given.
Cardinality0...1
TypeReference(Group | )
SummaryTrue
Comments

SubstanceAdministration->subject->Patient.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • workflow: …subject
  • v2: PID-3-Patient ID List
  • rim: .participation[typeCode=SBJ].role[classCode=PAT]
  • w5: who.focus
MedicationDispense.context
DefinitionThe encounter or episode of care that establishes the context for this event.
Cardinality0...1
TypeReference( | https://fhir.hl7.org.uk/STU3/StructureDefinition/CareConnect-Encounter-1)
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • workflow: …context
  • rim: .inboundRelationship[typeCode=COMP].source[classCode=ENC, moodCode=EVN, code="type of encounter or episode"]
MedicationDispense.supportingInformation
DefinitionAdditional information that supports the medication being dispensed.
Cardinality0...*
TypeReference(Resource)
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • rim: .outboundRelationship[typeCode=PERT].target[A_SupportingClinicalStatement CMET minimal with many different choices of classCodes(ORG, ENC, PROC, SPLY, SBADM, OBS) and each of the act class codes draws from one or more of the following moodCodes (EVN, DEF, INT PRMS, RQO, PRP, APT, ARQ, GOL)]
  • w5: context
MedicationDispense.performer
DefinitionIndicates who or what performed the event. It should be assumed that the performer is the dispenser of the medication.
Cardinality0...*
TypeBackboneElement
Comments

The performer will be reviewed as part of STU4.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • workflow: …performer
  • rim: .participation[typeCode=PRF]
MedicationDispense.performer.id
Definitionunique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Cardinality0...1
Typestring
Comments

Note that FHIR strings may not exceed 1MB in size

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.performer.extension
DefinitionMay be used to represent additional information that is not part of the basic definition of the element. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Cardinality0...*
TypeExtension
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

SlicingUnordered, Open, by url(Value)
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.performer.modifierExtension
DefinitionMay be used to represent additional information that is not part of the basic definition of the element, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Cardinality0...*
TypeExtension
ModifierTrue
SummaryTrue
Aliasextensions, user content, modifiers
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.performer.actor
DefinitionThe device, practitioner, etc. who performed the action. It should be assumed that the actor is the dispenser of the medication.
Cardinality1...1
TypeReference(Device | | | | )
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • workflow: ….actor
  • rim: .role
MedicationDispense.performer.onBehalfOf
DefinitionThe organization the device or practitioner was acting on behalf of.
Cardinality0...1
TypeReference()
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • workflow: ….onBehalfOf
  • rim: .role.scopingOrganization
MedicationDispense.authorizingPrescription
DefinitionIndicates the medication order that is being dispensed against.
Cardinality0...*
TypeReference()
Comments

Maps to basedOn in Event logical model.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • workflow: …basedOn
  • v2: ORC-2 Placer Order Number
  • rim: .outboundRelationship[typeCode=FLFS].target[moodCode=RQO]
MedicationDispense.type
DefinitionIndicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc.
Cardinality0...1
TypeCodeableConcept
Binding
A ValueSet to identify the type of medication supply.
(preferred)
Comments

Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: CE/CNE/CWE
  • rim: CD
  • orim: fhir:CodeableConcept rdfs:subClassOf dt:CD
  • v2: RXD-33-Dispense Type
  • rim: .code
MedicationDispense.quantity
DefinitionThe amount of medication that has been dispensed. Includes unit of measure.
Cardinality0...1
TypeSimpleQuantity
Comments

The context of use may frequently define what kind of quantity this is and therefore what kind of units can be used. The context of use may also restrict the values for the comparator.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • qty-3: If a code for the unit is present, the system SHALL also be present
    code.empty() or system.exists()
  • sqty-1: The comparator is not used on a SimpleQuantity
    comparator.empty()
Mappings
  • rim: n/a
  • v2: SN (see also Range) or CQ
  • rim: PQ, IVL<PQ>, MO, CO, depending on the values
  • v2: RXD-4-Actual Dispense Amount / RXD-5.1-Actual Dispense Units.code / RXD-5.3-Actual Dispense Units.name of coding system
  • rim: .quantity
MedicationDispense.quantity.id
Definitionunique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Cardinality0...1
Typestring
Comments

Note that FHIR strings may not exceed 1MB in size

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.quantity.extension
DefinitionMay be used to represent additional information that is not part of the basic definition of the element. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Cardinality0...*
TypeExtension
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

SlicingUnordered, Open, by url(Value)
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.quantity.extension:quantityText
DefinitionQuantity representation.
Cardinality0...1
TypeExtension(string)
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.quantity.value
DefinitionThe value of the measured amount. The value includes an implicit precision in the presentation of the value.
Cardinality0...1
Typedecimal
SummaryTrue
Requirements

Precision is handled implicitly in almost all cases of measurement.

Comments

The implicit precision in the value should always be honored. Monetary values have their own rules for handling precision (refer to standard accounting text books).

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: SN.2 / CQ - N/A
  • rim: PQ.value, CO.value, MO.value, IVL.high or IVL.low depending on the value
MedicationDispense.quantity.comparator
DefinitionNot allowed to be used in this context
Cardinality0...0
Typecode
Binding
How the Quantity should be understood and represented.
QuantityComparator (required)
ModifierTrue
SummaryTrue
Requirements

Need a framework for handling measures where the value is <5ug/L or >400mg/L due to the limitations of measuring methodology.

Comments

This is labeled as "Is Modifier" because the comparator modifies the interpretation of the value significantly. If there is no comparator, then there is no modification of the value.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: SN.1 / CQ.1
  • rim: IVL properties
MedicationDispense.quantity.unit
DefinitionA human-readable form of the unit.
Cardinality0...1
Typestring
SummaryTrue
Requirements

There are many representations for units of measure and in many contexts, particular representations are fixed and required. I.e. mcg for micrograms.

Comments

Note that FHIR strings may not exceed 1MB in size

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: (see OBX.6 etc.) / CQ.2
  • rim: PQ.unit
MedicationDispense.quantity.system
DefinitionThe identification of the system that provides the coded form of the unit.
Cardinality0...1
Typeuri
SummaryTrue
Requirements

Need to know the system that defines the coded form of the unit.

Comments

see http://en.wikipedia.org/wiki/Uniform_resource_identifier

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: (see OBX.6 etc.) / CQ.2
  • rim: CO.codeSystem, PQ.translation.codeSystem
MedicationDispense.quantity.code
DefinitionA computer processable form of the unit in some unit representation system.
Cardinality0...1
Typecode
SummaryTrue
Requirements

Need a computable form of the unit that is fixed across all forms. UCUM provides this for quantities, but SNOMED CT provides many units of interest.

Comments

The preferred system is UCUM, but SNOMED CT can also be used (for customary units) or ISO 4217 for currency. The context of use may additionally require a code from a particular system.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: (see OBX.6 etc.) / CQ.2
  • rim: PQ.code, MO.currency, PQ.translation.code
MedicationDispense.daysSupply
DefinitionThe amount of medication expressed as a timing amount.
Cardinality0...1
TypeSimpleQuantity
Comments

The context of use may frequently define what kind of quantity this is and therefore what kind of units can be used. The context of use may also restrict the values for the comparator.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • qty-3: If a code for the unit is present, the system SHALL also be present
    code.empty() or system.exists()
  • sqty-1: The comparator is not used on a SimpleQuantity
    comparator.empty()
Mappings
  • rim: n/a
  • v2: SN (see also Range) or CQ
  • rim: PQ, IVL<PQ>, MO, CO, depending on the values
  • v2: TQ1.6 Timing/Quantity Segment Service Duration. Prior to v2.5, ORC.7.3 Common Order Segment / Quantity/Timing / Duration component. This is a formatted string, first character for the time unit (e.g., D=days), followed by the value. For example, “D14” represents “14 days supply” From v2.5 on, TQ1.6 Timing/Quantity Segment / Service Duration. This is a CQ data type (<Quantity (NM)> ^ <Units (CWE)>), thus for days supply, assuming the unit of measure is “days”, the numeric value is TQ1.6.1 (…|14^ For backwards compatibility, ORC.7 was permitted through v2.6. Both forms (field and segment) may be present in v2.5, v2.5.1, and v2.6
  • rim: effectiveUseTime
MedicationDispense.whenPrepared
DefinitionThe time when the dispensed product was packaged and reviewed.
Cardinality0...1
TypedateTime
SummaryTrue
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: RXD-3-Date/Time Dispensed
  • rim: .effectiveTime[xmi:type=IVL_TS].low
MedicationDispense.whenHandedOver
DefinitionThe time the dispensed product was provided to the patient or their representative.
Cardinality0...1
TypedateTime
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • workflow: …occurrenceDateTime
  • v2: RXD-3-Date/Time Dispensed
  • rim: .effectiveTime[xmi:type=IVL_TS].high
MedicationDispense.destination
DefinitionIdentification of the facility/location where the medication was shipped to, as part of the dispense event.
Cardinality0...1
TypeReference()
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • v2: RXD-13 Dispense-to Location; RXD-30 Dispense to Pharmacy; RXD-31 Dispense to Pharmacy Address
  • rim: .participation[typeCode=DST].role
MedicationDispense.receiver
DefinitionIdentifies the person who picked up the medication. This will usually be a patient or their caregiver, but some cases exist where it can be a healthcare professional.
Cardinality0...*
TypeReference( | )
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • rim: .participation[typeCode=RCV].role
MedicationDispense.note
DefinitionExtra information about the dispense that could not be conveyed in the other attributes.
Cardinality0...*
TypeAnnotation
Comments

For systems that do not have structured annotations, they can simply communicate a single annotation with no author or time. This element may need to be included in narrative because of the potential for modifying information. Annotations SHOULD NOT be used to communicate "modifying" information that could be computable. (This is a SHOULD because enforcing user behavior is nearly impossible).

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: N/A
  • rim: Act
  • workflow: …note
  • v2: RXD-9 Dispense Notes
  • rim: .inboundRelationship[typeCode=SUBJ]/source[classCode=ACT,moodCode=EVN]
MedicationDispense.note.id
Definitionunique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Cardinality0...1
Typestring
Comments

Note that FHIR strings may not exceed 1MB in size

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.note.extension
DefinitionMay be used to represent additional information that is not part of the basic definition of the element. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Cardinality0...*
TypeExtension
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

SlicingUnordered, Open, by url(Value)
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.note.author[x]
DefinitionThe individual responsible for making the annotation.
Cardinality0...1
TypeReference( | | ), string
SummaryTrue
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: N/A
  • rim: Act.participant[typeCode=AUT].role
MedicationDispense.note.time
DefinitionIndicates when this particular annotation was made.
Cardinality0...1
TypedateTime
SummaryTrue
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: N/A
  • rim: Act.effectiveTime
MedicationDispense.note.text
DefinitionThe text of the annotation.
Cardinality1...1
Typestring
Comments

Note that FHIR strings may not exceed 1MB in size

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: N/A
  • rim: Act.text
MedicationDispense.dosageInstruction
DefinitionIndicates how the medication is to be used by the patient.
Cardinality0...*
TypeDosage
Comments

When the dose or rate is intended to change over the entire administration period (e.g. Tapering dose prescriptions), multiple instances of dosage instructions will need to be supplied to convey the different doses/rates. The pharmacist reviews the medication order prior to dispense and updates the dosageInstruction based on the actual product being dispensed.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • rim: .outboundRelationship[typeCode=COMP].target[classCode=SBADM, moodCode=INT]
MedicationDispense.substitution
DefinitionIndicates 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 done.
Cardinality0...1
TypeBackboneElement
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • rim: .outboundRelationship[typeCode=COMP].target[classCode=SUBST, moodCode=EVN]
MedicationDispense.substitution.id
Definitionunique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Cardinality0...1
Typestring
Comments

Note that FHIR strings may not exceed 1MB in size

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
MedicationDispense.substitution.extension
DefinitionMay be used to represent additional information that is not part of the basic definition of the element. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Cardinality0...*
TypeExtension
Aliasextensions, user content
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

SlicingUnordered, Open, by url(Value)
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.substitution.modifierExtension
DefinitionMay be used to represent additional information that is not part of the basic definition of the element, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
Cardinality0...*
TypeExtension
ModifierTrue
SummaryTrue
Aliasextensions, user content, modifiers
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ext-1: Must have either extensions or value[x], not both
    extension.exists() != value.exists()
Mappings
  • rim: n/a
  • rim: N/A
MedicationDispense.substitution.wasSubstituted
DefinitionTrue if the dispenser dispensed a different drug or product from what was prescribed.
Cardinality1...1
Typeboolean
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • rim: .actionNegationInd
MedicationDispense.substitution.type
DefinitionA code signifying whether a different drug was dispensed from what was prescribed.
Cardinality0...1
TypeCodeableConcept
Binding
A coded concept describing whether a different medicinal product may be dispensed other than the product as specified exactly in the prescription
ActSubstanceAdminSubstitutionCode (example)
Comments

Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: CE/CNE/CWE
  • rim: CD
  • orim: fhir:CodeableConcept rdfs:subClassOf dt:CD
  • v2: RXO-9-Allow Substitutions / RXE-9-Substitution Status
  • rim: .code
MedicationDispense.substitution.reason
DefinitionIndicates the reason for the substitution of (or lack of substitution) from what was prescribed.
Cardinality0...*
TypeCodeableConcept
Binding
A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribed
SubstanceAdminSubstitutionReason (example)
Comments

Not all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • v2: CE/CNE/CWE
  • rim: CD
  • orim: fhir:CodeableConcept rdfs:subClassOf dt:CD
  • rim: .reasonCode
MedicationDispense.substitution.responsibleParty
DefinitionThe person or organization that has primary responsibility for the substitution.
Cardinality0...*
TypeReference()
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • rim: .participation[typeCode=PFM].role[classCode=ASSIGN]
MedicationDispense.detectedIssue
DefinitionIndicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, duplicate therapy, dosage alert etc.
Cardinality0...*
TypeReference(DetectedIssue)
AliasContraindication, Drug Utilization Review (DUR), Alert
Comments

References SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • rim: .inboundRelationship[typeCode=SUBJ]/source[classCode=ALRT,moodCode=EVN].value
MedicationDispense.notDone
DefinitionTrue if the dispense was not performed for some reason.
Cardinality0...1
Typeboolean
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • workflow: …notDone
  • rim: .actionNegationInd
MedicationDispense.notDoneReason[x]
DefinitionIndicates the reason why a dispense was not performed.
Cardinality0...1
TypeReference(DetectedIssue), CodeableConcept
Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
Mappings
  • rim: n/a
  • workflow: …notDoneReason
  • rim: .outboundRelationship[typeCode=RSON]/target[classCode=OBS,moodCode=EVN, code="not done reason"].value
MedicationDispense.eventHistory
DefinitionA summary of the events of interest that have occurred, such as when the dispense was verified.
Cardinality0...*
TypeReference(Provenance)
Comments

This may not include provenances for all versions of the request – only those deemed “relevant” or important. This SHALL NOT include the Provenance associated with this current version of the resource. (If that provenance is deemed to be a “relevant” change, it will need to be added as part of a later update. Until then, it can be queried directly as the Provenance that points to this version using _revinclude All Provenances should have some historical version of this Request as their subject.).

Invariants
  • ele-1: All FHIR elements must have a @value or children
    hasValue() | (children().count() > id.count())
  • ref-1: SHALL have a contained resource if a local reference is provided
    reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))
Mappings
  • rim: n/a
  • rim: The target of a resource reference is a RIM entry point (Act, Role, or Entity)
  • rim: .inboundRelationship(typeCode=SUBJ].source[classCode=CACT, moodCode=EVN]

FHIR Resource Relationships

This implementation guidance defines a Minimum Viable Product (MVP) for each FHIR Resource required to support the target use case of medication requests from a hospital ePMA system to a hospital pharmacy system.

An implementation is recommended to adhere to the MVP but can also choose to implement other elements from the chosen FHIR standard. For the purposes of this guidance, an “implementation” is the partnership between an ePMA system supplier and a hospital pharmacy system supplier within a given Trust.

The MVP requires the implementation of four FHIR Resources, profiled within CareConnect implementation of FHIR STU3:


medication-request

The MedicationRequest can reference many other FHIR resources but the four above are required for the recommended MVP.


Element: identifier

Use if a local implementation requires bespoke identifiers to track medication requests between the ePMA and dispensing systems.


Element: partOf

It is recommended this element is optional for an MVP implementation.

This element could be useful in two scenarios:

  • sending a bag of medicines to a ward for discharge, as this could indicate whether there is partOf the order elsewhere
  • could also be used to interpret as 'owings' in the event of a partial supply being dispensed

Element: status

Important: the cardinality of status has been changed from 0..1 in STU3 to 1..1 in R4.

When used it must be populated with a fixed valueset defined within the FHIR standard.

It is expected that most implementations will require the use of status to support workflow.

Can the status be used in place of prescription tracking software?

The status can be used to determine the overall status of dispense request; however, it does not cater for the granularity that prescription tracking software can offer.

It is recommended that the MedicationDispenseStatus is used to indicate the status at a high-level so that integrated systems can determine how to represent this information.

Status FHIR Definition Recommendation
preparation The core event has not started yet, but some staging activities have begun (e.g. initial compounding or packaging of medication). Preparation stages may be tracked for billing purposes. Exposing this status could be beneficial to the requesting system to indicate the current status of the dispensing activity, if the architecture of the dispensing system allows other systems to query for medication dispense records.

Note: Consider how the status preparation is presented to the end-user to avoid confusion with in-progress.
in-progress The dispense has started but has not yet completed. Exposing this status could be beneficial to the requesting system to indicate the current status of the dispensing activity, if the architecture of the dispensing system allows other systems to query for medication dispense records.
on-hold Actions implied by the administration have been temporarily halted, but are expected to continue later. May also be called "suspended" Exposing this status could be beneficial to the requesting system to indicate the current status of the dispensing activity, if the architecture of the dispensing system allows other systems to query for medication dispense records.
completed All actions that are implied by the dispense have occurred. Recommended for MVP
This would be a suitable trigger to post / share the medication dispense with the requesting ePMA system.
entered-in-error The dispense was entered in error and therefore nullified. Not to be used unless specific use-cases can be identified.
stopped Actions implied by the dispense have been permanently halted, before all of them occurred. Recommended for MVP
This would be a suitable trigger to post / share the medication dispense with the requesting ePMA system.

medication-dispense-status-flow


Element: category

It is recommended this element is optional for an MVP implementation.

Could be used for month-end finance reporting.

Routing (such as inpatient, outpatient pharmacy, homecare, community pharmacy etc) should be catered for within the initial MedicationRequest.


Element: medication[x]

This is a mandatory element and is recommended to be used to represent the medication that was supplied - even if it differs to the original MedicationRequest.

Where the requested medication is contained within the NHS dm+d then it must be recorded using the dm+d standard

Recommendation: implementation via a referenced Medication resource.

The Referencing FHIR Resources page has guidance regarding the usage FHIR References.

Note: At the time of writing an alpha implementation of a dm+d FHIR Medication Resource Server is available from the North East CSU as a demonstrator and associated API.

It is recommended that the medicationReference.display is populated with the medication description as selected by the clinician. This may be slightly different to the medication described as returned by a SNOMED/dm+d terminology FHIR server if the ePMA system has not fully implemented dm+d into their medication picking list.

Requested medication with no dm+d code

Medication not published within the dm+d may be requested in the Acute care setting.

In this scenario it is recommended to use the CodeableConcept variant for this element. Software logic can then clearly distinguish this from nationally coded dm+d medication.

If the ePMA system has both a locally assigned code and description for the medication then;

  • The medicationCodeableConcept.text should be the description for the medication.
  • The medicationCodeableConcept.coding.code should be the code for the medication.
  • The medicationCodeableConcept.coding.display should be the description for the medication, i.e. the same value as medicationCodeableConcept.text.

If the ePMA system only has a description for the medication then;

  • The medicationCodeableConcept.text should be the locally assigned description for the medication.

Multiple dispense requests for a single medication request

In the event that multiple dispense requests are required to fulfil a MedicationRequest, the same requesting identifier should be used with the appropriate status.

An example of this could be the Cosopt medication where one medication request would be received; however, two dispense messages would be returned for Dorzolamide and Timolol.


Element: subject

It is recommended this element is mandatory for an MVP implementation.

Note: It is acknowledged that a typical Hospital Patient Administration System (PAS) available today will not expose a FHIR interface so referencing by URL will most likely not be available for some time; however, this should be a target architecture so that the FHIR-enabled PAS can be used as a trusted source of Patient resources across multiple hospital systems.

See population of a Patient resource.


Element: context

It is recommended this element is optional for an MVP implementation.


Element: supportingInformation

It is recommended this element is optional for an MVP implementation.


Element: performer

It is recommended this element is mandatory for an MVP implementation and that the performer.actor element either references a practioner or organization resource.

Warning: The option to define a performer.onBehalfOf has been removed from the FHIR R4 standard; therefore, it is recommended not to use in an STU3 implementation.

Element: authorizingPrescription

This is a required element where the prescription is known and available when constructing the MedicationDispense resource.

Supply Events

Examples of where medications can be supplied without as a prescription below:

  • Emergency supply
  • Over The Counter (OTC)
  • Patient Group Directions (PGD)
  • Minor Ailment Schemes.

Dispense Events

Important: Where the prescription is available, it is recommended to reference via a URL - using the identifier element rather than adding the medicationRequest as a bundle - to avoid duplication.

Element: type

It is recommended this element is required for an MVP implementation.


Element: quantity

It is recommended this element is mandatory for an MVP implementation.

This element could be useful in particular for discharge prescriptions (TTO) when representing "1 of something" - for example:

  • 1 pack
  • 1 tablet
  • 1 bottle.

It may be simpler to always express as dose units.


Element: daysSupply

It is recommended this element is optional for an MVP implementation.


Element: whenPrepared

It is recommended this element is mandatory for an MVP implementation.


Element: whenHandedOver

It is recommended this element is optional for an MVP implementation.


Element: destination

It is recommended this element is optional for an MVP implementation.

If used, consider interpreting as the Intended Destination as in the real world, this could change between being marked as "dispensed" and the patient receiving the medication.

Example

Within an Inpatient Setting - the patient could have been transferred before the medication is delivered.


intended-destination


Element: receiver

It is recommended this element is optional for an MVP implementation.


Element: note

It is recommended this element is optional for an MVP implementation.

Not required as part of a minimum viable product; however, if this field is populated, the receiving system must consume the information in the event that it contains important information (and should be treat as required)

Important: If the system offers an end-user the option to create a note, it is advised that the scope of the note should be the dispense event only.

Element: dosageInstruction

It is recommended this element is required for an MVP implementation.

An example instance where this could be used is if a substitution has taken place where the dosage instruction differs to the one in the MedicationRequest.

If the dosageInstruction element is used then it should be represented as a structured dose where possible in the event that the receiving system is required to interpret the content.

In this instance, population of just the dosageInstruction.text element would be unacceptable for a successful implementation.

Refer to FHIR Dose Syntax Implementation Guidance (or any subsequent version) for guidance.

View the R4 FHIR Dose Syntax Guidance


Element: substitution

It is recommended this element is required for an MVP implementation.

Note: If omitted or has a value of false then substitution has not occured.
Important: A suitable definition and example use-cases for a substitution need to be defined.

For example:

  • Is a sugar-free variant classed as a substitution?
  • Is a generic variant of a drug classed as a substitution?
  • Can a substitution be an entirely different medication, or should it be a new request?

  • Should a substitution only be used, for example, if supplied in a different strength than requested?


Element: detectedIssue

It is recommended this element is avoided for an MVP implementation.


Element: notDone

Warning: This element has been removed from the FHIR R4 standard

It is recommended this element is not implemented as part of an MVP.


Element: notDoneReason

Warning: This element has been removed from the FHIR R4 standard

It is recommended this element is not implemented as part of an MVP.


Element: eventHistory

It is recommended this element is optional for an MVP implementation.

This element could be used to indicate when something has been verified.


Element: id

It is highly recommended that the logical id value is a Universally Unique Identifier (UUID) using a standard UUID generator available in most programming languages. The most comprehensive current definition of the logical id is within the FHIR R4 standard.

Optional as this is an internally facing unique identifier. The unique business identifier essential for interoperability is an identifier.


Element: text

It is recommended this element is not implemented as part of an MVP.

back to top