HL7 FHIR® US Core Implementation Guide (Release 3.0.1 STU3 Update for Comment)

This page is part of the US Core (v3.0.1: STU3 Ballot 3) based on FHIR R4. The current version which supercedes this version is 5.0.1. For a full list of available versions, 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 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:

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 Aug 26 00:00:00 EDT 2019 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 I0..*An action that is being or was performed on a patient
... 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)
Max Binding: AllLanguages
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... 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 | suspended | aborted | completed | entered-in-error | unknown
Binding: EventStatus (required)
... statusReason Σ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example)
... category Σ0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣ1..1CodeableConceptProcedure codes from CPT or SNOMED CT
Binding: US Core Procedure Codes (extensible)
... subject SΣ1..1Reference(US Core Patient Profile)Who the procedure was performed on
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... performed[x] SΣ1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter Σ0..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 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function Σ0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (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
Binding: ProcedureReasonCodes (example)
... reasonReference Σ0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite Σ0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example)
... outcome Σ0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report 0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication 0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail 0..*Reference(Condition)A condition that is a result of the procedure
... followUp 0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note 0..*AnnotationAdditional information about the procedure
... focalDevice I0..*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)
.... 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)

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]

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure I0..*An action that is being or was performed on a patient
... 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)
Max Binding: AllLanguages
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... 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 | suspended | aborted | completed | entered-in-error | unknown
Binding: EventStatus (required)
... statusReason Σ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example)
... category Σ0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣ1..1CodeableConceptProcedure codes from CPT or SNOMED CT
Binding: US Core Procedure Codes (extensible)
... subject SΣ1..1Reference(US Core Patient Profile)Who the procedure was performed on
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... performed[x] SΣ1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... asserter Σ0..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 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function Σ0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (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
Binding: ProcedureReasonCodes (example)
... reasonReference Σ0..*Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
... bodySite Σ0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example)
... outcome Σ0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report 0..*Reference(DiagnosticReport | DocumentReference | Composition)Any report resulting from the procedure
... complication 0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail 0..*Reference(Condition)A condition that is a result of the procedure
... followUp 0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note 0..*AnnotationAdditional information about the procedure
... focalDevice I0..*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)
.... 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)

doco Documentation for this format

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


Quick Start

Below is an overview of the required set of 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.

  • 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, search parameter combinations SHALL be supported. Any listed search parameter modifiers, comparators, chains and composites SHALL also be supported UNLESS they are listed as “optional” in which case they SHOULD 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 parameters, search parameter combinations and search parameter modifiers, comparators, chains and composites 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)