Release 4B Ballot #1

This page is part of the FHIR Specification v4.1.0: R4B Ballot. About the R4B version of FHIR. The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

9.3 Resource Procedure - Content

Patient Care Work GroupMaturity Level: 3 Trial UseSecurity Category: Patient Compartments: Encounter, Patient, Practitioner, RelatedPerson

An action that is or was performed on or for a patient. This can be a physical intervention like an operation, or less invasive like long term services, counseling, or hypnotherapy.

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 or for a patient. A procedure is an activity that is performed on, with, or for a patient as part of the provision of care. Examples include surgical procedures, diagnostic procedures, endoscopic procedures, biopsies, counseling, physiotherapy, personal support services, adult day care services, non-emergency transportation, home modification, exercise, etc. Procedures may be performed by a healthcare professional, a service provider, a friend or relative or in some cases by the patient themselves.

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 - i.e. immunizations, drug administrations and communications. 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 cancelling 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.

This resource is referenced by AdverseEvent, Appointment, ChargeItem, Claim, DeviceUseStatement, DiagnosticReport, Encounter, ExplanationOfBenefit, Flag, ImagingStudy, MedicationAdministration, MedicationDispense, MedicationStatement, Observation, itself and QuestionnaireResponse.

This resource implements the Event pattern.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure TUDomainResourceAn action that is being or was performed on a patient
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier Σ0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical Σ0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri Σ0..*uriInstantiates external protocol or definition
... basedOn Σ0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf Σ0..*Reference(Procedure | Observation | MedicationAdministration)Part of referenced event
... status ?!Σ1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
EventStatus (Required)
... statusReason Σ0..1CodeableConceptReason for current status
Procedure Not Performed Reason (SNOMED-CT) (Example)
... category Σ0..1CodeableConceptClassification of the procedure
Procedure Category Codes (SNOMED CT) (Example)
... code Σ0..1CodeableConceptIdentification of the procedure
Procedure Codes (SNOMED CT) (Example)
... subject Σ1..1Reference(Patient | Group)Who the procedure was performed on
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... performed[x] Σ0..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Person who asserts this procedure
... performer Σ0..*BackboneElementThe people who performed the procedure
.... function Σ0..1CodeableConceptType of performance
Procedure Performer Role Codes (Example)
.... actor Σ1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)The reference to the practitioner
.... onBehalfOf 0..1Reference(Organization)Organization the device or practitioner was acting for
... location Σ0..1Reference(Location)Where the procedure happened
... reasonCode Σ0..*CodeableConceptCoded reason procedure performed
Procedure Reason Codes (Example)
... reasonReference Σ0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite Σ0..*CodeableConceptTarget body sites
SNOMED CT Body Structures (Example)
... outcome Σ0..1CodeableConceptThe result of procedure
Procedure Outcome Codes (SNOMED CT) (Example)
... report 0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication 0..*CodeableConceptComplication following the procedure
Condition/Problem/Diagnosis Codes (Example)
... complicationDetail 0..*Reference(Condition)A condition that is a result of the procedure
... followUp 0..*CodeableConceptInstructions for follow up
Procedure Follow up Codes (SNOMED CT) (Example)
... note 0..*AnnotationAdditional information about the procedure
... focalDevice 0..*BackboneElementManipulated, implanted, or removed device
.... action 0..1CodeableConceptKind of change to device
Procedure Device Action Codes (Preferred)
.... manipulated 1..1Reference(Device)Device that was changed
... usedReference 0..*Reference(Device | Medication | Substance)Items used during procedure
... usedCode 0..*CodeableConceptCoded items used during the procedure
FHIR Device Types (Example)

doco Documentation for this format

UML Diagram (Legend)

