QI-Core Implementation Guide
4.1.0 - release

Publication Build: This will be filled in by the publication tooling

## Resource Profile: QICoreDeviceRequest

Defining URL: | http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-devicerequest
Version: | 4.1.0
Name: | QICoreDeviceRequest
Status: | Draft as of 7/11/19
Definition: | Profile of DeviceRequest 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-devicerequest

Usage

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 DeviceRequest and DeviceNotRequested profiles represent the positive and negative statements for a device request. To ensure instances retrieved meet positive intent, applications should check the status and doNotPerform elements as illustrated in this example:

    define DeviceRequest:
      [DeviceRequest] D
        where D.status in { 'draft', 'active', 'on-hold', 'revoked', 'completed' }
          and D.doNotPerform() is not true

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' }
          and FrailtyDeviceOrder.doNotPerform() is not true

See the patterns page for implementation and usage patterns.

### Examples

General DeviceRequest Example

### Formal Views of Profile Content

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

- Text Summary
- Differential Table
- Snapshot Table
- Snapshot Table (Must Support)
- All

This structure is derived from DeviceRequest

Summary

Must-Support: 11 elements

Structures

This structure refers to these other structures:

- QICorePatient (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient)
- QICoreEncounter (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter)
- QICoreDevice (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-device)
- QICorePractitioner (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-practitioner)
- QICorePractitionerRole (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-practitionerrole)
- QICoreOrganization (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-organization)
- QICoreCareTeam (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-careteam)
- QICoreRelatedPerson (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-relatedperson)
- QICoreCondition (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition)
- QICoreObservation (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation)

This structure is derived from DeviceRequest

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
DeviceRequest |  | 0..* | DeviceRequest | Medical device request
identifier | S | 0..* | Identifier | External Request identifier
status | S | 0..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown
intent | S | 1..1 | code | proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
code[x] | S | 1..1 | Reference(Device), CodeableConcept | Device requested
subject | S | 1..1 | Reference(QICorePatient) | Focus of request
encounter | S | 0..1 | Reference(QICoreEncounter) | Encounter motivating request
occurrence[x] | S | 0..1 | dateTime, Period, Timing | Desired time or schedule for use
authoredOn | S | 0..1 | dateTime | When recorded
requester | S | 0..1 | Reference(QICoreDevice | QICorePractitioner | QICorePractitionerRole | QICoreOrganization) | Who/what is requesting diagnostics
performer | S | 0..1 | Reference(QICorePractitioner | QICorePractitionerRole | QICoreOrganization | QICoreCareTeam | QICorePatient | QICoreDevice | QICoreRelatedPerson) | Requested Filler
reasonReference | S | 0..* | Reference(QICoreCondition | QICoreObservation) | Linked Reason for request
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
DeviceRequest |  | 0..* | DeviceRequest | Medical device request
id | Σ | 0..1 | string | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages: A human language.
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | External Request identifier
instantiatesCanonical | Σ | 0..* | canonical(ActivityDefinition | PlanDefinition) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition
basedOn | Σ | 0..* | Reference(Resource) | What request fulfills
priorRequest | Σ | 0..* | Reference(Resource) | What request replaces
groupIdentifier | Σ | 0..1 | Identifier | Identifier of composite request
status | ?!S Σ | 0..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Codes representing the status of the request.
intent | ?!S Σ | 1..1 | code | proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option Binding: RequestIntent (required): The kind of diagnostic request.
priority | Σ | 0..1 | code | routine | urgent | asap | stat Binding: RequestPriority (required): Identifies the level of importance to be assigned to actioning the request.
code[x] | S Σ | 1..1 |  | Device requested Binding: FHIRDeviceTypes (example): Codes for devices that can be requested.
codeReference |  |  | Reference(Device) |
codeCodeableConcept |  |  | CodeableConcept |
parameter |  | 0..* | BackboneElement | Device details
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
code |  | 0..1 | CodeableConcept | Device detail Binding: (unbound) (example): A code that identifies the device detail.
value[x] |  | 0..1 |  | Value of detail
valueCodeableConcept |  |  | CodeableConcept |
valueQuantity |  |  | Quantity |
valueRange |  |  | Range |
valueBoolean |  |  | boolean |
subject | S Σ | 1..1 | Reference(QICorePatient) | Focus of request
encounter | S Σ | 0..1 | Reference(QICoreEncounter) | Encounter motivating request
occurrence[x] | S Σ | 0..1 |  | Desired time or schedule for use
occurrenceDateTime |  |  | dateTime |
occurrencePeriod |  |  | Period |
occurrenceTiming |  |  | Timing |
authoredOn | S Σ | 0..1 | dateTime | When recorded
requester | S Σ | 0..1 | Reference(QICoreDevice | QICorePractitioner | QICorePractitionerRole | QICoreOrganization) | Who/what is requesting diagnostics
performerType | Σ | 0..1 | CodeableConcept | Filler role Binding: ParticipantRoles (example): Indicates specific responsibility of an individual within the care team, such as "Primary physician", "Team coordinator", "Caregiver", etc.
performer | S Σ | 0..1 | Reference(QICorePractitioner | QICorePractitionerRole | QICoreOrganization | QICoreCareTeam | QICorePatient | QICoreDevice | QICoreRelatedPerson) | Requested Filler
reasonCode | Σ | 0..* | CodeableConcept | Coded Reason for request Binding: Condition/Problem/DiagnosisCodes (example): Diagnosis or problem codes justifying the reason for requesting the device.
reasonReference | S Σ | 0..* | Reference(QICoreCondition | QICoreObservation) | Linked Reason for request
insurance |  | 0..* | Reference(Coverage | ClaimResponse) | Associated insurance coverage
supportingInfo |  | 0..* | Reference(Resource) | Additional clinical information
note |  | 0..* | Annotation | Notes or comments
relevantHistory |  | 0..* | Reference(Provenance) | Request provenance
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
DeviceRequest |  | 0..* | DeviceRequest | Medical device request
identifier | Σ | 0..* | Identifier | External Request identifier
status | ?!Σ | 0..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Codes representing the status of the request.
intent | ?!Σ | 1..1 | code | proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option Binding: RequestIntent (required): The kind of diagnostic request.
code[x] | Σ | 1..1 |  | Device requested Binding: FHIRDeviceTypes (example): Codes for devices that can be requested.
codeReference |  |  | Reference(Device) |
codeCodeableConcept |  |  | CodeableConcept |
subject | Σ | 1..1 | Reference(QICorePatient) | Focus of request
encounter | Σ | 0..1 | Reference(QICoreEncounter) | Encounter motivating request
occurrence[x] | Σ | 0..1 |  | Desired time or schedule for use
occurrenceDateTime |  |  | dateTime |
occurrencePeriod |  |  | Period |
occurrenceTiming |  |  | Timing |
authoredOn | Σ | 0..1 | dateTime | When recorded
requester | Σ | 0..1 | Reference(QICoreDevice | QICorePractitioner | QICorePractitionerRole | QICoreOrganization) | Who/what is requesting diagnostics
performer | Σ | 0..1 | Reference(QICorePractitioner | QICorePractitionerRole | QICoreOrganization | QICoreCareTeam | QICorePatient | QICoreDevice | QICoreRelatedPerson) | Requested Filler
reasonReference | Σ | 0..* | Reference(QICoreCondition | QICoreObservation) | Linked Reason for request
Documentation for this format

