DeviceRequest — Prescription of a medical device
The request to supply a device to a patient: wheelchair, hearing aid, hospital bed, insulin pump. Cornerstone of the US DME (Durable Medical Equipment) workflow and of device prescribing in Europe.
Purpose of the resource
DeviceRequest represents a request for a patient to use a medical device. The canonical use case is DME prescription: wheelchair, hearing aid, brace, insulin pump, hospital bed. The resource also covers a request to implant a device and the prescription of a SaMD (Software as a Medical Device).
DeviceRequest aligns with the other FHIR request resources — ServiceRequest,
MedicationRequest — via the status × intent combination that
forms the unified "FHIR order" workflow pattern. The requested device can be
referenced by type (generic SNOMED CT code) or by a precise instance
(Reference(Device)) if it is already identified.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | External identifiers (prescription number, purchase order…). |
instantiatesCanonical | canonical[] | 0..* | Canonical reference to a PlanDefinition or ActivityDefinition. |
instantiatesUri | uri[] | 0..* | External URI of a protocol. |
basedOn | Reference(any)[] | 0..* | The DeviceRequest is created in execution of another Request (CarePlan, ServiceRequest…). |
replaces | Reference(DeviceRequest)[] | 0..* | The DeviceRequest replaces an earlier request. |
groupIdentifier | Identifier | 0..1 | Group identifier linking multiple DeviceRequests issued together. |
status | code | 0..1 | Request lifecycle state. |
intent | code | 1..1 | Mandatory. Intent level. Modifier. |
priority | code | 0..1 | routine / urgent / asap / stat. |
doNotPerform | boolean | 0..1 | "Do not use" — semantic inversion. Modifier. |
code | CodeableReference(Device | DeviceDefinition) | 1..1 | Mandatory. Which device is requested: by SNOMED CT code or by reference to a precise instance. |
quantity | integer | 0..1 | Requested quantity. |
parameter | BackboneElement[] | 0..* | Technical parameters (size, configuration, accessories…). |
subject | Reference(Patient | Group | Location | Device) | 1..1 | Mandatory. Beneficiary of the request, typically the patient. |
encounter | Reference(Encounter) | 0..1 | Encounter in which the request was issued. |
occurrence[x] | dateTime | Period | Timing | 0..1 | Planned date / period / schedule of use. |
authoredOn | dateTime | 0..1 | Request authoring date. |
requester | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device) | 0..1 | Request author. |
performer | CodeableReference | 0..1 | Actor expected to fulfil the request (typically a DME supplier). |
reason | CodeableReference[] | 0..* | Clinical reason (linked Condition, SNOMED CT code…). |
asNeeded | boolean | 0..1 | PRN ("as needed") request. |
asNeededFor | CodeableConcept | 0..1 | Trigger condition for the PRN. |
insurance | Reference(Coverage | ClaimResponse)[] | 0..* | Expected health coverage (CMS DME…). |
supportingInfo | Reference(any)[] | 0..* | Documents supporting the request (medical letter, imaging study…). |
note | Annotation[] | 0..* | Additional notes, instructions to the supplier. |
relevantHistory | Reference(Provenance)[] | 0..* | Change history of the request (audit trail). |
status × intent
The status + intent pair is central to every FHIR Request.
The Required bindings published in HL7 R5:
| status | Meaning |
|---|---|
draft | Draft — not transmitted to the performer. |
active | Active request. |
on-hold | Held (validation, coverage, suspension). |
revoked | Revoked by the requester. |
completed | Fulfilled (device delivered and accepted). |
entered-in-error | Erroneous entry. |
unknown | Indeterminate state. |
| intent | Meaning |
|---|---|
proposal | Suggestion — not a commitment. |
plan | Plan — intent to prescribe in the future. |
directive | Patient or guardian directive. |
order | Firm order — the most common value. |
original-order | Original order, source of replications. |
reflex-order | Automatic order triggered by another. |
filler-order | Order relayed by the filler (supplier). |
instance-order | Instance of a generic order. |
option | Option chosen from a predefined menu. |
JSON example
Prescription of a lightweight manual wheelchair for a diabetic patient by Dr Adam Careful, to be delivered by Acme DME Supplies on 25 May 2026.
{
"resourceType": "DeviceRequest",
"id": "example",
"identifier": [{
"system": "http://example.org/identifiers/devicerequest",
"value": "DR-2026-187"
}],
"status": "active",
"intent": "order",
"priority": "routine",
"code": {
"concept": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "58938008",
"display": "Wheelchair"
}]
}
},
"quantity": 1,
"parameter": [{
"code": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "60668009",
"display": "Length"
}]
},
"valueQuantity": {
"value": 220,
"unit": "mm",
"system": "http://unitsofmeasure.org",
"code": "mm"
}
}],
"subject": { "reference": "Patient/example" },
"encounter": { "reference": "Encounter/example" },
"occurrenceDateTime": "2026-05-25T09:00:00+02:00",
"authoredOn": "2026-05-14T14:00:00+02:00",
"requester": { "reference": "Practitioner/example", "display": "Dr Adam Careful" },
"performer": {
"reference": "Organization/dme-supplier-1",
"display": "Acme DME Supplies"
},
"reason": [{
"concept": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "44054006",
"display": "Diabetes mellitus type 2"
}]
}
}],
"note": [{
"text": "Lightweight manual wheelchair, reclining backrest. Home delivery."
}]
} Worth pointing out in this example:
intent=order+status=active= firm order transmitted to the performer.codeSNOMED CT 58938008 = wheelchair: device requested by type, not by instance.parameterspecifies the expected length (220 mm) — useful when the physical instance doesn't exist yet and the supplier must configure.reasonis mandatory for medical justification toward payers (CMS DMEPOS).performerpoints to the DME supplier: automated Request → supplier communication goes through the Da Vinci PDex IG in the US.
Common pitfalls
- Missing
intent—1..1cardinality. Modifier — mandatory to give the resource meaning. - Empty
code—1..1cardinality. The requested device must be specified (by concept or by reference). Withoutcode, the resource is invalid. - Missing
subject—1..1cardinality. A request without a beneficiary is uninterpretable. - Mixing Device instance / DeviceDefinition —
codemay point to aReference(Device)(existing instance) or aReference(DeviceDefinition)(product catalogue) or aconcept. Pick one. - Confusion
doNotPerform/status=revoked—doNotPerform=true= "order not to use this device" (rare but useful for advance directives).status=revoked= the order is cancelled. - Missing
insurancefor DMEPOS — in the US, a DeviceRequest withoutinsuranceis rejected by CMS Medicare. The Da Vinci PDex/Coverage profile requires the coverage link. - Past
occurrence— typically a data-entry error. The device is requested for the future; a J-1 occurrence likely signals a retroactive workflow.
Related resources
- Device — the requested device, either generic concept or instance reference.
- DeviceDispense — the dispense (delivery) of the device in response to the DeviceRequest.
- DeviceUsage — the actual use of the device by the patient.
- CarePlan — may contain activities based on a DeviceRequest.
- ServiceRequest, MedicationRequest — other FHIR request resources with the same
status×intentpattern. - Coverage — health coverage referenced by
insurance. - Condition — pathology referenced by
reason.
See also: the FHIR R5 index.