Procedure (DomainResource)Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to serveridentifier : Identifier [0..*]The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this ProcedureinstantiatesCanonical : canonical [0..*] « PlanDefinition| ActivityDefinition|Measure|OperationDefinition|Questionnaire »The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this ProcedureinstantiatesUri : uri [0..*]A reference to a resource that contains details of the request for this procedurebasedOn : Reference [0..*] « CarePlan|ServiceRequest »A larger event of which this particular procedure is a component or steppartOf : Reference [0..*] « Procedure|Observation| MedicationAdministration »A code specifying the state of the procedure. Generally, this will be the in-progress or completed state (this element modifies the meaning of other elements)status : code [1..1] « A code specifying the state of the procedure. (Strength=Required)EventStatus! »Captures the reason for the current state of the procedurestatusReason : CodeableConcept [0..1] « A code that identifies the reason a procedure was not performed. (Strength=Example) ProcedureNotPerformedReason(S...?? »A code that classifies the procedure for searching, sorting and display purposes (e.g. "Surgical Procedure")category : CodeableConcept [0..1] « A code that classifies a procedure for searching, sorting and display purposes. (Strength=Example)ProcedureCategoryCodes(SNOMED...?? »The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. "Laparoscopic Appendectomy")code : CodeableConcept [0..1] « A code to identify a specific procedure . (Strength=Example)ProcedureCodes(SNOMEDCT)?? »The person, animal or group on which the procedure was performedsubject : Reference [1..1] « Patient|Group »The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associatedencounter : Reference [0..1] « Encounter »Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be capturedperformed[x] : Element [0..1] « dateTime|Period|string|Age|Range »Individual who recorded the record and takes responsibility for its contentrecorder : Reference [0..1] « Patient|RelatedPerson|Practitioner| PractitionerRole »Individual who is making the procedure statementasserter : Reference [0..1] « Patient|RelatedPerson|Practitioner| PractitionerRole »The location where the procedure actually happened. E.g. a newborn at home, a tracheostomy at a restaurantlocation : Reference [0..1] « Location »The coded reason why the procedure was performed. This may be a coded entity of some type, or may simply be present as textreasonCode : CodeableConcept [0..*] « A code that identifies the reason a procedure is required. (Strength=Example)ProcedureReasonCodes?? »The justification of why the procedure was performedreasonReference : Reference [0..*] « Condition|Observation|Procedure| DiagnosticReport|DocumentReference »Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesionbodySite : CodeableConcept [0..*] « Codes describing anatomical locations. May include laterality. (Strength=Example)SNOMEDCTBodyStructures?? »The outcome of the procedure - did it resolve the reasons for the procedure being performed?outcome : CodeableConcept [0..1] « An outcome of a procedure - whether it was resolved or otherwise. (Strength=Example)ProcedureOutcomeCodes(SNOMEDC...?? »This could be a histology result, pathology report, surgical report, etcreport : Reference [0..*] « DiagnosticReport|DocumentReference| Composition »Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issuescomplication : CodeableConcept [0..*] « Codes describing complications that resulted from a procedure. (Strength=Example) Condition/Problem/DiagnosisCo...?? »Any complications that occurred during the procedure, or in the immediate post-performance periodcomplicationDetail : Reference [0..*] « Condition »If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be usedfollowUp : CodeableConcept [0..*] « Specific follow up required for a procedure e.g. removal of sutures. (Strength=Example)ProcedureFollowUpCodes(SNOMED...?? »Any other notes and comments about the procedurenote : Annotation [0..*]Identifies medications, devices and any other substance used as part of the procedureusedReference : Reference [0..*] « Device|Medication|Substance »Identifies coded items that were used as part of the procedureusedCode : CodeableConcept [0..*] « Codes describing items used during a procedure. (Strength=Example)FHIRDeviceTypes?? »PerformerDistinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopistfunction : CodeableConcept [0..1] « A code that identifies the role of a performer of the procedure. (Strength=Example)ProcedurePerformerRoleCodes?? »The practitioner who was involved in the procedureactor : Reference [1..1] « Practitioner|PractitionerRole| Organization|Patient|RelatedPerson|Device »The organization the device or practitioner was acting on behalf ofonBehalfOf : Reference [0..1] « Organization »FocalDeviceThe kind of change that happened to the device during the procedureaction : CodeableConcept [0..1] « A kind of change that happened to the device during the procedure. (Strength=Preferred)ProcedureDeviceActionCodes? »The device that was manipulated (changed) during the proceduremanipulated : Reference [1..1] « Device »Limited to "real" people rather than equipmentperformer[0..*]A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the ProcedurefocalDevice[0..*]

XML Template

<Procedure xmlns="http://hl7.org/fhir"> doco
 <!-- 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|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..1 CodeableConcept Classification of the procedure --></category>
 <code><!-- 0..1 CodeableConcept Identification of the procedure --></code>
 <subject><!-- 1..1 Reference(Group|Patient) Who the procedure was performed on --></subject>
 <encounter><!-- 0..1 Reference(Encounter) Encounter created as part of --></encounter>
 <performed[x]><!-- 0..1 dateTime|Period|string|Age|Range When the procedure was performed --></performed[x]>
 <recorder><!-- 0..1 Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) Who recorded the procedure --></recorder>
 <asserter><!-- 0..1 Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) Person who asserts this procedure --></asserter>
 <performer>  <!-- 0..* The people who performed the procedure -->
  <function><!-- 0..1 CodeableConcept Type of performance --></function>
  <actor><!-- 1..1 Reference(Device|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) The reference to the practitioner --></actor>
  <onBehalfOf><!-- 0..1 Reference(Organization) Organization the device or practitioner was acting for --></onBehalfOf>
 </performer>
 <location><!-- 0..1 Reference(Location) Where the procedure happened --></location>
 <reasonCode><!-- 0..* CodeableConcept Coded reason procedure performed --></reasonCode>
 <reasonReference><!-- 0..* Reference(Condition|DiagnosticReport|
   DocumentReference|Observation|Procedure) The justification that the procedure was performed --></reasonReference>
 <bodySite><!-- 0..* CodeableConcept Target body sites --></bodySite>
 <outcome><!-- 0..1 CodeableConcept The result of procedure --></outcome>
 <report><!-- 0..* Reference(Composition|DiagnosticReport|DocumentReference) Any report resulting from the procedure --></report>
 <complication><!-- 0..* CodeableConcept Complication following the procedure --></complication>
 <complicationDetail><!-- 0..* Reference(Condition) A condition that is a result of the procedure --></complicationDetail>
 <followUp><!-- 0..* CodeableConcept 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>
 <usedReference><!-- 0..* Reference(Device|Medication|Substance) Items used during procedure --></usedReference>
 <usedCode><!-- 0..* CodeableConcept Coded items used during the procedure --></usedCode>
</Procedure>

JSON Template

{doco
  "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(ActivityDefinition|Measure|
   OperationDefinition|PlanDefinition|Questionnaire) }], // Instantiates FHIR protocol or definition
  "instantiatesUri" : ["<uri>"], // Instantiates external protocol or definition
  "basedOn" : [{ Reference(CarePlan|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(Group|Patient) }, // R!  Who the procedure was performed on
  "encounter" : { Reference(Encounter) }, // Encounter created as part of
  // performed[x]: When the procedure was performed. One of these 5:
  "performedDateTime" : "<dateTime>",
  "performedPeriod" : { Period },
  "performedString" : "<string>",
  "performedAge" : { Age },
  "performedRange" : { Range },
  "recorder" : { Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) }, // Who recorded the procedure
  "asserter" : { Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) }, // Person who asserts this procedure
  "performer" : [{ // The people who performed the procedure
    "function" : { CodeableConcept }, // Type of performance
    "actor" : { Reference(Device|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) }, // R!  The reference to the practitioner
    "onBehalfOf" : { Reference(Organization) } // Organization the device or practitioner was acting for
  }],
  "location" : { Reference(Location) }, // Where the procedure happened
  "reasonCode" : [{ CodeableConcept }], // Coded reason procedure performed
  "reasonReference" : [{ Reference(Condition|DiagnosticReport|
   DocumentReference|Observation|Procedure) }], // The justification that the procedure was performed
  "bodySite" : [{ CodeableConcept }], // Target body sites
  "outcome" : { CodeableConcept }, // The result of procedure
  "report" : [{ Reference(Composition|DiagnosticReport|DocumentReference) }], // Any report resulting from the procedure
  "complication" : [{ CodeableConcept }], // Complication following the procedure
  "complicationDetail" : [{ Reference(Condition) }], // A condition that is a result of the procedure
  "followUp" : [{ CodeableConcept }], // 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
  }],
  "usedReference" : [{ Reference(Device|Medication|Substance) }], // Items used during procedure
  "usedCode" : [{ CodeableConcept }] // Coded items used during the procedure
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ 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:Procedure.identifier [ Identifier ], ... ; # 0..* External Identifiers for this procedure
  fhir:Procedure.instantiatesCanonical [ canonical(ActivityDefinition|Measure|OperationDefinition|PlanDefinition|Questionnaire) ], ... ; # 0..* Instantiates FHIR protocol or definition
  fhir:Procedure.instantiatesUri [ uri ], ... ; # 0..* Instantiates external protocol or definition
  fhir:Procedure.basedOn [ Reference(CarePlan|ServiceRequest) ], ... ; # 0..* A request for this procedure
  fhir:Procedure.partOf [ Reference(MedicationAdministration|Observation|Procedure) ], ... ; # 0..* Part of referenced event
  fhir:Procedure.status [ code ]; # 1..1 preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
  fhir:Procedure.statusReason [ CodeableConcept ]; # 0..1 Reason for current status
  fhir:Procedure.category [ CodeableConcept ]; # 0..1 Classification of the procedure
  fhir:Procedure.code [ CodeableConcept ]; # 0..1 Identification of the procedure
  fhir:Procedure.subject [ Reference(Group|Patient) ]; # 1..1 Who the procedure was performed on
  fhir:Procedure.encounter [ Reference(Encounter) ]; # 0..1 Encounter created as part of
  # Procedure.performed[x] : 0..1 When the procedure was performed. One of these 5
    fhir:Procedure.performedDateTime [ dateTime ]
    fhir:Procedure.performedPeriod [ Period ]
    fhir:Procedure.performedString [ string ]
    fhir:Procedure.performedAge [ Age ]
    fhir:Procedure.performedRange [ Range ]
  fhir:Procedure.recorder [ Reference(Patient|Practitioner|PractitionerRole|RelatedPerson) ]; # 0..1 Who recorded the procedure
  fhir:Procedure.asserter [ Reference(Patient|Practitioner|PractitionerRole|RelatedPerson) ]; # 0..1 Person who asserts this procedure
  fhir:Procedure.performer [ # 0..* The people who performed the procedure
    fhir:Procedure.performer.function [ CodeableConcept ]; # 0..1 Type of performance
    fhir:Procedure.performer.actor [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ]; # 1..1 The reference to the practitioner
    fhir:Procedure.performer.onBehalfOf [ Reference(Organization) ]; # 0..1 Organization the device or practitioner was acting for
  ], ...;
  fhir:Procedure.location [ Reference(Location) ]; # 0..1 Where the procedure happened
  fhir:Procedure.reasonCode [ CodeableConcept ], ... ; # 0..* Coded reason procedure performed
  fhir:Procedure.reasonReference [ Reference(Condition|DiagnosticReport|DocumentReference|Observation|Procedure) ], ... ; # 0..* The justification that the procedure was performed
  fhir:Procedure.bodySite [ CodeableConcept ], ... ; # 0..* Target body sites
  fhir:Procedure.outcome [ CodeableConcept ]; # 0..1 The result of procedure
  fhir:Procedure.report [ Reference(Composition|DiagnosticReport|DocumentReference) ], ... ; # 0..* Any report resulting from the procedure
  fhir:Procedure.complication [ CodeableConcept ], ... ; # 0..* Complication following the procedure
  fhir:Procedure.complicationDetail [ Reference(Condition) ], ... ; # 0..* A condition that is a result of the procedure
  fhir:Procedure.followUp [ CodeableConcept ], ... ; # 0..* Instructions for follow up
  fhir:Procedure.note [ Annotation ], ... ; # 0..* Additional information about the procedure
  fhir:Procedure.focalDevice [ # 0..* Manipulated, implanted, or removed device
    fhir:Procedure.focalDevice.action [ CodeableConcept ]; # 0..1 Kind of change to device
    fhir:Procedure.focalDevice.manipulated [ Reference(Device) ]; # 1..1 Device that was changed
  ], ...;
  fhir:Procedure.usedReference [ Reference(Device|Medication|Substance) ], ... ; # 0..* Items used during procedure
  fhir:Procedure.usedCode [ CodeableConcept ], ... ; # 0..* Coded items used during the procedure
]

