QI-Core Implementation Guide: STU 4 (v4.0.0 for FHIR 4.0.1)

QI-Core Implementation Guide - This is the current published version.. See the Directory of published versions

D.4.1 StructureDefinition-qicore-medicationadministration

Introduction:

To create an expression specifically requesting information that a MedicationAdministration intentionally did not occur for a medical, patient or system reason, use the profile QICore-mednotadministered.

The following example illustrates the use of a MedicationAdministration resource:


// connectathon/fhir4/cql/EXM108_FHIR4-8.2.000.cql
define "Low Dose Unfractionated Heparin Administration":
  ["MedicationAdministration": medication in "Low Dose Unfractionated Heparin for VTE Prophylaxis"] VTEMedication
    where VTEMedication.status = 'completed'
      and VTEMedication.category ~ "Inpatient"

See the patterns page for implementation and usage patterns.

Examples:

Inhalant Example

D.4.1.1 Formal Views of Profile Content

The official URL for this profile is:

http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationadministration

Profile of MedicationAdministration for decision support/quality metrics. Defines the core set of elements and extensions for quality rule and measure authors.

This profile builds on MedicationAdministration.

This profile was published on Wed Aug 22 00:00:00 UTC 2018 as a draft by Health Level Seven, Inc. - CQI WG.

Description of Profiles, Differentials, and Snapshots.

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationAdministration I0..*MedicationAdministrationAdministration of medication to a patient
... id Σ0..1stringLogical id of this artifact
... meta ΣI0..1MetaMetadata about the resource
... implicitRules ?!ΣI0..1uriA set of rules under which this content was created
... language I0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension I0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier I0..*IdentifierExternal identifier
... instantiates ΣI0..*uriInstantiates protocol or definition
... partOf ΣI0..*Reference(MedicationAdministration | Procedure)Part of referenced event
... status ?!SΣI1..1codein-progress | not-done | on-hold | completed | entered-in-error | stopped | unknown
Binding: MedicationAdministration Status Codes (required)
... statusReason SI0..*CodeableConceptReason administration not performed
Binding: SNOMEDCTReasonMedicationNotGivenCodes (example)
... category I0..1CodeableConceptType of medication usage
Binding: MedicationAdministration Category Codes (preferred)
... medication[x] SΣI1..1What was administered
Binding: US Core Medication Codes (RxNorm) (preferred)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject SΣI1..1Reference(QICorePatient)Who received medication
... context SI0..1Reference(QICoreEncounter | EpisodeOfCare)Encounter or Episode of Care administered as part of
... supportingInformation I0..*Reference(Resource)Additional information to support administration
... effective[x] SΣI1..1Start and end time of administration
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... performer ΣI0..*BackboneElementWho performed the medication administration and what they did
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function I0..1CodeableConceptType of performance
Binding: MedicationAdministration Performer Function Codes (example)
.... actor ΣI1..1Reference(QICorePractitioner | QICorePatient | QICoreRelatedPerson | QICoreDevice)Who performed the medication administration
... reasonCode SI0..*CodeableConceptReason administration performed
Binding: ReasonMedicationGivenCodes (example)
... reasonReference I0..*Reference(Condition | Observation | DiagnosticReport)Condition or observation that supports why the medication was administered
... request I0..1Reference(QICoreMedicationRequest)Request administration performed against
... device I0..*Reference(QICoreDevice)Device used to administer
... note I0..*AnnotationInformation about the administration
... dosage I0..1BackboneElementDetails of how medication was taken
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... text I0..1stringFree text dosage instructions e.g. SIG
.... site I0..1CodeableConceptBody site administered to
Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example)
.... route SI0..1CodeableConceptPath of substance into body
Binding: SNOMEDCTRouteCodes (example)
.... method I0..1CodeableConceptHow drug was administered
Binding: SNOMEDCTAdministrationMethodCodes (example)
.... dose SI0..1SimpleQuantityAmount of medication per dose
.... rate[x] I0..1Dose quantity per unit of time
..... rateRatioRatio
..... rateQuantityQuantity(SimpleQuantity)
... eventHistory I0..*Reference(Provenance)A list of events of interest in the lifecycle

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationAdministration I0..*MedicationAdministrationAdministration of medication to a patient
... id Σ0..1stringLogical id of this artifact
... meta ΣI0..1MetaMetadata about the resource
... implicitRules ?!ΣI0..1uriA set of rules under which this content was created
... language I0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension I0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier I0..*IdentifierExternal identifier
... instantiates ΣI0..*uriInstantiates protocol or definition
... partOf ΣI0..*Reference(MedicationAdministration | Procedure)Part of referenced event
... status ?!SΣI1..1codein-progress | not-done | on-hold | completed | entered-in-error | stopped | unknown
Binding: MedicationAdministration Status Codes (required)
... statusReason SI0..*CodeableConceptReason administration not performed
Binding: SNOMEDCTReasonMedicationNotGivenCodes (example)
... category I0..1CodeableConceptType of medication usage
Binding: MedicationAdministration Category Codes (preferred)
... medication[x] SΣI1..1What was administered
Binding: US Core Medication Codes (RxNorm) (preferred)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject SΣI1..1Reference(QICorePatient)Who received medication
... context SI0..1Reference(QICoreEncounter | EpisodeOfCare)Encounter or Episode of Care administered as part of
... supportingInformation I0..*Reference(Resource)Additional information to support administration
... effective[x] SΣI1..1Start and end time of administration
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... performer ΣI0..*BackboneElementWho performed the medication administration and what they did
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function I0..1CodeableConceptType of performance
Binding: MedicationAdministration Performer Function Codes (example)
.... actor ΣI1..1Reference(QICorePractitioner | QICorePatient | QICoreRelatedPerson | QICoreDevice)Who performed the medication administration
... reasonCode SI0..*CodeableConceptReason administration performed
Binding: ReasonMedicationGivenCodes (example)
... reasonReference I0..*Reference(Condition | Observation | DiagnosticReport)Condition or observation that supports why the medication was administered
... request I0..1Reference(QICoreMedicationRequest)Request administration performed against
... device I0..*Reference(QICoreDevice)Device used to administer
... note I0..*AnnotationInformation about the administration
... dosage I0..1BackboneElementDetails of how medication was taken
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... text I0..1stringFree text dosage instructions e.g. SIG
.... site I0..1CodeableConceptBody site administered to
Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example)
.... route SI0..1CodeableConceptPath of substance into body
Binding: SNOMEDCTRouteCodes (example)
.... method I0..1CodeableConceptHow drug was administered
Binding: SNOMEDCTAdministrationMethodCodes (example)
.... dose SI0..1SimpleQuantityAmount of medication per dose
.... rate[x] I0..1Dose quantity per unit of time
..... rateRatioRatio
..... rateQuantityQuantity(SimpleQuantity)
... eventHistory I0..*Reference(Provenance)A list of events of interest in the lifecycle

