Device — Medical device
From an implantable defibrillator to an insulin pump or a Bluetooth blood-pressure cuff: Device models any piece of medical equipment, with its unique identifier (UDI) and lifecycle.
Purpose of the resource
Device represents a type of a manufactured item used in the provision of healthcare without being substantially changed by that use. That covers: implants (prosthetics, defibrillators, stents), wearable medical devices (continuous insulin pumps, Holter monitors), heavy equipment (scanners, MRI, lasers, ventilators), connected consumer devices (scales, blood pressure cuffs, pulse oximeters), software medical devices (SaMD — Software as a Medical Device, including diagnostic AI), and secondary equipment (beds, wheelchairs).
Device is complemented by DeviceDefinition (the product model, the class). Where Device describes the physical instance (serial number XYZ, owned by hospital Y, implanted in patient Z), DeviceDefinition describes the generic product (model, manufacturer, certifications). See also DeviceRequest for the supply request.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | Serial numbers, internal IDs, asset barcodes. |
displayName | string | 0..1 | User-facing display name. |
definition | CodeableReference(DeviceDefinition) | 0..1 | Reference to the product model (DeviceDefinition). |
udiCarrier | BackboneElement[] | 0..* | Unique Device Identifier — GS1/HIBCC barcode required by FDA + EU MDR. |
status | code | 0..1 | Administrative state: active, inactive, entered-in-error. |
availabilityStatus | CodeableConcept | 0..1 | Operational availability (available, lost, damaged…). |
biologicalSourceEvent | Identifier | 0..1 | Source donation / sampling identifier for biological devices (allograft…). |
manufacturer | string | 0..1 | Manufacturer name (free text). |
manufactureDate | dateTime | 0..1 | Manufacturing date. |
expirationDate | dateTime | 0..1 | Expiration date (shelf life, end of validity). |
lotNumber | string | 0..1 | Lot number for traceability. |
serialNumber | string | 0..1 | Instance serial number. |
name | BackboneElement[] | 0..* | Device names (registered, manufacturer-name, user-friendly…). |
modelNumber | string | 0..1 | Model reference. |
partNumber | string | 0..1 | Spare-part reference. |
category | CodeableConcept[] | 0..* | Broad category (implant, instrument, software…). |
type | CodeableConcept[] | 0..* | Specific type (implantable defibrillator, insulin pump… — SNOMED CT). |
version | BackboneElement[] | 0..* | Firmware / hardware / software versions. |
specialization | BackboneElement[] | 0..* | Supported specialisations / protocols (IEEE 11073, MDC, DICOM…). |
property | BackboneElement[] | 0..* | Technical characteristics (weight, dimensions, calibration…). |
operation | BackboneElement[] | 0..* | Current operating mode (ON, OFF, sleep…). |
association | BackboneElement[] | 0..* | Association status to a human or another Device. |
owner | Reference(Organization) | 0..1 | Organisation owning the device. |
contact | ContactPoint[] | 0..* | Biomedical service contacts. |
location | Reference(Location) | 0..1 | Current physical location. |
safety | CodeableConcept[] | 0..* | Safety indicators (latex-free, MR-safe…). |
parent | Reference(Device) | 0..1 | Parent device (sub-assembly of another device). |
UDI Carrier
The UDI (Unique Device Identifier) is mandatory under FDA (US, since
2013) and the EU MDR/IVDR (Europe, since 2021) for most medical devices. The
udiCarrier element carries it:
deviceIdentifier— GS1 (GTIN), HIBCC (HIBC) or ICCBBA code per issuer. Identifies the product model.issuer— accredited identifier system (FDA, EU EUDAMED…).jurisdiction— regulatory authority that sets the applicable UDI rule.carrierAIDC— Automatic Identification and Data Capture encoding (2D barcode like DataMatrix).carrierHRF— Human Readable Form (the visible barcode, GS1 parenthesised AI format).entryType— entry method:barcode,rfid,manual,card,self-reported,electronic-transmission,unknown.
In the US, the UDI enables FDA GUDID (Global Unique Device Identification Database) reporting. In Europe, the equivalent is EUDAMED. A device without a valid UDI cannot be claimed for Medicare/CMS reimbursement and is rejected by US Core Device profiles.
JSON example
Endotronics Prizm 2030 implantable defibrillator, implanted in a patient, with FDA UDI, serial number, firmware version and owning organisation.
{
"resourceType": "Device",
"id": "example-pacemaker",
"identifier": [{
"type": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "SNO",
"display": "Serial Number"
}]
},
"value": "AC221"
}],
"displayName": "Endotronics Prizm 2030",
"udiCarrier": [{
"deviceIdentifier": "00844588003288",
"issuer": "http://hl7.org/fhir/NamingSystem/fda-udi",
"jurisdiction": "http://hl7.org/fhir/NamingSystem/fda",
"carrierAIDC": "XwQGRDJANy6QQUAxMTk5OQ==",
"carrierHRF": "(01)00844588003288(17)141120(10)7654321D(21)10987654d321",
"entryType": "barcode"
}],
"status": "active",
"availabilityStatus": {
"coding": [{
"system": "http://hl7.org/fhir/device-availability-status",
"code": "available",
"display": "Available"
}]
},
"manufacturer": "Acme Devices, Inc",
"manufactureDate": "2015-08-08",
"expirationDate": "2027-11-20",
"lotNumber": "1234-5678-90AB",
"serialNumber": "AC221",
"name": [{
"value": "Prizm 2030",
"type": "registered-name"
}],
"modelNumber": "PRZM-2030",
"category": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "118431008",
"display": "Implant, device (physical object)"
}]
}],
"type": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "468063009",
"display": "Implantable defibrillator, device (physical object)"
}]
}],
"version": [{
"type": { "text": "Firmware" },
"value": "1.05"
}],
"patient": { "reference": "Patient/example" },
"owner": { "reference": "Organization/2.16.840.1.113883.19.5" },
"location": { "reference": "Location/example" }
} Worth pointing out in this example:
- The
udiCarriersimultaneously holds the binary barcode (carrierAIDC) and the readable version (carrierHRFin GS1 AI format:(01)= GTIN,(17)= expiration date YYMMDD,(10)= lot,(21)= serial number). - The
identifiertypedSNO(Serial Number) reuses HL7 v2-0203 aligned with FHIR. typeSNOMED CT code 468063009 precisely designates an implantable defibrillator.patientis populated because the device is implanted — that data is what makes the resource sensitive (PHI).
Common pitfalls
- Missing UDI on an implant — FDA mandates the UDI from Class II onward. An implant Device without
udiCarrieris rejected by US Core Implantable Device. identifiervsudiCarrier.deviceIdentifier— not the same:identifier[type=SNO]is the serial number,udiCarrier.deviceIdentifieris the model code (GTIN). Both can coexist.- Patient data on a
kindDevice — a Device representing a generic type/model must never carrypatient. manufacturerin free text — defeats interoperable dedup. Prefer an Organization reference when the manufacturer is in the EHR.- Malformed UDI — the
carrierHRFmust follow the GS1 parenthesised AI or HIBCC format.(01)00844588003288(17)141120(10)7654321D(21)10987654d321is conformant; without parentheses, rejected. - Confusion
expirationDate/manufactureDate— expiration is the shelf life (sterile devices), not useful life end. For a durable implant,expirationDatemay be absent. - No
parentfor a sub-module — an ultrasound transducer must point to its tower viaparentfor hierarchical traceability.
Related resources
- DeviceRequest — prescription / supply of a device to the patient.
- DeviceMetric — technical measurements produced by a Device (alarm, calibration).
- DeviceUsage, DeviceDispense — device usage and dispense.
- DeviceDefinition — generic product model (vs Device which is the instance).
- Observation — measured data (the result) may cite the source Device via
device. - Patient, Organization, Location — typical attachments.
See also: the FHIR R5 index.