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

Introduction:

The FHIR R4 and the QI-Core DeviceRequest profile describes the request to use of a device by a patient. The device may be any pertinent device specified in the Device resource. Examples of devices that may be requested include a wheelchair, hearing aids, or an insulin pump. The request may lead to the dispensing of the device to the patient or for use by the patient. Orders or recommendations for use of a device for a patient use the ServiceRequest resource.

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

The following example illustrates the use of DeviceRequest:


// connectathon/fhir4/cql/AdvancedIllnessandFrailtyExclusion_FHIR4-4.0.000.cql
define "Device Indicating Frailty":
  [DeviceRequest: "Frailty Device"] FrailtyDeviceOrder
    where FrailtyDeviceOrder.status in { 'active', 'on-hold', 'completed' }
      and FrailtyDeviceOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }


See the patterns page for implementation and usage patterns.

Examples:

General DeviceRequest 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-devicerequest

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

This profile builds on DeviceRequest.

This profile was published on Thu Jul 11 00:00:00 UTC 2019 as a draft by Health Level Seven, Inc. - CQI WG.

Description of Profiles, Differentials, and Snapshots.

NameFlagsCard.TypeDescription & Constraintsdoco
.. DeviceRequest I0..*DeviceRequestMedical device request
... 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 SΣI0..*IdentifierExternal Request identifier
... instantiatesCanonical ΣI0..*canonical(ActivityDefinition | PlanDefinition)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(Resource)What request fulfills
... priorRequest ΣI0..*Reference(Resource)What request replaces
... groupIdentifier ΣI0..1IdentifierIdentifier of composite request
... status ?!SΣI0..1codedraft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required)
... intent ?!SΣI1..1codeproposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
Binding: RequestIntent (required)
... priority ΣI0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required)
... code[x] SΣI1..1Device requested
Binding: FHIRDeviceTypes (example)
.... codeReferenceReference(Device)
.... codeCodeableConceptCodeableConcept
... parameter I0..*BackboneElementDevice details
.... 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
.... code I0..1CodeableConceptDevice detail
Binding: (unbound) (example)
.... value[x] I0..1Value of detail
..... valueCodeableConceptCodeableConcept
..... valueQuantityQuantity
..... valueRangeRange
..... valueBooleanboolean
... subject SΣI1..1Reference(QICorePatient)Focus of request
... encounter SΣI0..1Reference(QICoreEncounter)Encounter motivating request
... occurrence[x] SΣI0..1Desired time or schedule for use
.... occurrenceDateTimedateTime
.... occurrencePeriodPeriod
.... occurrenceTimingTiming
... authoredOn SΣI0..1dateTimeWhen recorded
... requester SΣI0..1Reference(QICoreDevice | QICorePractitioner | QICorePractitionerRole | QICoreOrganization)Who/what is requesting diagnostics
... performerType ΣI0..1CodeableConceptFiller role
Binding: ParticipantRoles (example)
... performer SΣI0..1Reference(QICorePractitioner | QICorePractitionerRole | QICoreOrganization | QICoreCareTeam | QICorePatient | QICoreDevice | QICoreRelatedPerson)Requested Filler
... reasonCode ΣI0..*CodeableConceptCoded Reason for request
Binding: Condition/Problem/DiagnosisCodes (example)
... reasonReference SΣI0..*Reference(QICoreCondition | QICoreObservation)Linked Reason for request
... insurance I0..*Reference(Coverage | ClaimResponse)Associated insurance coverage
... supportingInfo I0..*Reference(Resource)Additional clinical information
... note I0..*AnnotationNotes or comments
... relevantHistory I0..*Reference(Provenance)Request provenance

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. DeviceRequest I0..*DeviceRequestMedical device request
... 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 SΣI0..*IdentifierExternal Request identifier
... instantiatesCanonical ΣI0..*canonical(ActivityDefinition | PlanDefinition)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(Resource)What request fulfills
... priorRequest ΣI0..*Reference(Resource)What request replaces
... groupIdentifier ΣI0..1IdentifierIdentifier of composite request
... status ?!SΣI0..1codedraft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required)
... intent ?!SΣI1..1codeproposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
Binding: RequestIntent (required)
... priority ΣI0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required)
... code[x] SΣI1..1Device requested
Binding: FHIRDeviceTypes (example)
.... codeReferenceReference(Device)
.... codeCodeableConceptCodeableConcept
... parameter I0..*BackboneElementDevice details
.... 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
.... code I0..1CodeableConceptDevice detail
Binding: (unbound) (example)
.... value[x] I0..1Value of detail
..... valueCodeableConceptCodeableConcept
..... valueQuantityQuantity
..... valueRangeRange
..... valueBooleanboolean
... subject SΣI1..1Reference(QICorePatient)Focus of request
... encounter SΣI0..1Reference(QICoreEncounter)Encounter motivating request
... occurrence[x] SΣI0..1Desired time or schedule for use
.... occurrenceDateTimedateTime
.... occurrencePeriodPeriod
.... occurrenceTimingTiming
... authoredOn SΣI0..1dateTimeWhen recorded
... requester SΣI0..1Reference(QICoreDevice | QICorePractitioner | QICorePractitionerRole | QICoreOrganization)Who/what is requesting diagnostics
... performerType ΣI0..1CodeableConceptFiller role
Binding: ParticipantRoles (example)
... performer SΣI0..1Reference(QICorePractitioner | QICorePractitionerRole | QICoreOrganization | QICoreCareTeam | QICorePatient | QICoreDevice | QICoreRelatedPerson)Requested Filler
... reasonCode ΣI0..*CodeableConceptCoded Reason for request
Binding: Condition/Problem/DiagnosisCodes (example)
... reasonReference SΣI0..*Reference(QICoreCondition | QICoreObservation)Linked Reason for request
... insurance I0..*Reference(Coverage | ClaimResponse)Associated insurance coverage
... supportingInfo I0..*Reference(Resource)Additional clinical information
... note I0..*AnnotationNotes or comments
... relevantHistory I0..*Reference(Provenance)Request provenance

doco Documentation for this format

 

D.4.1.2 Terminology Bindings

Terminology Bindings

PathConformanceValueSet
DeviceRequest.languagepreferredCommonLanguages
Max Binding: AllLanguages
DeviceRequest.statusrequiredRequestStatus
DeviceRequest.intentrequiredRequestIntent
DeviceRequest.priorityrequiredRequestPriority
DeviceRequest.code[x]exampleFHIRDeviceTypes
DeviceRequest.parameter.codeexample
DeviceRequest.performerTypeexampleParticipantRoles
DeviceRequest.reasonCodeexampleCondition/Problem/DiagnosisCodes

D.4.1.3 Constraints

Constraints

IdPathDetailsRequirements
dom-2DeviceRequestIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3DeviceRequestIf 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-4DeviceRequestIf 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-5DeviceRequestIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6DeviceRequestA resource should have narrative for robust management
: text.`div`.exists()
ele-1DeviceRequest.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1DeviceRequest.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1DeviceRequest.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1DeviceRequest.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1DeviceRequest.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.instantiatesCanonicalAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.instantiatesUriAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.basedOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.priorRequestAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.groupIdentifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.intentAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.priorityAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.code[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.parameterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.parameter.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1DeviceRequest.parameter.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1DeviceRequest.parameter.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1DeviceRequest.parameter.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1DeviceRequest.parameter.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.parameter.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.encounterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.occurrence[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.authoredOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.requesterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.performerTypeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.performerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.reasonReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.insuranceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.supportingInfoAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1DeviceRequest.relevantHistoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())