AU Core Implementation Guide
0.3.0-ballot - R1 Australia flag

This page is part of the AU Core (v0.3.0-ballot: AU Core R1 Ballot 5) based on FHIR (HL7® FHIR® Standard) R4. . For a full list of available versions, see the Directory of published versions

Resource Profile: AU Core Procedure

Official URL: http://hl7.org.au/fhir/core/StructureDefinition/au-core-procedure Version: 0.3.0-ballot
Standards status: Draft Maturity Level: 0 Computable Name: AUCoreProcedure

Copyright/Legal: Used by permission of HL7 International, all rights reserved Creative Commons License. HL7 Australia© 2022+; Licensed Under Creative Commons No Rights Reserved.

This profile sets minimum expectations for a Procedure resource to record, search, and fetch procedures associated with a patient. It is based on the AU Base Procedure profile and identifies the additional mandatory core elements, extensions, vocabularies and value sets that SHALL be present in the Procedure resource when conforming to this profile. It provides the floor for standards development for specific uses cases in an Australian context.

Usage scenarios

The following are supported usage scenarios for this profile:

  • Query for procedures performed on a patient
  • Record or update a record of a procedure performed on a patient

Comparison with other national and international specifications

A resource conforming to this profile is conformant to:

No equivalent International Patient Access profile.

Conformance in reverse is not guaranteed, i.e. a resource conforming to International Patient Summary, or US Core MAY NOT conform to AU Core.

Profile specific implementation guidance

  • Procedure.category provides an efficient way of supporting system interactions, e.g. restricting searches. Implementers need to understand that data categorisation is somewhat subjective. The categorisation applied by the source may not align with a receiver’s expectations.
  • The use of coding can vary significantly across systems, client applications need to understand that they may encounter codes they do not recognise and be prepared to handle those resources appropriately. Servers SHOULD populate Procedure.code.text and/or Procedure.code.coding.display so that client applications can at least display the condition even if the client application does not recognise the code supplied.
  • In an exchange with the My Health Record system Procedure.status is “completed”
  • The Procedure resource can represent a reason as a code with Procedure.reasonCode, or a reference with Procedure.reasonReference to a Condition or other resource.
    • Although both are marked as must support, servers are not required to support both a code and a reference, but they SHALL support at least one of these elements
    • A client application SHALL support both elements
  • A procedure including an implantable device should use Procedure.focalDevice with a reference to a Device resource

Usage:

Formal Views of Profile Content

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

This structure is derived from AUBaseProcedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*AUBaseProcedureA procedure in an Australian healthcare context
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
... statusReason S0..1CodeableConceptReason for current status
... category S0..1CodeableConceptClassification of the procedure
... subject S1..1Reference(AU Core Patient)Who the procedure was performed on
... encounter S0..1Reference(AU Core Encounter)Encounter created as part of
... performed[x] S1..1dateTime, Period, string, Age, RangeWhen the procedure was performed
... recorder S0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Who recorded the procedure
... asserter S0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Person who asserts this procedure
... reasonCode S0..*CodeableConceptCoded reason procedure performed
... reasonReference S0..*Reference(AU Core Condition | Observation | AU Core Procedure | DocumentReference)The justification that the procedure was performed
... bodySite SC0..*CodeableConceptTarget body sites
Binding: Body Site . (extensible)
au-core-pro-04: If a coded body site is provided, at least one code shall be from SNOMED CT
... note S0..*AnnotationAdditional information about the procedure

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSetURI
Procedure.codeextensibleProcedure .
https://healthterminologies.gov.au/fhir/ValueSet/procedure-1
Procedure.bodySiteextensibleBodySite .
https://healthterminologies.gov.au/fhir/ValueSet/body-site-1

Constraints

IdGradePath(s)DetailsRequirements
au-core-pro-04errorProcedure.bodySiteIf a coded body site is provided, at least one code shall be from SNOMED CT
: coding.exists() implies coding.where(system='http://snomed.info/sct').exists()
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*AUBaseProcedureA procedure in an Australian healthcare context
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... targetBodyStructure 0..*Reference(BodyStructure)The target point for this procedure
URL: http://hl7.org/fhir/StructureDefinition/procedure-targetBodyStructure
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... statusReason SΣ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.

