Canadian Baseline
1.2.0 - CI Build Canada flag

Canadian Baseline, published by HL7 Canada - FHIR Implementation Work Group. This guide is not an authorized publication; it is the continuous build for version 1.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7-Canada/ca-baseline/ and changes regularly. See the Directory of published versions

Resource Profile: Procedure Profile

Official URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/profile-procedure Version: 1.2.0
Draft as of 2024-12-13 Computable Name: ProcedureProfile

Proposed constraints and extensions on the Procedure Resource

CA Baseline Procedure Profile

This profile is seeking broader community and implementer feedback.

The cardinality on procedure.performed[x] has been constrained to 1..1. While this did not cause any Due Diligence Review Issues with IPS or US Core, we are seeking feedback from additional implementers on whether this cardinality restriction poses problems for their FHIR implementations.

This profile also socializes an example of a subset of SNOMED CT codes for procedures that is made available through the Infoway Terminology Gateway: https://fhir.infoway-inforoute.ca/ValueSet/interventioncode. This extensional value set was developed after initial review of the profiles but has been added in. We are seeking community feedback as to whether this subset is in use today by Canadian implementers or whether or not we should point to the larger value set of SNOMED CT codes contained in the IPS Value Set.

Feedback can be provided using the Simplifier issue log for this profile.

This profile sets minimum expectations for the Procedure resource to record, search and fetch current or historical procedures performed on or for a patient. It identifies which elements and value sets SHALL be present in the resource when using this profile.

This profile defines localization concepts for use in an Canadian context.

Mandatory Data Elements

All elements or attributes defined in FHIR have cardinality as part of their definition - a minimum number of required appearances and a maximum number.

Most elements in FHIR specification have a minimum cardinality of 0, which means that they may be missing from a resource when it is exchanged between systems.

Required elements:

  • status specifying the state of the procedure (required in the base specification)
  • code to classify the procedure that is performed
  • reference to a subject
  • date procedure was performed

Must Support Data Elements

Some elements are labeled as MustSupport meaning that implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way (see Must Support definition).

Following elements are marked as Must Support in the Procedure profile to aid record matching in databases with many pediatric records.

Must Support elements:

  • status
  • code
  • reference to a subject
  • performed date
  • body site

Usage Note

This Procedure profile is used to provide summary information about the occurrence of current or historical procedures performed on or for a patient, and is not intended to provide real-time snapshots of a procedure as it unfolds. Examples include surgical procedures, diagnostic procedures, endoscopic procedures, biopsies, counseling, physiotherapy, personal support services, adult day care services, non-emergency transportation, home modification, exercise and so on.

A slice for absentOrUnknownProcedure comes from the IPS-UV specification and has been socialized in the profile as a way to represent a standard set of codes for identifying absent or unknown procedures. While the profile expects that a procedure.code be present (cardinality of 1..1) the use of the slice is entirely optional.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..* Procedure Procedure Profile
dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label
dom-6: A resource should have narrative for robust management
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
ele-1: All FHIR elements must have a @value or children
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... partOf Σ 0..* Reference(Procedure Profile | Observation Profile (General Use) | MedicationAdministration Profile) Part of referenced event
ele-1: All FHIR elements must have a @value or children
... code SΣ 1..1 CodeableConcept Identification of the procedure
Binding: InterventionCode . (preferred): Extensional Subset of SNOMED CT and SNOMED CT CA Extension Codes to describe Services/Activities performed by Primary Health Care Providers.


ele-1: All FHIR elements must have a @value or children
.... Slices for coding Σ 0..* Coding Code defined by a terminology system
Slice: Unordered, Open by pattern:$this
ele-1: All FHIR elements must have a @value or children
..... coding:absentOrUnknownProcedure Σ 0..1 Coding Code for absent problem or for unknown procedure
Binding: Absent or Unknown Procedures - IPS (required): A code to identify absent or unknown procedures


ele-1: All FHIR elements must have a @value or children
... subject SΣ 1..1 Reference(Patient Profile) Who the procedure was performed on
ele-1: All FHIR elements must have a @value or children
... encounter Σ 0..1 Reference(Encounter Profile) Encounter created as part of
ele-1: All FHIR elements must have a @value or children
... performed[x] SΣ 1..1 When the procedure was performed
ele-1: All FHIR elements must have a @value or children
.... performed[x]All Types Content/Rules for all Types
..... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
...... data-absent-reason 0..1 code performed[x] absence reason
URL: http://hl7.org/fhir/StructureDefinition/data-absent-reason
Binding: DataAbsentReason (required)
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... performedDateTime dateTime
.... performedPeriod Period
.... performedString string
.... performedAge Age
.... performedRange Range
... recorder Σ 0..1 Reference(Patient Profile | RelatedPerson | Practitioner Profile (General) | PractitionerRole Profile (General)) Who recorded the procedure
ele-1: All FHIR elements must have a @value or children
... asserter Σ 0..1 Reference(Patient Profile | RelatedPerson | Practitioner Profile (General) | PractitionerRole Profile (General)) Person who asserts this procedure
ele-1: All FHIR elements must have a @value or children
... location Σ 0..1 Reference(Location Profile) Where the procedure happened
ele-1: All FHIR elements must have a @value or children
... reasonReference Σ 0..* Reference(Condition Profile | Observation Profile (General Use) | Procedure Profile | DiagnosticReport Profile for Laboratory Results Reporting | Diagnostic Report for Report and Note Exchange Profile | DocumentReference Profile for metadata about the document) The justification that the procedure was performed
ele-1: All FHIR elements must have a @value or children
... complicationDetail 0..* Reference(Condition Profile) A condition that is a result of the procedure
ele-1: All FHIR elements must have a @value or children
... usedReference 0..* Reference(Device Profile (Implantable) | Medication Profile | Substance) Items used during procedure
ele-1: All FHIR elements must have a @value or children

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Procedure.statusrequiredEventStatus
http://hl7.org/fhir/ValueSet/event-status|4.0.1
from the FHIR Standard
Procedure.codepreferredInterventionCode .
https://fhir.infoway-inforoute.ca/ValueSet/interventioncode
Procedure.code.coding:absentOrUnknownProcedurerequiredAbsentOrUnknownProceduresUvIps
http://hl7.org/fhir/uv/ips/ValueSet/absent-or-unknown-procedures-uv-ips

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorProcedureIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorProcedureIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceProcedureA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Code

The Procedure.code element is used to specify a procedure that is performed.

The Procedure.code element is CodeableConcept data type meaning that more than one Coding sub-elements can be present. One of these Coding sub-elements MAY use InterventionCodeSubsetOperatingRoomProcedure value set from Canada Health Infoway.

Use text if the exact nature of the procedure cannot be coded (e.g. "Laparoscopic Appendectomy").