Uzbekistan Digital Health Platform
0.5.0 - ci-build Uzbekistan flag

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

Resource Profile: UZ Core Procedure ( Experimental )

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.

Mandatory and Must Support data elements

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.

Each UZ Core Procedure Must Have

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

Each UZ Core Procedure Must Support

  • an identifier, basedOn (CarePlan or ServiceRequest), and partOf (a parent procedure, observation, or medication administration);
  • the status (required binding) and a category;
  • the code identifying the procedure (required binding to the DHP procedure-code value set);
  • the subject and the encounter it occurred in;
  • the occurrence[x] timing, the recorded date, and the recorder;
  • the performer and their actor;
  • the location, the reason (a condition, observation, procedure, report, or document), and the bodySite (required binding);
  • the outcome (extensible binding) and free-text note;
  • the items used in the procedure.

Set status to not-done (rather than omitting the Procedure) when an ordered procedure was deliberately not performed, so the decision stays on the record.

Building the JSON, step by step

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.

The smallest Procedure you should send

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.

A realistic procedure

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.

Adding the order, reason, body site and outcome

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 the procedure was not performed

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

Formal Views of Profile Content

Description Differentials, Snapshots, and other representations.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Procedure 0..* Procedure(5.0.0) An action that is being or was performed on an individual or entity
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... contained 0..* Resource Contained, inline Resources
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored
Constraints: ext-1
... basedOn SΣ 0..* Reference(CarePlan | ServiceRequest) A request for this procedure
... partOf SΣ 0..* Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) Part of referenced event
... status ?!SΣ 1..1 code preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: ProcedureEventStatusVS (0.5.0) (required)
... category SΣ 0..* CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes.
... code SΣ 0..1 CodeableConcept Identification of the procedure
Binding: ProcedureCodeVS (0.5.0) (required)
... subject 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
... encounter SΣ 0..1 Reference(UZ Core Encounter(0.5.0)) The Encounter during which this Procedure was created
... occurrence[x] SΣ 0..1 When the procedure occurred or is occurring
.... occurrenceDateTime dateTime
.... occurrencePeriod Period
.... occurrenceString string
.... occurrenceAge Age
.... occurrenceRange Range
.... occurrenceTiming Timing
... recorded SΣ 0..1 dateTime When the procedure was first captured in the subject's record
... recorder 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
... performer SΣC 0..* BackboneElement Who performed the procedure and what they did
Constraints: prc-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
Constraints: ext-1
.... actor 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
... location SΣ 0..1 Reference(UZ Core Location(0.5.0)) Where the procedure happened
... reason 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.
... bodySite SΣ 0..* CodeableConcept Target body sites
Binding: SNOMEDCTBodyStructures (required)
... outcome SΣ 0..1 CodeableConcept The result of procedure
Binding: ProcedureOutcomeVS (0.5.0) (extensible)
... note S 0..* Annotation Additional information about the procedure
... used S 0..* CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) Items used during procedure
Binding: DeviceType (example): Codes describing items used during a procedure.

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Procedure 0..* Procedure(5.0.0) An action that is being or was performed on an individual or entity
... identifier S 0..* Identifier External Identifiers for this procedure
... basedOn S 0..* Reference(CarePlan | ServiceRequest) A request for this procedure
... partOf S 0..* Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) Part of referenced event
... category S 0..* CodeableConcept Classification of the procedure
... code S 0..1 CodeableConcept Identification of the procedure
Binding: ProcedureCodeVS (0.5.0) (required)
... subject 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
... encounter S 0..1 Reference(UZ Core Encounter(0.5.0)) The Encounter during which this Procedure was created
... occurrence[x] S 0..1 dateTime, Period, string, Age, Range, Timing When the procedure occurred or is occurring
... recorded S 0..1 dateTime When the procedure was first captured in the subject's record
... recorder 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
... performer S 0..* BackboneElement Who performed the procedure and what they did
.... actor S 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
... location S 0..1 Reference(UZ Core Location(0.5.0)) Where the procedure happened
... reason 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
... bodySite S 0..* CodeableConcept Target body sites
Binding: SNOMEDCTBodyStructures (required)
... outcome S 0..1 CodeableConcept The result of procedure
Binding: ProcedureOutcomeVS (0.5.0) (extensible)
... note S 0..* Annotation Additional information about the procedure
... used S 0..* CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) Items used during procedure

doco Documentation for this format

