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

Introduction:


define "No VTE Prophylaxis Device Applied":
  ["Procedure": "Device Application"] DeviceApplied
    let DeviceNotDoneTiming: Global.GetExtension(DeviceApplied, 'qicore-recorded').value
    where (DeviceApplied.usedCode in "Intermittent pneumatic compression devices (IPC)"
      or DeviceApplied.usedCode in "Venous foot pumps (VFP)"
      or DeviceApplied.usedCode in "Graduated compression stockings (GCS)"
    )
      and  DeviceApplied.status = 'not-done'
    return {id: DeviceApplied.id, requestStatusReason: DeviceApplied.statusReason, authoredOn: DeviceNotDoneTiming}

See the patterns page for implementation and usage patterns.

Examples:

Negation 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-procedurenotdone

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

This profile builds on Procedure.

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: 3 elements (1 nested mandatory element)
Must-Support: 7 elements
Fixed Value: 1 element

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure I0..*ProcedureAn action that is being or was performed on 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..*ExtensionExtension
Slice: Unordered, Open by value:url
... qicore-recorded SI1..1dateTimeExtension
URL: http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-recorded
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier ΣI0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical ΣI0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf ΣI0..*Reference(Procedure | Observation | MedicationAdministration)Part of referenced event
... status ?!SΣI1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
Fixed Value: not-done
... statusReason SΣI1..1CodeableConceptReason for current status
Binding: Negation Reason Codes (extensible)
... category ΣI0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣI0..1CodeableConceptIdentification of the procedure
Binding: ProcedureCodes(SNOMEDCT) (example)
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... coding ΣI0..*CodingCode defined by a terminology system
..... id 0..1stringUnique id for inter-element referencing
..... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... valueset-reference SI1..1uriWhat was not performed
URL: http://hl7.org/fhir/StructureDefinition/valueset-reference
..... system ΣI0..1uriIdentity of the terminology system
..... version ΣI0..1stringVersion of the system - if relevant
..... code ΣI0..1codeSymbol in syntax defined by the system
..... display ΣI0..1stringRepresentation defined by the system
..... userSelected ΣI0..1booleanIf this coding was chosen directly by the user
.... text ΣI0..1stringPlain text representation of the concept
... subject SΣI1..1Reference(QICorePatient)Who the procedure was performed on
... encounter SΣI0..1Reference(QICoreEncounter)Encounter created as part of
... performed[x] ΣI0..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Person who asserts this procedure
... performer ΣI0..*BackboneElementThe people who performed the procedure
.... 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: ProcedurePerformerRoleCodes (example)
.... actor ΣI1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)The reference to the practitioner
.... onBehalfOf I0..1Reference(Organization)Organization the device or practitioner was acting for
... location ΣI0..1Reference(Location)Where the procedure happened
... reasonCode ΣI0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example)
... reasonReference ΣI0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite ΣI0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example)
... outcome ΣI0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report I0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication I0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail I0..*Reference(Condition)A condition that is a result of the procedure
... followUp I0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note I0..*AnnotationAdditional information about the procedure
... focalDevice I0..*BackboneElementManipulated, implanted, or removed device
.... 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
.... action I0..1CodeableConceptKind of change to device
Binding: ProcedureDeviceActionCodes (preferred)
.... manipulated I1..1Reference(Device)Device that was changed
... usedReference I0..*Reference(Device | Medication | Substance)Items used during procedure
... usedCode I0..*CodeableConceptCoded items used during the procedure
Binding: FHIRDeviceTypes (example)

doco Documentation for this format

Summary