Changes since R3

Procedure
Procedure.status
  • Change value set from http://hl7.org/fhir/ValueSet/event-status|4.0.0 to http://hl7.org/fhir/ValueSet/event-status|4.1.0

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 15 tests that all execute ok. 3 fail round-trip testing and 1 r3 resources are invalid (0 errors).)

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure TUDomainResourceAn action that is being or was performed on a patient
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier Σ0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical Σ0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri Σ0..*uriInstantiates external protocol or definition
... basedOn Σ0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf Σ0..*Reference(Procedure | Observation | MedicationAdministration)Part of referenced event
... status ?!Σ1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
EventStatus (Required)
... statusReason Σ0..1CodeableConceptReason for current status
Procedure Not Performed Reason (SNOMED-CT) (Example)
... category Σ0..1CodeableConceptClassification of the procedure
Procedure Category Codes (SNOMED CT) (Example)
... code Σ0..1CodeableConceptIdentification of the procedure
Procedure Codes (SNOMED CT) (Example)
... subject Σ1..1Reference(Patient | Group)Who the procedure was performed on
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... performed[x] Σ0..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Person who asserts this procedure
... performer Σ0..*BackboneElementThe people who performed the procedure
.... function Σ0..1CodeableConceptType of performance
Procedure Performer Role Codes (Example)
.... actor Σ1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)The reference to the practitioner
.... onBehalfOf 0..1Reference(Organization)Organization the device or practitioner was acting for
... location Σ0..1Reference(Location)Where the procedure happened
... reasonCode Σ0..*CodeableConceptCoded reason procedure performed
Procedure Reason Codes (Example)
... reasonReference Σ0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite Σ0..*CodeableConceptTarget body sites
SNOMED CT Body Structures (Example)
... outcome Σ0..1CodeableConceptThe result of procedure
Procedure Outcome Codes (SNOMED CT) (Example)
... report 0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication 0..*CodeableConceptComplication following the procedure
Condition/Problem/Diagnosis Codes (Example)
... complicationDetail 0..*Reference(Condition)A condition that is a result of the procedure
... followUp 0..*CodeableConceptInstructions for follow up
Procedure Follow up Codes (SNOMED CT) (Example)
... note 0..*AnnotationAdditional information about the procedure
... focalDevice 0..*BackboneElementManipulated, implanted, or removed device
.... action 0..1CodeableConceptKind of change to device
Procedure Device Action Codes (Preferred)
.... manipulated 1..1Reference(Device)Device that was changed
... usedReference 0..*Reference(Device | Medication | Substance)Items used during procedure
... usedCode 0..*CodeableConceptCoded items used during the procedure
FHIR Device Types (Example)

