HL7 FHIR® US Core Implementation Guide CI Build

US Core, published by HL7 International - US Realm Steering Committee. This is not an authorized publication; it is the continuous build for version current). This version is based on the current content of https://github.com/HL7/US-Core/ and changes regularly. See the Directory of published versions

StructureDefinition-us-core-procedure

This profile sets minimum expectations for the Procedure resource to record, search, and fetch procedures associated with a patient. It identifies which core elements, extensions, vocabularies and value sets SHALL be present in the resource when using this profile.

Example Usage Scenarios:

The following are example usage scenarios for the US Core-Procedure profile:

  • Query for procedures performed on a Patient
  • Record or update a procedure performed on a Patient

Mandatory and Must Support Data Elements

The following data-elements are mandatory (i.e data MUST be present) or must be supported if the data is present in the sending system (Must Support definition). They are presented below in a simple human-readable explanation. Profile specific guidance and examples are provided as well. The Formal Profile Definition below provides the formal summary, definitions, and terminology requirements.

Each Procedure must have:

  1. a status
  2. a code that identifies the type of procedure performed on the patient
  3. a patient
  4. when the procedure was performed

Profile specific implementation guidance:

  • Procedure codes can be taken from SNOMED-CT, CPT, HCPCS II, ICD-10-PCS, or CDT.
  • A procedure including an implantable device SHOULD use Procedure.focalDevice with a reference to the US Core Implantable Device Profile.

Examples

Formal Views of Profile Content

Description of Profiles, Differentials, and Snapshots.

The official URL for this profile is: http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure

Published on Mon Jun 29 00:00:00 UTC 2020 as active by the HL7 US Realm Steering Committee.

This profile builds on Procedure


Procedure

Summary of the Mandatory Requirements

  1. A code in Procedure.status with a required binding to EventStatus
  2. A CodeableConcept in Procedure.code with an extensible binding to US Core Procedure Codes
  3. A Patient Reference in Procedure.subject
  4. A dateTime in Procedure.performed[x]
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on a patient
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
... code S1..1CodeableConceptProcedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT
Binding: US Core Procedure Codes (extensible)
... subject S1..1Reference(US Core Patient Profile)Who the procedure was performed on
... performed[x] S1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure I0..*ProcedureAn action that is being or was performed on a patient
... id Σ0..1stringLogical id of this artifact
... meta ΣI0..1MetaMetadata about the resource
... implicitRules ?!ΣI0..1uriA set of rules under which this content was created
... language I0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension I0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier ΣI0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical ΣI0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf ΣI0..*Reference(Procedure | Observation | MedicationAdministration)Part of referenced event
... status ?!SΣI1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
... statusReason ΣI0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example)
... category ΣI0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣI1..1CodeableConceptProcedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT
Binding: US Core Procedure Codes (extensible)
... subject SΣI1..1Reference(US Core Patient Profile)Who the procedure was performed on
... encounter ΣI0..1Reference(Encounter)Encounter created as part of
... performed[x] SΣI1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Person who asserts this procedure
... performer ΣI0..*BackboneElementThe people who performed the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function ΣI0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (example)
.... actor ΣI1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)The reference to the practitioner
.... onBehalfOf I0..1Reference(Organization)Organization the device or practitioner was acting for
... location ΣI0..1Reference(Location)Where the procedure happened
... reasonCode ΣI0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example)
... reasonReference ΣI0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite ΣI0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example)
... outcome ΣI0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report I0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication I0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail I0..*Reference(Condition)A condition that is a result of the procedure
... followUp I0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note I0..*AnnotationAdditional information about the procedure
... focalDevice I0..*BackboneElementManipulated, implanted, or removed device
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... action I0..1CodeableConceptKind of change to device
Binding: ProcedureDeviceActionCodes (preferred)
.... manipulated I1..1Reference(Device)Device that was changed
... usedReference I0..*Reference(Device | Medication | Substance)Items used during procedure
... usedCode I0..*CodeableConceptCoded items used during the procedure
Binding: FHIRDeviceTypes (example)

doco Documentation for this format

Procedure