... category SΣ0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

... code SΣ1..1CodeableConceptIdentification of the procedure
Binding: Procedure . (extensible)
... subject SΣ1..1Reference(AU Core Patient)Who the procedure was performed on
... encounter SΣ0..1Reference(AU Core Encounter)Encounter created as part of
... performed[x] SΣ1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Who recorded the procedure
... asserter SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Person who asserts this procedure
... reasonCode SΣ0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference SΣ0..*Reference(AU Core Condition | Observation | AU Core Procedure | DocumentReference)The justification that the procedure was performed
... bodySite SΣC0..*CodeableConceptTarget body sites
Binding: Body Site . (extensible)
au-core-pro-04: If a coded body site is provided, at least one code shall be from SNOMED CT
... note S0..*AnnotationAdditional information about the procedure

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.statusReasonexampleProcedureNotPerformedReason(SNOMED-CT)
http://hl7.org/fhir/ValueSet/procedure-not-performed-reason
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeextensibleProcedure .
https://healthterminologies.gov.au/fhir/ValueSet/procedure-1
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard
Procedure.bodySiteextensibleBodySite .
https://healthterminologies.gov.au/fhir/ValueSet/body-site-1

Constraints

IdGradePath(s)DetailsRequirements
au-core-pro-04errorProcedure.bodySiteIf a coded body site is provided, at least one code shall be from SNOMED CT
: coding.exists() implies coding.where(system='http://snomed.info/sct').exists()
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()
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*AUBaseProcedureA procedure in an Australian healthcare context
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... Slices for extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
... targetBodyStructure 0..*Reference(BodyStructure)The target point for this procedure
URL: http://hl7.org/fhir/StructureDefinition/procedure-targetBodyStructure
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... 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 ?!SΣ1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required): A code specifying the state of the procedure.

... statusReason SΣ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.

... category SΣ0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

... code SΣ1..1CodeableConceptIdentification of the procedure
Binding: Procedure . (extensible)
... subject SΣ1..1Reference(AU Core Patient)Who the procedure was performed on
... encounter SΣ0..1Reference(AU Core Encounter)Encounter created as part of
... performed[x] SΣ1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Who recorded the procedure
... asserter SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Person who asserts this procedure
... performer Σ0..*BackboneElementThe people who performed the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function Σ0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.

.... 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 SΣ0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference SΣ0..*Reference(AU Core Condition | Observation | AU Core Procedure | DocumentReference)The justification that the procedure was performed
... bodySite SΣC0..*CodeableConceptTarget body sites
Binding: Body Site . (extensible)
au-core-pro-04: If a coded body site is provided, at least one code shall be from SNOMED CT
... outcome Σ0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example): An outcome of a procedure - whether it was resolved or otherwise.

... report 0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication 0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example): Codes describing complications that resulted from a procedure.


... complicationDetail 0..*Reference(Condition)A condition that is a result of the procedure
... followUp 0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example): Specific follow up required for a procedure e.g. removal of sutures.


... note S0..*AnnotationAdditional information about the procedure
... focalDevice 0..*BackboneElementManipulated, implanted, or removed device
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... action 0..1CodeableConceptKind of change to device
Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure.

.... 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
Binding: FHIRDeviceTypes (example): Codes describing items used during a procedure.



doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Procedure.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Procedure.statusrequiredEventStatus
http://hl7.org/fhir/ValueSet/event-status|4.0.1
from the FHIR Standard
Procedure.statusReasonexampleProcedureNotPerformedReason(SNOMED-CT)
http://hl7.org/fhir/ValueSet/procedure-not-performed-reason
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeextensibleProcedure .
https://healthterminologies.gov.au/fhir/ValueSet/procedure-1
Procedure.performer.functionexampleProcedurePerformerRoleCodes
http://hl7.org/fhir/ValueSet/performer-role
from the FHIR Standard
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard
Procedure.bodySiteextensibleBodySite .
https://healthterminologies.gov.au/fhir/ValueSet/body-site-1
Procedure.outcomeexampleProcedureOutcomeCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-outcome
from the FHIR Standard
Procedure.complicationexampleCondition/Problem/DiagnosisCodes
http://hl7.org/fhir/ValueSet/condition-code
from the FHIR Standard
Procedure.followUpexampleProcedureFollowUpCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-followup
from the FHIR Standard
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes
http://hl7.org/fhir/ValueSet/device-action
from the FHIR Standard
Procedure.usedCodeexampleFHIRDeviceTypes
http://hl7.org/fhir/ValueSet/device-kind
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
au-core-pro-04errorProcedure.bodySiteIf a coded body site is provided, at least one code shall be from SNOMED CT
: coding.exists() implies coding.where(system='http://snomed.info/sct').exists()
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()