Terminology Bindings (Differential)

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
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Procedure 0..* Procedure(5.0.0) An action that is being or was performed on an individual or entity
... id Σ 0..1 id 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: AllLanguages (required): IETF language tag for a human language
Additional BindingsPurpose
CommonLanguages Starter
... text 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
Constraints: ext-1
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored
Constraints: ext-1
... identifier SΣ 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 SΣ 0..* Reference(CarePlan | ServiceRequest) A request for this procedure
... partOf SΣ 0..* Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) Part of referenced event
... status ?!SΣ 1..1 code preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: ProcedureEventStatusVS (0.5.0) (required)
... statusReason Σ 0..1 CodeableConcept Reason for current status
Binding: ProcedureNotPerformedReasonSNOMEDCT (example): A code that identifies the reason a procedure was not performed.
... category SΣ 0..* CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes.
... code SΣ 0..1 CodeableConcept Identification of the procedure
Binding: ProcedureCodeVS (0.5.0) (required)
... subject 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
... focus Σ 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
... encounter SΣ 0..1 Reference(UZ Core Encounter(0.5.0)) The Encounter during which this Procedure was created
... occurrence[x] SΣ 0..1 When the procedure occurred or is occurring
.... occurrenceDateTime dateTime
.... occurrencePeriod Period
.... occurrenceString string
.... occurrenceAge Age
.... occurrenceRange Range
.... occurrenceTiming Timing
... recorded SΣ 0..1 dateTime When the procedure was first captured in the subject's record
... recorder 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
... reported[x] Σ 0..1 Reported rather than primary record
.... reportedBoolean boolean
.... reportedReference Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization)
... performer SΣC 0..* BackboneElement Who performed the procedure and what they did
Constraints: prc-1
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Constraints: ext-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
Constraints: ext-1
.... function Σ 0..1 CodeableConcept Type of performance
Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.
.... actor 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
.... onBehalfOf C 0..1 Reference(Organization) Organization the device or practitioner was acting for
.... period 0..1 Period When the performer performed the procedure
... location SΣ 0..1 Reference(UZ Core Location(0.5.0)) Where the procedure happened
... reason 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.
... bodySite SΣ 0..* CodeableConcept Target body sites
Binding: SNOMEDCTBodyStructures (required)
... outcome SΣ 0..1 CodeableConcept The result of procedure
Binding: ProcedureOutcomeVS (0.5.0) (extensible)
... 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..* CodeableConcept Instructions for follow up
Binding: ProcedureFollowUpCodesSNOMEDCT (example): Specific follow up required for a procedure e.g. removal of sutures.
... note S 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
Constraints: ext-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
Constraints: ext-1
.... 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
... used S 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

Path Status Usage ValueSet Version Source
Procedure.language Base required All Languages 📍5.0.0 FHIR Std.
Procedure.status Base required Procedure Event Status translations 📍0.5.0 This IG
Procedure.statusReason Base example Procedure Not Performed Reason (SNOMED-CT) 📍5.0.0 FHIR Std.
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.performer.​function Base example Procedure Performer Role Codes 📍5.0.0 FHIR Std.
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.complication Base example Condition/Problem/Diagnosis Codes 📍5.0.0 FHIR Std.
Procedure.followUp Base example Procedure Follow up Codes (SNOMED CT) 📍5.0.0 FHIR Std.
Procedure.focalDevice.​action Base preferred Procedure Device Action Codes 📍5.0.0 FHIR Std.
Procedure.used Base example Device Type 📍5.0.0 FHIR Std.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Procedure 0..* Procedure(5.0.0) An action that is being or was performed on an individual or entity
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... contained 0..* Resource Contained, inline Resources
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored
Constraints: ext-1
... basedOn SΣ 0..* Reference(CarePlan | ServiceRequest) A request for this procedure
... partOf SΣ 0..* Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) Part of referenced event
... status ?!SΣ 1..1 code preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: ProcedureEventStatusVS (0.5.0) (required)
... category SΣ 0..* CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes.
... code SΣ 0..1 CodeableConcept Identification of the procedure
Binding: ProcedureCodeVS (0.5.0) (required)
... subject 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
... encounter SΣ 0..1 Reference(UZ Core Encounter(0.5.0)) The Encounter during which this Procedure was created
... occurrence[x] SΣ 0..1 When the procedure occurred or is occurring
.... occurrenceDateTime dateTime
.... occurrencePeriod Period
.... occurrenceString string
.... occurrenceAge Age
.... occurrenceRange Range
.... occurrenceTiming Timing
... recorded SΣ 0..1 dateTime When the procedure was first captured in the subject's record
... recorder 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
... performer SΣC 0..* BackboneElement Who performed the procedure and what they did
Constraints: prc-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
Constraints: ext-1
.... actor 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
... location SΣ 0..1 Reference(UZ Core Location(0.5.0)) Where the procedure happened
... reason 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.
... bodySite SΣ 0..* CodeableConcept Target body sites
Binding: SNOMEDCTBodyStructures (required)
... outcome SΣ 0..1 CodeableConcept The result of procedure
Binding: ProcedureOutcomeVS (0.5.0) (extensible)
... note S 0..* Annotation Additional information about the procedure
... used S 0..* CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) Items used during procedure
Binding: DeviceType (example): Codes describing items used during a procedure.

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Procedure 0..* Procedure(5.0.0) An action that is being or was performed on an individual or entity
... identifier S 0..* Identifier External Identifiers for this procedure
... basedOn S 0..* Reference(CarePlan | ServiceRequest) A request for this procedure
... partOf S 0..* Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) Part of referenced event
... category S 0..* CodeableConcept Classification of the procedure
... code S 0..1 CodeableConcept Identification of the procedure
Binding: ProcedureCodeVS (0.5.0) (required)
... subject 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
... encounter S 0..1 Reference(UZ Core Encounter(0.5.0)) The Encounter during which this Procedure was created
... occurrence[x] S 0..1 dateTime, Period, string, Age, Range, Timing When the procedure occurred or is occurring
... recorded S 0..1 dateTime When the procedure was first captured in the subject's record
... recorder 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
... performer S 0..* BackboneElement Who performed the procedure and what they did
.... actor S 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
... location S 0..1 Reference(UZ Core Location(0.5.0)) Where the procedure happened
... reason 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
... bodySite S 0..* CodeableConcept Target body sites
Binding: SNOMEDCTBodyStructures (required)
... outcome S 0..1 CodeableConcept The result of procedure
Binding: ProcedureOutcomeVS (0.5.0) (extensible)
... note S 0..* Annotation Additional information about the procedure
... used S 0..* CodeableReference(Device | Medication | Substance | BiologicallyDerivedProduct) Items used during procedure