Summary of the Mandatory Requirements

  1. A code in Procedure.status with a required binding to EventStatus
  2. A CodeableConcept in Procedure.code with an extensible binding to US Core Procedure Codes
  3. A Patient Reference in Procedure.subject
  4. A dateTime in Procedure.performed[x]

Differential View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on a patient
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
... code S1..1CodeableConceptProcedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT
Binding: US Core Procedure Codes (extensible)
... subject S1..1Reference(US Core Patient Profile)Who the procedure was performed on
... performed[x] S1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure I0..*ProcedureAn action that is being or was performed on a patient
... id Σ0..1stringLogical id of this artifact
... meta ΣI0..1MetaMetadata about the resource
... implicitRules ?!ΣI0..1uriA set of rules under which this content was created
... language I0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension I0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier ΣI0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical ΣI0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf ΣI0..*Reference(Procedure | Observation | MedicationAdministration)Part of referenced event
... status ?!SΣI1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
... statusReason ΣI0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example)
... category ΣI0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣI1..1CodeableConceptProcedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT
Binding: US Core Procedure Codes (extensible)
... subject SΣI1..1Reference(US Core Patient Profile)Who the procedure was performed on
... encounter ΣI0..1Reference(Encounter)Encounter created as part of
... performed[x] SΣI1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter ΣI0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Person who asserts this procedure
... performer ΣI0..*BackboneElementThe people who performed the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function ΣI0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (example)
.... actor ΣI1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)The reference to the practitioner
.... onBehalfOf I0..1Reference(Organization)Organization the device or practitioner was acting for
... location ΣI0..1Reference(Location)Where the procedure happened
... reasonCode ΣI0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example)
... reasonReference ΣI0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite ΣI0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example)
... outcome ΣI0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report I0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication I0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail I0..*Reference(Condition)A condition that is a result of the procedure
... followUp I0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note I0..*AnnotationAdditional information about the procedure
... focalDevice I0..*BackboneElementManipulated, implanted, or removed device
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... action I0..1CodeableConceptKind of change to device
Binding: ProcedureDeviceActionCodes (preferred)
.... manipulated I1..1Reference(Device)Device that was changed
... usedReference I0..*Reference(Device | Medication | Substance)Items used during procedure
... usedCode I0..*CodeableConceptCoded items used during the procedure
Binding: FHIRDeviceTypes (example)

doco Documentation for this format

Downloads: StructureDefinition: (XML, JSON), Schema: XML Schematron


Quick Start

Below is an overview of the required set of Server RESTful FHIR interactions - for example, search and read operations - for this profile. See the Conformance requirements for a complete list of supported RESTful interactions for this IG.

  • The syntax used to describe the interactions is described here.
  • See the General Guidance section for additional rules and expectations when a server requires status parameters.
  • See the General Guidance section for additional guidance on searching for multiple patients.

Mandatory Search Parameters:

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

  1. SHALL support searching for all procedures for a patient using the patient search parameter:

    GET [base]/Procedure?patient=[reference]

    Example:

    1. GET [base]/Procedure?patient=1291938

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

  2. SHALL support searching using the combination of the patient and date search parameters:

    • including support for these date comparators: gt,lt,ge,le
    • including optional support for composite AND search on date (e.g.date=[date]&date=[date]]&...)

    GET [base]/Procedure?patient=[reference]&date={gt|lt|ge|le}[date]{&date={gt|lt|ge|le}[date]&...}

    Example:

    1. GET [base]/Procedure?patient=1137192&date=ge2019-01-14

    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 token)

Optional Search Parameters:

The following search parameter combinations SHOULD be supported.:

  1. SHOULD support searching using the combination of the patient and status search parameters:
    • including support for composite OR search on status (e.g.status={system|}[code],{system|}[code],...)

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

    Example:

    1. GET [base]/Procedure?patient=1137192&status=completed

    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)

  2. SHOULD support searching using the combination of the patient and code and date search parameters:
    • including optional support for composite OR search on code (e.g.code={system|}[code],{system|}[code],...)
    • including support for these date comparators: gt,lt,ge,le
    • including optional support for composite AND search on date (e.g.date=[date]&date=[date]]&...)

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

    Example:

    1. GET [base]/Procedure?patient=1137192&date=ge2019-01-14&code=http://snomed.info/sct|35637008

    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)