doco Documentation for this format

 

D.4.1.2 Terminology Bindings

Terminology Bindings

PathConformanceValueSet
MedicationAdministration.languagepreferredCommonLanguages
Max Binding: AllLanguages
MedicationAdministration.statusrequiredMedicationAdministration Status Codes
MedicationAdministration.statusReasonexampleSNOMEDCTReasonMedicationNotGivenCodes
MedicationAdministration.categorypreferredMedicationAdministration Category Codes
MedicationAdministration.medication[x]preferredUSCoreMedicationCodes
MedicationAdministration.performer.functionexampleMedicationAdministration Performer Function Codes
MedicationAdministration.reasonCodeexampleReasonMedicationGivenCodes
MedicationAdministration.dosage.siteexampleSNOMEDCTAnatomicalStructureForAdministrationSiteCodes
MedicationAdministration.dosage.routeexampleSNOMEDCTRouteCodes
MedicationAdministration.dosage.methodexampleSNOMEDCTAdministrationMethodCodes

D.4.1.3 Constraints

Constraints

IdPathDetailsRequirements
dom-2MedicationAdministrationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3MedicationAdministrationIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4MedicationAdministrationIf 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-5MedicationAdministrationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6MedicationAdministrationA resource should have narrative for robust management
: text.`div`.exists()
ele-1MedicationAdministration.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationAdministration.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationAdministration.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationAdministration.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationAdministration.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.instantiatesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.partOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.statusReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.medication[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.contextAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.supportingInformationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.effective[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.performerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.performer.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationAdministration.performer.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationAdministration.performer.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationAdministration.performer.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationAdministration.performer.functionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.performer.actorAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.reasonReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.requestAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.deviceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.dosageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
mad-1MedicationAdministration.dosageSHALL have at least one of dosage.dose or dosage.rate[x]
: dose.exists() or rate.exists()
ele-1MedicationAdministration.dosage.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationAdministration.dosage.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationAdministration.dosage.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationAdministration.dosage.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationAdministration.dosage.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.dosage.siteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.dosage.routeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.dosage.methodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.dosage.doseAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.dosage.rate[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationAdministration.eventHistoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())