doco Documentation for this format

UML Diagram (Legend)

Procedure (DomainResource)Business identifiers assigned to this procedure by the performer or other systems which remain constant as the resource is updated and is propagated from server to serveridentifier : Identifier [0..*]The URL pointing to a FHIR-defined protocol, guideline, order set or other definition that is adhered to in whole or in part by this ProcedureinstantiatesCanonical : canonical [0..*] « PlanDefinition| ActivityDefinition|Measure|OperationDefinition|Questionnaire »The URL pointing to an externally maintained protocol, guideline, order set or other definition that is adhered to in whole or in part by this ProcedureinstantiatesUri : uri [0..*]A reference to a resource that contains details of the request for this procedurebasedOn : Reference [0..*] « CarePlan|ServiceRequest »A larger event of which this particular procedure is a component or steppartOf : Reference [0..*] « Procedure|Observation| MedicationAdministration »A code specifying the state of the procedure. Generally, this will be the in-progress or completed state (this element modifies the meaning of other elements)status : code [1..1] « A code specifying the state of the procedure. (Strength=Required)EventStatus! »Captures the reason for the current state of the procedurestatusReason : CodeableConcept [0..1] « A code that identifies the reason a procedure was not performed. (Strength=Example) ProcedureNotPerformedReason(S...?? »A code that classifies the procedure for searching, sorting and display purposes (e.g. "Surgical Procedure")category : CodeableConcept [0..1] « A code that classifies a procedure for searching, sorting and display purposes. (Strength=Example)ProcedureCategoryCodes(SNOMED...?? »The specific procedure that is performed. Use text if the exact nature of the procedure cannot be coded (e.g. "Laparoscopic Appendectomy")code : CodeableConcept [0..1] « A code to identify a specific procedure . (Strength=Example)ProcedureCodes(SNOMEDCT)?? »The person, animal or group on which the procedure was performedsubject : Reference [1..1] « Patient|Group »The Encounter during which this Procedure was created or performed or to which the creation of this record is tightly associatedencounter : Reference [0..1] « Encounter »Estimated or actual date, date-time, period, or age when the procedure was performed. Allows a period to support complex procedures that span more than one date, and also allows for the length of the procedure to be capturedperformed[x] : Element [0..1] « dateTime|Period|string|Age|Range »Individual who recorded the record and takes responsibility for its contentrecorder : Reference [0..1] « Patient|RelatedPerson|Practitioner| PractitionerRole »Individual who is making the procedure statementasserter : Reference [0..1] « Patient|RelatedPerson|Practitioner| PractitionerRole »The location where the procedure actually happened. E.g. a newborn at home, a tracheostomy at a restaurantlocation : Reference [0..1] « Location »The coded reason why the procedure was performed. This may be a coded entity of some type, or may simply be present as textreasonCode : CodeableConcept [0..*] « A code that identifies the reason a procedure is required. (Strength=Example)ProcedureReasonCodes?? »The justification of why the procedure was performedreasonReference : Reference [0..*] « Condition|Observation|Procedure| DiagnosticReport|DocumentReference »Detailed and structured anatomical location information. Multiple locations are allowed - e.g. multiple punch biopsies of a lesionbodySite : CodeableConcept [0..*] « Codes describing anatomical locations. May include laterality. (Strength=Example)SNOMEDCTBodyStructures?? »The outcome of the procedure - did it resolve the reasons for the procedure being performed?outcome : CodeableConcept [0..1] « An outcome of a procedure - whether it was resolved or otherwise. (Strength=Example)ProcedureOutcomeCodes(SNOMEDC...?? »This could be a histology result, pathology report, surgical report, etcreport : Reference [0..*] « DiagnosticReport|DocumentReference| Composition »Any complications that occurred during the procedure, or in the immediate post-performance period. These are generally tracked separately from the notes, which will typically describe the procedure itself rather than any 'post procedure' issuescomplication : CodeableConcept [0..*] « Codes describing complications that resulted from a procedure. (Strength=Example) Condition/Problem/DiagnosisCo...?? »Any complications that occurred during the procedure, or in the immediate post-performance periodcomplicationDetail : Reference [0..*] « Condition »If the procedure required specific follow up - e.g. removal of sutures. The follow up may be represented as a simple note or could potentially be more complex, in which case the CarePlan resource can be usedfollowUp : CodeableConcept [0..*] « Specific follow up required for a procedure e.g. removal of sutures. (Strength=Example)ProcedureFollowUpCodes(SNOMED...?? »Any other notes and comments about the procedurenote : Annotation [0..*]Identifies medications, devices and any other substance used as part of the procedureusedReference : Reference [0..*] « Device|Medication|Substance »Identifies coded items that were used as part of the procedureusedCode : CodeableConcept [0..*] « Codes describing items used during a procedure. (Strength=Example)FHIRDeviceTypes?? »PerformerDistinguishes the type of involvement of the performer in the procedure. For example, surgeon, anaesthetist, endoscopistfunction : CodeableConcept [0..1] « A code that identifies the role of a performer of the procedure. (Strength=Example)ProcedurePerformerRoleCodes?? »The practitioner who was involved in the procedureactor : Reference [1..1] « Practitioner|PractitionerRole| Organization|Patient|RelatedPerson|Device »The organization the device or practitioner was acting on behalf ofonBehalfOf : Reference [0..1] « Organization »FocalDeviceThe kind of change that happened to the device during the procedureaction : CodeableConcept [0..1] « A kind of change that happened to the device during the procedure. (Strength=Preferred)ProcedureDeviceActionCodes? »The device that was manipulated (changed) during the proceduremanipulated : Reference [1..1] « Device »Limited to "real" people rather than equipmentperformer[0..*]A device that is implanted, removed or otherwise manipulated (calibration, battery replacement, fitting a prosthesis, attaching a wound-vac, etc.) as a focal portion of the ProcedurefocalDevice[0..*]

XML Template

<Procedure xmlns="http://hl7.org/fhir"> doco
 <!-- 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|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..1 CodeableConcept Classification of the procedure --></category>
 <code><!-- 0..1 CodeableConcept Identification of the procedure --></code>
 <subject><!-- 1..1 Reference(Group|Patient) Who the procedure was performed on --></subject>
 <encounter><!-- 0..1 Reference(Encounter) Encounter created as part of --></encounter>
 <performed[x]><!-- 0..1 dateTime|Period|string|Age|Range When the procedure was performed --></performed[x]>
 <recorder><!-- 0..1 Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) Who recorded the procedure --></recorder>
 <asserter><!-- 0..1 Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) Person who asserts this procedure --></asserter>
 <performer>  <!-- 0..* The people who performed the procedure -->
  <function><!-- 0..1 CodeableConcept Type of performance --></function>
  <actor><!-- 1..1 Reference(Device|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) The reference to the practitioner --></actor>
  <onBehalfOf><!-- 0..1 Reference(Organization) Organization the device or practitioner was acting for --></onBehalfOf>
 </performer>
 <location><!-- 0..1 Reference(Location) Where the procedure happened --></location>
 <reasonCode><!-- 0..* CodeableConcept Coded reason procedure performed --></reasonCode>
 <reasonReference><!-- 0..* Reference(Condition|DiagnosticReport|
   DocumentReference|Observation|Procedure) The justification that the procedure was performed --></reasonReference>
 <bodySite><!-- 0..* CodeableConcept Target body sites --></bodySite>
 <outcome><!-- 0..1 CodeableConcept The result of procedure --></outcome>
 <report><!-- 0..* Reference(Composition|DiagnosticReport|DocumentReference) Any report resulting from the procedure --></report>
 <complication><!-- 0..* CodeableConcept Complication following the procedure --></complication>
 <complicationDetail><!-- 0..* Reference(Condition) A condition that is a result of the procedure --></complicationDetail>
 <followUp><!-- 0..* CodeableConcept 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>
 <usedReference><!-- 0..* Reference(Device|Medication|Substance) Items used during procedure --></usedReference>
 <usedCode><!-- 0..* CodeableConcept Coded items used during the procedure --></usedCode>
</Procedure>

JSON Template

{doco
  "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(ActivityDefinition|Measure|
   OperationDefinition|PlanDefinition|Questionnaire) }], // Instantiates FHIR protocol or definition
  "instantiatesUri" : ["<uri>"], // Instantiates external protocol or definition
  "basedOn" : [{ Reference(CarePlan|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(Group|Patient) }, // R!  Who the procedure was performed on
  "encounter" : { Reference(Encounter) }, // Encounter created as part of
  // performed[x]: When the procedure was performed. One of these 5:
  "performedDateTime" : "<dateTime>",
  "performedPeriod" : { Period },
  "performedString" : "<string>",
  "performedAge" : { Age },
  "performedRange" : { Range },
  "recorder" : { Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) }, // Who recorded the procedure
  "asserter" : { Reference(Patient|Practitioner|PractitionerRole|
   RelatedPerson) }, // Person who asserts this procedure
  "performer" : [{ // The people who performed the procedure
    "function" : { CodeableConcept }, // Type of performance
    "actor" : { Reference(Device|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) }, // R!  The reference to the practitioner
    "onBehalfOf" : { Reference(Organization) } // Organization the device or practitioner was acting for
  }],
  "location" : { Reference(Location) }, // Where the procedure happened
  "reasonCode" : [{ CodeableConcept }], // Coded reason procedure performed
  "reasonReference" : [{ Reference(Condition|DiagnosticReport|
   DocumentReference|Observation|Procedure) }], // The justification that the procedure was performed
  "bodySite" : [{ CodeableConcept }], // Target body sites
  "outcome" : { CodeableConcept }, // The result of procedure
  "report" : [{ Reference(Composition|DiagnosticReport|DocumentReference) }], // Any report resulting from the procedure
  "complication" : [{ CodeableConcept }], // Complication following the procedure
  "complicationDetail" : [{ Reference(Condition) }], // A condition that is a result of the procedure
  "followUp" : [{ CodeableConcept }], // 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
  }],
  "usedReference" : [{ Reference(Device|Medication|Substance) }], // Items used during procedure
  "usedCode" : [{ CodeableConcept }] // Coded items used during the procedure
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ 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:Procedure.identifier [ Identifier ], ... ; # 0..* External Identifiers for this procedure
  fhir:Procedure.instantiatesCanonical [ canonical(ActivityDefinition|Measure|OperationDefinition|PlanDefinition|Questionnaire) ], ... ; # 0..* Instantiates FHIR protocol or definition
  fhir:Procedure.instantiatesUri [ uri ], ... ; # 0..* Instantiates external protocol or definition
  fhir:Procedure.basedOn [ Reference(CarePlan|ServiceRequest) ], ... ; # 0..* A request for this procedure
  fhir:Procedure.partOf [ Reference(MedicationAdministration|Observation|Procedure) ], ... ; # 0..* Part of referenced event
  fhir:Procedure.status [ code ]; # 1..1 preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
  fhir:Procedure.statusReason [ CodeableConcept ]; # 0..1 Reason for current status
  fhir:Procedure.category [ CodeableConcept ]; # 0..1 Classification of the procedure
  fhir:Procedure.code [ CodeableConcept ]; # 0..1 Identification of the procedure
  fhir:Procedure.subject [ Reference(Group|Patient) ]; # 1..1 Who the procedure was performed on
  fhir:Procedure.encounter [ Reference(Encounter) ]; # 0..1 Encounter created as part of
  # Procedure.performed[x] : 0..1 When the procedure was performed. One of these 5
    fhir:Procedure.performedDateTime [ dateTime ]
    fhir:Procedure.performedPeriod [ Period ]
    fhir:Procedure.performedString [ string ]
    fhir:Procedure.performedAge [ Age ]
    fhir:Procedure.performedRange [ Range ]
  fhir:Procedure.recorder [ Reference(Patient|Practitioner|PractitionerRole|RelatedPerson) ]; # 0..1 Who recorded the procedure
  fhir:Procedure.asserter [ Reference(Patient|Practitioner|PractitionerRole|RelatedPerson) ]; # 0..1 Person who asserts this procedure
  fhir:Procedure.performer [ # 0..* The people who performed the procedure
    fhir:Procedure.performer.function [ CodeableConcept ]; # 0..1 Type of performance
    fhir:Procedure.performer.actor [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ]; # 1..1 The reference to the practitioner
    fhir:Procedure.performer.onBehalfOf [ Reference(Organization) ]; # 0..1 Organization the device or practitioner was acting for
  ], ...;
  fhir:Procedure.location [ Reference(Location) ]; # 0..1 Where the procedure happened
  fhir:Procedure.reasonCode [ CodeableConcept ], ... ; # 0..* Coded reason procedure performed
  fhir:Procedure.reasonReference [ Reference(Condition|DiagnosticReport|DocumentReference|Observation|Procedure) ], ... ; # 0..* The justification that the procedure was performed
  fhir:Procedure.bodySite [ CodeableConcept ], ... ; # 0..* Target body sites
  fhir:Procedure.outcome [ CodeableConcept ]; # 0..1 The result of procedure
  fhir:Procedure.report [ Reference(Composition|DiagnosticReport|DocumentReference) ], ... ; # 0..* Any report resulting from the procedure
  fhir:Procedure.complication [ CodeableConcept ], ... ; # 0..* Complication following the procedure
  fhir:Procedure.complicationDetail [ Reference(Condition) ], ... ; # 0..* A condition that is a result of the procedure
  fhir:Procedure.followUp [ CodeableConcept ], ... ; # 0..* Instructions for follow up
  fhir:Procedure.note [ Annotation ], ... ; # 0..* Additional information about the procedure
  fhir:Procedure.focalDevice [ # 0..* Manipulated, implanted, or removed device
    fhir:Procedure.focalDevice.action [ CodeableConcept ]; # 0..1 Kind of change to device
    fhir:Procedure.focalDevice.manipulated [ Reference(Device) ]; # 1..1 Device that was changed
  ], ...;
  fhir:Procedure.usedReference [ Reference(Device|Medication|Substance) ], ... ; # 0..* Items used during procedure
  fhir:Procedure.usedCode [ CodeableConcept ], ... ; # 0..* Coded items used during the procedure
]

