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-medicationstatement

Introduction:

See the patterns page for implementation and usage patterns.

Examples:

Penicillin MedicationStatement 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-medicationstatement

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

This profile builds on MedicationStatement.

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.

Summary

Mandatory: 1 element
Must-Support: 11 elements

Structures

This structure refers to these other structures:

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationStatement I0..*MedicationStatementRecord of medication being taken by 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
... basedOn ΣI0..*Reference(MedicationRequest | CarePlan | ServiceRequest)Fulfils plan, proposal or order
... partOf ΣI0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Observation)Part of referenced event
... status ?!SΣI1..1codeactive | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken
Binding: Medication Status Codes (required)
... statusReason I0..*CodeableConceptReason for current status
Binding: SNOMEDCTDrugTherapyStatusCodes (example)
... category ΣI0..1CodeableConceptType of medication usage
Binding: Medication usage category codes (preferred)
... medication[x] SΣI1..1What medication was taken
Binding: US Core Medication Codes (RxNorm) (preferred)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject SΣI1..1Reference(QICorePatient)Who is/was taking the medication
... context ΣI0..1Reference(Encounter | EpisodeOfCare)Encounter / Episode associated with MedicationStatement
... effective[x] SΣI0..1The date/time or interval when the medication is/was/will be taken
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... dateAsserted SΣI1..1dateTimeWhen the statement was asserted?
... informationSource SI0..1Reference(QICorePatient | QICorePractitioner | QICoreRelatedPerson)Person or organization that provided the information about the taking of this medication
... derivedFrom SI0..*Reference(Resource)Additional supporting information
... reasonCode I0..*CodeableConceptReason for why the medication is being/was taken
Binding: Condition/Problem/DiagnosisCodes (example)
... reasonReference I0..*Reference(Condition | Observation | DiagnosticReport)Condition or observation that supports why the medication is being/was taken
... note I0..*AnnotationFurther information about the statement
... dosage I0..*DosageDetails of how medication is/was taken or should be taken
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!ΣI0..*ExtensionExtension
.... sequence ΣI0..1integerThe order of the dosage instructions
.... text ΣI0..1stringFree text dosage instructions e.g. SIG
.... additionalInstruction ΣI0..*CodeableConceptSupplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (example)
.... patientInstruction ΣI0..1stringPatient or consumer oriented instructions
.... timing SΣI0..1TimingWhen medication should be administered
.... asNeeded[x] ΣI0..1Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example)
..... asNeededBooleanboolean
..... asNeededCodeableConceptCodeableConcept
.... site ΣI0..1CodeableConceptBody site to administer to
Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example)
.... route SΣI0..1CodeableConceptHow drug should enter body
Binding: SNOMEDCTRouteCodes (example)
.... method ΣI0..1CodeableConceptTechnique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example)
.... doseAndRate SΣI0..*ElementAmount of medication administered
..... id 0..1stringUnique id for inter-element referencing
..... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... type ΣI0..1CodeableConceptThe kind of dose or rate specified
Binding: DoseAndRateType (example)
..... dose[x] SΣI0..1Amount of medication per dose
...... doseRangeRange
...... doseQuantityQuantity(SimpleQuantity)
..... rate[x] ΣI0..1Amount of medication per unit of time
...... rateRatioRatio
...... rateRangeRange
...... rateQuantityQuantity(SimpleQuantity)
.... maxDosePerPeriod ΣI0..1RatioUpper limit on medication per unit of time
.... maxDosePerAdministration ΣI0..1SimpleQuantityUpper limit on medication per administration
.... maxDosePerLifetime ΣI0..1SimpleQuantityUpper limit on medication per lifetime of the patient

doco Documentation for this format

Summary

Mandatory: 1 element
Must-Support: 11 elements

Structures