This structure is derived from DeviceRequest

Summary

Must-Support: 11 elements

Structures

This structure refers to these other structures:

- QICorePatient (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient)
- QICoreEncounter (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter)
- QICoreDevice (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-device)
- QICorePractitioner (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-practitioner)
- QICorePractitionerRole (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-practitionerrole)
- QICoreOrganization (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-organization)
- QICoreCareTeam (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-careteam)
- QICoreRelatedPerson (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-relatedperson)
- QICoreCondition (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition)
- QICoreObservation (http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation)

Differential View

This structure is derived from DeviceRequest

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
DeviceRequest |  | 0..* | DeviceRequest | Medical device request
identifier | S | 0..* | Identifier | External Request identifier
status | S | 0..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown
intent | S | 1..1 | code | proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
code[x] | S | 1..1 | Reference(Device), CodeableConcept | Device requested
subject | S | 1..1 | Reference(QICorePatient) | Focus of request
encounter | S | 0..1 | Reference(QICoreEncounter) | Encounter motivating request
occurrence[x] | S | 0..1 | dateTime, Period, Timing | Desired time or schedule for use
authoredOn | S | 0..1 | dateTime | When recorded
requester | S | 0..1 | Reference(QICoreDevice | QICorePractitioner | QICorePractitionerRole | QICoreOrganization) | Who/what is requesting diagnostics
performer | S | 0..1 | Reference(QICorePractitioner | QICorePractitionerRole | QICoreOrganization | QICoreCareTeam | QICorePatient | QICoreDevice | QICoreRelatedPerson) | Requested Filler
reasonReference | S | 0..* | Reference(QICoreCondition | QICoreObservation) | Linked Reason for request
Documentation for this format

