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-immunization | Version: 0.5.0 | ||||
| Active as of 2025-08-01 | Computable Name: UZCoreImmunization | ||||
Uzbekistan Core Immunization profile, used to represent immunization events
UZ Core Immunization records a single vaccine dose - whether it was administered or deliberately not given - for a patient on the Digital Health Platform. It captures what vaccine was given, the product, batch and dose, when and where it happened, who administered it, the protocol that was followed, and any reaction. It references the Patient who was vaccinated and the administering Practitioner or PractitionerRole, and it may be linked back to the ImmunizationRecommendation that prompted it. A dose is uniquely identified by patient + vaccine code + occurrence + lot number, so the same dose is not recorded twice.
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.
Every Immunization must carry a status - completed (the dose was administered), not-done (a medical exemption or refusal, in which case give the status reason), or entered-in-error - the vaccine code saying which vaccine was given (or would have been), the patient the record is about, and an occurrence (the date it was administered, as a date/time, or a string when only an approximate date is known). Where a performer is recorded, the actor who administered the dose is mandatory, and where a protocol is recorded, so is the dose number within the series.
not-done record), the administered product, manufacturer lot number and expiry date, and the dose quantity;Use
status = not-donewith a status reason to record an exemption or refusal - do not omit the record. Reserveentered-in-errorfor records created by mistake.
The examples below go from the smallest instance the server will accept to a full immunization record with protocol and reaction. Copy one and adapt it - every value shown validates against this profile. The complete reference instances are linked at the bottom of the page (BCG dose, measles dose).
Four elements are mandatory: status, vaccineCode, patient, and an occurrence. The vaccine code may be a CVX code or an Australian Immunisation Register (AIR) code; the occurrence is usually a occurrenceDateTime. Every UZ Core resource must also name the profile it claims to conform to in meta.profile. This much already passes validation:
{
"resourceType": "Immunization",
"meta": { "profile": [ "https://dhp.uz/fhir/core/StructureDefinition/uz-core-immunization" ] },
"status": "completed",
"vaccineCode": {
"coding": [
{
"system": "http://hl7.org/fhir/sid/cvx",
"code": "03",
"display": "measles, mumps and rubella virus vaccine"
}
]
},
"patient": { "reference": "Patient/example-emma" },
"occurrenceDateTime": "2024-01-10"
}
status is bound required to completed / not-done / entered-in-error. vaccineCode uses an extensible binding to the vaccine code value set - CVX (http://hl7.org/fhir/sid/cvx) and the Australian Immunisation Register (AIR) are the systems in use. When only an approximate date is known, send occurrenceString instead of occurrenceDateTime.
In practice you record the product detail and the administration: a CVX vaccineCode, the lotNumber and expirationDate, the encounter and location, the site and route, the doseQuantity, and the performer who gave the dose. vaccineCode is a plain CodeableConcept, but performer.actor is a plain Reference:
{
"resourceType": "Immunization",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-immunization"] },
"status": "completed",
"vaccineCode": {
"coding": [{ "system": "http://hl7.org/fhir/sid/cvx", "code": "19", "display": "Bacillus Calmette-Guerin vaccine" }]
},
"patient": { "reference": "Patient/example-salim" },
"encounter": { "reference": "Encounter/example-encounter" },
"occurrenceDateTime": "2026-04-28T10:30:00+05:00",
"primarySource": true,
"lotNumber": "LOT-BCG-2026-01",
"expirationDate": "2027-01-31",
"location": { "reference": "Location/example-location-1" },
"site": {
"coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite", "code": "LA", "display": "Left arm" }]
},
"route": {
"coding": [{ "system": "http://snomed.info/sct", "code": "36673005", "display": "Intradermal injection" }]
},
"doseQuantity": { "value": 0.05, "unit": "mL", "system": "http://unitsofmeasure.org", "code": "mL" },
"performer": [
{
"function": {
"coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v2-0443", "code": "AP", "display": "Administering Provider" }]
},
"actor": { "reference": "Practitioner/example-practitioner" }
}
]
}
patient, encounter, location, basedOn, supportingInformation, performer.actor and protocolApplied.authority are all plain References ({ "reference": "Type/id" }). administeredProduct, informationSource, reason and reaction.manifestation are CodeableReference types - their reference sits one level deeper ({ "reference": { "reference": "Type/id" } }). See References and CodeableReferences for the distinction.
For a complete record, add the protocolApplied (series name, target disease, dose number and total doses), the reason for vaccinating, and any reaction observed. Note where the CodeableReference shape applies - reason and reaction.manifestation nest the reference, while protocolApplied.authority is a plain Reference:
{
"resourceType": "Immunization",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-immunization"] },
"status": "completed",
"vaccineCode": {
"coding": [{ "system": "http://hl7.org/fhir/sid/cvx", "code": "19", "display": "Bacillus Calmette-Guerin vaccine" }]
},
"patient": { "reference": "Patient/example-salim" },
"occurrenceDateTime": "2026-04-28T10:30:00+05:00",
"administeredProduct": {
"reference": { "reference": "Medication/medication-imm-001" }
},
"reason": [
{ "reference": { "reference": "Condition/condition-tuberculosis-risk-example" } }
],
"reaction": [
{
"date": "2026-04-28T12:00:00+05:00",
"manifestation": {
"concept": {
"coding": [{ "system": "http://snomed.info/sct", "code": "260389003", "display": "No reaction" }]
}
},
"reported": false
}
],
"protocolApplied": [
{
"series": "BCG vaccination",
"authority": { "reference": "Organization/example-immunization-organization" },
"targetDisease": [
{ "coding": [{ "system": "http://snomed.info/sct", "code": "56717001", "display": "Tuberculosis" }] }
],
"doseNumber": "1",
"seriesDoses": "1"
}
]
}
reaction.manifestation carries its coded finding in concept; it may instead point at an Observation through its nested reference. protocolApplied.targetDisease is bound extensible to SNOMED CT. When the dose came from a recommendation or order, add a basedOn reference to it.
Do not omit the record when a vaccine is refused, contraindicated, or otherwise not administered - set status to not-done and give the statusReason. The occurrence still records when it would have been (or was scheduled to be):
{
"resourceType": "Immunization",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-immunization"] },
"status": "not-done",
"statusReason": {
"coding": [{ "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", "code": "IMMUNE", "display": "immunity" }]
},
"vaccineCode": {
"coding": [{ "system": "http://hl7.org/fhir/sid/cvx", "code": "19", "display": "Bacillus Calmette-Guerin vaccine" }]
},
"patient": { "reference": "Patient/example-salim" },
"occurrenceDateTime": "2026-04-28T10:30:00+05:00"
}
statusReason uses a required binding. See Missing & suppressed data for the difference between a not-done event and a missing element.
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.
| Path | Status | Usage | ValueSet | Version | Source |
| Immunization.status | Base | required | Immunization status value set | 📍0.5.0 | This IG |
| Immunization.statusReason | Base | required | Immunization status reason value set | 📍0.5.0 | This IG |
| Immunization.vaccineCode | Base | extensible | Vaccine Code ValueSet | 📍0.5.0 | This IG |
| Immunization.informationSource | Base | extensible | Immunization origin value set | 📍0.5.0 | This IG |
| Immunization.site | Base | extensible | Immunization site value set | 📍0.5.0 | This IG |
| Immunization.route | Base | example | Route of administration value set | 📍0.5.0 | This IG |
| Immunization.performer.function | Base | extensible | Immunization Function Codes | 📍5.0.0 | FHIR Std. |
| Immunization.reason | Base | example | Immunization Reason Codes | 📍5.0.0 | FHIR Std. |
| Immunization.subpotentReason | Base | example | Immunization subpotent reason value set | 📍0.5.0 | This IG |
| Immunization.programEligibility.program | Base | example | Vaccine Funding Programs | 📍5.0.0 | FHIR Std. |
| Immunization.programEligibility.programStatus | Base | example | Immunization Program Eligibility | 📍5.0.0 | FHIR Std. |
| Immunization.fundingSource | Base | example | Immunization funding source value set | 📍0.5.0 | This IG |
| Immunization.reaction.manifestation | Base | required | Reaction Type ValueSet | 📍0.5.0 | This IG |
| Immunization.protocolApplied.targetDisease | Base | extensible | Target disease value set | 📍0.5.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Immunization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Immunization | 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 | Immunization | 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 | Immunization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Immunization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Immunization.implicitRules, Immunization.modifierExtension, Immunization.identifier, Immunization.basedOn, Immunization.status, Immunization.statusReason, Immunization.vaccineCode, Immunization.administeredProduct, Immunization.lotNumber, Immunization.expirationDate, Immunization.patient, Immunization.encounter, Immunization.supportingInformation, Immunization.occurrence[x], Immunization.occurrence[x]:occurrenceDateTime, Immunization.occurrence[x]:occurrenceString, Immunization.primarySource, Immunization.informationSource, Immunization.location, Immunization.site, Immunization.route, Immunization.doseQuantity, Immunization.performer, Immunization.performer.modifierExtension, Immunization.performer.function, Immunization.performer.actor, Immunization.note, Immunization.reason, Immunization.isSubpotent, Immunization.subpotentReason, Immunization.programEligibility, Immunization.programEligibility.modifierExtension, Immunization.programEligibility.program, Immunization.programEligibility.programStatus, Immunization.fundingSource, Immunization.reaction, Immunization.reaction.modifierExtension, Immunization.reaction.date, Immunization.reaction.manifestation, Immunization.reaction.reported, Immunization.protocolApplied, Immunization.protocolApplied.modifierExtension, Immunization.protocolApplied.series, Immunization.protocolApplied.authority, Immunization.protocolApplied.targetDisease, Immunization.protocolApplied.doseNumber, Immunization.protocolApplied.seriesDoses | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Immunization.modifierExtension, Immunization.performer.modifierExtension, Immunization.programEligibility.modifierExtension, Immunization.reaction.modifierExtension, Immunization.protocolApplied.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| Path | Status | Usage | ValueSet | Version | Source |
| Immunization.status | Base | required | Immunization status value set | 📍0.5.0 | This IG |
| Immunization.statusReason | Base | required | Immunization status reason value set | 📍0.5.0 | This IG |
| Immunization.vaccineCode | Base | extensible | Vaccine Code ValueSet | 📍0.5.0 | This IG |
| Immunization.informationSource | Base | extensible | Immunization origin value set | 📍0.5.0 | This IG |
| Immunization.site | Base | extensible | Immunization site value set | 📍0.5.0 | This IG |
| Immunization.route | Base | example | Route of administration value set | 📍0.5.0 | This IG |
| Immunization.subpotentReason | Base | example | Immunization subpotent reason value set | 📍0.5.0 | This IG |
| Immunization.fundingSource | Base | example | Immunization funding source value set | 📍0.5.0 | This IG |
| Immunization.reaction.manifestation | Base | required | Reaction Type ValueSet | 📍0.5.0 | This IG |
| Immunization.protocolApplied.targetDisease | Base | extensible | Target disease value set | 📍0.5.0 | This IG |
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Immunization(5.0.0) | Immunization event information | |||||
![]() ![]() |
Σ | 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 | Business identifier | ||||
![]() ![]() |
SΣ | 0..* | Reference(CarePlan | MedicationRequest | ServiceRequest | UZ Core ImmunizationRecommendation(0.5.0)) | The legal basis for the event | ||||
![]() ![]() |
?!SΣ | 1..1 | code | Vaccination status Binding: ImmunizationStatusVS (0.5.0) (required) | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Status Reason Binding: ImmunizationStatusReasonVS (0.5.0) (required) | ||||
![]() ![]() |
SΣ | 1..1 | CodeableConcept | Administered vaccine Binding: VaccineCodeVS (0.5.0) (extensible) | ||||
![]() ![]() |
S | 0..1 | CodeableReference(Medication) | Vaccine product | ||||
![]() ![]() |
0..1 | CodeableReference(Organization) | Vaccine manufacturer | |||||
![]() ![]() |
S | 0..1 | string | Vaccine batch number (lot number) | ||||
![]() ![]() |
S | 0..1 | date | Vaccine expiry date | ||||
![]() ![]() |
SΣ | 1..1 | Reference(UZ Core Patient(0.5.0)) | Patient | ||||
![]() ![]() |
S | 0..1 | Reference(UZ Core Encounter(0.5.0)) | Related contact | ||||
![]() ![]() |
S | 0..* | Reference(UZ Core Observation(0.5.0) | UZ Core Condition(0.5.0)) | Additional information | ||||
![]() ![]() |
SΣ | 1..1 | Date of vaccine administration Slice: Unordered, Closed by type:$this | |||||
![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
SΣ | 0..1 | dateTime | Date (dateTime) | ||||
![]() ![]() ![]() |
SΣ | 0..1 | string | Date (string) | ||||
![]() ![]() |
SΣ | 0..1 | boolean | Primary source | ||||
![]() ![]() |
S | 0..1 | CodeableReference(UZ Core Patient(0.5.0) | UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0) | UZ Core RelatedPerson(0.5.0) | UZ Core Organization(0.5.0)) | Data source Binding: ImmunizationOriginVS (0.5.0) (extensible) | ||||
![]() ![]() |
S | 0..1 | Reference(UZ Core Location(0.5.0)) | Vaccination location | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Administration site Binding: ImmunizationSiteVS (0.5.0) (extensible) | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Route of administration Binding: RouteCodeVS (0.5.0) (example) | ||||
![]() ![]() |
S | 0..1 | SimpleQuantity(5.0.0) | Dose | ||||
![]() ![]() |
SΣ | 0..* | BackboneElement | Performer | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
SΣ | 0..1 | CodeableConcept | Role Binding: ImmunizationFunctionCodes (extensible) | ||||
![]() ![]() ![]() |
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)) | Who completed | ||||
![]() ![]() |
SΣ | 0..* | Annotation | Notes | ||||
![]() ![]() |
S | 0..* | CodeableReference(UZ Core Condition(0.5.0) | UZ Core Observation(0.5.0) | DiagnosticReport) | Vaccination reason Binding: ImmunizationReasonCodes (example) | ||||
![]() ![]() |
?!SΣ | 0..1 | boolean | Subpotent | ||||
![]() ![]() |
S | 0..* | CodeableConcept | Subpotent reason Binding: SubpotentReasonVS (0.5.0) (example) | ||||
![]() ![]() |
S | 0..* | BackboneElement | Vaccination program | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
S | 1..1 | CodeableConcept | Program Binding: CodesForVaccineFundingPrograms (example) | ||||
![]() ![]() ![]() |
S | 1..1 | CodeableConcept | Participation status Binding: ImmunizationProgramEligibility (example) | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Funding Source Binding: FundingSourceVS (0.5.0) (example) | ||||
![]() ![]() |
S | 0..* | BackboneElement | Reaction | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
S | 0..1 | dateTime | Reaction date | ||||
![]() ![]() ![]() |
S | 0..1 | CodeableReference(UZ Core Observation(0.5.0)) | Manifestation Binding: ReactionTypeVS (0.5.0) (required) | ||||
![]() ![]() ![]() |
S | 0..1 | boolean | Self-reported | ||||
![]() ![]() |
S | 0..* | BackboneElement | Protocol | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
S | 0..1 | string | Series | ||||
![]() ![]() ![]() |
S | 0..1 | Reference(UZ Core Organization(0.5.0)) | Authority organization | ||||
![]() ![]() ![]() |
S | 0..* | CodeableConcept | Target Disease Binding: TargetDiseaseVS (0.5.0) (extensible) | ||||
![]() ![]() ![]() |
S | 1..1 | string | Dose number | ||||
![]() ![]() ![]() |
S | 0..1 | string | Total doses | ||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Immunization.language | Base | required | All Languages | 📍5.0.0 | FHIR Std. |
| Immunization.status | Base | required | Immunization status value set | 📍0.5.0 | This IG |
| Immunization.statusReason | Base | required | Immunization status reason value set | 📍0.5.0 | This IG |
| Immunization.vaccineCode | Base | extensible | Vaccine Code ValueSet | 📍0.5.0 | This IG |
| Immunization.informationSource | Base | extensible | Immunization origin value set | 📍0.5.0 | This IG |
| Immunization.site | Base | extensible | Immunization site value set | 📍0.5.0 | This IG |
| Immunization.route | Base | example | Route of administration value set | 📍0.5.0 | This IG |
| Immunization.performer.function | Base | extensible | Immunization Function Codes | 📍5.0.0 | FHIR Std. |
| Immunization.reason | Base | example | Immunization Reason Codes | 📍5.0.0 | FHIR Std. |
| Immunization.subpotentReason | Base | example | Immunization subpotent reason value set | 📍0.5.0 | This IG |
| Immunization.programEligibility.program | Base | example | Vaccine Funding Programs | 📍5.0.0 | FHIR Std. |
| Immunization.programEligibility.programStatus | Base | example | Immunization Program Eligibility | 📍5.0.0 | FHIR Std. |
| Immunization.fundingSource | Base | example | Immunization funding source value set | 📍0.5.0 | This IG |
| Immunization.reaction.manifestation | Base | required | Reaction Type ValueSet | 📍0.5.0 | This IG |
| Immunization.protocolApplied.targetDisease | Base | extensible | Target disease value set | 📍0.5.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Immunization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Immunization | 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 | Immunization | 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 | Immunization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Immunization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Immunization.meta, Immunization.implicitRules, Immunization.language, Immunization.text, Immunization.extension, Immunization.modifierExtension, Immunization.identifier, Immunization.basedOn, Immunization.status, Immunization.statusReason, Immunization.vaccineCode, Immunization.administeredProduct, Immunization.manufacturer, Immunization.lotNumber, Immunization.expirationDate, Immunization.patient, Immunization.encounter, Immunization.supportingInformation, Immunization.occurrence[x], Immunization.occurrence[x]:occurrenceDateTime, Immunization.occurrence[x]:occurrenceString, Immunization.primarySource, Immunization.informationSource, Immunization.location, Immunization.site, Immunization.route, Immunization.doseQuantity, Immunization.performer, Immunization.performer.extension, Immunization.performer.modifierExtension, Immunization.performer.function, Immunization.performer.actor, Immunization.note, Immunization.reason, Immunization.isSubpotent, Immunization.subpotentReason, Immunization.programEligibility, Immunization.programEligibility.extension, Immunization.programEligibility.modifierExtension, Immunization.programEligibility.program, Immunization.programEligibility.programStatus, Immunization.fundingSource, Immunization.reaction, Immunization.reaction.extension, Immunization.reaction.modifierExtension, Immunization.reaction.date, Immunization.reaction.manifestation, Immunization.reaction.reported, Immunization.protocolApplied, Immunization.protocolApplied.extension, Immunization.protocolApplied.modifierExtension, Immunization.protocolApplied.series, Immunization.protocolApplied.authority, Immunization.protocolApplied.targetDisease, Immunization.protocolApplied.doseNumber, Immunization.protocolApplied.seriesDoses | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Immunization.extension, Immunization.modifierExtension, Immunization.performer.extension, Immunization.performer.modifierExtension, Immunization.programEligibility.extension, Immunization.programEligibility.modifierExtension, Immunization.reaction.extension, Immunization.reaction.modifierExtension, Immunization.protocolApplied.extension, Immunization.protocolApplied.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
Summary
Must-Support: 41 elements
Structures
This structure refers to these other structures:
Slices
This structure defines the following Slices:
Key Elements View
| Path | Status | Usage | ValueSet | Version | Source |
| Immunization.status | Base | required | Immunization status value set | 📍0.5.0 | This IG |
| Immunization.statusReason | Base | required | Immunization status reason value set | 📍0.5.0 | This IG |
| Immunization.vaccineCode | Base | extensible | Vaccine Code ValueSet | 📍0.5.0 | This IG |
| Immunization.informationSource | Base | extensible | Immunization origin value set | 📍0.5.0 | This IG |
| Immunization.site | Base | extensible | Immunization site value set | 📍0.5.0 | This IG |
| Immunization.route | Base | example | Route of administration value set | 📍0.5.0 | This IG |
| Immunization.performer.function | Base | extensible | Immunization Function Codes | 📍5.0.0 | FHIR Std. |
| Immunization.reason | Base | example | Immunization Reason Codes | 📍5.0.0 | FHIR Std. |
| Immunization.subpotentReason | Base | example | Immunization subpotent reason value set | 📍0.5.0 | This IG |
| Immunization.programEligibility.program | Base | example | Vaccine Funding Programs | 📍5.0.0 | FHIR Std. |
| Immunization.programEligibility.programStatus | Base | example | Immunization Program Eligibility | 📍5.0.0 | FHIR Std. |
| Immunization.fundingSource | Base | example | Immunization funding source value set | 📍0.5.0 | This IG |
| Immunization.reaction.manifestation | Base | required | Reaction Type ValueSet | 📍0.5.0 | This IG |
| Immunization.protocolApplied.targetDisease | Base | extensible | Target disease value set | 📍0.5.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Immunization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Immunization | 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 | Immunization | 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 | Immunization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Immunization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Immunization.implicitRules, Immunization.modifierExtension, Immunization.identifier, Immunization.basedOn, Immunization.status, Immunization.statusReason, Immunization.vaccineCode, Immunization.administeredProduct, Immunization.lotNumber, Immunization.expirationDate, Immunization.patient, Immunization.encounter, Immunization.supportingInformation, Immunization.occurrence[x], Immunization.occurrence[x]:occurrenceDateTime, Immunization.occurrence[x]:occurrenceString, Immunization.primarySource, Immunization.informationSource, Immunization.location, Immunization.site, Immunization.route, Immunization.doseQuantity, Immunization.performer, Immunization.performer.modifierExtension, Immunization.performer.function, Immunization.performer.actor, Immunization.note, Immunization.reason, Immunization.isSubpotent, Immunization.subpotentReason, Immunization.programEligibility, Immunization.programEligibility.modifierExtension, Immunization.programEligibility.program, Immunization.programEligibility.programStatus, Immunization.fundingSource, Immunization.reaction, Immunization.reaction.modifierExtension, Immunization.reaction.date, Immunization.reaction.manifestation, Immunization.reaction.reported, Immunization.protocolApplied, Immunization.protocolApplied.modifierExtension, Immunization.protocolApplied.series, Immunization.protocolApplied.authority, Immunization.protocolApplied.targetDisease, Immunization.protocolApplied.doseNumber, Immunization.protocolApplied.seriesDoses | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Immunization.modifierExtension, Immunization.performer.modifierExtension, Immunization.programEligibility.modifierExtension, Immunization.reaction.modifierExtension, Immunization.protocolApplied.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
Differential View
| Path | Status | Usage | ValueSet | Version | Source |
| Immunization.status | Base | required | Immunization status value set | 📍0.5.0 | This IG |
| Immunization.statusReason | Base | required | Immunization status reason value set | 📍0.5.0 | This IG |
| Immunization.vaccineCode | Base | extensible | Vaccine Code ValueSet | 📍0.5.0 | This IG |
| Immunization.informationSource | Base | extensible | Immunization origin value set | 📍0.5.0 | This IG |
| Immunization.site | Base | extensible | Immunization site value set | 📍0.5.0 | This IG |
| Immunization.route | Base | example | Route of administration value set | 📍0.5.0 | This IG |
| Immunization.subpotentReason | Base | example | Immunization subpotent reason value set | 📍0.5.0 | This IG |
| Immunization.fundingSource | Base | example | Immunization funding source value set | 📍0.5.0 | This IG |
| Immunization.reaction.manifestation | Base | required | Reaction Type ValueSet | 📍0.5.0 | This IG |
| Immunization.protocolApplied.targetDisease | Base | extensible | Target disease value set | 📍0.5.0 | This IG |
Snapshot ViewView
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Immunization(5.0.0) | Immunization event information | |||||
![]() ![]() |
Σ | 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 | Business identifier | ||||
![]() ![]() |
SΣ | 0..* | Reference(CarePlan | MedicationRequest | ServiceRequest | UZ Core ImmunizationRecommendation(0.5.0)) | The legal basis for the event | ||||
![]() ![]() |
?!SΣ | 1..1 | code | Vaccination status Binding: ImmunizationStatusVS (0.5.0) (required) | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Status Reason Binding: ImmunizationStatusReasonVS (0.5.0) (required) | ||||
![]() ![]() |
SΣ | 1..1 | CodeableConcept | Administered vaccine Binding: VaccineCodeVS (0.5.0) (extensible) | ||||
![]() ![]() |
S | 0..1 | CodeableReference(Medication) | Vaccine product | ||||
![]() ![]() |
0..1 | CodeableReference(Organization) | Vaccine manufacturer | |||||
![]() ![]() |
S | 0..1 | string | Vaccine batch number (lot number) | ||||
![]() ![]() |
S | 0..1 | date | Vaccine expiry date | ||||
![]() ![]() |
SΣ | 1..1 | Reference(UZ Core Patient(0.5.0)) | Patient | ||||
![]() ![]() |
S | 0..1 | Reference(UZ Core Encounter(0.5.0)) | Related contact | ||||
![]() ![]() |
S | 0..* | Reference(UZ Core Observation(0.5.0) | UZ Core Condition(0.5.0)) | Additional information | ||||
![]() ![]() |
SΣ | 1..1 | Date of vaccine administration Slice: Unordered, Closed by type:$this | |||||
![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
SΣ | 0..1 | dateTime | Date (dateTime) | ||||
![]() ![]() ![]() |
SΣ | 0..1 | string | Date (string) | ||||
![]() ![]() |
SΣ | 0..1 | boolean | Primary source | ||||
![]() ![]() |
S | 0..1 | CodeableReference(UZ Core Patient(0.5.0) | UZ Core Practitioner(0.5.0) | UZ Core PractitionerRole(0.5.0) | UZ Core RelatedPerson(0.5.0) | UZ Core Organization(0.5.0)) | Data source Binding: ImmunizationOriginVS (0.5.0) (extensible) | ||||
![]() ![]() |
S | 0..1 | Reference(UZ Core Location(0.5.0)) | Vaccination location | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Administration site Binding: ImmunizationSiteVS (0.5.0) (extensible) | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Route of administration Binding: RouteCodeVS (0.5.0) (example) | ||||
![]() ![]() |
S | 0..1 | SimpleQuantity(5.0.0) | Dose | ||||
![]() ![]() |
SΣ | 0..* | BackboneElement | Performer | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
SΣ | 0..1 | CodeableConcept | Role Binding: ImmunizationFunctionCodes (extensible) | ||||
![]() ![]() ![]() |
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)) | Who completed | ||||
![]() ![]() |
SΣ | 0..* | Annotation | Notes | ||||
![]() ![]() |
S | 0..* | CodeableReference(UZ Core Condition(0.5.0) | UZ Core Observation(0.5.0) | DiagnosticReport) | Vaccination reason Binding: ImmunizationReasonCodes (example) | ||||
![]() ![]() |
?!SΣ | 0..1 | boolean | Subpotent | ||||
![]() ![]() |
S | 0..* | CodeableConcept | Subpotent reason Binding: SubpotentReasonVS (0.5.0) (example) | ||||
![]() ![]() |
S | 0..* | BackboneElement | Vaccination program | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
S | 1..1 | CodeableConcept | Program Binding: CodesForVaccineFundingPrograms (example) | ||||
![]() ![]() ![]() |
S | 1..1 | CodeableConcept | Participation status Binding: ImmunizationProgramEligibility (example) | ||||
![]() ![]() |
S | 0..1 | CodeableConcept | Funding Source Binding: FundingSourceVS (0.5.0) (example) | ||||
![]() ![]() |
S | 0..* | BackboneElement | Reaction | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
S | 0..1 | dateTime | Reaction date | ||||
![]() ![]() ![]() |
S | 0..1 | CodeableReference(UZ Core Observation(0.5.0)) | Manifestation Binding: ReactionTypeVS (0.5.0) (required) | ||||
![]() ![]() ![]() |
S | 0..1 | boolean | Self-reported | ||||
![]() ![]() |
S | 0..* | BackboneElement | Protocol | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
S | 0..1 | string | Series | ||||
![]() ![]() ![]() |
S | 0..1 | Reference(UZ Core Organization(0.5.0)) | Authority organization | ||||
![]() ![]() ![]() |
S | 0..* | CodeableConcept | Target Disease Binding: TargetDiseaseVS (0.5.0) (extensible) | ||||
![]() ![]() ![]() |
S | 1..1 | string | Dose number | ||||
![]() ![]() ![]() |
S | 0..1 | string | Total doses | ||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Immunization.language | Base | required | All Languages | 📍5.0.0 | FHIR Std. |
| Immunization.status | Base | required | Immunization status value set | 📍0.5.0 | This IG |
| Immunization.statusReason | Base | required | Immunization status reason value set | 📍0.5.0 | This IG |
| Immunization.vaccineCode | Base | extensible | Vaccine Code ValueSet | 📍0.5.0 | This IG |
| Immunization.informationSource | Base | extensible | Immunization origin value set | 📍0.5.0 | This IG |
| Immunization.site | Base | extensible | Immunization site value set | 📍0.5.0 | This IG |
| Immunization.route | Base | example | Route of administration value set | 📍0.5.0 | This IG |
| Immunization.performer.function | Base | extensible | Immunization Function Codes | 📍5.0.0 | FHIR Std. |
| Immunization.reason | Base | example | Immunization Reason Codes | 📍5.0.0 | FHIR Std. |
| Immunization.subpotentReason | Base | example | Immunization subpotent reason value set | 📍0.5.0 | This IG |
| Immunization.programEligibility.program | Base | example | Vaccine Funding Programs | 📍5.0.0 | FHIR Std. |
| Immunization.programEligibility.programStatus | Base | example | Immunization Program Eligibility | 📍5.0.0 | FHIR Std. |
| Immunization.fundingSource | Base | example | Immunization funding source value set | 📍0.5.0 | This IG |
| Immunization.reaction.manifestation | Base | required | Reaction Type ValueSet | 📍0.5.0 | This IG |
| Immunization.protocolApplied.targetDisease | Base | extensible | Target disease value set | 📍0.5.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Immunization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Immunization | 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 | Immunization | 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 | Immunization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Immunization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | Immunization.meta, Immunization.implicitRules, Immunization.language, Immunization.text, Immunization.extension, Immunization.modifierExtension, Immunization.identifier, Immunization.basedOn, Immunization.status, Immunization.statusReason, Immunization.vaccineCode, Immunization.administeredProduct, Immunization.manufacturer, Immunization.lotNumber, Immunization.expirationDate, Immunization.patient, Immunization.encounter, Immunization.supportingInformation, Immunization.occurrence[x], Immunization.occurrence[x]:occurrenceDateTime, Immunization.occurrence[x]:occurrenceString, Immunization.primarySource, Immunization.informationSource, Immunization.location, Immunization.site, Immunization.route, Immunization.doseQuantity, Immunization.performer, Immunization.performer.extension, Immunization.performer.modifierExtension, Immunization.performer.function, Immunization.performer.actor, Immunization.note, Immunization.reason, Immunization.isSubpotent, Immunization.subpotentReason, Immunization.programEligibility, Immunization.programEligibility.extension, Immunization.programEligibility.modifierExtension, Immunization.programEligibility.program, Immunization.programEligibility.programStatus, Immunization.fundingSource, Immunization.reaction, Immunization.reaction.extension, Immunization.reaction.modifierExtension, Immunization.reaction.date, Immunization.reaction.manifestation, Immunization.reaction.reported, Immunization.protocolApplied, Immunization.protocolApplied.extension, Immunization.protocolApplied.modifierExtension, Immunization.protocolApplied.series, Immunization.protocolApplied.authority, Immunization.protocolApplied.targetDisease, Immunization.protocolApplied.doseNumber, Immunization.protocolApplied.seriesDoses | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | Immunization.extension, Immunization.modifierExtension, Immunization.performer.extension, Immunization.performer.modifierExtension, Immunization.programEligibility.extension, Immunization.programEligibility.modifierExtension, Immunization.reaction.extension, Immunization.reaction.modifierExtension, Immunization.protocolApplied.extension, Immunization.protocolApplied.modifierExtension | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
Summary
Must-Support: 41 elements
Structures
This structure refers to these other structures:
Slices
This structure defines the following Slices:
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 a token system from its value and must be URL-encoded as %7C. These interactions use standard FHIR R5 search parameters; see the CapabilityStatement as it is finalized for this resource.
Read an immunization by server id
GET [base]/Immunization/[id]
Useful searches
# all immunizations for a patient
GET [base]/Immunization?patient=Patient/[id]
# a patient's vaccination history for one vaccine, most recent first
GET [base]/Immunization?patient=Patient/[id]&vaccine-code=http://hl7.org/fhir/sid/cvx%7C19&_sort=-date
# completed doses only
GET [base]/Immunization?patient=Patient/[id]&status=completed
# by date, lot number, or performer
GET [base]/Immunization?patient=Patient/[id]&date=ge2026-01-01
GET [base]/Immunization?lot-number=LOT-BCG-2026-01
GET [base]/Immunization?performer=Practitioner/[id]
Record a new immunization
POST [base]/Immunization
{
"resourceType": "Immunization",
"meta": { "profile": [ "https://dhp.uz/fhir/core/StructureDefinition/uz-core-immunization" ] },
...
}
Before creating, check that no record already exists for the same patient + vaccine code + occurrence + lot number, so the dose is not recorded twice.
Update an immunization (e.g. correct a lot number, add a reaction, or mark a record entered-in-error)
PUT [base]/Immunization/[id]
If-Match: W/"3" # the ETag from your last read; 412 if it changed since
{
"resourceType": "Immunization",
"id": "[id]",
"meta": { "profile": [ "https://dhp.uz/fhir/core/StructureDefinition/uz-core-immunization" ] },
...
}