This structure refers to these other structures:

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationStatement I0..*MedicationStatementRecord of medication being taken by 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
... basedOn ΣI0..*Reference(MedicationRequest | CarePlan | ServiceRequest)Fulfils plan, proposal or order
... partOf ΣI0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Observation)Part of referenced event
... status ?!SΣI1..1codeactive | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken
Binding: Medication Status Codes (required)
... statusReason I0..*CodeableConceptReason for current status
Binding: SNOMEDCTDrugTherapyStatusCodes (example)
... category ΣI0..1CodeableConceptType of medication usage
Binding: Medication usage category codes (preferred)
... medication[x] SΣI1..1What medication was taken
Binding: US Core Medication Codes (RxNorm) (preferred)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject SΣI1..1Reference(QICorePatient)Who is/was taking the medication
... context ΣI0..1Reference(Encounter | EpisodeOfCare)Encounter / Episode associated with MedicationStatement
... effective[x] SΣI0..1The date/time or interval when the medication is/was/will be taken
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... dateAsserted SΣI1..1dateTimeWhen the statement was asserted?
... informationSource SI0..1Reference(QICorePatient | QICorePractitioner | QICoreRelatedPerson)Person or organization that provided the information about the taking of this medication
... derivedFrom SI0..*Reference(Resource)Additional supporting information
... reasonCode I0..*CodeableConceptReason for why the medication is being/was taken
Binding: Condition/Problem/DiagnosisCodes (example)
... reasonReference I0..*Reference(Condition | Observation | DiagnosticReport)Condition or observation that supports why the medication is being/was taken
... note I0..*AnnotationFurther information about the statement
... dosage I0..*DosageDetails of how medication is/was taken or should be taken
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!ΣI0..*ExtensionExtension
.... sequence ΣI0..1integerThe order of the dosage instructions
.... text ΣI0..1stringFree text dosage instructions e.g. SIG
.... additionalInstruction ΣI0..*CodeableConceptSupplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (example)
.... patientInstruction ΣI0..1stringPatient or consumer oriented instructions
.... timing SΣI0..1TimingWhen medication should be administered
.... asNeeded[x] ΣI0..1Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example)
..... asNeededBooleanboolean
..... asNeededCodeableConceptCodeableConcept
.... site ΣI0..1CodeableConceptBody site to administer to
Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example)
.... route SΣI0..1CodeableConceptHow drug should enter body
Binding: SNOMEDCTRouteCodes (example)
.... method ΣI0..1CodeableConceptTechnique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example)
.... doseAndRate SΣI0..*ElementAmount of medication administered
..... id 0..1stringUnique id for inter-element referencing
..... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... type ΣI0..1CodeableConceptThe kind of dose or rate specified
Binding: DoseAndRateType (example)
..... dose[x] SΣI0..1Amount of medication per dose
...... doseRangeRange
...... doseQuantityQuantity(SimpleQuantity)
..... rate[x] ΣI0..1Amount of medication per unit of time
...... rateRatioRatio
...... rateRangeRange
...... rateQuantityQuantity(SimpleQuantity)
.... maxDosePerPeriod ΣI0..1RatioUpper limit on medication per unit of time
.... maxDosePerAdministration ΣI0..1SimpleQuantityUpper limit on medication per administration
.... maxDosePerLifetime ΣI0..1SimpleQuantityUpper limit on medication per lifetime of the patient

doco Documentation for this format

 

D.4.1.2 Terminology Bindings

Terminology Bindings

PathConformanceValueSet
MedicationStatement.languagepreferredCommonLanguages
Max Binding: AllLanguages
MedicationStatement.statusrequiredMedication Status Codes
MedicationStatement.statusReasonexampleSNOMEDCTDrugTherapyStatusCodes
MedicationStatement.categorypreferredMedication usage category codes
MedicationStatement.medication[x]preferredUSCoreMedicationCodes
MedicationStatement.reasonCodeexampleCondition/Problem/DiagnosisCodes
MedicationStatement.dosage.additionalInstructionexampleSNOMEDCTAdditionalDosageInstructions
MedicationStatement.dosage.asNeeded[x]exampleSNOMEDCTMedicationAsNeededReasonCodes
MedicationStatement.dosage.siteexampleSNOMEDCTAnatomicalStructureForAdministrationSiteCodes
MedicationStatement.dosage.routeexampleSNOMEDCTRouteCodes
MedicationStatement.dosage.methodexampleSNOMEDCTAdministrationMethodCodes
MedicationStatement.dosage.doseAndRate.typeexampleDoseAndRateType

D.4.1.3 Constraints

Constraints

IdPathDetailsRequirements
dom-2MedicationStatementIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3MedicationStatementIf 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-4MedicationStatementIf 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-5MedicationStatementIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6MedicationStatementA resource should have narrative for robust management
: text.`div`.exists()
ele-1MedicationStatement.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationStatement.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationStatement.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationStatement.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationStatement.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.basedOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.partOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.statusReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.medication[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.contextAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.effective[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dateAssertedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.informationSourceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.derivedFromAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.reasonReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationStatement.dosage.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationStatement.dosage.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationStatement.dosage.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationStatement.dosage.sequenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.additionalInstructionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.patientInstructionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.timingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.asNeeded[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.siteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.routeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.methodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.doseAndRateAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.doseAndRate.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1MedicationStatement.dosage.doseAndRate.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1MedicationStatement.dosage.doseAndRate.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.doseAndRate.dose[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.doseAndRate.rate[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.maxDosePerPeriodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.maxDosePerAdministrationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1MedicationStatement.dosage.maxDosePerLifetimeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())