Snapshot View

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
DeviceRequest |  | 0..* | DeviceRequest | Medical device request
id | Σ | 0..1 | string | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages: A human language.
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | External Request identifier
instantiatesCanonical | Σ | 0..* | canonical(ActivityDefinition | PlanDefinition) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition
basedOn | Σ | 0..* | Reference(Resource) | What request fulfills
priorRequest | Σ | 0..* | Reference(Resource) | What request replaces
groupIdentifier | Σ | 0..1 | Identifier | Identifier of composite request
status | ?!S Σ | 0..1 | code | draft | active | on-hold | revoked | completed | entered-in-error | unknown Binding: RequestStatus (required): Codes representing the status of the request.
intent | ?!S Σ | 1..1 | code | proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option Binding: RequestIntent (required): The kind of diagnostic request.
priority | Σ | 0..1 | code | routine | urgent | asap | stat Binding: RequestPriority (required): Identifies the level of importance to be assigned to actioning the request.
code[x] | S Σ | 1..1 |  | Device requested Binding: FHIRDeviceTypes (example): Codes for devices that can be requested.
codeReference |  |  | Reference(Device) |
codeCodeableConcept |  |  | CodeableConcept |
parameter |  | 0..* | BackboneElement | Device details
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
code |  | 0..1 | CodeableConcept | Device detail Binding: (unbound) (example): A code that identifies the device detail.
value[x] |  | 0..1 |  | Value of detail
valueCodeableConcept |  |  | CodeableConcept |
valueQuantity |  |  | Quantity |
valueRange |  |  | Range |
valueBoolean |  |  | boolean |
subject | S Σ | 1..1 | Reference(QICorePatient) | Focus of request
encounter | S Σ | 0..1 | Reference(QICoreEncounter) | Encounter motivating request
occurrence[x] | S Σ | 0..1 |  | Desired time or schedule for use
occurrenceDateTime |  |  | dateTime |
occurrencePeriod |  |  | Period |
occurrenceTiming |  |  | Timing |
authoredOn | S Σ | 0..1 | dateTime | When recorded
requester | S Σ | 0..1 | Reference(QICoreDevice | QICorePractitioner | QICorePractitionerRole | QICoreOrganization) | Who/what is requesting diagnostics
performerType | Σ | 0..1 | CodeableConcept | Filler role Binding: ParticipantRoles (example): Indicates specific responsibility of an individual within the care team, such as "Primary physician", "Team coordinator", "Caregiver", etc.
performer | S Σ | 0..1 | Reference(QICorePractitioner | QICorePractitionerRole | QICoreOrganization | QICoreCareTeam | QICorePatient | QICoreDevice | QICoreRelatedPerson) | Requested Filler
reasonCode | Σ | 0..* | CodeableConcept | Coded Reason for request Binding: Condition/Problem/DiagnosisCodes (example): Diagnosis or problem codes justifying the reason for requesting the device.
reasonReference | S Σ | 0..* | Reference(QICoreCondition | QICoreObservation) | Linked Reason for request
insurance |  | 0..* | Reference(Coverage | ClaimResponse) | Associated insurance coverage
supportingInfo |  | 0..* | Reference(Resource) | Additional clinical information
note |  | 0..* | Annotation | Notes or comments
relevantHistory |  | 0..* | Reference(Provenance) | Request provenance
Documentation for this format

Other representations of profile: CSV, Excel, Schematron

#### Terminology Bindings

Path | Conformance | ValueSet
DeviceRequest.language | preferred | CommonLanguages Max Binding: AllLanguages
DeviceRequest.status | required | RequestStatus
DeviceRequest.intent | required | RequestIntent
DeviceRequest.priority | required | RequestPriority
DeviceRequest.code[x] | example | FHIRDeviceTypes
DeviceRequest.parameter.code | example |
DeviceRequest.performerType | example | ParticipantRoles
DeviceRequest.reasonCode | example | Condition/Problem/DiagnosisCodes

#### Constraints

Id | Grade | Path | Details | Requirements
dom-2 | error | DeviceRequest | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | DeviceRequest | If 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-4 | error | DeviceRequest | If 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-5 | error | DeviceRequest | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | Best Practice | DeviceRequest | A resource should have narrative for robust management : text.`div`.exists() |
ele-1 | error | DeviceRequest.meta | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.implicitRules | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.language | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.text | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | DeviceRequest.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | error | DeviceRequest.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | DeviceRequest.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | error | DeviceRequest.identifier | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.instantiatesCanonical | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.instantiatesUri | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.basedOn | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.priorRequest | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.groupIdentifier | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.status | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.intent | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.priority | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.code[x] | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.parameter | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.parameter.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | DeviceRequest.parameter.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | error | DeviceRequest.parameter.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | error | DeviceRequest.parameter.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | error | DeviceRequest.parameter.code | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.parameter.value[x] | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.subject | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.encounter | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.occurrence[x] | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.authoredOn | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.requester | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.performerType | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.performer | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.reasonCode | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.reasonReference | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.insurance | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.supportingInfo | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.note | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | error | DeviceRequest.relevantHistory | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |