Pharmacist Services and Summaries - FHIR (PhCP)
1.0.0 - STU Release 1.0.0 for FHIR R4

Publication Build: This will be filled in by the publication tooling

## Resource Profile: PhCP-Instruction-Procedure

Defining URL: | http://hl7.org/fhir/us/phcp/StructureDefinition/PhCP-Instruction-Procedure
Version: | 1.0.0
Name: | PhCPInstructionProcedure
Title: | PhCP Instruction Procedure
Status: | Draft as of 2017-07-21T14:29:48.4142999-04:00
Definition: | The Instruction profile can be used in several ways, such as to record patient medication instructions or to record fill instructions for an order. The code defines the type of instruction. This profile constrains the US Core Procedure profile. It includes value sets intended for use by pharmacy systems. Everywhere it is referenced, an unconstrained US Core Procedure reference is also allowed.
Publisher: | HL7 Structured Documents Work Group
Committee: | Patient Care
Source Resource: | XML / JSON / Turtle

The official URL for this profile is:

    http://hl7.org/fhir/us/phcp/StructureDefinition/PhCP-Instruction-Procedure

### Formal Views of Profile Content

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

- Text Summary
- Differential Table
- Snapshot Table
- Snapshot Table (Must Support)
- All

This structure is derived from USCoreProcedureProfile

Summary

Must-Support: 3 elements

Structures

This structure refers to these other structures:

- http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
- http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
- http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization

This structure is derived from USCoreProcedureProfile

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Procedure |  | 0..* | USCoreProcedureProfile | An action that is being or was performed on a patient
code | S | 1..1 | CodeableConcept | Procedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT Binding: VSAC 2.16.840.1.113762.1.4.1096.214 (preferred)
performer |  |  |  |
actor | S | 1..1 | Reference(US Core Practitioner Profile | US Core PractitionerRole Profile) | The reference to the practitioner
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile) | Organization the device or practitioner was acting for
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Procedure |  | 0..* | USCoreProcedureProfile | An action that is being or was performed on a patient
id | Σ | 0..1 | string | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages: A human language.
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | External Identifiers for this procedure
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates 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..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: EventStatus (required)
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.
category | Σ | 0..1 | CodeableConcept | Classification of the procedure Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.
code | S Σ | 1..1 | CodeableConcept | Procedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT Binding: VSAC 2.16.840.1.113762.1.4.1096.214 (preferred)
subject | S Σ | 1..1 | Reference(US Core Patient Profile) | Who the procedure was performed on
encounter | Σ | 0..1 | Reference(Encounter) | Encounter created as part of
performed[x] | S Σ | 1..1 |  | When the procedure was performed
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Who recorded the procedure
asserter | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Person who asserts this procedure
performer | Σ | 0..* | BackboneElement | The people who performed the procedure
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
function | Σ | 0..1 | CodeableConcept | Type of performance Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.
actor | S Σ | 1..1 | Reference(US Core Practitioner Profile | US Core PractitionerRole Profile) | The reference to the practitioner
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile) | Organization the device or practitioner was acting for
location | Σ | 0..1 | Reference(Location) | Where the procedure happened
reasonCode | Σ | 0..* | CodeableConcept | Coded reason procedure performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.
reasonReference | Σ | 0..* | Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | The justification that the procedure was performed
bodySite | Σ | 0..* | CodeableConcept | Target body sites Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
outcome | Σ | 0..1 | CodeableConcept | The 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..* | CodeableConcept | Complication 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..* | CodeableConcept | Instructions for follow up Binding: ProcedureFollowUpCodes(SNOMEDCT) (example): Specific follow up required for a procedure e.g. removal of sutures.
note |  | 0..* | Annotation | Additional information about the procedure
focalDevice |  | 0..* | BackboneElement | Manipulated, implanted, or removed device
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
action |  | 0..1 | CodeableConcept | Kind of change to device Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure.
manipulated |  | 1..1 | Reference(Device) | Device that was changed
usedReference |  | 0..* | Reference(Device | Medication | Substance) | Items used during procedure
usedCode |  | 0..* | CodeableConcept | Coded items used during the procedure Binding: FHIRDeviceTypes (example): Codes describing items used during a procedure.
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Procedure |  | 0..* | USCoreProcedureProfile | An action that is being or was performed on a patient
status | ?!Σ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: EventStatus (required)
code | Σ | 1..1 | CodeableConcept | Procedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT Binding: VSAC 2.16.840.1.113762.1.4.1096.214 (preferred)
subject | Σ | 1..1 | Reference(US Core Patient Profile) | Who the procedure was performed on
performed[x] | Σ | 1..1 |  | When the procedure was performed
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
performer | Σ | 0..* | BackboneElement | The people who performed the procedure
actor | Σ | 1..1 | Reference(US Core Practitioner Profile | US Core PractitionerRole Profile) | The reference to the practitioner
onBehalfOf |  | 0..1 | Reference(US Core Organization Profile) | Organization the device or practitioner was acting for
Documentation for this format

This structure is derived from USCoreProcedureProfile

Summary

Must-Support: 3 elements

Structures

This structure refers to these other structures:

- http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
- http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
- http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization

Differential View

This structure is derived from USCoreProcedureProfile

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Procedure |  | 0..* | USCoreProcedureProfile | An action that is being or was performed on a patient
code | S | 1..1 | CodeableConcept | Procedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT Binding: VSAC 2.16.840.1.113762.1.4.1096.214 (preferred)
performer |  |  |  |
actor | S | 1..1 | Reference(US Core Practitioner Profile | US Core PractitionerRole Profile) | The reference to the practitioner
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile) | Organization the device or practitioner was acting for
Documentation for this format

Snapshot View

Name | Flags | Card. | Type | Description & Constraints
--- | --- | --- | --- | ---
Procedure |  | 0..* | USCoreProcedureProfile | An action that is being or was performed on a patient
id | Σ | 0..1 | string | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred) Max Binding: AllLanguages: A human language.
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | External Identifiers for this procedure
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition
instantiatesUri | Σ | 0..* | uri | Instantiates 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..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: EventStatus (required)
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: ProcedureNotPerformedReason(SNOMED-CT) (example): A code that identifies the reason a procedure was not performed.
category | Σ | 0..1 | CodeableConcept | Classification of the procedure Binding: ProcedureCategoryCodes(SNOMEDCT) (example): A code that classifies a procedure for searching, sorting and display purposes.
code | S Σ | 1..1 | CodeableConcept | Procedure codes from SNOMED CT, CPT, HCPCS II, ICD-10PC, or CDT Binding: VSAC 2.16.840.1.113762.1.4.1096.214 (preferred)
subject | S Σ | 1..1 | Reference(US Core Patient Profile) | Who the procedure was performed on
encounter | Σ | 0..1 | Reference(Encounter) | Encounter created as part of
performed[x] | S Σ | 1..1 |  | When the procedure was performed
performedDateTime |  |  | dateTime |
performedPeriod |  |  | Period |
recorder | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Who recorded the procedure
asserter | Σ | 0..1 | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | Person who asserts this procedure
performer | Σ | 0..* | BackboneElement | The people who performed the procedure
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
function | Σ | 0..1 | CodeableConcept | Type of performance Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.
actor | S Σ | 1..1 | Reference(US Core Practitioner Profile | US Core PractitionerRole Profile) | The reference to the practitioner
onBehalfOf | S | 0..1 | Reference(US Core Organization Profile) | Organization the device or practitioner was acting for
location | Σ | 0..1 | Reference(Location) | Where the procedure happened
reasonCode | Σ | 0..* | CodeableConcept | Coded reason procedure performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.
reasonReference | Σ | 0..* | Reference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference) | The justification that the procedure was performed
bodySite | Σ | 0..* | CodeableConcept | Target body sites Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
outcome | Σ | 0..1 | CodeableConcept | The 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..* | CodeableConcept | Complication 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..* | CodeableConcept | Instructions for follow up Binding: ProcedureFollowUpCodes(SNOMEDCT) (example): Specific follow up required for a procedure e.g. removal of sutures.
note |  | 0..* | Annotation | Additional information about the procedure
focalDevice |  | 0..* | BackboneElement | Manipulated, implanted, or removed device
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
action |  | 0..1 | CodeableConcept | Kind of change to device Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure.
manipulated |  | 1..1 | Reference(Device) | Device that was changed
usedReference |  | 0..* | Reference(Device | Medication | Substance) | Items used during procedure
usedCode |  | 0..* | CodeableConcept | Coded items used during the procedure Binding: FHIRDeviceTypes (example): Codes describing items used during a procedure.
Documentation for this format

Other representations of profile: Schematron

#### Terminology Bindings

Path | Conformance | ValueSet
Procedure.language | preferred | CommonLanguages Max Binding: AllLanguages
Procedure.status | required | EventStatus
Procedure.statusReason | example | ProcedureNotPerformedReason(SNOMED-CT)
Procedure.category | example | ProcedureCategoryCodes(SNOMEDCT)
Procedure.code | preferred | http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1096.214
Procedure.performer.function | example | ProcedurePerformerRoleCodes
Procedure.reasonCode | example | ProcedureReasonCodes
Procedure.bodySite | example | SNOMEDCTBodyStructures
Procedure.outcome | example | ProcedureOutcomeCodes(SNOMEDCT)
Procedure.complication | example | Condition/Problem/DiagnosisCodes
Procedure.followUp | example | ProcedureFollowUpCodes(SNOMEDCT)
Procedure.focalDevice.action | preferred | ProcedureDeviceActionCodes
Procedure.usedCode | example | FHIRDeviceTypes

#### Constraints

Id | Path | Details | Requirements
dom-2 | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | Procedure | 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 : 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-4 | Procedure | If 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-5 | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | Procedure | A resource should have narrative for robust management : text.`div`.exists() |
ele-1 | Procedure.meta | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.implicitRules | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.language | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.text | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | Procedure.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | Procedure.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | Procedure.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | Procedure.identifier | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.instantiatesCanonical | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.instantiatesUri | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.basedOn | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.partOf | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.status | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.statusReason | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.category | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.code | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.subject | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.encounter | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.performed[x] | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.recorder | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.asserter | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.performer | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.performer.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | Procedure.performer.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | Procedure.performer.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | Procedure.performer.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | Procedure.performer.function | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.performer.actor | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.performer.onBehalfOf | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.location | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.reasonCode | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.reasonReference | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.bodySite | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.outcome | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.report | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.complication | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.complicationDetail | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.followUp | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.note | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.focalDevice | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.focalDevice.extension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | Procedure.focalDevice.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | Procedure.focalDevice.modifierExtension | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ext-1 | Procedure.focalDevice.modifierExtension | Must have either extensions or value[x], not both : extension.exists() != value.exists() |
ele-1 | Procedure.focalDevice.action | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.focalDevice.manipulated | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.usedReference | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |
ele-1 | Procedure.usedCode | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) |