Differential View

This structure is derived from AUBaseProcedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*AUBaseProcedureA procedure in an Australian healthcare context
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
... statusReason S0..1CodeableConceptReason for current status
... category S0..1CodeableConceptClassification of the procedure
... subject S1..1Reference(AU Core Patient)Who the procedure was performed on
... encounter S0..1Reference(AU Core Encounter)Encounter created as part of
... performed[x] S1..1dateTime, Period, string, Age, RangeWhen the procedure was performed
... recorder S0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Who recorded the procedure
... asserter S0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Person who asserts this procedure
... reasonCode S0..*CodeableConceptCoded reason procedure performed
... reasonReference S0..*Reference(AU Core Condition | Observation | AU Core Procedure | DocumentReference)The justification that the procedure was performed
... bodySite SC0..*CodeableConceptTarget body sites
Binding: Body Site . (extensible)
au-core-pro-04: If a coded body site is provided, at least one code shall be from SNOMED CT
... note S0..*AnnotationAdditional information about the procedure

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSetURI
Procedure.codeextensibleProcedure .
https://healthterminologies.gov.au/fhir/ValueSet/procedure-1
Procedure.bodySiteextensibleBodySite .
https://healthterminologies.gov.au/fhir/ValueSet/body-site-1

Constraints

IdGradePath(s)DetailsRequirements
au-core-pro-04errorProcedure.bodySiteIf a coded body site is provided, at least one code shall be from SNOMED CT
: coding.exists() implies coding.where(system='http://snomed.info/sct').exists()

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*AUBaseProcedureA procedure in an Australian healthcare context
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... targetBodyStructure 0..*Reference(BodyStructure)The target point for this procedure
URL: http://hl7.org/fhir/StructureDefinition/procedure-targetBodyStructure
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... statusReason SΣ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.

... category SΣ0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

... code SΣ1..1CodeableConceptIdentification of the procedure
Binding: Procedure . (extensible)
... subject SΣ1..1Reference(AU Core Patient)Who the procedure was performed on
... encounter SΣ0..1Reference(AU Core Encounter)Encounter created as part of
... performed[x] SΣ1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Who recorded the procedure
... asserter SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Person who asserts this procedure
... reasonCode SΣ0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference SΣ0..*Reference(AU Core Condition | Observation | AU Core Procedure | DocumentReference)The justification that the procedure was performed
... bodySite SΣC0..*CodeableConceptTarget body sites
Binding: Body Site . (extensible)
au-core-pro-04: If a coded body site is provided, at least one code shall be from SNOMED CT
... note S0..*AnnotationAdditional information about the procedure

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.statusReasonexampleProcedureNotPerformedReason(SNOMED-CT)
http://hl7.org/fhir/ValueSet/procedure-not-performed-reason
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeextensibleProcedure .
https://healthterminologies.gov.au/fhir/ValueSet/procedure-1
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard
Procedure.bodySiteextensibleBodySite .
https://healthterminologies.gov.au/fhir/ValueSet/body-site-1

Constraints

IdGradePath(s)DetailsRequirements
au-core-pro-04errorProcedure.bodySiteIf a coded body site is provided, at least one code shall be from SNOMED CT
: coding.exists() implies coding.where(system='http://snomed.info/sct').exists()
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()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*AUBaseProcedureA procedure in an Australian healthcare context
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... Slices for extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
... targetBodyStructure 0..*Reference(BodyStructure)The target point for this procedure
URL: http://hl7.org/fhir/StructureDefinition/procedure-targetBodyStructure
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... 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 ?!SΣ1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required): A code specifying the state of the procedure.

... statusReason SΣ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.

... category SΣ0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.

