---
title: "device"
description: "The US Core Device Profile inherits from the FHIR [Device](https://hl7.org/fhir/R4/device.html) resource; refer to it for scope and usage definitions."
---

The US Core Device Profile inherits from the FHIR [Device](https://hl7.org/fhir/R4/device.html) resource; refer to it for scope and usage definitions. It sets minimum expectations for the Device resource to record, search, and fetch medical and non-medical devices (for example, software or crutches). This profile meets the requirements of the U.S. Core Data for Interoperability (USCDI) *Medical Device* Data Class, including FDA Unique Device Identification (UDI) information associated with a patient's medical device(s). It specifies which core elements, extensions, vocabularies, and value sets **SHALL** be present in the resource and constrains how the elements are used and provides the floor for standards development for specific use cases promotes interoperability and adoption.

## Source

| Model | Leg | Role |
|---|---|---|
| `us-core-device` | FHIR | defines this table |
| `openEHR-EHR-CLUSTER.device.v1` | openEHR | merged in — Medical device |

> This table is the union of 2 source models. Columns carrying a **From** value came from a model that merged into it, so the same row satisfies both specifications.

## Columns

| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
| `id` | `uuid primary key` | no | Device.id | — | — |
| `created_at` | `timestamptz` | no | Row creation timestamp. | — | — |
| `updated_at` | `timestamptz` | no | Row update timestamp; maintained by the application. | — | — |
| `created_by` | `text` | no | Actor who created the row. | — | — |
| `updated_by` | `text` | no | Actor who last updated the row. | — | — |
| `identifier_value`<br />`identifier_system` | text, text<br />`text`, `text` | yes | Instance identifier | — | `Device.identifier` |
| `udi_carrier_device_identifier` | `text` | yes | Mandatory fixed portion of UDI | — | `Device.udiCarrier.deviceIdentifier` |
| `udi_carrier_carrier_hrf` | `text` | yes | UDI Human Readable Barcode String | — | `Device.udiCarrier.carrierHRF` |
| `distinct_identifier` | `text` | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: The distinct identification string | — | `Device.distinctIdentifier` |
| `manufacturer` | `text` | yes | Name of device manufacturer | — | `Device.manufacturer` |
| `manufacture_date` | `timestamptz` | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Date when the device was made | — | `Device.manufactureDate` |
| `expiration_date` | `timestamptz` | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Date and time of expiry of this device (if applicable) | — | `Device.expirationDate` |
| `lot_number` | `text` | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Lot number of manufacture | — | `Device.lotNumber` |
| `serial_number` | `text` | yes | 𝗔𝗗𝗗𝗜𝗧𝗜𝗢𝗡𝗔𝗟 𝗨𝗦𝗖𝗗𝗜: Serial number assigned by the manufacturer | — | `Device.serialNumber` |
| `device_name` | `text` | yes | The name of the device | — | `Device.deviceName.name` |
| `device_name_type` | `text` | yes | udi-label-name \| user-friendly-name \| patient-reported-name \| manufacturer-name \| model-name \| other | — | `Device.deviceName.type` |
| `model_number` | `text` | yes | The model number for the device | — | `Device.modelNumber` |
| `part_number` | `text` | yes | The part number of the device | — | `Device.partNumber` |
| `type`<br />`type_code`<br />`type_system` | text, text, text<br />`text`, `text`, `text` | yes | The kind or type of device | — | `Device.type` |
| `version_value` | `text` | yes | The version text | — | `Device.version.value` |
| `patient_id` | `uuid` | yes | Patient to whom Device is assigned | — | `Device.patient` |
| `note` | `text` | yes | Device notes and comments | — | `Device.note` |
| `parent_id` | `uuid` | yes | The parent device | — | `Device.parent` |
| `description` | `text` | yes | Description | `openEHR-EHR-CLUSTER.device.v1` | `/items[at0002]` |

## Constraints

```sql
check (identifier_system is null or identifier_value is not null)
check ((type_code is null and type_system is null) or (type_code is not null and type_system is not null))
```

## References

| Columns | Target | On delete |
|---|---|---|
| `patient_id` | [`patient`](/docs/tables/patient) | no action |
| `parent_id` | [`device`](/docs/tables/device) | no action |

## Referenced by

49 tables reference `device`, via `device`. The first 15 alphabetically:

- [`blood_pressure`](/docs/tables/blood_pressure) via `device`
- [`body_segment_area_measuring_device`](/docs/tables/body_segment_area_measuring_device) via `device_id`
- [`body_segment_circumference_measuring_device`](/docs/tables/body_segment_circumference_measuring_device) via `device_id`
- [`body_segment_discrepancy_measuring_device`](/docs/tables/body_segment_discrepancy_measuring_device) via `device_id`
- [`body_segment_length_measuring_device`](/docs/tables/body_segment_length_measuring_device) via `device_id`
- [`body_surface_area_device`](/docs/tables/body_surface_area_device) via `device_id`
- [`body_temperature`](/docs/tables/body_temperature) via `device`
- [`body_weight`](/docs/tables/body_weight) via `device`
- [`capillary_refill`](/docs/tables/capillary_refill) via `device`
- [`categorical_loudness_scaling`](/docs/tables/categorical_loudness_scaling) via `presentation_method_details`
- [`categorical_loudness_scaling_hearing_device_during_test`](/docs/tables/categorical_loudness_scaling_hearing_device_during_test) via `hearing_device`
- [`categorical_loudness_scaling_test_environment_details`](/docs/tables/categorical_loudness_scaling_test_environment_details) via `device_id`
- [`device`](/docs/tables/device) via `parent_id`
- [`device_other_identifier`](/docs/tables/device_other_identifier) via `device_id`
- [`device_other_name`](/docs/tables/device_other_name) via `device_id`

## Indexes

- `device_patient_id_idx` on `patient_id`
- `device_parent_id_idx` on `parent_id`

## Child tables

3 tables hang off `device`, one row per repetition.

### `device_other_identifier`

Child table — one row per repetition, deleted with its parent.

| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — | — |
| `device_id` | `uuid` → [`device`](/docs/tables/device) | no | — | — | — |
| `identifier_value` | `text` | no | — | — | — |
| `identifier_system` | `text` | yes | — | — | — |
| `identifier_use` | `text` | yes | — | — | — |
| `valid_from` | `timestamptz` | yes | — | — | — |
| `valid_until` | `timestamptz` | yes | — | — | — |

#### Unique

- `device_id, identifier_system, identifier_value`

#### References

| Columns | Target | On delete |
|---|---|---|
| `device_id` | [`device`](/docs/tables/device) | cascade |

### `device_other_name`

Child table — one row per repetition, deleted with its parent.

| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — | — |
| `device_id` | `uuid` → [`device`](/docs/tables/device) | no | — | — | — |
| `name` | `text` | yes | The name of the device | — | `Device.deviceName.name` |
| `type` | `text` | yes | udi-label-name \| user-friendly-name \| patient-reported-name \| manufacturer-name \| model-name \| other | — | `Device.deviceName.type` |
| `valid_from` | `timestamptz` | yes | — | — | — |
| `valid_until` | `timestamptz` | yes | — | — | — |

#### References

| Columns | Target | On delete |
|---|---|---|
| `device_id` | [`device`](/docs/tables/device) | cascade |

#### Indexes

- `device_other_name_device_id_idx` on `device_id`

### `device_other_version`

Child table — one row per repetition, deleted with its parent.

| Column | Type | Null | Description | From | Source |
|---|---|---|---|---|---|
| `id` | `uuid primary key` | no | Primary key. | — | — |
| `device_id` | `uuid` → [`device`](/docs/tables/device) | no | — | — | — |
| `value` | `text` | yes | The version text | — | `Device.version.value` |
| `valid_from` | `timestamptz` | yes | — | — | — |
| `valid_until` | `timestamptz` | yes | — | — | — |

#### References

| Columns | Target | On delete |
|---|---|---|
| `device_id` | [`device`](/docs/tables/device) | cascade |

#### Indexes

- `device_other_version_device_id_idx` on `device_id`