Mandatory: 3 elements (1 nested mandatory element)
Must-Support: 7 elements
Fixed Value: 1 element

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure I0..*ProcedureAn action that is being or was performed on 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..*ExtensionExtension
Slice: Unordered, Open by value:url
... qicore-recorded SI1..1dateTimeExtension
URL: http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-recorded
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier ΣI0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical ΣI0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf ΣI0..*Reference(Procedure | Observation | MedicationAdministration)Part of referenced event
... status ?!SΣI1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
Fixed Value: not-done
... statusReason SΣI1..1CodeableConceptReason for current status
Binding: Negation Reason Codes (extensible)
... category ΣI0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣI0..1CodeableConceptIdentification of the procedure
Binding: ProcedureCodes(SNOMEDCT) (example)
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... coding ΣI0..*CodingCode defined by a terminology system
..... id 0..1stringUnique id for inter-element referencing
..... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... valueset-reference SI1..1uriWhat was not performed
URL: http://hl7.org/fhir/StructureDefinition/valueset-reference
..... system ΣI0..1uriIdentity of the terminology system
..... version ΣI0..1stringVersion of the system - if relevant
..... code ΣI0..1codeSymbol in syntax defined by the system
..... display ΣI0..1stringRepresentation defined by the system
..... userSelected ΣI0..1booleanIf this coding was chosen directly by the user
.... text ΣI0..1stringPlain text representation of the concept
... subject SΣI1..1Reference(QICorePatient)Who the procedure was performed on
... encounter SΣI0..1Reference(QICoreEncounter)Encounter created as part of
... performed[x] ΣI0..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Person who asserts this procedure
... performer ΣI0..*BackboneElementThe people who performed the procedure
.... 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: ProcedurePerformerRoleCodes (example)
.... actor ΣI1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)The reference to the practitioner
.... onBehalfOf I0..1Reference(Organization)Organization the device or practitioner was acting for
... location ΣI0..1Reference(Location)Where the procedure happened
... reasonCode ΣI0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example)
... reasonReference ΣI0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite ΣI0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example)
... outcome ΣI0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report I0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication I0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail I0..*Reference(Condition)A condition that is a result of the procedure
... followUp I0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note I0..*AnnotationAdditional information about the procedure
... focalDevice I0..*BackboneElementManipulated, implanted, or removed device
.... 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
.... action I0..1CodeableConceptKind of change to device
Binding: ProcedureDeviceActionCodes (preferred)
.... manipulated I1..1Reference(Device)Device that was changed
... usedReference I0..*Reference(Device | Medication | Substance)Items used during procedure
... usedCode I0..*CodeableConceptCoded items used during the procedure
Binding: FHIRDeviceTypes (example)

doco Documentation for this format

 

D.4.1.2 Terminology Bindings

Terminology Bindings

PathConformanceValueSet / Code
Procedure.languagepreferredCommonLanguages
Max Binding: AllLanguages
Procedure.statusrequiredFixed Value: not-done
Procedure.statusReasonextensibleNegationReasonCodes
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
Procedure.codeexampleProcedureCodes(SNOMEDCT)
Procedure.performer.functionexampleProcedurePerformerRoleCodes
Procedure.reasonCodeexampleProcedureReasonCodes
Procedure.bodySiteexampleSNOMEDCTBodyStructures
Procedure.outcomeexampleProcedureOutcomeCodes(SNOMEDCT)
Procedure.complicationexampleCondition/Problem/DiagnosisCodes
Procedure.followUpexampleProcedureFollowUpCodes(SNOMEDCT)
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes
Procedure.usedCodeexampleFHIRDeviceTypes

D.4.1.3 Constraints

Constraints

IdPathDetailsRequirements
dom-2ProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3ProcedureIf 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-4ProcedureIf 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-5ProcedureIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6ProcedureA resource should have narrative for robust management
: text.`div`.exists()
ele-1Procedure.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.extension:recordedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.extension:recordedMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.instantiatesCanonicalAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.instantiatesUriAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.basedOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.partOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.statusReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.code.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.code.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.code.codingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.code.coding.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.code.coding.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.code.coding.extension:notDoneValueSetAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.code.coding.extension:notDoneValueSetMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.code.coding.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.code.coding.versionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.code.coding.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.code.coding.displayAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.code.coding.userSelectedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.code.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.encounterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performed[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.recorderAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.asserterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performer.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.performer.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.performer.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.performer.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.performer.functionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performer.actorAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performer.onBehalfOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.locationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.reasonReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.bodySiteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.outcomeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.reportAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.complicationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.complicationDetailAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.followUpAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.focalDeviceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.focalDevice.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.focalDevice.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.focalDevice.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.focalDevice.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.focalDevice.actionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.focalDevice.manipulatedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.usedReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.usedCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())