FHIR Procedure Resource (R5)
Procedure records an action performed on or for a patient: surgery, a diagnostic procedure, counselling. Element table, search parameters, example JSON and FHIRPath for FHIR R5.
- FHIR Procedure Resource (R5) — part of the free FHIR Toolbox library.
- Runs entirely in your browser: your FHIR data is never uploaded to a server.
Overview
Procedure records an action performed on or for a patient: surgery, a diagnostic procedure, counselling. It captures what was done, its status, when, by whom and why. R5 renamed the time element from performed[x] to occurrence[x] and changed reasons to CodeableReference.
Elements
| Element | Type | Cardinality | Description |
|---|---|---|---|
| Procedure.identifier | Identifier | 0..* | External Identifiers for this procedure |
| Procedure.instantiatesCanonical | canonical | 0..* | Instantiates FHIR protocol or definition |
| Procedure.instantiatesUri | uri | 0..* | Instantiates external protocol or definition |
| Procedure.basedOn | Reference | 0..* | A request for this procedure |
| Procedure.partOf | Reference | 0..* | Part of referenced event |
| Procedure.status | code | 1..1 | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown |
| Procedure.statusReason | CodeableConcept | 0..1 | Reason for current status |
| Procedure.category | CodeableConcept | 0..* | Classification of the procedure |
| Procedure.code | CodeableConcept | 0..1 | Identification of the procedure |
| Procedure.subject | Reference | 1..1 | Individual or entity the procedure was performed on |
| Procedure.focus | Reference | 0..1 | Who is the target of the procedure when it is not the subject of record only |
| Procedure.encounter | Reference | 0..1 | The Encounter during which this Procedure was created |
| Procedure.occurrence[x] | dateTime | Period | string | Age | Range | Timing | 0..1 | When the procedure occurred or is occurring |
| Procedure.recorded | dateTime | 0..1 | When the procedure was first captured in the subject's record |
| Procedure.recorder | Reference | 0..1 | Who recorded the procedure |
| Procedure.reported[x] | boolean | Reference | 0..1 | Reported rather than primary record |
| Procedure.performer | BackboneElement | 0..* | Who performed the procedure and what they did |
| Procedure.performer.id | String | 0..1 | Unique id for inter-element referencing |
| Procedure.performer.extension | Extension | 0..* | Additional content defined by implementations |
| Procedure.performer.modifierExtension | Extension | 0..* | Extensions that cannot be ignored even if unrecognized |
| Procedure.performer.function | CodeableConcept | 0..1 | Type of performance |
| Procedure.performer.actor | Reference | 1..1 | Who performed the procedure |
| Procedure.performer.onBehalfOf | Reference | 0..1 | Organization the device or practitioner was acting for |
| Procedure.performer.period | Period | 0..1 | When the performer performed the procedure |
| Procedure.location | Reference | 0..1 | Where the procedure happened |
| Procedure.reason | CodeableReference | 0..* | The justification that the procedure was performed |
| Procedure.bodySite | CodeableConcept | 0..* | Target body sites |
| Procedure.outcome | CodeableConcept | 0..1 | The result of procedure |
| Procedure.report | Reference | 0..* | Any report resulting from the procedure |
| Procedure.complication | CodeableReference | 0..* | Complication following the procedure |
| Procedure.followUp | CodeableConcept | 0..* | Instructions for follow up |
| Procedure.note | Annotation | 0..* | Additional information about the procedure |
| Procedure.focalDevice | BackboneElement | 0..* | Manipulated, implanted, or removed device |
| Procedure.focalDevice.id | String | 0..1 | Unique id for inter-element referencing |
| Procedure.focalDevice.extension | Extension | 0..* | Additional content defined by implementations |
| Procedure.focalDevice.modifierExtension | Extension | 0..* | Extensions that cannot be ignored even if unrecognized |
| Procedure.focalDevice.action | CodeableConcept | 0..1 | Kind of change to device |
| Procedure.focalDevice.manipulated | Reference | 1..1 | Device that was changed |
| Procedure.used | CodeableReference | 0..* | Items used during procedure |
| Procedure.supportingInfo | Reference | 0..* | Extra information relevant to the procedure |
Example JSON (R5)
{
"resourceType": "Procedure",
"id": "example",
"status": "completed",
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "80146002",
"display": "Appendectomy"
}
]
},
"subject": {
"reference": "Patient/example"
},
"occurrenceDateTime": "2024-04-20T08:00:00Z"
}
FHIRPath
Procedure.code.coding.display— What was doneProcedure.status— Procedure status
Common validation errors
- Using performedDateTime against R5, where the element is occurrenceDateTime.
- Omitting subject or status. Both are required.
- Using a Procedure for something that is a finding (an Observation) or an order (ServiceRequest).
FHIR Toolbox is a free, privacy-first collection of HL7 FHIR utilities by Omindra Labs. Every tool performs zero-server processing — your health data never leaves your device.