... code SΣ1..1CodeableConceptIdentification of the procedure
Binding: Procedure . (extensible)
... subject SΣ1..1Reference(AU Core Patient)Who the procedure was performed on
... encounter SΣ0..1Reference(AU Core Encounter)Encounter created as part of
... performed[x] SΣ1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
.... performedStringstring
.... performedAgeAge
.... performedRangeRange
... recorder SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Who recorded the procedure
... asserter SΣ0..1Reference(AU Core Practitioner | AU Core PractitionerRole | AU Core Patient | RelatedPerson)Person who asserts this procedure
... performer Σ0..*BackboneElementThe people who performed the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function Σ0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.

.... 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 SΣ0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... reasonReference SΣ0..*Reference(AU Core Condition | Observation | AU Core Procedure | DocumentReference)The justification that the procedure was performed
... bodySite SΣC0..*CodeableConceptTarget body sites
Binding: Body Site . (extensible)
au-core-pro-04: If a coded body site is provided, at least one code shall be from SNOMED CT
... outcome Σ0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example): An outcome of a procedure - whether it was resolved or otherwise.

... report 0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication 0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example): Codes describing complications that resulted from a procedure.


... complicationDetail 0..*Reference(Condition)A condition that is a result of the procedure
... followUp 0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example): Specific follow up required for a procedure e.g. removal of sutures.


... note S0..*AnnotationAdditional information about the procedure
... focalDevice 0..*BackboneElementManipulated, implanted, or removed device
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... action 0..1CodeableConceptKind of change to device
Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure.

.... 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
Binding: FHIRDeviceTypes (example): Codes describing items used during a procedure.



doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Procedure.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
http://hl7.org/fhir/ValueSet/languages
from the FHIR Standard
Procedure.statusrequiredEventStatus
http://hl7.org/fhir/ValueSet/event-status|4.0.1
from the FHIR Standard
Procedure.statusReasonexampleProcedureNotPerformedReason(SNOMED-CT)
http://hl7.org/fhir/ValueSet/procedure-not-performed-reason
from the FHIR Standard
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-category
from the FHIR Standard
Procedure.codeextensibleProcedure .
https://healthterminologies.gov.au/fhir/ValueSet/procedure-1
Procedure.performer.functionexampleProcedurePerformerRoleCodes
http://hl7.org/fhir/ValueSet/performer-role
from the FHIR Standard
Procedure.reasonCodeexampleProcedureReasonCodes
http://hl7.org/fhir/ValueSet/procedure-reason
from the FHIR Standard
Procedure.bodySiteextensibleBodySite .
https://healthterminologies.gov.au/fhir/ValueSet/body-site-1
Procedure.outcomeexampleProcedureOutcomeCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-outcome
from the FHIR Standard
Procedure.complicationexampleCondition/Problem/DiagnosisCodes
http://hl7.org/fhir/ValueSet/condition-code
from the FHIR Standard
Procedure.followUpexampleProcedureFollowUpCodes(SNOMEDCT)
http://hl7.org/fhir/ValueSet/procedure-followup
from the FHIR Standard
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes
http://hl7.org/fhir/ValueSet/device-action
from the FHIR Standard
Procedure.usedCodeexampleFHIRDeviceTypes
http://hl7.org/fhir/ValueSet/device-kind
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
au-core-pro-04errorProcedure.bodySiteIf a coded body site is provided, at least one code shall be from SNOMED CT
: coding.exists() implies coding.where(system='http://snomed.info/sct').exists()
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:

Below is an overview of the mandatory and optional search parameters and combined search parameters. FHIR search operations and the syntax used to describe the interactions is described here.

Any search parameter defined in FHIR may be ‘allowed’ by the system unless explicitly marked as “SHALL NOT”. A few items are marked as MAY in this implementation guide to highlight their potential relevance.

Parameter(s) Conformance Type(s) Requirements (when used alone or in combination)
patient SHALL reference The client SHALL provide at least an id value and MAY provide both the Type and id values. The server SHALL support both.
patient+date SHALL reference+date
patient+code+date SHOULD reference+token+date
patient.identifier SHOULD reference.token The client SHALL provide both the system and code values. The server SHALL support both.

