Pharmaceutical Quality (Industry)
1.0.0-ballot - ballot International flag

This page is part of the Pharmaceutical Quality (Industry) (v1.0.0-ballot: STU1 Ballot 1) based on FHIR (HL7® FHIR® Standard) v5.0.0. . For a full list of available versions, see the Directory of published versions

Resource Profile: Procedure - Drug

Official URL: http://hl7.org/fhir/uv/pharm-quality/StructureDefinition/Procedure-drug-pq Version: 1.0.0-ballot
Active as of 2023-12-18 Computable Name: ProcedureDrugPq

This Procedure profile represents the actual performance of a manufacturing step, so that measurements can be recorded (via Observations), such as the actual “hold time” used, or the “bioburden” at the beginning or end of the step. The Procedure may record which device was used in the performance of a manufacturing step.

Usage:

Formal Views of Profile Content

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

This structure is derived from Procedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on an individual or entity
... identifier S0..*IdentifierExternal Identifiers for this procedure
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
... code S0..1CodeableConceptIdentification of the procedure
Binding: ValueSet - Process Validation Procedure (example)
... performer S0..*BackboneElementWho performed the procedure and what they did

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSet
Procedure.codeexampleVsProcessValidationProcedurePQ (a valid code from CodeSystem - Example Local Codes - Drug)
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on an individual or entity
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... contained 0..*ResourceContained, inline Resources
... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
... 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.

... code SΣ0..1CodeableConceptIdentification of the procedure
Binding: ValueSet - Process Validation Procedure (example)
... subject SΣ1..1Reference(Patient | Group | Device | Practitioner | Organization | Location)Individual or entity the procedure was performed on
... performer SΣC0..*BackboneElementWho performed the procedure and what they did
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... actor ΣC1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device | CareTeam | HealthcareService)Who performed the procedure

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Procedure.statusrequiredEventStatus
Procedure.codeexampleVsProcessValidationProcedurePQ (a valid code from CodeSystem - Example Local Codes - Drug)

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(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()
prc-1errorProcedure.performerProcedure.performer.onBehalfOf can only be populated when performer.actor isn't Practitioner or PractitionerRole
: onBehalfOf.exists() and actor.resolve().exists() implies actor.resolve().where($this is Practitioner or $this is PractitionerRole).empty()
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on an individual or entity
... 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: AllLanguages (required): IETF language tag for a human language

Additional BindingsPurpose
CommonLanguagesStarter Set
... 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 SΣ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 Σ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReasonSNOMEDCT (example): A code that identifies the reason a procedure was not performed.

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


... code SΣ0..1CodeableConceptIdentification of the procedure
Binding: ValueSet - Process Validation Procedure (example)
... subject SΣ1..1Reference(Patient | Group | Device | Practitioner | Organization | Location)Individual or entity the procedure was performed on
... focus Σ0..1Reference(Patient | Group | RelatedPerson | Practitioner | Organization | CareTeam | PractitionerRole | Specimen)Who is the target of the procedure when it is not the subject of record only
... encounter Σ0..1Reference(Encounter)The Encounter during which this Procedure was created
... occurrence[x] Σ0..1When the procedure occurred or is occurring
.... occurrenceDateTimedateTime
.... occurrencePeriodPeriod
.... occurrenceStringstring
.... occurrenceAgeAge
.... occurrenceRangeRange
.... occurrenceTimingTiming
... recorded Σ0..1dateTimeWhen the procedure was first captured in the subject's record
... recorder Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... reported[x] Σ0..1Reported rather than primary record
.... reportedBooleanboolean
.... reportedReferenceReference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization)
... performer SΣC0..*BackboneElementWho performed the procedure and what they did
.... 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 ΣC1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device | CareTeam | HealthcareService)Who performed the procedure
.... onBehalfOf C0..1Reference(Organization)Organization the device or practitioner was acting for
.... period 0..1PeriodWhen the performer performed the procedure
... location Σ0..1Reference(Location)Where the procedure happened
... reason Σ0..*CodeableReference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... bodySite Σ0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example): SNOMED CT Body site concepts


... outcome Σ0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodesSNOMEDCT (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..*CodeableReference(Condition)Complication following the procedure
Binding: ConditionProblemDiagnosisCodes (example): Codes describing complications that resulted from a procedure.


... followUp 0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodesSNOMEDCT (example): Specific follow up required for a procedure e.g. removal of sutures.


... note 0..*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
... used 0..*CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct)Items used during procedure
Binding: DeviceType (example): Codes describing items used during a procedure.


