Device
Introduction
Note to Balloters: To ensure the Device resource is ready for Normative status, we are seeking ballot comments on the substantive content. The key changes made since R5 include:
For an overview of this resource and others in the Device domain, also see the Device Module page.
The Device scope and usage has been revised. A majority of content has been moved DeviceDefinition to describe the types of devices in scope.
The following element was added:
- Device.additive as a backbone.
The following elements have been revised:
- Updated Device.definition datatype to canonical(DeviceDefinition).
- Updated Device.version to Device.deviceVersion.
The following elements have been removed from Device:
- Device.displayName as it was duplicated in Device.name backbone.
- Device.owner has been removed and was moved to DeviceAssociation.relationship of the subject. Please comment on the revision if there are issues with removing the identification of individuals in the Device resource.
- Device.mode, Device.cycle, Device.duration, Device.gateway, Device.endpoint have been removed and the following extensions were added: device-mode, device-cycle, device-duration, device-gateway, and device-endpoint.
The following extensions were added:
- device-alertDetection to describe the alert detection activation states for the overall device.
- device-conformsTo-source – represents the source of the device specification.
Scope and Usage
This is a base resource that tracks individual instances of a device and their location. It is referenced by other resources for recording which device performed an action such as a procedure or an observation, which device was implanted in or explanted from a patient, dispensing a device to a patient for their use, managing inventory, or when requesting a specific device for a patient's use. Medical devices include durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health. Medical devices may also include some types of software.
Non-medical devices may include items such as a machine, cellphone, computer, software application or algorithm, etc. In short, a Device can range from a tongue depressor to an MRI. The fields in the Device resource must be flexible enough to cover this range.
The resource may be used to document the Unique Device Identifier (UDI) and information about a device where appropriate or necessary according to local jurisdictions over time. Additional information about UDI is provided in the Unique Device Identifier (UDI) section.
Devices may be categorized and may be associated with one or more categories. Device category examples include, but are not limited to: active, communicating, durable medical equipment, home use, implantable, InVitro diagnostics, personal health, point-of-care, single use, re-usable, and software. See DeviceDefinition for detailed descriptions of device categories.
Device and DeviceDefinition
When referring to a specific instance, even without specific instance details, Device is to be used, not a DeviceDefinition. The context of a data exchange indicates whether the data is representing a physical instance or a "kind", not the presence of instance data such as lot and serial numbers.
Some examples:
- In a Procedure, reporting the use of a pump for which we have no instance data - the pump is a physical instance. Whether the lot number (for example) is known or not, depends on the circumstance - in another Procedure or in an update of the Procedure, the lot number could be added. Hence the use of Device.
- When a device gets replaced by another device of the same type. In this case, a procedure indicates that one instance of the device is removed/explanted/discarded, and another instance is used. These are physical instances for which instance data might exist and be known, or not.
Boundaries and Relationships
[%stu-note dstu%] The module pages under development by Orders and Observations will further describe the variations of device use cases across the device resources, e.g., Device, DeviceDefinition, DeviceAssociation, DeviceDispense, DeviceMetric, DeviceRequest, and Device Usage.
[%end-note-np%]
There are several resources that can be used to represent device related events, requests or definitions. The following Resources should be used in the following manner:
- Device (this resource)
- DeviceDefinition - Describes a "kind" of device - not a specific instance of the device. A kind of device is frequently defined and documented by the manufacturer, reseller, or regulatory. Documentation would include any information that applies to all instances of a device, and may be published through a catalog. For example, the characteristics of a test analyzer, x-ray machine, or wheelchair.
- DeviceMetric - Describes a measurement, calculation or setting capability of a device instance. A Device may include multiple device metrics, each yielding a different observation. The DeviceMetric models the properties of the Observations generated by and/or about the device such as whether or not the Observation is a setting. A DeviceMetric describes aspects of the device that may change over time. In contrast, the
Device.propertyis used to capture inherent, essentially fixed, characteristics of the device, such as a "large" blood pressure cuff, the bore size of an MRI, the color of a lead. (Such static characteristics may also be recorded in DeviceDefinition.). - DeviceAssociation - Records the association of a device with a subject and/or operator (e.g. a Patient by ownership, or a Practitioner by usage during a procedure). DeviceAssociation should be used for ownership/custodianship.
- DeviceAlert - Represents a single alert or alarm condition detected and signaled by a patient-connected health / medical device to create clinician’s awareness of a patient safety risk that needs to be addressed.
- DeviceRequest - The workflow step to request/order the use of a device in a specific context.
- DeviceDispense - The workflow step to manage the distribution of the device.
- SupplyRequest - The workflow step to request/order supplies that would be needed beyond the devices in the DeviceRequest.
- SupplyDelivery - The workflow step to manage the distribution of supplies that are ordered beyond the devices in the DeviceDispense.
- DeviceUsage - To record the use of a device that is not covered by a procedure - i.e., patient reported use of a device.
- NutritionOrder - An order for nutrition can request to a specific device to administer enteral feeding.
- Observation - A measurement can be generated by many types of devices. It may be linked to and supplemented by data about the current structure and status of the device itself in one or more Device or DeviceMetric resources.
- Procedure - A procedure can be performed using a variety of devices, or a device can be implanted or otherwise associated with a patient. A procedure may also record the inclusion of an additive.
- MedicationAdministration - A medication administration can be performed using a variety of devices.
In FHIR, the Device represents either the device in total, or a component of an encapsulating device when there is a need for individual tracking of a component. A Device as a component then points to the parent device it is part of. The top-level Device captures the actual data about the instance of the device and the instances of all its children that either provides identifying characteristics of the Device (including applicable UDI – unique device identification) and data that can vary dynamically by device, e.g., specific settings at a particular point in time.
Devices differ from medications because they are not "used up" - they remain active in or for a patient for a longer duration. They also may be re-used, particularly non-implanted devices and those used for diagnostics and procedures. Frequently, when a device is packaged with a medication, the ordering, dispense, and administration processes typically focus on the medication aspects and reference the device.
In the case of an infusion pump, while some actions are focused on the device (e.g., ordering to a room or maintaining the pump), the focus is as well on the medication while the device is used for administration. However, that separation is not always as clear and may be impacted by specific implementations. Regardless, the Medication resource should not be used to represent (implanted) devices, rather reference the relationship where an actual device needs to be tracked in addition to the medication. In some sense the Medication is analogous to the Observation generated by a Blood Pressure personal health device. The Observation resource contains the blood pressure values, units and the time stamp while the Device resource contains the manufacturer name, model number, serial number, firmware and hardware versions, exchange protocol information, any clock capabilities, etc.
Notes
Notes
Device Identifier and Device Type
Nearly all devices are assigned a string of characters to represent one or more identifiers or codes, which are usually printed or affixed to the device using either barcodes or RFIDs. The identifier or code can come from the manufacturer (for example, a 'serial number', 'reference number', or 'catalog number'), various institution and registries. Any of these identifiers or codes assigned to the device can and should be recorded in the device resource. However, there can there can be confusion where to represent them in the resource because codes and identifiers are represented in FHIR as semantically distinct elements and because organizations may conflate the term 'code' for an identifier or 'identifier' for a code in their names.
The identifier element is only intended for use when it's an actual identifier for a specific instance of a device. That would mean that each device would have a separate serial number and would be represented using this element - devices without serial numbers (for example, a box of syringes) would not. Concepts such as a reference number or catalog number or GTIN describe a code which represents a kind of device and are conveyed using the type element. Some sources of standard codes for devices and translations within type are listed below:
- SNOMED CT - the example binding used here
- Global Medical Device Nomenclature (GMDN®)
- Rosetta Terminology Mapping (RTM) (Also see: https://terminology.hl7.org/6.5.0/MDC.html for more information about using ISO/IEEE 11073 Medical Device Communication (MDC) Nomenclature)
For systems that do have a system URI for device types (indicating the model number or part number), they can and should appear as codings in Device.type.
Device.type relates DeviceDefinition.classification.type using the same binding enabling referencing. Please see the Search Parameters for details on how to search for devices by type.
Unique Device Identifier (UDI)
The International Medical Device Regulators Forum IMDRF UDI Working Group published UDI System for Medical Devices (Version 2.0), the base specification for Unique Device Identifiers (UDI). The United States Food and Drug Administration has produced an implementation guide for Unique Device Identifiers (UDI) which implements the IMDRF specification and other jurisdictions may produce similar IMDRF implementation guides as well. The full UDI string that represents the barcode as printed on the packaging of the device or Automatic Identification and Data Capture (AIDC) representation is called the "UDI carrier". The UDI has 2 components(1):
- Device identifier (DI)(2), which is the actual identification component
- Production identifier(s)(PI) which provide the means to track a device through its manufacture, distribution and use.
- non-UDI elements may also appear within the UDI carrier.
- a "GTIN" (sometimes also called an EAN number) is a code developed by GS1 for the kind of device not an identifier for the device. A GTIN may appear on its own or it may appear in a UDI string as the DI component.
The DI of the UDI may be stored in a jurisdictional repository and used as the primary key to access other device information. For example, in the United States, the DI of the UDI is submitted in a device record to the Global Unique Device Identification Database (GUDID). The UDI may identify an instance of a device uniquely (when the PI includes a serial number), or it may just identify the type of the device. The UDI is parsed into its constituent parts (DI, PI and other elements) by parsing rules developed by each Issuing Agency standard. Where the device has an assigned UDI, the other details carried in the resource (e.g., lot, expiration date, etc.) SHALL be consistent with the information encoded in the UDI string or registered in the local repository.
Best practice guidelines for transmitting UDI data using the Device resource dictate transmitting both the UDI Carrier and all components found within the UDI as described in Device UDI Mapping). Several examples are provided for further guidance.
Status Elements
Device.status is about the record, while .availabilityStatus is about the device itself.
StructureDefinition
Elements (Simplified)
- Device [0..*]: - Item used in healthcare
- Device.identifier [0..*]: Identifier Instance identifier
- Device.definition [0..1]: canonical The reference to the definition for the device
- Device.udiCarrier [0..*]: BackboneElement Unique Device Identifier (UDI) value
- Device.udiCarrier.deviceIdentifier [1..1]: string Mandatory fixed portion of UDI
- Device.udiCarrier.deviceIdentifierSystem [0..1]: uri The namespace for the device identifier value
- Device.udiCarrier.issuer [1..1]: uri UDI Issuing Organization
- Device.udiCarrier.jurisdiction [0..1]: uri Regional UDI authority
- Device.udiCarrier.carrierAIDC [0..1]: base64Binary UDI Machine Readable value
- Device.udiCarrier.carrierHRF [0..1]: string UDI Human Readable value
- Device.udiCarrier.entryType [0..1]: code required:udi-entry-type barcode | rfid | manual | card | self-reported | electronic-transmission | unknown
- Device.status [0..1]: code required:device-status active | inactive | entered-in-error | unknown
- Device.availabilityStatus [0..1]: CodeableConcept extensible:device-availability-status lost | damaged | destroyed | available
- Device.biologicalSourceEvent [0..1]: Identifier A production identifier of the donation, collection, or pooling event from which biological material in this device was derived
- Device.manufacturer [0..1]: string Name of device manufacturer
- Device.manufactureDate [0..1]: dateTime A production identifier that indicates the date when the device was made
- Device.expirationDate [0..1]: dateTime A production identifier that indicates the date and time of expiry of this device (if applicable)
- Device.lotNumber [0..1]: string A production identifier that indicates the Lot number of manufacture
- Device.serialNumber [0..1]: string A production identifier that indicates the Serial number assigned by the manufacturer
- Device.name [0..*]: BackboneElement The name or names of the device as known to the manufacturer and/or patient
- Device.name.value [1..1]: string The term that names the device
- Device.name.type [1..1]: CodeableConcept extensible:device-nametype registered-name | user-friendly-name | patient-reported-name
- Device.name.display [0..1]: boolean The preferred device name
- Device.modelNumber [0..1]: string The manufacturer's model number for the device
- Device.partNumber [0..1]: string The part number or catalog number of the device
- Device.category [0..*]: CodeableConcept example:device-category Indicates a high-level grouping of the device
- Device.type [0..*]: CodeableConcept example:device-type The kind or type of device
- Device.deviceVersion [0..*]: BackboneElement The actual design of the device or software version running on the device
- Device.deviceVersion.type [0..1]: CodeableConcept example:device-versiontype The type of the device version, e.g. manufacturer, approved, internal
- Device.deviceVersion.component [0..1]: Identifier The hardware or software module of the device to which the version applies
- Device.deviceVersion.installDate [0..1]: dateTime The date the version was installed on the device
- Device.deviceVersion.value [1..1]: string The version text
- Device.conformsTo [0..*]: BackboneElement Identifies the standards, specifications, or formal guidances for the capabilities supported by the device
- Device.conformsTo.category [0..1]: CodeableConcept example:device-specification-category Describes the common type of the standard, specification, or formal guidance. communication | performance | measurement
- Device.conformsTo.specification [1..1]: CodeableConcept example:device-specification-type Identifies the standard, specification, or formal guidance that the device adheres to
- Device.conformsTo.version [0..1]: string Specific form or variant of the standard
- Device.property [0..*]: BackboneElement Inherent, essentially fixed, characteristics of the device. e.g., time properties, size, material, etc.
- Device.property.type [1..1]: CodeableConcept example:device-property-type Code that specifies the property being represented
- Device.property.value[x] [1..1]: Quantity, CodeableConcept, string, boolean, integer, Range, Attachment Value of the property
- Device.additive [0..*]: BackboneElement Material added to a container device
- Device.additive.type [1..1]: CodeableReference example:substance-code The additive substance
- Device.additive.quantity [0..1]: Quantity(SimpleQuantity) Quantity of additive substance within container
- Device.contact [0..*]: ContactPoint Details for human/organization for support
- The distributor of the model of device [0..1]: BackboneElement
- Device.distributor.name [0..1]: string The name of the distributor
- Device.distributor.organizationReference [0..1]: Reference(Organization) The organization of the device distributor
- Device.location [0..1]: Reference(Location) Where the device is found
- Device.note [0..*]: Annotation Device notes and comments
- Device.safety [0..*]: CodeableConcept example:device-safety Safety Characteristics of Device
- Device.parent [0..1]: Reference(Device) The higher level or encompassing device that this device is a logical part of
Mappings
- Device Mappings — 126 mapping entries
Implementation Guide
implementationguide-Device-core.xml
<?xml version="1.0" encoding="UTF-8"?>
<ImplementationGuide xmlns="http://hl7.org/fhir">
<id value="Device-core"/>
<version value="0.1"/>
<name value="DeviceHL7Extensions"/>
<title value="Device H L7 Extensions"/>
<status value="draft"/>
<date value="2015-02-21T00:00:00.000"/>
<publisher value="Health Level Seven, Inc. - FHIR WG"/>
<description value="Defines common extensions used with or related to the Device resource"/>
</ImplementationGuide>
Resource Packs
list-Device-packs.xml
<?xml version="1.0" encoding="UTF-8"?>
<List xmlns="http://hl7.org/fhir">
<id value="Device-packs"/>
<status value="current"/>
<mode value="working"/>
<entry>
<item>
<reference value="ImplementationGuide/Device-core"/>
</item>
</entry>
</List>
Search Parameters
- code — token — The definition / type of the device (code) —
Device.type | Device.definition.resolve().classification.type - definition — reference — The definition / type of the device —
Device.definition - device-name — string — A server defined search that may match any of the string fields in Device.name or Device.type. —
Device.name.value | Device.type.coding.display | Device.type.text - expiration-date — date — The expiration date of the device —
Device.expirationDate - identifier — token — Instance id from manufacturer, owner, and others —
Device.identifier - location — reference — A location, where the resource is found —
Device.location - lot-number — string — The lot number of the device —
Device.lotNumber - manufacture-date — date — The manufacture date of the device —
Device.manufactureDate - manufacturer — string — The manufacturer of the device —
Device.manufacturer - model — string — The model of the device —
Device.modelNumber - parent — reference — The parent device —
Device.parent - serial-number — string — The serial number of the device —
Device.serialNumber | Device.identifier.where(type='SNO') - specification — token — The standards, specifications, or formal guidances. —
Device.conformsTo.specification - code-value-concept — composite — Code and value parameter pair —
Device - status — token — active | inactive | entered-in-error | unknown —
Device.status - type — token — The type of the device —
Device.type - udi-carrier-hrf — string — UDI Barcode (RFID or other technology) string in HRF format. —
Device.udiCarrier.carrierHRF - udi-di — string — The udi Device Identifier (DI) —
Device.udiCarrier.deviceIdentifier - version — string — The specific version of the device —
Device.deviceVersion.value - biological-source-event — token — The biological source for the device —
Device.biologicalSourceEvent - specification-version — composite — A composite of both specification and version —
Device.conformsTo - version-type — composite — Value and type of version —
Device.deviceVersion
Examples
- AndroidGatewayPHG — device-example-AndroidGatewayPHG — AndroidGatewayPHG
- ANDThermometer — device-example-ANDThermometer — ANDThermometer
- Bodimetrics — device-example-Bodimetrics — Bodimetrics
- device-example — device-example
- device-example-AND20601BPMonitor — device-example-AND20601BPMonitor
- device-example-AndroidGatewayPHG — device-example-AndroidGatewayPHG
- device-example-ANDThermometer — device-example-ANDThermometer
- device-example-Bodimetrics — device-example-Bodimetrics
- device-example-bpmonitor — device-example-bpmonitor — device-example-bpmonitor
- device-example-f001-feedingtube — device-example-f001-feedingtube
- device-example-ihe-pcd — device-example-ihe-pcd
- device-example-KinsaThermometer — device-example-KinsaThermometer
- device-example-Nonin20601PulseOx — device-example-Nonin20601PulseOx
- device-example-NoninBlePulseOx — device-example-NoninBlePulseOx
- device-example-pacemaker — device-example-pacemaker
- device-example-PhilipsThermometer — device-example-PhilipsThermometer
- device-example-RocheGlucoseMonitor — device-example-RocheGlucoseMonitor
- device-example-software — device-example-software
- device-example-specimen-container-example-sst-vacutainer — device-example-specimen-container-example-sst-vacutainer — device-example-specimen-container-example-sst-vacutainer
- device-example-specimen-container-green-gel-vacutainer — device-example-specimen-container-green-gel-vacutainer — device-example-specimen-container-green-gel-vacutainer
- device-example-specimen-container-lavender-vacutainer — device-example-specimen-container-lavender-vacutainer — device-example-specimen-container-lavender-vacutainer
- device-example-specimen-container-polycup — device-example-specimen-container-polycup — device-example-specimen-container-polycup
- device-example-specimen-container-red-top-vacutainer — device-example-specimen-container-red-top-vacutainer — device-example-specimen-container-red-top-vacutainer
- device-example-udi1 — device-example-udi1
- device-example-udi2 — device-example-udi2
- device-example-udi3 — device-example-udi3
- device-example-udi4 — device-example-udi4
- device-examples-header — device-examples-header
- example — device-example — General Device Example
- example-pacemaker — device-example-pacemaker — example-pacemaker
- example-software — device-example-software — example-software
- example-udi1 — device-example-udi1 — example-udi1
- example-udi2 — device-example-udi2 — example-udi2
- example-udi3 — device-example-udi3 — example-udi3
- example-udi4 — device-example-udi4 — example-udi4
- f001 — device-example-f001-feedingtube — Feeding Tube
- ihe-pcd — device-example-ihe-pcd — ihe-pcd
- KinsaThermometer — device-example-KinsaThermometer — KinsaThermometer
- Nonin20601PulseOx — device-example-Nonin20601PulseOx — Nonin20601PulseOx
- NoninBlePulseOx — device-example-NoninBlePulseOx — NoninBlePulseOx
- PhilipsThermometer — device-example-PhilipsThermometer — PhilipsThermometer
- RocheGlucoseMonitor — device-example-RocheGlucoseMonitor — RocheGlucoseMonitor
Mapping Exceptions
device-fivews-mapping-exceptions.xml
Divergent Elements
- FiveWs.status → Device.availabilityStatus
- FiveWs.what[x] → Device.additive
Unmapped Elements
- FiveWs.recorded — Unknown
- FiveWs.author — Unknown
- FiveWs.actor — Unknown
- FiveWs.cause — Unknown
- FiveWs.version — Unknown
- FiveWs.witness — Unknown
- FiveWs.class — Unknown
- FiveWs.context — Unknown
- FiveWs.init — Unknown
- FiveWs.why — Unknown
- FiveWs.source — Unknown
- FiveWs.who — Unknown
- FiveWs.grade — Unknown
- FiveWs.planned — Unknown
- FiveWs.done — Unknown
- FiveWs.subject — Unknown
device-participant-mapping-exceptions.xml
Divergent Elements
- Participant.identifier → Device.identifier
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Business Identifier for device | resource=Instance identifier
- definitionUnmatched | reason=Unknown | pattern=Business identifiers assigned to this device by one of the applications involved. These identifiers remain constant as the resource is updated and propagates from server to server. | resource=Unique instance identifiers assigned to a device by manufacturers other organizations or owners.
- commentsUnmatched | reason=Unknown | pattern=Note: This is a business identifier, not a resource identifier (see discussion). It is best practice for the identifier to only appear on a single resource instance, however business practices may occasionally dictate that multiple resource instances with the same identifier can exist - possibly even with different resource types. For example, multiple Patient and a Person resource instance might share the same social insurance number. | resource=Certain attributes, like serial number and UDI Carrier (the HRF or AIDC barcode string) are not device instance identifiers as they are not consistently able to uniquely identify the instance of a device, thus are not appropriate to be used to value Device.identifier. The barcode string from a barcode present on a device label or package may identify the instance, include names given to the device in local usage, or may identify the type of device. If the identifier identifies the type of device, Device.type element should be used. The identifier is typically valued if the serialNumber or lotNumber is not valued and represents a different type of identifier. However, it is permissible to still include those identifiers in DeviceDefinition.identifier with the appropriate identifier.type.
- requirementsUnmatched | reason=Unknown | pattern=Allows identification of the device as it is known by various participating systems and in a way that remains consistent across servers.
- Participant.active → Device.status
- missingTypes | reason=Unknown | pattern=boolean
- extraTypes | reason=Unknown
- shortUnmatched | reason=Unknown | pattern=Whether the device is currently active | resource=active | inactive | entered-in-error | unknown
- definitionUnmatched | reason=Unknown | pattern=Whether this device record is in active use. | resource=The Device record status. This is not the status of the device like availability.
- Participant.name → Device.name
- missingTypes | reason=Unknown | pattern=string
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=A name for the device | resource=The name or names of the device as known to the manufacturer and/or patient
- definitionUnmatched | reason=Unknown | pattern=Description of the device as presented to a consumer while searching. | resource=This represents the manufacturer's name of the device as provided by the device, from a UDI label, or by a person describing the Device. This typically would be used when a person provides the name(s) or when the device represents one of the names available from DeviceDefinition.