QI-Core Implementation Guide
4.1.0 - release

This page is part of the Quality Improvement Core Framework (v4.1.0: STU 4) based on FHIR R4. The current version which supercedes this version is 4.1.1. For a full list of available versions, see the Directory of published versions

Resource Profile: QICoreMedicationStatement

Defining URL:http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationstatement
Version:4.1.0
Name:QICoreMedicationStatement
Status:Draft as of 8/22/18
Definition:

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

Publisher:http://www.hl7.org/Special/committees/cqi/index.cfm
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationstatement
Usage

See the patterns page for implementation and usage patterns.

Examples

Penicillin MedicationStatement Example

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from MedicationStatement

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationStatement 0..*MedicationStatementRecord of medication being taken by a patient
... status S1..1codeactive | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken
... medication[x] S1..1What medication was taken
Binding: US Core Medication Codes (RxNorm) (preferred): The set of RxNorm codes to represent medications

.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject S1..1Reference(QICorePatient)Who is/was taking the medication
... dateAsserted S1..1dateTimeWhen the statement was asserted?
... informationSource S0..1Reference(QICorePatient | QICorePractitioner | QICoreRelatedPerson)Person or organization that provided the information about the taking of this medication
... derivedFrom S0..*Reference(Resource)Additional supporting information
... reasonCode 0..*CodeableConceptReason for why the medication is being/was taken
... dosage 0..*DosageDetails of how medication is/was taken or should be taken
.... modifierExtension ?!0..*ExtensionExtension
.... timing S0..1TimingWhen medication should be administered
.... site 0..1CodeableConceptBody site to administer to
.... route S0..1CodeableConceptHow drug should enter body
.... doseAndRate S0..*ElementAmount of medication administered
..... dose[x] S0..1Range, SimpleQuantityAmount of medication per dose

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationStatement 0..*MedicationStatementRecord of medication being taken by a patient
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierExternal identifier
... basedOn Σ0..*Reference(MedicationRequest | CarePlan | ServiceRequest)Fulfils plan, proposal or order
... partOf Σ0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Observation)Part of referenced event
... status ?!SΣ1..1codeactive | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken
Binding: Medication Status Codes (required): A coded concept indicating the current status of a MedicationStatement.

... statusReason 0..*CodeableConceptReason for current status
Binding: SNOMEDCTDrugTherapyStatusCodes (example): A coded concept indicating the reason for the status of the statement.


... category Σ0..1CodeableConceptType of medication usage
Binding: Medication usage category codes (preferred): A coded concept identifying where the medication included in the MedicationStatement is expected to be consumed or administered.

... medication[x] SΣ1..1What medication was taken
Binding: US Core Medication Codes (RxNorm) (preferred): The set of RxNorm codes to represent medications

.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject SΣ1..1Reference(QICorePatient)Who is/was taking the medication
... context Σ0..1Reference(Encounter | EpisodeOfCare)Encounter / Episode associated with MedicationStatement
... effective[x] SΣ0..1The date/time or interval when the medication is/was/will be taken
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... dateAsserted SΣ1..1dateTimeWhen the statement was asserted?
... informationSource S0..1Reference(QICorePatient | QICorePractitioner | QICoreRelatedPerson)Person or organization that provided the information about the taking of this medication
... derivedFrom S0..*Reference(Resource)Additional supporting information
... reasonCode 0..*CodeableConceptReason for why the medication is being/was taken
Binding: Condition/Problem/DiagnosisCodes (example): A coded concept identifying why the medication is being taken.


... reasonReference 0..*Reference(Condition | Observation | DiagnosticReport)Condition or observation that supports why the medication is being/was taken
... note 0..*AnnotationFurther information about the statement
... dosage 0..*DosageDetails of how medication is/was taken or should be taken
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ0..*ExtensionExtension
.... sequence Σ0..1integerThe order of the dosage instructions
.... text Σ0..1stringFree text dosage instructions e.g. SIG
.... additionalInstruction Σ0..*CodeableConceptSupplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (example): A coded concept identifying additional instructions such as "take with water" or "avoid operating heavy machinery".


.... patientInstruction Σ0..1stringPatient or consumer oriented instructions
.... timing SΣ0..1TimingWhen medication should be administered
.... asNeeded[x] Σ0..1Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the precondition that should be met or evaluated prior to consuming or administering a medication dose. For example "pain", "30 minutes prior to sexual intercourse", "on flare-up" etc.

..... asNeededBooleanboolean
..... asNeededCodeableConceptCodeableConcept
.... site Σ0..1CodeableConceptBody site to administer to
Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example): A coded concept describing the site location the medicine enters into or onto the body.

.... route SΣ0..1CodeableConceptHow drug should enter body
Binding: SNOMEDCTRouteCodes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

.... method Σ0..1CodeableConceptTechnique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered.

.... doseAndRate SΣ0..*ElementAmount of medication administered
..... id 0..1stringUnique id for inter-element referencing
..... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... type Σ0..1CodeableConceptThe kind of dose or rate specified
Binding: DoseAndRateType (example): The kind of dose or rate specified.

..... dose[x] SΣ0..1Amount of medication per dose
...... doseRangeRange
...... doseQuantityQuantity(SimpleQuantity)
..... rate[x] Σ0..1Amount of medication per unit of time
...... rateRatioRatio
...... rateRangeRange
...... rateQuantityQuantity(SimpleQuantity)
.... maxDosePerPeriod Σ0..1RatioUpper limit on medication per unit of time
.... maxDosePerAdministration Σ0..1SimpleQuantityUpper limit on medication per administration
.... maxDosePerLifetime Σ0..1SimpleQuantityUpper limit on medication per lifetime of the patient

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationStatement 0..*MedicationStatementRecord of medication being taken by a patient
... status ?!Σ1..1codeactive | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken
Binding: Medication Status Codes (required): A coded concept indicating the current status of a MedicationStatement.

... medication[x] Σ1..1What medication was taken
Binding: US Core Medication Codes (RxNorm) (preferred): The set of RxNorm codes to represent medications

.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject Σ1..1Reference(QICorePatient)Who is/was taking the medication
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... dateAsserted Σ1..1dateTimeWhen the statement was asserted?
... informationSource 0..1Reference(QICorePatient | QICorePractitioner | QICoreRelatedPerson)Person or organization that provided the information about the taking of this medication
... derivedFrom 0..*Reference(Resource)Additional supporting information
... dosage 0..*DosageDetails of how medication is/was taken or should be taken
.... timing Σ0..1TimingWhen medication should be administered
.... route Σ0..1CodeableConceptHow drug should enter body
Binding: SNOMEDCTRouteCodes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

.... doseAndRate Σ0..*ElementAmount of medication administered
..... dose[x] Σ0..1Amount of medication per dose
...... doseRangeRange
...... doseQuantityQuantity(SimpleQuantity)

doco Documentation for this format

Differential View

This structure is derived from MedicationStatement

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationStatement 0..*MedicationStatementRecord of medication being taken by a patient
... status S1..1codeactive | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken
... medication[x] S1..1What medication was taken
Binding: US Core Medication Codes (RxNorm) (preferred): The set of RxNorm codes to represent medications

.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject S1..1Reference(QICorePatient)Who is/was taking the medication
... dateAsserted S1..1dateTimeWhen the statement was asserted?
... informationSource S0..1Reference(QICorePatient | QICorePractitioner | QICoreRelatedPerson)Person or organization that provided the information about the taking of this medication
... derivedFrom S0..*Reference(Resource)Additional supporting information
... reasonCode 0..*CodeableConceptReason for why the medication is being/was taken
... dosage 0..*DosageDetails of how medication is/was taken or should be taken
.... modifierExtension ?!0..*ExtensionExtension
.... timing S0..1TimingWhen medication should be administered
.... site 0..1CodeableConceptBody site to administer to
.... route S0..1CodeableConceptHow drug should enter body
.... doseAndRate S0..*ElementAmount of medication administered
..... dose[x] S0..1Range, SimpleQuantityAmount of medication per dose

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationStatement 0..*MedicationStatementRecord of medication being taken by a patient
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierExternal identifier
... basedOn Σ0..*Reference(MedicationRequest | CarePlan | ServiceRequest)Fulfils plan, proposal or order
... partOf Σ0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Observation)Part of referenced event
... status ?!SΣ1..1codeactive | completed | entered-in-error | intended | stopped | on-hold | unknown | not-taken
Binding: Medication Status Codes (required): A coded concept indicating the current status of a MedicationStatement.

... statusReason 0..*CodeableConceptReason for current status
Binding: SNOMEDCTDrugTherapyStatusCodes (example): A coded concept indicating the reason for the status of the statement.


... category Σ0..1CodeableConceptType of medication usage
Binding: Medication usage category codes (preferred): A coded concept identifying where the medication included in the MedicationStatement is expected to be consumed or administered.

... medication[x] SΣ1..1What medication was taken
Binding: US Core Medication Codes (RxNorm) (preferred): The set of RxNorm codes to represent medications

.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(QICoreMedication)
... subject SΣ1..1Reference(QICorePatient)Who is/was taking the medication
... context Σ0..1Reference(Encounter | EpisodeOfCare)Encounter / Episode associated with MedicationStatement
... effective[x] SΣ0..1The date/time or interval when the medication is/was/will be taken
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... dateAsserted SΣ1..1dateTimeWhen the statement was asserted?
... informationSource S0..1Reference(QICorePatient | QICorePractitioner | QICoreRelatedPerson)Person or organization that provided the information about the taking of this medication
... derivedFrom S0..*Reference(Resource)Additional supporting information
... reasonCode 0..*CodeableConceptReason for why the medication is being/was taken
Binding: Condition/Problem/DiagnosisCodes (example): A coded concept identifying why the medication is being taken.


... reasonReference 0..*Reference(Condition | Observation | DiagnosticReport)Condition or observation that supports why the medication is being/was taken
... note 0..*AnnotationFurther information about the statement
... dosage 0..*DosageDetails of how medication is/was taken or should be taken
.... id 0..1stringUnique id for inter-element referencing
.... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ0..*ExtensionExtension
.... sequence Σ0..1integerThe order of the dosage instructions
.... text Σ0..1stringFree text dosage instructions e.g. SIG
.... additionalInstruction Σ0..*CodeableConceptSupplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (example): A coded concept identifying additional instructions such as "take with water" or "avoid operating heavy machinery".


.... patientInstruction Σ0..1stringPatient or consumer oriented instructions
.... timing SΣ0..1TimingWhen medication should be administered
.... asNeeded[x] Σ0..1Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the precondition that should be met or evaluated prior to consuming or administering a medication dose. For example "pain", "30 minutes prior to sexual intercourse", "on flare-up" etc.

..... asNeededBooleanboolean
..... asNeededCodeableConceptCodeableConcept
.... site Σ0..1CodeableConceptBody site to administer to
Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example): A coded concept describing the site location the medicine enters into or onto the body.

.... route SΣ0..1CodeableConceptHow drug should enter body
Binding: SNOMEDCTRouteCodes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

.... method Σ0..1CodeableConceptTechnique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered.

.... doseAndRate SΣ0..*ElementAmount of medication administered
..... id 0..1stringUnique id for inter-element referencing
..... Slices for extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... type Σ0..1CodeableConceptThe kind of dose or rate specified
Binding: DoseAndRateType (example): The kind of dose or rate specified.

..... dose[x] SΣ0..1Amount of medication per dose
...... doseRangeRange
...... doseQuantityQuantity(SimpleQuantity)
..... rate[x] Σ0..1Amount of medication per unit of time
...... rateRatioRatio
...... rateRangeRange
...... rateQuantityQuantity(SimpleQuantity)
.... maxDosePerPeriod Σ0..1RatioUpper limit on medication per unit of time
.... maxDosePerAdministration Σ0..1SimpleQuantityUpper limit on medication per administration
.... maxDosePerLifetime Σ0..1SimpleQuantityUpper limit on medication per lifetime of the patient

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

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

Constraints

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