Changes since Release 3

Procedure
Procedure.status
  • Change value set from http://hl7.org/fhir/ValueSet/event-status|4.0.0 to http://hl7.org/fhir/ValueSet/event-status|4.1.0

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 15 tests that all execute ok. 3 fail round-trip testing and 1 r3 resources are invalid (0 errors).)

 

See the Profiles & Extensions and the alternate definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions & the dependency analysis

PathDefinitionTypeReference
Procedure.status A code specifying the state of the procedure.RequiredEventStatus
Procedure.statusReason A code that identifies the reason a procedure was not performed.ExampleProcedureNotPerformedReason(SNOMED-CT)
Procedure.category A code that classifies a procedure for searching, sorting and display purposes.ExampleProcedureCategoryCodes(SNOMEDCT)
Procedure.code A code to identify a specific procedure .ExampleProcedureCodes(SNOMEDCT)
Procedure.performer.function A code that identifies the role of a performer of the procedure.ExampleProcedurePerformerRoleCodes
Procedure.reasonCode A code that identifies the reason a procedure is required.ExampleProcedureReasonCodes
Procedure.bodySite Codes describing anatomical locations. May include laterality.ExampleSNOMEDCTBodyStructures
Procedure.outcome An outcome of a procedure - whether it was resolved or otherwise.ExampleProcedureOutcomeCodes(SNOMEDCT)
Procedure.complication Codes describing complications that resulted from a procedure.ExampleCondition/Problem/DiagnosisCodes
Procedure.followUp Specific follow up required for a procedure e.g. removal of sutures.ExampleProcedureFollowUpCodes(SNOMEDCT)
Procedure.focalDevice.action A kind of change that happened to the device during the procedure.PreferredProcedureDeviceActionCodes
Procedure.usedCode Codes describing items used during a procedure.ExampleFHIRDeviceTypes

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".

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. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
based-onreferenceA request for this procedureProcedure.basedOn
(CarePlan, ServiceRequest)
categorytokenClassification of the procedureProcedure.category
codetokenA code to identify a procedureProcedure.code
datedateWhen the procedure was performedProcedure.performed
encounterreferenceEncounter created as part ofProcedure.encounter
(Encounter)
identifiertokenA unique identifier for a procedureProcedure.identifier
instantiates-canonicalreferenceInstantiates FHIR protocol or definitionProcedure.instantiatesCanonical
(Questionnaire, Measure, PlanDefinition, OperationDefinition, ActivityDefinition)
instantiates-uriuriInstantiates external protocol or definitionProcedure.instantiatesUri
locationreferenceWhere the procedure happenedProcedure.location
(Location)
part-ofreferencePart of referenced eventProcedure.partOf
(Observation, Procedure, MedicationAdministration)
patientreferenceSearch by subject - a patientProcedure.subject.where(resolve() is Patient)
(Group, Patient)
performerreferenceThe reference to the practitionerProcedure.performer.actor
(Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson)
reason-codetokenCoded reason procedure performedProcedure.reasonCode
reason-referencereferenceThe justification that the procedure was performedProcedure.reasonReference
(Condition, Observation, Procedure, DiagnosticReport, DocumentReference)
statustokenpreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknownProcedure.status
subjectreferenceSearch by subjectProcedure.subject
(Group, Patient)