The client SHOULD support search using IHI, Medicare Number, and DVA Number identifiers as defined in the AU Core Patient profile. The server SHOULD support search using the using IHI, Medicare Number, and DVA Number identifiers as defined in the AU Core Patient profile.
patient+status SHOULD reference+token
code MAY token The client SHALL provide at least a code value and MAY provide both the system and code values. The server SHALL support both.
date MAY date A client SHALL provide a value precise to the second + time offset. A server SHALL support a value precise to the second + time offset.
status MAY token The client SHALL provide at least a code value and MAY provide both the system and code values. The server SHALL support both.

Mandatory Search Parameters

The following search parameters and search parameter combinations SHALL be supported:

  1. SHALL support searching using the patient search parameter:
    • SHALL support these _revinclude parameters: Provenance:target
    • SHOULD support chained searching of patient canonical identifier patient.identifier (e.g. patient.identifier=[system|][code])

    GET [base]/Procedure?patient={Type/}[id] or optionallyGET [base]/Procedure?patient.identifier=[system|][code]

    Example:

    1. GET [base]/Procedure?patient=5678
    2. GET [base]/Procedure?patient.identifier=http://ns.electronichealth.net.au/id/medicare-number|32788511952
    3. GET [base]/Procedure?patient.identifier=http://ns.electronichealth.net.au/id/hi/ihi/1.0|8003608833357361

    Implementation Notes: Fetches a bundle of all Procedure resources for the specified patient (how to search by reference and how to search by token)

  2. SHALL support searching using the combination of the patient and date search parameters:
    • SHOULD support chained searching of patient canonical identifier patient.identifier (e.g. patient.identifier=[system|][code])
    • SHALL support these date comparators: gt,lt,ge,le
    • SHOULD support multipleAnd search on date (e.g.date=[date]&date=[date]]&...) GET [base]/Procedure?patient={Type/}[id]&date={gt|lt|ge|le}[date]{&date={gt|lt|ge|le}[date]&...}

    Example:

    1. GET [base]/Procedure?patient=5678&date=ge2020-01-01T00:00:00Z
    2. GET [base]/Procedure?patient.identifier=http://example.org/fhir/mrn|12345&date=ge2020-01-01T00:00:00Z

    Implementation Notes: Fetches a bundle of all Procedure resources for the specified patient and date (how to search by reference and how to search by date)

Optional Search Parameters

The following search parameters and search parameter combinations SHOULD be supported:

  1. SHOULD support searching using the combination of the patient and code and date search parameters:
    • SHOULD support chained searching of patient canonical identifier patient.identifier (e.g. patient.identifier=[system|][code])
    • SHOULD support multipleOr search on code (e.g.code={system|}[code],{system|}[code],...)
    • SHALL support these date comparators: gt,lt,ge,le
    • SHOULD support multipleAnd search on date (e.g.date=[date]&date=[date]]&...)

    GET [base]/Procedure?patient={Type/}[id]&code={system|}[code]{,{system|}[code],...}&date={gt|lt|ge|le}[date]{&date={gt|lt|ge|le}[date]&...}

    Example:

    1. GET [base]/Procedure?patient=5678&code=http://snomed.info/sct|26782000,http://snomed.info/sct|36969009&date=ge2020-01-01T00:00:00Z
    2. GET [base]/Procedure?patient.identifier=http://example.org/fhir/mrn|12345&code=http://snomed.info/sct|26782000,http://snomed.info/sct|36969009&date=ge2020-01-01T00:00:00Z

    Implementation Notes: Fetches a bundle of all Procedure resources for the specified patient and date and procedure code(s). SHOULD support search by multiple codes. (how to search by reference and how to search by token and how to search by date)

  2. SHOULD support searching using the combination of the patient and status search parameters:
    • SHOULD support chained searching of patient canonical identifier patient.identifier (e.g. patient.identifier=[system|][code]
    • SHALL support multipleOr search on status (e.g.status={system|}[code],{system|}[code],...)

    GET [base]/Procedure?patient={Type/}[id]&status={system|}[code]{,{system|}[code],...}

    Example:

    1. GET [base]/Procedure?patient=5678&status=completed
    2. GET [base]/Procedure?patient=5678&status=completed&_revinclude=Provenance:target

    Implementation Notes: Fetches a bundle of all Procedure resources for the specified patient and status (how to search by reference and how to search by token)