Uzbekistan Digital Health Platform
0.5.0 - ci-build
Uzbekistan Digital Health Platform, published by Ministry of Health of the Republic of Uzbekistan. This guide is not an authorized publication; it is the continuous build for version 0.5.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/uzinfocom-org/digital-health-ig/ and changes regularly. See the Directory of published versions
| Official URL: https://dhp.uz/fhir/core/StructureDefinition/uz-core-procedure | Version: 0.5.0 | ||||
| Active as of 2025-08-18 | Computable Name: UZCoreProcedure | ||||
Uzbekistan Core Procedure Profile, used for documenting an action that is or was performed on or for a patient, practitioner, device, organization, or location.
UZ Core Procedure records an action performed on or for a patient on the Digital Health Platform - a surgical operation, a therapy session, a diagnostic intervention, and the like. A Procedure is anchored to its Patient and to the Encounter in which it took place. When the procedure was ordered, it links back to the originating ServiceRequest (or CarePlan), and may reference the Condition or finding that justified it.
The elements below must always be present (mandatory) or must be supported when the data is available (Must Support) - not all are required, but your system must populate each Must Support element when it has the data and process it on receipt. This is the human-readable summary; the formal views below give the exact cardinalities, types, and terminology bindings.
This profile adds no mandatory cardinality of its own. The required elements are inherited from the base resource: a status (preparation | in-progress | completed | not-done …) and a subject (the patient or other target the procedure was performed on).
Set
statustonot-done(rather than omitting the Procedure) when an ordered procedure was deliberately not performed, so the decision stays on the record.
The examples below go from the smallest instance the server will accept to a full procedure record. Copy one and adapt it - every value shown validates against this profile. The complete reference instance is the example Procedure.
A Procedure's mandatory elements are status (a required binding: preparation | in-progress | completed | not-done …) and subject (a plain reference to the Patient it was performed on), but it is only useful once it also says what was done. Add the code (a required binding to the DHP procedure-code value set, here a SNOMED CT code) and, in practice, the encounter it took place in and when it happened (occurrence[x]). Every UZ Core resource must also name the profile in meta.profile:
{
"resourceType": "Procedure",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-procedure"] },
"status": "completed",
"code": {
"coding": [{ "system": "http://snomed.info/sct", "code": "386438000", "display": "Simple massage" }],
"text": "Therapeutic massage of right foot"
},
"subject": { "reference": "Patient/example-david" },
"encounter": { "reference": "Encounter/example-encounter" },
"occurrencePeriod": { "start": "2025-05-15T08:00:00Z", "end": "2025-05-15T10:00:00Z" }
}
subject and encounter are plain references ({ "reference": "Type/id" }). The occurrence is a choice element: use occurrencePeriod for a procedure with a start and end, or occurrenceDateTime for a single point in time.
Fill in the elements the platform expects you to support: an identifier, the category that groups the procedure, who carried it out (performer.actor, referencing a Practitioner or PractitionerRole), where it took place (location, a Location), and the audit trail of when it was set down (recorded) and by whom (recorder):
{
"resourceType": "Procedure",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-procedure"] },
"identifier": [
{ "system": "https://mis.dmed.uz", "value": "proc-0001" }
],
"status": "completed",
"category": [
{ "text": "Physical therapy procedure" }
],
"code": {
"coding": [{ "system": "http://snomed.info/sct", "code": "386438000", "display": "Simple massage" }],
"text": "Therapeutic massage of right foot"
},
"subject": { "reference": "Patient/example-david", "display": "David Davidov" },
"encounter": { "reference": "Encounter/example-encounter", "display": "Outpatient Visit" },
"occurrencePeriod": { "start": "2025-05-15T08:00:00Z", "end": "2025-05-15T10:00:00Z" },
"recorded": "2025-05-19T09:30:00Z",
"recorder": { "reference": "PractitionerRole/example-practitionerrole" },
"performer": [
{ "actor": { "reference": "Practitioner/example-practitioner", "display": "Paul Ivanov, PT" } }
],
"location": { "reference": "Location/example-location", "display": "Toshkent shahar 1-sonli shifoxona" }
}
recorder, performer.actor and location are all plain references. The recorded instant is when the record was entered, which need not match the occurrence[x] time the procedure actually happened.
To close the clinical loop, link back to the order that prompted the procedure (basedOn, a CarePlan or ServiceRequest), say why it was done (reason), where on the body (bodySite, a required binding), how it turned out (outcome, an extensible binding), and any free-text note or items used. Note that reason and used are CodeableReference types - the reference sits one level deeper than a plain reference - while bodySite and outcome are coded CodeableConcepts:
{
"resourceType": "Procedure",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-procedure"] },
"status": "completed",
"code": {
"coding": [{ "system": "http://snomed.info/sct", "code": "386438000", "display": "Simple massage" }],
"text": "Therapeutic massage of right foot"
},
"subject": { "reference": "Patient/example-david", "display": "David Davidov" },
"basedOn": [
{ "reference": "CarePlan/example-careplan", "display": "CarePlan #1" }
],
"reason": [
{ "reference": { "reference": "Condition/example-disability", "display": "Aching right foot" } }
],
"bodySite": [
{ "coding": [{ "system": "http://snomed.info/sct", "code": "7769000", "display": "Right foot" }] }
],
"outcome": {
"coding": [{ "system": "http://snomed.info/sct", "code": "385669000", "display": "Successful" }]
},
"note": [
{ "text": "Therapeutic massage of the right foot completed according to the care plan. No adverse reactions noted." }
],
"used": [
{ "reference": { "reference": "Medication/example-medication" } }
]
}
basedOn is a plain reference, but reason and used are CodeableReference - the target nests as { "reference": { "reference": "Type/id" } }. bodySite is a list, since a procedure may touch several sites. See Terminology for the coded bindings.
When an ordered procedure was deliberately not carried out, do not drop the Procedure - record it with status set to not-done so the decision stays on the chart. Capture the reason it was skipped in note (or in the base statusReason):
{
"resourceType": "Procedure",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-procedure"] },
"status": "not-done",
"code": {
"coding": [{ "system": "http://snomed.info/sct", "code": "386438000", "display": "Simple massage" }],
"text": "Therapeutic massage of right foot"
},
"subject": { "reference": "Patient/example-david" },
"note": [
{ "text": "Procedure cancelled - patient declined." }
]
}
See Missing & suppressed data for choosing between a not-done status and other absence mechanisms.
For example API calls and a sample payload, see the Quick Start at the bottom of this page.
Usages:
You can also check for usages in the FHIR IG Statistics
Description Differentials, Snapshots, and other representations.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Procedure(5.0.0) | An action that is being or was performed on an individual or entity | |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
0..* | Resource | Contained, inline Resources | |
![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1 |
![]() ![]() |
SΣ | 0..* | Identifier | External Identifiers for this procedure |
![]() ![]() |
SΣ | 0..* | Reference(CarePlan | ServiceRequest) | A request for this procedure |
![]() ![]() |
SΣ | 0..* | Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) | Part of referenced event |
![]() ![]() |
?!SΣ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: ProcedureEventStatusVS (0.5.0) (required) |
![]() ![]() |
SΣ | 0..* | CodeableConcept | Classification of the procedure Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes. |
![]() ![]() |
SΣ | 0..1 | CodeableConcept | Identification of the procedure Binding: ProcedureCodeVS (0.5.0) (required) |
![]() ![]() |
SΣ | 1..1 | Reference(UZ Core Patient(0.5.0) | Group | Device | UZ Core Practitioner(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Location(0.5.0)) | Individual or entity the procedure was performed on |
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Encounter(0.5.0)) | The Encounter during which this Procedure was created |
![]() ![]() |
SΣ | 0..1 | When the procedure occurred or is occurring | |
![]() ![]() ![]() |
dateTime | |||
![]() ![]() ![]() |
Period | |||
![]() ![]() ![]() |
string | |||
![]() ![]() ![]() |
Age | |||
![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() |
Timing | |||
![]() ![]() |
SΣ | 0..1 | dateTime | When the procedure was first captured in the subject's record |
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0)) | Who recorded the procedure |
![]() ![]() |
SΣC | 0..* | BackboneElement | Who performed the procedure and what they did Constraints: prc-1 |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1 |
![]() ![]() ![]() |
SΣC | 1..1 | Reference(UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | Device | CareTeam | UZ Core HealthcareService(0.5.0)) | Who performed the procedure |
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Location(0.5.0)) | Where the procedure happened |
![]() ![]() |
SΣ | 0..* | CodeableReference(UZ Core Condition(0.5.0) | UZ Core Observation(0.5.0) | UZ Core Procedure(0.5.0) | DiagnosticReport | DocumentReference) | The justification that the procedure was performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required. |
![]() ![]() |
SΣ | 0..* | CodeableConcept | Target body sites Binding: SNOMEDCTBodyStructures (required) |
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The result of procedure Binding: ProcedureOutcomeVS (0.5.0) (extensible) |
![]() ![]() |
S | 0..* | Annotation | Additional information about the procedure |
![]() ![]() |
S | 0..* | CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) | Items used during procedure Binding: DeviceType (example): Codes describing items used during a procedure. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Procedure.status | Base | required | Procedure Event Status translations | 📍0.5.0 | This IG |
| Procedure.category | Base | example | Procedure Category Codes (SNOMED CT) | 📍5.0.0 | FHIR Std. |
| Procedure.code | Base | required | Procedure Code Codes | 📍0.5.0 | This IG |
| Procedure.reason | Base | example | Procedure Reason Codes | 📍5.0.0 | FHIR Std. |
| Procedure.bodySite | Base | required | SNOMED CT Body Structures | 📍5.0.0 | FHIR Std. |
| Procedure.outcome | Base | extensible | Procedure Outcome translations | 📍0.5.0 | This IG |
| Procedure.used | Base | example | Device Type | 📍5.0.0 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | 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().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-4 | error | 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 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Procedure | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Procedure.implicitRules, Procedure.modifierExtension, Procedure.identifier, Procedure.basedOn, Procedure.partOf, Procedure.status, Procedure.category, Procedure.code, Procedure.subject, Procedure.encounter, Procedure.occurrence[x], Procedure.recorded, Procedure.recorder, Procedure.performer, Procedure.performer.modifierExtension, Procedure.performer.actor, Procedure.location, Procedure.reason, Procedure.bodySite, Procedure.outcome, Procedure.note, Procedure.used | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Procedure.modifierExtension, Procedure.performer.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| prc-1 | error | Procedure.performer | Procedure.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()
|
| Path | Status | Usage | ValueSet | Version | Source |
| Procedure.status | Base | required | Procedure Event Status translations | 📍0.5.0 | This IG |
| Procedure.code | Base | required | Procedure Code Codes | 📍0.5.0 | This IG |
| Procedure.bodySite | Base | required | SNOMED CT Body Structures | 📍5.0.0 | FHIR Std. |
| Procedure.outcome | Base | extensible | Procedure Outcome translations | 📍0.5.0 | This IG |
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Procedure(5.0.0) | An action that is being or was performed on an individual or entity | |||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: AllLanguages (required): IETF language tag for a human language
| |||||
![]() ![]() |
0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations Constraints: ext-1 | |||||
![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1 | ||||
![]() ![]() |
SΣ | 0..* | Identifier | External Identifiers for this procedure | ||||
![]() ![]() |
Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition | ||||
![]() ![]() |
Σ | 0..* | uri | Instantiates external protocol or definition | ||||
![]() ![]() |
SΣ | 0..* | Reference(CarePlan | ServiceRequest) | A request for this procedure | ||||
![]() ![]() |
SΣ | 0..* | Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) | Part of referenced event | ||||
![]() ![]() |
?!SΣ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: ProcedureEventStatusVS (0.5.0) (required) | ||||
![]() ![]() |
Σ | 0..1 | CodeableConcept | Reason for current status Binding: ProcedureNotPerformedReasonSNOMEDCT (example): A code that identifies the reason a procedure was not performed. | ||||
![]() ![]() |
SΣ | 0..* | CodeableConcept | Classification of the procedure Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes. | ||||
![]() ![]() |
SΣ | 0..1 | CodeableConcept | Identification of the procedure Binding: ProcedureCodeVS (0.5.0) (required) | ||||
![]() ![]() |
SΣ | 1..1 | Reference(UZ Core Patient(0.5.0) | Group | Device | UZ Core Practitioner(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Location(0.5.0)) | Individual or entity the procedure was performed on | ||||
![]() ![]() |
Σ | 0..1 | Reference(Patient | Group | RelatedPerson | Practitioner | Organization | CareTeam | PractitionerRole | Specimen) | Who is the target of the procedure when it is not the subject of record only | ||||
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Encounter(0.5.0)) | The Encounter during which this Procedure was created | ||||
![]() ![]() |
SΣ | 0..1 | When the procedure occurred or is occurring | |||||
![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() |
Period | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
Age | |||||||
![]() ![]() ![]() |
Range | |||||||
![]() ![]() ![]() |
Timing | |||||||
![]() ![]() |
SΣ | 0..1 | dateTime | When the procedure was first captured in the subject's record | ||||
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0)) | Who recorded the procedure | ||||
![]() ![]() |
Σ | 0..1 | Reported rather than primary record | |||||
![]() ![]() ![]() |
boolean | |||||||
![]() ![]() ![]() |
Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization) | |||||||
![]() ![]() |
SΣC | 0..* | BackboneElement | Who performed the procedure and what they did Constraints: prc-1 | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Constraints: ext-1 | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1 | ||||
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | Type of performance Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure. | ||||
![]() ![]() ![]() |
SΣC | 1..1 | Reference(UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | Device | CareTeam | UZ Core HealthcareService(0.5.0)) | Who performed the procedure | ||||
![]() ![]() ![]() |
C | 0..1 | Reference(Organization) | Organization the device or practitioner was acting for | ||||
![]() ![]() ![]() |
0..1 | Period | When the performer performed the procedure | |||||
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Location(0.5.0)) | Where the procedure happened | ||||
![]() ![]() |
SΣ | 0..* | CodeableReference(UZ Core Condition(0.5.0) | UZ Core Observation(0.5.0) | UZ Core Procedure(0.5.0) | DiagnosticReport | DocumentReference) | The justification that the procedure was performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required. | ||||
![]() ![]() |
SΣ | 0..* | CodeableConcept | Target body sites Binding: SNOMEDCTBodyStructures (required) | ||||
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The result of procedure Binding: ProcedureOutcomeVS (0.5.0) (extensible) | ||||
![]() ![]() |
0..* | Reference(DiagnosticReport | DocumentReference | Composition) | Any report resulting from the procedure | |||||
![]() ![]() |
0..* | CodeableReference(Condition) | Complication following the procedure Binding: ConditionProblemDiagnosisCodes (example): Codes describing complications that resulted from a procedure. | |||||
![]() ![]() |
0..* | CodeableConcept | Instructions for follow up Binding: ProcedureFollowUpCodesSNOMEDCT (example): Specific follow up required for a procedure e.g. removal of sutures. | |||||
![]() ![]() |
S | 0..* | Annotation | Additional information about the procedure | ||||
![]() ![]() |
0..* | BackboneElement | Manipulated, implanted, or removed device | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Constraints: ext-1 | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1 | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | Kind of change to device Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure. | |||||
![]() ![]() ![]() |
1..1 | Reference(Device) | Device that was changed | |||||
![]() ![]() |
S | 0..* | CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) | Items used during procedure Binding: DeviceType (example): Codes describing items used during a procedure. | ||||
![]() ![]() |
0..* | Reference(Resource) | Extra information relevant to the procedure | |||||
Documentation for this format | ||||||||
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | 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().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-4 | error | 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 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Procedure | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Procedure.meta, Procedure.implicitRules, Procedure.language, Procedure.text, Procedure.extension, Procedure.modifierExtension, Procedure.identifier, Procedure.instantiatesCanonical, Procedure.instantiatesUri, Procedure.basedOn, Procedure.partOf, Procedure.status, Procedure.statusReason, Procedure.category, Procedure.code, Procedure.subject, Procedure.focus, Procedure.encounter, Procedure.occurrence[x], Procedure.recorded, Procedure.recorder, Procedure.reported[x], Procedure.performer, Procedure.performer.extension, Procedure.performer.modifierExtension, Procedure.performer.function, Procedure.performer.actor, Procedure.performer.onBehalfOf, Procedure.performer.period, Procedure.location, Procedure.reason, Procedure.bodySite, Procedure.outcome, Procedure.report, Procedure.complication, Procedure.followUp, Procedure.note, Procedure.focalDevice, Procedure.focalDevice.extension, Procedure.focalDevice.modifierExtension, Procedure.focalDevice.action, Procedure.focalDevice.manipulated, Procedure.used, Procedure.supportingInfo | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Procedure.extension, Procedure.modifierExtension, Procedure.performer.extension, Procedure.performer.modifierExtension, Procedure.focalDevice.extension, Procedure.focalDevice.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| prc-1 | error | Procedure.performer | Procedure.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()
|
Summary
Must-Support: 19 elements
Structures
This structure refers to these other structures:
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Procedure(5.0.0) | An action that is being or was performed on an individual or entity | |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
0..* | Resource | Contained, inline Resources | |
![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1 |
![]() ![]() |
SΣ | 0..* | Identifier | External Identifiers for this procedure |
![]() ![]() |
SΣ | 0..* | Reference(CarePlan | ServiceRequest) | A request for this procedure |
![]() ![]() |
SΣ | 0..* | Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) | Part of referenced event |
![]() ![]() |
?!SΣ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: ProcedureEventStatusVS (0.5.0) (required) |
![]() ![]() |
SΣ | 0..* | CodeableConcept | Classification of the procedure Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes. |
![]() ![]() |
SΣ | 0..1 | CodeableConcept | Identification of the procedure Binding: ProcedureCodeVS (0.5.0) (required) |
![]() ![]() |
SΣ | 1..1 | Reference(UZ Core Patient(0.5.0) | Group | Device | UZ Core Practitioner(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Location(0.5.0)) | Individual or entity the procedure was performed on |
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Encounter(0.5.0)) | The Encounter during which this Procedure was created |
![]() ![]() |
SΣ | 0..1 | When the procedure occurred or is occurring | |
![]() ![]() ![]() |
dateTime | |||
![]() ![]() ![]() |
Period | |||
![]() ![]() ![]() |
string | |||
![]() ![]() ![]() |
Age | |||
![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() |
Timing | |||
![]() ![]() |
SΣ | 0..1 | dateTime | When the procedure was first captured in the subject's record |
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0)) | Who recorded the procedure |
![]() ![]() |
SΣC | 0..* | BackboneElement | Who performed the procedure and what they did Constraints: prc-1 |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1 |
![]() ![]() ![]() |
SΣC | 1..1 | Reference(UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | Device | CareTeam | UZ Core HealthcareService(0.5.0)) | Who performed the procedure |
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Location(0.5.0)) | Where the procedure happened |
![]() ![]() |
SΣ | 0..* | CodeableReference(UZ Core Condition(0.5.0) | UZ Core Observation(0.5.0) | UZ Core Procedure(0.5.0) | DiagnosticReport | DocumentReference) | The justification that the procedure was performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required. |
![]() ![]() |
SΣ | 0..* | CodeableConcept | Target body sites Binding: SNOMEDCTBodyStructures (required) |
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The result of procedure Binding: ProcedureOutcomeVS (0.5.0) (extensible) |
![]() ![]() |
S | 0..* | Annotation | Additional information about the procedure |
![]() ![]() |
S | 0..* | CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) | Items used during procedure Binding: DeviceType (example): Codes describing items used during a procedure. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Procedure.status | Base | required | Procedure Event Status translations | 📍0.5.0 | This IG |
| Procedure.category | Base | example | Procedure Category Codes (SNOMED CT) | 📍5.0.0 | FHIR Std. |
| Procedure.code | Base | required | Procedure Code Codes | 📍0.5.0 | This IG |
| Procedure.reason | Base | example | Procedure Reason Codes | 📍5.0.0 | FHIR Std. |
| Procedure.bodySite | Base | required | SNOMED CT Body Structures | 📍5.0.0 | FHIR Std. |
| Procedure.outcome | Base | extensible | Procedure Outcome translations | 📍0.5.0 | This IG |
| Procedure.used | Base | example | Device Type | 📍5.0.0 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | 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().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-4 | error | 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 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Procedure | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Procedure.implicitRules, Procedure.modifierExtension, Procedure.identifier, Procedure.basedOn, Procedure.partOf, Procedure.status, Procedure.category, Procedure.code, Procedure.subject, Procedure.encounter, Procedure.occurrence[x], Procedure.recorded, Procedure.recorder, Procedure.performer, Procedure.performer.modifierExtension, Procedure.performer.actor, Procedure.location, Procedure.reason, Procedure.bodySite, Procedure.outcome, Procedure.note, Procedure.used | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Procedure.modifierExtension, Procedure.performer.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| prc-1 | error | Procedure.performer | Procedure.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()
|
Differential View
| Path | Status | Usage | ValueSet | Version | Source |
| Procedure.status | Base | required | Procedure Event Status translations | 📍0.5.0 | This IG |
| Procedure.code | Base | required | Procedure Code Codes | 📍0.5.0 | This IG |
| Procedure.bodySite | Base | required | SNOMED CT Body Structures | 📍5.0.0 | FHIR Std. |
| Procedure.outcome | Base | extensible | Procedure Outcome translations | 📍0.5.0 | This IG |
Snapshot ViewView
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Procedure(5.0.0) | An action that is being or was performed on an individual or entity | |||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: AllLanguages (required): IETF language tag for a human language
| |||||
![]() ![]() |
0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations Constraints: ext-1 | |||||
![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored Constraints: ext-1 | ||||
![]() ![]() |
SΣ | 0..* | Identifier | External Identifiers for this procedure | ||||
![]() ![]() |
Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition | ||||
![]() ![]() |
Σ | 0..* | uri | Instantiates external protocol or definition | ||||
![]() ![]() |
SΣ | 0..* | Reference(CarePlan | ServiceRequest) | A request for this procedure | ||||
![]() ![]() |
SΣ | 0..* | Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) | Part of referenced event | ||||
![]() ![]() |
?!SΣ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: ProcedureEventStatusVS (0.5.0) (required) | ||||
![]() ![]() |
Σ | 0..1 | CodeableConcept | Reason for current status Binding: ProcedureNotPerformedReasonSNOMEDCT (example): A code that identifies the reason a procedure was not performed. | ||||
![]() ![]() |
SΣ | 0..* | CodeableConcept | Classification of the procedure Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes. | ||||
![]() ![]() |
SΣ | 0..1 | CodeableConcept | Identification of the procedure Binding: ProcedureCodeVS (0.5.0) (required) | ||||
![]() ![]() |
SΣ | 1..1 | Reference(UZ Core Patient(0.5.0) | Group | Device | UZ Core Practitioner(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Location(0.5.0)) | Individual or entity the procedure was performed on | ||||
![]() ![]() |
Σ | 0..1 | Reference(Patient | Group | RelatedPerson | Practitioner | Organization | CareTeam | PractitionerRole | Specimen) | Who is the target of the procedure when it is not the subject of record only | ||||
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Encounter(0.5.0)) | The Encounter during which this Procedure was created | ||||
![]() ![]() |
SΣ | 0..1 | When the procedure occurred or is occurring | |||||
![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() |
Period | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
Age | |||||||
![]() ![]() ![]() |
Range | |||||||
![]() ![]() ![]() |
Timing | |||||||
![]() ![]() |
SΣ | 0..1 | dateTime | When the procedure was first captured in the subject's record | ||||
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0)) | Who recorded the procedure | ||||
![]() ![]() |
Σ | 0..1 | Reported rather than primary record | |||||
![]() ![]() ![]() |
boolean | |||||||
![]() ![]() ![]() |
Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization) | |||||||
![]() ![]() |
SΣC | 0..* | BackboneElement | Who performed the procedure and what they did Constraints: prc-1 | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Constraints: ext-1 | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1 | ||||
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | Type of performance Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure. | ||||
![]() ![]() ![]() |
SΣC | 1..1 | Reference(UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0) | UZ Core Organization(0.5.0) | UZ Core Patient(0.5.0) | UZ Core RelatedPerson(0.5.0) | Device | CareTeam | UZ Core HealthcareService(0.5.0)) | Who performed the procedure | ||||
![]() ![]() ![]() |
C | 0..1 | Reference(Organization) | Organization the device or practitioner was acting for | ||||
![]() ![]() ![]() |
0..1 | Period | When the performer performed the procedure | |||||
![]() ![]() |
SΣ | 0..1 | Reference(UZ Core Location(0.5.0)) | Where the procedure happened | ||||
![]() ![]() |
SΣ | 0..* | CodeableReference(UZ Core Condition(0.5.0) | UZ Core Observation(0.5.0) | UZ Core Procedure(0.5.0) | DiagnosticReport | DocumentReference) | The justification that the procedure was performed Binding: ProcedureReasonCodes (example): A code that identifies the reason a procedure is required. | ||||
![]() ![]() |
SΣ | 0..* | CodeableConcept | Target body sites Binding: SNOMEDCTBodyStructures (required) | ||||
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The result of procedure Binding: ProcedureOutcomeVS (0.5.0) (extensible) | ||||
![]() ![]() |
0..* | Reference(DiagnosticReport | DocumentReference | Composition) | Any report resulting from the procedure | |||||
![]() ![]() |
0..* | CodeableReference(Condition) | Complication following the procedure Binding: ConditionProblemDiagnosisCodes (example): Codes describing complications that resulted from a procedure. | |||||
![]() ![]() |
0..* | CodeableConcept | Instructions for follow up Binding: ProcedureFollowUpCodesSNOMEDCT (example): Specific follow up required for a procedure e.g. removal of sutures. | |||||
![]() ![]() |
S | 0..* | Annotation | Additional information about the procedure | ||||
![]() ![]() |
0..* | BackboneElement | Manipulated, implanted, or removed device | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Constraints: ext-1 | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Constraints: ext-1 | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | Kind of change to device Binding: ProcedureDeviceActionCodes (preferred): A kind of change that happened to the device during the procedure. | |||||
![]() ![]() ![]() |
1..1 | Reference(Device) | Device that was changed | |||||
![]() ![]() |
S | 0..* | CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) | Items used during procedure Binding: DeviceType (example): Codes describing items used during a procedure. | ||||
![]() ![]() |
0..* | Reference(Resource) | Extra information relevant to the procedure | |||||
Documentation for this format | ||||||||
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Procedure | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | 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().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-4 | error | 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 | error | Procedure | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Procedure | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Procedure.meta, Procedure.implicitRules, Procedure.language, Procedure.text, Procedure.extension, Procedure.modifierExtension, Procedure.identifier, Procedure.instantiatesCanonical, Procedure.instantiatesUri, Procedure.basedOn, Procedure.partOf, Procedure.status, Procedure.statusReason, Procedure.category, Procedure.code, Procedure.subject, Procedure.focus, Procedure.encounter, Procedure.occurrence[x], Procedure.recorded, Procedure.recorder, Procedure.reported[x], Procedure.performer, Procedure.performer.extension, Procedure.performer.modifierExtension, Procedure.performer.function, Procedure.performer.actor, Procedure.performer.onBehalfOf, Procedure.performer.period, Procedure.location, Procedure.reason, Procedure.bodySite, Procedure.outcome, Procedure.report, Procedure.complication, Procedure.followUp, Procedure.note, Procedure.focalDevice, Procedure.focalDevice.extension, Procedure.focalDevice.modifierExtension, Procedure.focalDevice.action, Procedure.focalDevice.manipulated, Procedure.used, Procedure.supportingInfo | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Procedure.extension, Procedure.modifierExtension, Procedure.performer.extension, Procedure.performer.modifierExtension, Procedure.focalDevice.extension, Procedure.focalDevice.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| prc-1 | error | Procedure.performer | Procedure.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()
|
Summary
Must-Support: 19 elements
Structures
This structure refers to these other structures:
Other representations of profile: CSV, Excel, Schematron
Common API interactions for this profile. Requests require a JWT access token - see Security and authentication. [base] is the FHIR server base URL; | separates system from value and must be URL-encoded as %7C.
Read by server id
GET [base]/Procedure/[id]
Find procedures
GET [base]/Procedure?patient=Patient/[id]
GET [base]/Procedure?patient=Patient/[id]&code=http://snomed.info/sct%7C386438000
GET [base]/Procedure?patient=Patient/[id]&date=ge2025-01-01
GET [base]/Procedure?encounter=Encounter/[id]
GET [base]/Procedure?patient=Patient/[id]&status=completed
GET [base]/Procedure?based-on=ServiceRequest/[id]
GET [base]/Procedure?performer=Practitioner/[id]
Create
POST [base]/Procedure
{
"resourceType": "Procedure",
"meta": { "profile": [ "https://dhp.uz/fhir/core/StructureDefinition/uz-core-procedure" ] },
"status": "completed",
"code": { ... },
"subject": { "reference": "Patient/[id]" },
"encounter": { "reference": "Encounter/[id]" },
...
}
Update (e.g. move from in-progress to completed, or record an outcome) - PUT the full resource back with the new values:
PUT [base]/Procedure/[id]
If-Match: W/"3" # the ETag from your last read; 412 if it changed since
See the CapabilityStatement for all supported search parameters.