... supportingInfo 0..*Reference(Resource)Extra information relevant to the procedure

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Procedure.languagerequiredAllLanguages
Procedure.statusrequiredEventStatus
Procedure.statusReasonexampleProcedureNotPerformedReasonSNOMEDCT
Procedure.categoryexampleProcedureCategoryCodesSNOMEDCT
Procedure.codeexampleVsProcessValidationProcedurePQ (a valid code from CodeSystem - Example Local Codes - Drug)
Procedure.performer.functionexampleProcedurePerformerRoleCodes
Procedure.reasonexampleProcedureReasonCodes
Procedure.bodySiteexampleSNOMEDCTBodyStructures
Procedure.outcomeexampleProcedureOutcomeCodesSNOMEDCT
Procedure.complicationexampleConditionProblemDiagnosisCodes
Procedure.followUpexampleProcedureFollowUpCodesSNOMEDCT
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes
Procedure.usedexampleDeviceType

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(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()
prc-1errorProcedure.performerProcedure.performer.onBehalfOf can only be populated when performer.actor isn't Practitioner or PractitionerRole
: onBehalfOf.exists() and actor.resolve().exists() implies actor.resolve().where($this is Practitioner or $this is PractitionerRole).empty()

This structure is derived from Procedure

Summary

Must-Support: 5 elements

Differential View

This structure is derived from Procedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on an individual or entity
... identifier S0..*IdentifierExternal Identifiers for this procedure
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
... code S0..1CodeableConceptIdentification of the procedure
Binding: ValueSet - Process Validation Procedure (example)
... performer S0..*BackboneElementWho performed the procedure and what they did

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSet
Procedure.codeexampleVsProcessValidationProcedurePQ (a valid code from CodeSystem - Example Local Codes - Drug)

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on an individual or entity
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... contained 0..*ResourceContained, inline Resources
... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
... 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.

... code SΣ0..1CodeableConceptIdentification of the procedure
Binding: ValueSet - Process Validation Procedure (example)
... subject SΣ1..1Reference(Patient | Group | Device | Practitioner | Organization | Location)Individual or entity the procedure was performed on
... performer SΣC0..*BackboneElementWho performed the procedure and what they did
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... actor ΣC1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device | CareTeam | HealthcareService)Who performed the procedure

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Procedure.statusrequiredEventStatus
Procedure.codeexampleVsProcessValidationProcedurePQ (a valid code from CodeSystem - Example Local Codes - Drug)

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(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()
prc-1errorProcedure.performerProcedure.performer.onBehalfOf can only be populated when performer.actor isn't Practitioner or PractitionerRole
: onBehalfOf.exists() and actor.resolve().exists() implies actor.resolve().where($this is Practitioner or $this is PractitionerRole).empty()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on an individual or entity
... 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: AllLanguages (required): IETF language tag for a human language

Additional BindingsPurpose
CommonLanguagesStarter Set
... 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 SΣ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 Σ0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReasonSNOMEDCT (example): A code that identifies the reason a procedure was not performed.

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


... code SΣ0..1CodeableConceptIdentification of the procedure
Binding: ValueSet - Process Validation Procedure (example)
... subject SΣ1..1Reference(Patient | Group | Device | Practitioner | Organization | Location)Individual or entity the procedure was performed on
... focus Σ0..1Reference(Patient | Group | RelatedPerson | Practitioner | Organization | CareTeam | PractitionerRole | Specimen)Who is the target of the procedure when it is not the subject of record only
... encounter Σ0..1Reference(Encounter)The Encounter during which this Procedure was created
... occurrence[x] Σ0..1When the procedure occurred or is occurring
.... occurrenceDateTimedateTime
.... occurrencePeriodPeriod
.... occurrenceStringstring
.... occurrenceAgeAge
.... occurrenceRangeRange
.... occurrenceTimingTiming
... recorded Σ0..1dateTimeWhen the procedure was first captured in the subject's record
... recorder Σ0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole)Who recorded the procedure
... reported[x] Σ0..1Reported rather than primary record
.... reportedBooleanboolean
.... reportedReferenceReference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization)
... performer SΣC0..*BackboneElementWho performed the procedure and what they did
.... 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 ΣC1..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device | CareTeam | HealthcareService)Who performed the procedure
.... onBehalfOf C0..1Reference(Organization)Organization the device or practitioner was acting for
.... period 0..1PeriodWhen the performer performed the procedure
... location Σ0..1Reference(Location)Where the procedure happened
... reason Σ0..*CodeableReference(Condition | Observation | Procedure | DiagnosticReport | DocumentReference)The justification that the procedure was performed
Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required.


... bodySite Σ0..*CodeableConceptTarget body sites
Binding: SNOMEDCTBodyStructures (example): SNOMED CT Body site concepts


... outcome Σ0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodesSNOMEDCT (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..*CodeableReference(Condition)Complication following the procedure
Binding: ConditionProblemDiagnosisCodes (example): Codes describing complications that resulted from a procedure.


... followUp 0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodesSNOMEDCT (example): Specific follow up required for a procedure e.g. removal of sutures.


... note 0..*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
... used 0..*CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct)Items used during procedure
Binding: DeviceType (example): Codes describing items used during a procedure.


... supportingInfo 0..*Reference(Resource)Extra information relevant to the procedure

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Procedure.languagerequiredAllLanguages
Procedure.statusrequiredEventStatus
Procedure.statusReasonexampleProcedureNotPerformedReasonSNOMEDCT
Procedure.categoryexampleProcedureCategoryCodesSNOMEDCT
Procedure.codeexampleVsProcessValidationProcedurePQ (a valid code from CodeSystem - Example Local Codes - Drug)
Procedure.performer.functionexampleProcedurePerformerRoleCodes
Procedure.reasonexampleProcedureReasonCodes
Procedure.bodySiteexampleSNOMEDCTBodyStructures
Procedure.outcomeexampleProcedureOutcomeCodesSNOMEDCT
Procedure.complicationexampleConditionProblemDiagnosisCodes
Procedure.followUpexampleProcedureFollowUpCodesSNOMEDCT
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes
Procedure.usedexampleDeviceType

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(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()
prc-1errorProcedure.performerProcedure.performer.onBehalfOf can only be populated when performer.actor isn't Practitioner or PractitionerRole
: onBehalfOf.exists() and actor.resolve().exists() implies actor.resolve().where($this is Practitioner or $this is PractitionerRole).empty()

This structure is derived from Procedure

Summary

Must-Support: 5 elements

 

Other representations of profile: CSV, Excel, Schematron