This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions
Patient Care Work Group | Maturity Level: 4 | Trial Use | Security Category: Patient | Compartments: Encounter, Patient, Practitioner, RelatedPerson |
An action that is or was performed on or for a patient, practitioner, device, organization, or location. For example, this can be a physical intervention on a patient like an operation, or less invasive like long term services, counseling, or hypnotherapy. This can be a quality or safety inspection for a location, organization, or device. This can be an accreditation procedure on a practitioner for licensing.
Procedure is one of the event resources in the FHIR workflow specification.
This resource is used to record the details of current and historical procedures performed on, with, or for a patient, practitioner, device, organization, or location. Examples include surgical procedures, diagnostic procedures, endoscopic procedures, biopsies, counseling, physiotherapy, personal support services, adult day care services, non-emergency transportation, home modification, exercise, verification of enrollment qualifications for a social program etc. Procedures may be performed by a healthcare professional, a service provider, a friend or relative or in some cases by the patient themselves.
Procedures can be performed on other non-patient subjects. For example, a procedure can represent an inspection to verify temperature or humidity for storage at a given location. Additionally, a procedure can represent the verification of the practitioner's qualifications for accreditation.
This resource provides summary information about the occurrence of the procedure and is not intended to provide real-time snapshots of a procedure as it unfolds, though for long-running procedures such as psychotherapy, it could represent summary level information about overall progress. The creation of a resource to support detailed real-time procedure information awaits the identification of a specific implementation use-case to share such information.
The Procedure resource should not be used to capture an event if a more specific resource already exists - e.g. immunizations, drug administrations, communications, and nutrition intake. The boundary between determining whether an action is a Procedure (training or counseling) as opposed to a Communication is based on whether there's a specific intent to change the mind-set of the patient. Mere disclosure of information would be considered a Communication. A process that involves verification of the patient's comprehension or to change the patient's mental state would be a Procedure.
Note that many diagnostic processes are procedures that generate Observations and DiagnosticReports. In many cases, such an observation does not require an explicit representation of the procedure used to create the observation, but where there are details of interest about how the diagnostic procedure was performed, the Procedure resource is used to describe the activity.
Some diagnostic procedures might not have a Procedure record. The Procedure record is only necessary when there is a need to capture information about the physical intervention that was performed to capture the diagnostic information (e.g. anesthetic, incision, scope size, etc.)
A Task is a workflow step such as canceling an order, fulfilling an order, signing an order, merging a set of records, admitting a patient. Procedures are actions that are intended to result in a physical or mental change to or for the subject (e.g. surgery, physiotherapy, training, counseling). A Task resource often exists in parallel with clinical resources. For example, a Task might request fulfillment of a ServiceRequest ordering a Procedure.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Procedure | TU | DomainResource | An action that is being or was performed on an individual or entity + Rule: bodyStructure SHALL only be present if Procedure.bodySite is not present Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | External Identifiers for this procedure |
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition |
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition |
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest | MedicationRequest) | A request for this procedure |
partOf | Σ | 0..* | Reference(Procedure | Observation | MedicationAdministration) | Part of referenced event |
status | ?!Σ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: EventStatus (Required) |
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: Procedure Not Performed Reason (SNOMED-CT) (Example) |
category | Σ | 0..* | CodeableConcept | Classification of the procedure Binding: Procedure Category Codes (SNOMED CT) (Example) |
code | Σ | 0..1 | CodeableConcept | Identification of the procedure Binding: Procedure Codes (SNOMED CT) (Example) |
subject | Σ | 1..1 | Reference(Patient | Group | Device | Practitioner | Organization | Location) | Individual or entity the procedure was performed on |
focus | ?!Σ | 0..1 | Reference(Patient | Group | RelatedPerson | Practitioner | Organization | CareTeam | PractitionerRole | Specimen) | Who is the target of the procedure when it is not the subject of record only |
encounter | Σ | 0..1 | Reference(Encounter) | The Encounter during which this Procedure was created |
occurrence[x] | Σ | 0..1 | When the procedure occurred or is occurring | |
occurrenceDateTime | dateTime | |||
occurrencePeriod | Period | |||
occurrenceString | string | |||
occurrenceAge | Age | |||
occurrenceRange | Range | |||
occurrenceTiming | Timing | |||
recorded | Σ | 0..1 | dateTime | When the procedure was first captured in the subject's record |
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Who recorded the procedure |
reported[x] | Σ | 0..1 | Reported rather than primary record | |
reportedBoolean | boolean | |||
reportedReference | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization) | |||
performer | ΣC | 0..* | BackboneElement | Who performed the procedure and what they did + Rule: Procedure.performer.onBehalfOf can only be populated when performer.actor isn't Practitioner or PractitionerRole |
function | Σ | 0..1 | CodeableConcept | Type of performance Binding: Participant Roles (Example) |
actor | ΣC | 1..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device | CareTeam | HealthcareService) | Who performed the procedure |
onBehalfOf | C | 0..1 | Reference(Organization) | Organization the device or practitioner was acting for |
period | 0..1 | Period | When the performer performed the procedure | |
location | Σ | 0..1 | Reference(Location) | Where the procedure happened |
reason | Σ | 0..* | CodeableReference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | The justification that the procedure was performed Binding: Procedure Reason Codes (Example) |
bodySite | ΣC | 0..* | CodeableConcept | Target body sites Binding: SNOMED CT Body Structures (Example) |
bodyStructure | 0..* | Reference(BodyStructure) | Target body structure | |
outcome | Σ | 0..* | CodeableReference(Observation) | The result of procedure Binding: Procedure Outcome Codes (SNOMED CT) (Example) |
report | 0..* | Reference(DiagnosticReport | DocumentReference | Composition) | Any report resulting from the procedure | |
complication | 0..* | CodeableReference(Condition) | Complication following the procedure Binding: Condition/Problem/Diagnosis Codes (Example) | |
followUp | 0..* | CodeableReference(ServiceRequest | PlanDefinition) | Instructions for follow up Binding: Procedure Follow up Codes (SNOMED CT) (Example) | |
note | 0..* | Annotation | Additional information about the procedure | |
focalDevice | 0..* | BackboneElement | Manipulated, implanted, or removed device | |
action | 0..1 | CodeableConcept | Kind of change to device Binding: Procedure Device Action Codes (Preferred) | |
manipulated | 1..1 | Reference(Device) | Device that was changed | |
used | 0..* | CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) | Items used during procedure Binding: Device Type (Example) | |
supportingInfo | 0..* | Reference(Any) | Extra information relevant to the procedure | |
Documentation for this format |
See the Extensions for this resource
UML Diagram (Legend)
XML Template
<Procedure xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier External Identifiers for this procedure --></identifier> <instantiatesCanonical><!-- 0..* canonical(ActivityDefinition|Measure| OperationDefinition|PlanDefinition|Questionnaire) Instantiates FHIR protocol or definition --></instantiatesCanonical> <instantiatesUri value="[uri]"/><!-- 0..* Instantiates external protocol or definition --> <basedOn><!-- 0..* Reference(CarePlan|MedicationRequest|ServiceRequest) A request for this procedure --></basedOn> <partOf><!-- 0..* Reference(MedicationAdministration|Observation|Procedure) Part of referenced event --></partOf> <status value="[code]"/><!-- 1..1 preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown --> <statusReason><!-- 0..1 CodeableConcept Reason for current status --></statusReason> <category><!-- 0..* CodeableConcept Classification of the procedure --></category> <code><!-- 0..1 CodeableConcept Identification of the procedure --></code> <subject><!-- 1..1 Reference(Device|Group|Location|Organization|Patient| Practitioner) Individual or entity the procedure was performed on --></subject> <focus><!-- 0..1 Reference(CareTeam|Group|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson|Specimen) Who is the target of the procedure when it is not the subject of record only --></focus> <encounter><!-- 0..1 Reference(Encounter) The Encounter during which this Procedure was created --></encounter> <occurrence[x]><!-- 0..1 dateTime|Period|string|Age|Range|Timing When the procedure occurred or is occurring --></occurrence[x]> <recorded value="[dateTime]"/><!-- 0..1 When the procedure was first captured in the subject's record --> <recorder><!-- 0..1 Reference(Patient|Practitioner|PractitionerRole| RelatedPerson) Who recorded the procedure --></recorder> <reported[x]><!-- 0..1 boolean|Reference(Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) Reported rather than primary record --></reported[x]> <performer> <!-- 0..* Who performed the procedure and what they did --> <function><!-- 0..1 CodeableConcept Type of performance --></function> <actor><!-- I 1..1 Reference(CareTeam|Device|HealthcareService|Organization| Patient|Practitioner|PractitionerRole|RelatedPerson) Who performed the procedure --></actor> <onBehalfOf><!-- I 0..1 Reference(Organization) Organization the device or practitioner was acting for --></onBehalfOf> <period><!-- 0..1 Period When the performer performed the procedure --></period> </performer> <location><!-- 0..1 Reference(Location) Where the procedure happened --></location> <reason><!-- 0..* CodeableReference(Condition|DiagnosticReport|DocumentReference| Observation|Procedure) The justification that the procedure was performed --></reason> <bodySite><!-- I 0..* CodeableConcept Target body sites --></bodySite> <bodyStructure><!-- 0..* Reference(BodyStructure) Target body structure --></bodyStructure> <outcome><!-- 0..* CodeableReference(Observation) The result of procedure --></outcome> <report><!-- 0..* Reference(Composition|DiagnosticReport|DocumentReference) Any report resulting from the procedure --></report> <complication><!-- 0..* CodeableReference(Condition) Complication following the procedure --></complication> <followUp><!-- 0..* CodeableReference(PlanDefinition|ServiceRequest) Instructions for follow up --></followUp> <note><!-- 0..* Annotation Additional information about the procedure --></note> <focalDevice> <!-- 0..* Manipulated, implanted, or removed device --> <action><!-- 0..1 CodeableConcept Kind of change to device --></action> <manipulated><!-- 1..1 Reference(Device) Device that was changed --></manipulated> </focalDevice> <used><!-- 0..* CodeableReference(BiologicallyDerivedProduct|Device|Medication| Substance) Items used during procedure --></used> <supportingInfo><!-- 0..* Reference(Any) Extra information relevant to the procedure --></supportingInfo> </Procedure>
JSON Template
{ "resourceType" : "Procedure", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // External Identifiers for this procedure "instantiatesCanonical" : ["<canonical(PlanDefinition|ActivityDefinition|Measure|OperationDefinition|Questionnaire)>"], // Instantiates FHIR protocol or definition "instantiatesUri" : ["<uri>"], // Instantiates external protocol or definition "basedOn" : [{ Reference(CarePlan|MedicationRequest|ServiceRequest) }], // A request for this procedure "partOf" : [{ Reference(MedicationAdministration|Observation|Procedure) }], // Part of referenced event "status" : "<code>", // R! preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown "statusReason" : { CodeableConcept }, // Reason for current status "category" : [{ CodeableConcept }], // Classification of the procedure "code" : { CodeableConcept }, // Identification of the procedure "subject" : { Reference(Device|Group|Location|Organization|Patient| Practitioner) }, // R! Individual or entity the procedure was performed on "focus" : { Reference(CareTeam|Group|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson|Specimen) }, // Who is the target of the procedure when it is not the subject of record only "encounter" : { Reference(Encounter) }, // The Encounter during which this Procedure was created // occurrence[x]: When the procedure occurred or is occurring. One of these 6: "occurrenceDateTime" : "<dateTime>", "occurrencePeriod" : { Period }, "occurrenceString" : "<string>", "occurrenceAge" : { Age }, "occurrenceRange" : { Range }, "occurrenceTiming" : { Timing }, "recorded" : "<dateTime>", // When the procedure was first captured in the subject's record "recorder" : { Reference(Patient|Practitioner|PractitionerRole| RelatedPerson) }, // Who recorded the procedure // reported[x]: Reported rather than primary record. One of these 2: "reportedBoolean" : <boolean>, "reportedReference" : { Reference(Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) }, "performer" : [{ // Who performed the procedure and what they did "function" : { CodeableConcept }, // Type of performance "actor" : { Reference(CareTeam|Device|HealthcareService|Organization| Patient|Practitioner|PractitionerRole|RelatedPerson) }, // I R! Who performed the procedure "onBehalfOf" : { Reference(Organization) }, // I Organization the device or practitioner was acting for "period" : { Period } // When the performer performed the procedure }], "location" : { Reference(Location) }, // Where the procedure happened "reason" : [{ CodeableReference(Condition|DiagnosticReport|DocumentReference| Observation|Procedure) }], // The justification that the procedure was performed "bodySite" : [{ CodeableConcept }], // I Target body sites "bodyStructure" : [{ Reference(BodyStructure) }], // Target body structure "outcome" : [{ CodeableReference(Observation) }], // The result of procedure "report" : [{ Reference(Composition|DiagnosticReport|DocumentReference) }], // Any report resulting from the procedure "complication" : [{ CodeableReference(Condition) }], // Complication following the procedure "followUp" : [{ CodeableReference(PlanDefinition|ServiceRequest) }], // Instructions for follow up "note" : [{ Annotation }], // Additional information about the procedure "focalDevice" : [{ // Manipulated, implanted, or removed device "action" : { CodeableConcept }, // Kind of change to device "manipulated" : { Reference(Device) } // R! Device that was changed }], "used" : [{ CodeableReference(BiologicallyDerivedProduct|Device|Medication| Substance) }], // Items used during procedure "supportingInfo" : [{ Reference(Any) }] // Extra information relevant to the procedure }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:Procedure; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* External Identifiers for this procedure fhir:instantiatesCanonical ( [ canonical(ActivityDefinition|Measure|OperationDefinition|PlanDefinition|Questionnaire) ] ... ) ; # 0..* Instantiates FHIR protocol or definition fhir:instantiatesUri ( [ uri ] ... ) ; # 0..* Instantiates external protocol or definition fhir:basedOn ( [ Reference(CarePlan|MedicationRequest|ServiceRequest) ] ... ) ; # 0..* A request for this procedure fhir:partOf ( [ Reference(MedicationAdministration|Observation|Procedure) ] ... ) ; # 0..* Part of referenced event fhir:status [ code ] ; # 1..1 preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown fhir:statusReason [ CodeableConcept ] ; # 0..1 Reason for current status fhir:category ( [ CodeableConcept ] ... ) ; # 0..* Classification of the procedure fhir:code [ CodeableConcept ] ; # 0..1 Identification of the procedure fhir:subject [ Reference(Device|Group|Location|Organization|Patient|Practitioner) ] ; # 1..1 Individual or entity the procedure was performed on fhir:focus [ Reference(CareTeam|Group|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson| Specimen) ] ; # 0..1 Who is the target of the procedure when it is not the subject of record only fhir:encounter [ Reference(Encounter) ] ; # 0..1 The Encounter during which this Procedure was created # occurrence[x] : 0..1 When the procedure occurred or is occurring. One of these 6 fhir:occurrence [ a fhir:dateTime ; dateTime ] fhir:occurrence [ a fhir:Period ; Period ] fhir:occurrence [ a fhir:string ; string ] fhir:occurrence [ a fhir:Age ; Age ] fhir:occurrence [ a fhir:Range ; Range ] fhir:occurrence [ a fhir:Timing ; Timing ] fhir:recorded [ dateTime ] ; # 0..1 When the procedure was first captured in the subject's record fhir:recorder [ Reference(Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 Who recorded the procedure # reported[x] : 0..1 Reported rather than primary record. One of these 2 fhir:reported [ a fhir:boolean ; boolean ] fhir:reported [ a fhir:Reference ; Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] fhir:performer ( [ # 0..* Who performed the procedure and what they did fhir:function [ CodeableConcept ] ; # 0..1 Type of performance fhir:actor [ Reference(CareTeam|Device|HealthcareService|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) ] ; # 1..1 I Who performed the procedure fhir:onBehalfOf [ Reference(Organization) ] ; # 0..1 I Organization the device or practitioner was acting for fhir:period [ Period ] ; # 0..1 When the performer performed the procedure ] ... ) ; fhir:location [ Reference(Location) ] ; # 0..1 Where the procedure happened fhir:reason ( [ CodeableReference(Condition|DiagnosticReport|DocumentReference|Observation|Procedure) ] ... ) ; # 0..* The justification that the procedure was performed fhir:bodySite ( [ CodeableConcept ] ... ) ; # 0..* I Target body sites fhir:bodyStructure ( [ Reference(BodyStructure) ] ... ) ; # 0..* Target body structure fhir:outcome ( [ CodeableReference(Observation) ] ... ) ; # 0..* The result of procedure fhir:report ( [ Reference(Composition|DiagnosticReport|DocumentReference) ] ... ) ; # 0..* Any report resulting from the procedure fhir:complication ( [ CodeableReference(Condition) ] ... ) ; # 0..* Complication following the procedure fhir:followUp ( [ CodeableReference(PlanDefinition|ServiceRequest) ] ... ) ; # 0..* Instructions for follow up fhir:note ( [ Annotation ] ... ) ; # 0..* Additional information about the procedure fhir:focalDevice ( [ # 0..* Manipulated, implanted, or removed device fhir:action [ CodeableConcept ] ; # 0..1 Kind of change to device fhir:manipulated [ Reference(Device) ] ; # 1..1 Device that was changed ] ... ) ; fhir:used ( [ CodeableReference(BiologicallyDerivedProduct|Device|Medication|Substance) ] ... ) ; # 0..* Items used during procedure fhir:supportingInfo ( [ Reference(Any) ] ... ) ; # 0..* Extra information relevant to the procedure ]
Changes from both R4 and R4B
Procedure | |
Procedure.basedOn |
|
Procedure.category |
|
Procedure.subject |
|
Procedure.focus |
|
Procedure.occurrence[x] |
|
Procedure.recorded |
|
Procedure.reported[x] |
|
Procedure.performer.actor |
|
Procedure.performer.period |
|
Procedure.reason |
|
Procedure.bodyStructure |
|
Procedure.outcome |
|
Procedure.complication |
|
Procedure.followUp |
|
Procedure.used |
|
Procedure.supportingInfo |
|
Procedure.performed[x] |
|
Procedure.asserter |
|
Procedure.reasonCode |
|
Procedure.reasonReference |
|
Procedure.complicationDetail |
|
Procedure.usedReference |
|
Procedure.usedCode |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Procedure | TU | DomainResource | An action that is being or was performed on an individual or entity + Rule: bodyStructure SHALL only be present if Procedure.bodySite is not present Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | External Identifiers for this procedure |
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition |
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition |
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest | MedicationRequest) | A request for this procedure |
partOf | Σ | 0..* | Reference(Procedure | Observation | MedicationAdministration) | Part of referenced event |
status | ?!Σ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: EventStatus (Required) |
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: Procedure Not Performed Reason (SNOMED-CT) (Example) |
category | Σ | 0..* | CodeableConcept | Classification of the procedure Binding: Procedure Category Codes (SNOMED CT) (Example) |
code | Σ | 0..1 | CodeableConcept | Identification of the procedure Binding: Procedure Codes (SNOMED CT) (Example) |
subject | Σ | 1..1 | Reference(Patient | Group | Device | Practitioner | Organization | Location) | Individual or entity the procedure was performed on |
focus | ?!Σ | 0..1 | Reference(Patient | Group | RelatedPerson | Practitioner | Organization | CareTeam | PractitionerRole | Specimen) | Who is the target of the procedure when it is not the subject of record only |
encounter | Σ | 0..1 | Reference(Encounter) | The Encounter during which this Procedure was created |
occurrence[x] | Σ | 0..1 | When the procedure occurred or is occurring | |
occurrenceDateTime | dateTime | |||
occurrencePeriod | Period | |||
occurrenceString | string | |||
occurrenceAge | Age | |||
occurrenceRange | Range | |||
occurrenceTiming | Timing | |||
recorded | Σ | 0..1 | dateTime | When the procedure was first captured in the subject's record |
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Who recorded the procedure |
reported[x] | Σ | 0..1 | Reported rather than primary record | |
reportedBoolean | boolean | |||
reportedReference | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization) | |||
performer | ΣC | 0..* | BackboneElement | Who performed the procedure and what they did + Rule: Procedure.performer.onBehalfOf can only be populated when performer.actor isn't Practitioner or PractitionerRole |
function | Σ | 0..1 | CodeableConcept | Type of performance Binding: Participant Roles (Example) |
actor | ΣC | 1..1 | Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device | CareTeam | HealthcareService) | Who performed the procedure |
onBehalfOf | C | 0..1 | Reference(Organization) | Organization the device or practitioner was acting for |
period | 0..1 | Period | When the performer performed the procedure | |
location | Σ | 0..1 | Reference(Location) | Where the procedure happened |
reason | Σ | 0..* | CodeableReference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | The justification that the procedure was performed Binding: Procedure Reason Codes (Example) |
bodySite | ΣC | 0..* | CodeableConcept | Target body sites Binding: SNOMED CT Body Structures (Example) |
bodyStructure | 0..* | Reference(BodyStructure) | Target body structure | |
outcome | Σ | 0..* | CodeableReference(Observation) | The result of procedure Binding: Procedure Outcome Codes (SNOMED CT) (Example) |
report | 0..* | Reference(DiagnosticReport | DocumentReference | Composition) | Any report resulting from the procedure | |
complication | 0..* | CodeableReference(Condition) | Complication following the procedure Binding: Condition/Problem/Diagnosis Codes (Example) | |
followUp | 0..* | CodeableReference(ServiceRequest | PlanDefinition) | Instructions for follow up Binding: Procedure Follow up Codes (SNOMED CT) (Example) | |
note | 0..* | Annotation | Additional information about the procedure | |
focalDevice | 0..* | BackboneElement | Manipulated, implanted, or removed device | |
action | 0..1 | CodeableConcept | Kind of change to device Binding: Procedure Device Action Codes (Preferred) | |
manipulated | 1..1 | Reference(Device) | Device that was changed | |
used | 0..* | CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) | Items used during procedure Binding: Device Type (Example) | |
supportingInfo | 0..* | Reference(Any) | Extra information relevant to the procedure | |
Documentation for this format |
See the Extensions for this resource
XML Template
<Procedure xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier External Identifiers for this procedure --></identifier> <instantiatesCanonical><!-- 0..* canonical(ActivityDefinition|Measure| OperationDefinition|PlanDefinition|Questionnaire) Instantiates FHIR protocol or definition --></instantiatesCanonical> <instantiatesUri value="[uri]"/><!-- 0..* Instantiates external protocol or definition --> <basedOn><!-- 0..* Reference(CarePlan|MedicationRequest|ServiceRequest) A request for this procedure --></basedOn> <partOf><!-- 0..* Reference(MedicationAdministration|Observation|Procedure) Part of referenced event --></partOf> <status value="[code]"/><!-- 1..1 preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown --> <statusReason><!-- 0..1 CodeableConcept Reason for current status --></statusReason> <category><!-- 0..* CodeableConcept Classification of the procedure --></category> <code><!-- 0..1 CodeableConcept Identification of the procedure --></code> <subject><!-- 1..1 Reference(Device|Group|Location|Organization|Patient| Practitioner) Individual or entity the procedure was performed on --></subject> <focus><!-- 0..1 Reference(CareTeam|Group|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson|Specimen) Who is the target of the procedure when it is not the subject of record only --></focus> <encounter><!-- 0..1 Reference(Encounter) The Encounter during which this Procedure was created --></encounter> <occurrence[x]><!-- 0..1 dateTime|Period|string|Age|Range|Timing When the procedure occurred or is occurring --></occurrence[x]> <recorded value="[dateTime]"/><!-- 0..1 When the procedure was first captured in the subject's record --> <recorder><!-- 0..1 Reference(Patient|Practitioner|PractitionerRole| RelatedPerson) Who recorded the procedure --></recorder> <reported[x]><!-- 0..1 boolean|Reference(Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) Reported rather than primary record --></reported[x]> <performer> <!-- 0..* Who performed the procedure and what they did --> <function><!-- 0..1 CodeableConcept Type of performance --></function> <actor><!-- I 1..1 Reference(CareTeam|Device|HealthcareService|Organization| Patient|Practitioner|PractitionerRole|RelatedPerson) Who performed the procedure --></actor> <onBehalfOf><!-- I 0..1 Reference(Organization) Organization the device or practitioner was acting for --></onBehalfOf> <period><!-- 0..1 Period When the performer performed the procedure --></period> </performer> <location><!-- 0..1 Reference(Location) Where the procedure happened --></location> <reason><!-- 0..* CodeableReference(Condition|DiagnosticReport|DocumentReference| Observation|Procedure) The justification that the procedure was performed --></reason> <bodySite><!-- I 0..* CodeableConcept Target body sites --></bodySite> <bodyStructure><!-- 0..* Reference(BodyStructure) Target body structure --></bodyStructure> <outcome><!-- 0..* CodeableReference(Observation) The result of procedure --></outcome> <report><!-- 0..* Reference(Composition|DiagnosticReport|DocumentReference) Any report resulting from the procedure --></report> <complication><!-- 0..* CodeableReference(Condition) Complication following the procedure --></complication> <followUp><!-- 0..* CodeableReference(PlanDefinition|ServiceRequest) Instructions for follow up --></followUp> <note><!-- 0..* Annotation Additional information about the procedure --></note> <focalDevice> <!-- 0..* Manipulated, implanted, or removed device --> <action><!-- 0..1 CodeableConcept Kind of change to device --></action> <manipulated><!-- 1..1 Reference(Device) Device that was changed --></manipulated> </focalDevice> <used><!-- 0..* CodeableReference(BiologicallyDerivedProduct|Device|Medication| Substance) Items used during procedure --></used> <supportingInfo><!-- 0..* Reference(Any) Extra information relevant to the procedure --></supportingInfo> </Procedure>
JSON Template
{ "resourceType" : "Procedure", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // External Identifiers for this procedure "instantiatesCanonical" : ["<canonical(PlanDefinition|ActivityDefinition|Measure|OperationDefinition|Questionnaire)>"], // Instantiates FHIR protocol or definition "instantiatesUri" : ["<uri>"], // Instantiates external protocol or definition "basedOn" : [{ Reference(CarePlan|MedicationRequest|ServiceRequest) }], // A request for this procedure "partOf" : [{ Reference(MedicationAdministration|Observation|Procedure) }], // Part of referenced event "status" : "<code>", // R! preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown "statusReason" : { CodeableConcept }, // Reason for current status "category" : [{ CodeableConcept }], // Classification of the procedure "code" : { CodeableConcept }, // Identification of the procedure "subject" : { Reference(Device|Group|Location|Organization|Patient| Practitioner) }, // R! Individual or entity the procedure was performed on "focus" : { Reference(CareTeam|Group|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson|Specimen) }, // Who is the target of the procedure when it is not the subject of record only "encounter" : { Reference(Encounter) }, // The Encounter during which this Procedure was created // occurrence[x]: When the procedure occurred or is occurring. One of these 6: "occurrenceDateTime" : "<dateTime>", "occurrencePeriod" : { Period }, "occurrenceString" : "<string>", "occurrenceAge" : { Age }, "occurrenceRange" : { Range }, "occurrenceTiming" : { Timing }, "recorded" : "<dateTime>", // When the procedure was first captured in the subject's record "recorder" : { Reference(Patient|Practitioner|PractitionerRole| RelatedPerson) }, // Who recorded the procedure // reported[x]: Reported rather than primary record. One of these 2: "reportedBoolean" : <boolean>, "reportedReference" : { Reference(Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) }, "performer" : [{ // Who performed the procedure and what they did "function" : { CodeableConcept }, // Type of performance "actor" : { Reference(CareTeam|Device|HealthcareService|Organization| Patient|Practitioner|PractitionerRole|RelatedPerson) }, // I R! Who performed the procedure "onBehalfOf" : { Reference(Organization) }, // I Organization the device or practitioner was acting for "period" : { Period } // When the performer performed the procedure }], "location" : { Reference(Location) }, // Where the procedure happened "reason" : [{ CodeableReference(Condition|DiagnosticReport|DocumentReference| Observation|Procedure) }], // The justification that the procedure was performed "bodySite" : [{ CodeableConcept }], // I Target body sites "bodyStructure" : [{ Reference(BodyStructure) }], // Target body structure "outcome" : [{ CodeableReference(Observation) }], // The result of procedure "report" : [{ Reference(Composition|DiagnosticReport|DocumentReference) }], // Any report resulting from the procedure "complication" : [{ CodeableReference(Condition) }], // Complication following the procedure "followUp" : [{ CodeableReference(PlanDefinition|ServiceRequest) }], // Instructions for follow up "note" : [{ Annotation }], // Additional information about the procedure "focalDevice" : [{ // Manipulated, implanted, or removed device "action" : { CodeableConcept }, // Kind of change to device "manipulated" : { Reference(Device) } // R! Device that was changed }], "used" : [{ CodeableReference(BiologicallyDerivedProduct|Device|Medication| Substance) }], // Items used during procedure "supportingInfo" : [{ Reference(Any) }] // Extra information relevant to the procedure }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:Procedure; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* External Identifiers for this procedure fhir:instantiatesCanonical ( [ canonical(ActivityDefinition|Measure|OperationDefinition|PlanDefinition|Questionnaire) ] ... ) ; # 0..* Instantiates FHIR protocol or definition fhir:instantiatesUri ( [ uri ] ... ) ; # 0..* Instantiates external protocol or definition fhir:basedOn ( [ Reference(CarePlan|MedicationRequest|ServiceRequest) ] ... ) ; # 0..* A request for this procedure fhir:partOf ( [ Reference(MedicationAdministration|Observation|Procedure) ] ... ) ; # 0..* Part of referenced event fhir:status [ code ] ; # 1..1 preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown fhir:statusReason [ CodeableConcept ] ; # 0..1 Reason for current status fhir:category ( [ CodeableConcept ] ... ) ; # 0..* Classification of the procedure fhir:code [ CodeableConcept ] ; # 0..1 Identification of the procedure fhir:subject [ Reference(Device|Group|Location|Organization|Patient|Practitioner) ] ; # 1..1 Individual or entity the procedure was performed on fhir:focus [ Reference(CareTeam|Group|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson| Specimen) ] ; # 0..1 Who is the target of the procedure when it is not the subject of record only fhir:encounter [ Reference(Encounter) ] ; # 0..1 The Encounter during which this Procedure was created # occurrence[x] : 0..1 When the procedure occurred or is occurring. One of these 6 fhir:occurrence [ a fhir:dateTime ; dateTime ] fhir:occurrence [ a fhir:Period ; Period ] fhir:occurrence [ a fhir:string ; string ] fhir:occurrence [ a fhir:Age ; Age ] fhir:occurrence [ a fhir:Range ; Range ] fhir:occurrence [ a fhir:Timing ; Timing ] fhir:recorded [ dateTime ] ; # 0..1 When the procedure was first captured in the subject's record fhir:recorder [ Reference(Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 Who recorded the procedure # reported[x] : 0..1 Reported rather than primary record. One of these 2 fhir:reported [ a fhir:boolean ; boolean ] fhir:reported [ a fhir:Reference ; Reference(Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] fhir:performer ( [ # 0..* Who performed the procedure and what they did fhir:function [ CodeableConcept ] ; # 0..1 Type of performance fhir:actor [ Reference(CareTeam|Device|HealthcareService|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) ] ; # 1..1 I Who performed the procedure fhir:onBehalfOf [ Reference(Organization) ] ; # 0..1 I Organization the device or practitioner was acting for fhir:period [ Period ] ; # 0..1 When the performer performed the procedure ] ... ) ; fhir:location [ Reference(Location) ] ; # 0..1 Where the procedure happened fhir:reason ( [ CodeableReference(Condition|DiagnosticReport|DocumentReference|Observation|Procedure) ] ... ) ; # 0..* The justification that the procedure was performed fhir:bodySite ( [ CodeableConcept ] ... ) ; # 0..* I Target body sites fhir:bodyStructure ( [ Reference(BodyStructure) ] ... ) ; # 0..* Target body structure fhir:outcome ( [ CodeableReference(Observation) ] ... ) ; # 0..* The result of procedure fhir:report ( [ Reference(Composition|DiagnosticReport|DocumentReference) ] ... ) ; # 0..* Any report resulting from the procedure fhir:complication ( [ CodeableReference(Condition) ] ... ) ; # 0..* Complication following the procedure fhir:followUp ( [ CodeableReference(PlanDefinition|ServiceRequest) ] ... ) ; # 0..* Instructions for follow up fhir:note ( [ Annotation ] ... ) ; # 0..* Additional information about the procedure fhir:focalDevice ( [ # 0..* Manipulated, implanted, or removed device fhir:action [ CodeableConcept ] ; # 0..1 Kind of change to device fhir:manipulated [ Reference(Device) ] ; # 1..1 Device that was changed ] ... ) ; fhir:used ( [ CodeableReference(BiologicallyDerivedProduct|Device|Medication|Substance) ] ... ) ; # 0..* Items used during procedure fhir:supportingInfo ( [ Reference(Any) ] ... ) ; # 0..* Extra information relevant to the procedure ]
Changes from both R4 and R4B
Procedure | |
Procedure.basedOn |
|
Procedure.category |
|
Procedure.subject |
|
Procedure.focus |
|
Procedure.occurrence[x] |
|
Procedure.recorded |
|
Procedure.reported[x] |
|
Procedure.performer.actor |
|
Procedure.performer.period |
|
Procedure.reason |
|
Procedure.bodyStructure |
|
Procedure.outcome |
|
Procedure.complication |
|
Procedure.followUp |
|
Procedure.used |
|
Procedure.supportingInfo |
|
Procedure.performed[x] |
|
Procedure.asserter |
|
Procedure.reasonCode |
|
Procedure.reasonReference |
|
Procedure.complicationDetail |
|
Procedure.usedReference |
|
Procedure.usedCode |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis
Path | ValueSet | Type | Documentation |
---|---|---|---|
Procedure.status | EventStatus | Required | Codes identifying the lifecycle stage of an event. |
Procedure.statusReason | ProcedureNotPerformedReasonSNOMEDCT | Example | Situation codes describing the reason that a procedure, which might otherwise be expected, was not performed, or a procedure that was started and was not completed. Consists of SNOMED CT codes, children of procedure contraindicated (183932001), procedure discontinued (416406003), procedure not done (416237000), procedure not indicated (428119001), procedure not offered (416064006), procedure not wanted (416432009), procedure refused (183944003), and procedure stopped (394908001) as well as 410536001 Contraindicated (qualifier value). |
Procedure.category | ProcedureCategoryCodesSNOMEDCT | Example | Procedure Category code: A selection of relevant SNOMED CT codes. |
Procedure.code | ProcedureCodesSNOMEDCT | Example | Procedure Code: All SNOMED CT procedure codes. |
Procedure.performer.function | ParticipantRoles | Example | Roles of participants that may be included in a care team. Defined as: Healthcare professional (occupation) or Services (qualifier value). |
Procedure.reason | ProcedureReasonCodes | Example | This example value set defines the set of codes that can be used to indicate a reason for a procedure. |
Procedure.bodySite | SNOMEDCTBodyStructures | Example | This value set includes all codes from SNOMED CT where concept is-a 442083009 (Anatomical or acquired body site (body structure)). |
Procedure.outcome | ProcedureOutcomeCodesSNOMEDCT | Example | Procedure Outcome code: A selection of relevant SNOMED CT codes. |
Procedure.complication | ConditionProblemDiagnosisCodes | Example | Example value set for Condition/Problem/Diagnosis codes. |
Procedure.followUp | ProcedureFollowUpCodesSNOMEDCT | Example | Procedure follow up codes: A selection of SNOMED CT codes relevant to procedure follow up. |
Procedure.focalDevice.action | ProcedureDeviceActionCodes | Preferred | Example codes indicating the change that happened to the device during the procedure. Note that these are in no way complete and might not even be appropriate for some uses. |
Procedure.used | DeviceType | Example | Codes used to identify medical devices. Includes concepts from SNOMED CT (http://www.snomed.org/) where concept is-a 49062001 (Device) and is provided as a suggestive example. |
UniqueKey | Level | Location | Description | Expression |
prc-1 | Rule | Procedure.performer | Procedure.performer.onBehalfOf can only be populated when performer.actor isn't Practitioner or PractitionerRole | onBehalfOf.exists() and actor.resolve().exists() implies actor.resolve().where($this is Practitioner or $this is PractitionerRole).empty() |
con-4 | Rule | (base) | bodyStructure SHALL only be present if Procedure.bodySite is not present | bodySite.exists() implies bodyStructure.empty() |
Many of the elements of Procedure have inherent relationships and may be conveyed by the Procedure.code or in the text element of the Procedure.code property. I.e. you may be able to infer category, bodySite and even indication. Whether these other properties will be populated may vary by implementation.
Care should be taken to avoid nonsensical combinations/statements; e.g. "name=amputation, bodySite=heart".
Sometimes a complex procedure may consist of several subordinate procedures. In these cases, the list of procedures may be unwieldy for those attempting to view a procedure list. Two properties support ways of filtering and selecting procedures: the partOf property, which associates subordinate procedures to their containing procedures, and could be used to filter out those with partOf values in a higher-level list, and the category, which could be use to flag procedures that are, e.g., billable.
There are other activities that may be captured by an EHR that might not be of value to other providers (e.g. shaving, anesthesia, time admitted to recovery, etc.). The boundary between these classes may vary and is up to the judgment of the implementer. An option for capturing information of potential value that doesn't merit the name "procedure" is to use the note property.
For devices, these are devices that are incidental to / or used to perform the procedure - scalpels, gauze, endoscopes, etc. Devices that are the focus of the procedure should appear in Procedure.device instead.
Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
Name | Type | Description | Expression | In Common |
based-on | reference | A request for this procedure | Procedure.basedOn (CarePlan, MedicationRequest, ServiceRequest) |
|
category | token | Classification of the procedure | Procedure.category | |
code | token | A code to identify a procedure | Procedure.code | 21 Resources |
date | date | When the procedure occurred or is occurring | Procedure.occurrence.ofType(dateTime) | Procedure.occurrence.ofType(Period) | Procedure.occurrence.ofType(Timing) | 26 Resources |
encounter | reference | The Encounter during which this Procedure was created | Procedure.encounter (Encounter) |
29 Resources |
identifier | token | A unique identifier for a procedure | Procedure.identifier | 65 Resources |
instantiates-canonical | reference | Instantiates FHIR protocol or definition | Procedure.instantiatesCanonical (Questionnaire, Measure, PlanDefinition, OperationDefinition, ActivityDefinition) |
|
instantiates-uri | uri | Instantiates external protocol or definition | Procedure.instantiatesUri | |
location | reference | Where the procedure happened | Procedure.location (Location) |
|
part-of | reference | Part of referenced event | Procedure.partOf (Observation, Procedure, MedicationAdministration) |
|
patient | reference | Search by subject - a patient | Procedure.subject.where(resolve() is Patient) (Patient) |
65 Resources |
performer | reference | Who performed the procedure | Procedure.performer.actor (Practitioner, Organization, CareTeam, Device, Patient, HealthcareService, PractitionerRole, RelatedPerson) |
|
reason-code | token | Reference to a concept (by class) | Procedure.reason.concept | |
reason-reference | reference | Reference to a resource (by instance) | Procedure.reason.reference | |
report | reference | Any report resulting from the procedure | Procedure.report (Composition, DiagnosticReport, DocumentReference) |
|
status | token | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown | Procedure.status | |
subject | reference | Search by subject | Procedure.subject (Practitioner, Group, Organization, Device, Patient, Location) |