FHIR Procedure Resource (R4)
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 R4.
- FHIR Procedure Resource (R4) — 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..1 | Classification of the procedure |
| Procedure.code | CodeableConcept | 0..1 | Identification of the procedure |
| Procedure.subject | Reference | 1..1 | Who the procedure was performed on |
| Procedure.encounter | Reference | 0..1 | Encounter created as part of |
| Procedure.performed[x] | dateTime | Period | string | Age | Range | 0..1 | When the procedure was performed |
| Procedure.recorder | Reference | 0..1 | Who recorded the procedure |
| Procedure.asserter | Reference | 0..1 | Person who asserts this procedure |
| Procedure.performer | BackboneElement | 0..* | The people who performed the procedure |
| 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 | The reference to the practitioner |
| Procedure.performer.onBehalfOf | Reference | 0..1 | Organization the device or practitioner was acting for |
| Procedure.location | Reference | 0..1 | Where the procedure happened |
| Procedure.reasonCode | CodeableConcept | 0..* | Coded reason procedure performed |
| Procedure.reasonReference | Reference | 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 | CodeableConcept | 0..* | Complication following the procedure |
| Procedure.complicationDetail | Reference | 0..* | A condition that is a result of 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.usedReference | Reference | 0..* | Items used during procedure |
| Procedure.usedCode | CodeableConcept | 0..* | Coded items used during the procedure |
Example JSON (R4)
{
"resourceType": "Procedure",
"id": "example",
"status": "completed",
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "80146002",
"display": "Appendectomy"
}
]
},
"subject": {
"reference": "Patient/example"
},
"performedDateTime": "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.