doco Documentation for this format

Terminology Bindings (Differential)

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Procedure 0..* Procedure(5.0.0) An action that is being or was performed on an individual or entity
... id Σ 0..1 id 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: AllLanguages (required): IETF language tag for a human language
Additional BindingsPurpose
CommonLanguages Starter
... text 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
Constraints: ext-1
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored
Constraints: ext-1
... identifier SΣ 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 SΣ 0..* Reference(CarePlan | ServiceRequest) A request for this procedure
... partOf SΣ 0..* Reference(UZ Core Procedure(0.5.0) | UZ Core Observation(0.5.0) | MedicationAdministration) Part of referenced event
... status ?!SΣ 1..1 code preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: ProcedureEventStatusVS (0.5.0) (required)
... statusReason Σ 0..1 CodeableConcept Reason for current status
Binding: ProcedureNotPerformedReasonSNOMEDCT (example): A code that identifies the reason a procedure was not performed.
... category SΣ 0..* CodeableConcept Classification of the procedure
Binding: ProcedureCategoryCodesSNOMEDCT (example): A code that classifies a procedure for searching, sorting and display purposes.
... code SΣ 0..1 CodeableConcept Identification of the procedure
Binding: ProcedureCodeVS (0.5.0) (required)
... subject 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
... focus Σ 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
... encounter SΣ 0..1 Reference(UZ Core Encounter(0.5.0)) The Encounter during which this Procedure was created
... occurrence[x] SΣ 0..1 When the procedure occurred or is occurring
.... occurrenceDateTime dateTime
.... occurrencePeriod Period
.... occurrenceString string
.... occurrenceAge Age
.... occurrenceRange Range
.... occurrenceTiming Timing
... recorded SΣ 0..1 dateTime When the procedure was first captured in the subject's record
... recorder 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
... reported[x] Σ 0..1 Reported rather than primary record
.... reportedBoolean boolean
.... reportedReference Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization)
... performer SΣC 0..* BackboneElement Who performed the procedure and what they did
Constraints: prc-1
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Constraints: ext-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
Constraints: ext-1
.... function Σ 0..1 CodeableConcept Type of performance
Binding: ProcedurePerformerRoleCodes (example): A code that identifies the role of a performer of the procedure.
.... actor 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
.... onBehalfOf C 0..1 Reference(Organization) Organization the device or practitioner was acting for
.... period 0..1 Period When the performer performed the procedure
... location SΣ 0..1 Reference(UZ Core Location(0.5.0)) Where the procedure happened
... reason 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.
... bodySite SΣ 0..* CodeableConcept Target body sites
Binding: SNOMEDCTBodyStructures (required)
... outcome SΣ 0..1 CodeableConcept The result of procedure
Binding: ProcedureOutcomeVS (0.5.0) (extensible)
... 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..* CodeableConcept Instructions for follow up
Binding: ProcedureFollowUpCodesSNOMEDCT (example): Specific follow up required for a procedure e.g. removal of sutures.
... note S 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
Constraints: ext-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
Constraints: ext-1
.... 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
... used S 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

Path Status Usage ValueSet Version Source
Procedure.language Base required All Languages 📍5.0.0 FHIR Std.
Procedure.status Base required Procedure Event Status translations 📍0.5.0 This IG
Procedure.statusReason Base example Procedure Not Performed Reason (SNOMED-CT) 📍5.0.0 FHIR Std.
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.performer.​function Base example Procedure Performer Role Codes 📍5.0.0 FHIR Std.
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.complication Base example Condition/Problem/Diagnosis Codes 📍5.0.0 FHIR Std.
Procedure.followUp Base example Procedure Follow up Codes (SNOMED CT) 📍5.0.0 FHIR Std.
Procedure.focalDevice.​action Base preferred Procedure Device Action Codes 📍5.0.0 FHIR Std.
Procedure.used Base example Device Type 📍5.0.0 FHIR Std.

Constraints

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

Quick Start

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.