Aotearoa Immunisation Register (AIR) FHIR Implementation Guide (API-V2)
2.0.0-SNAPSHOT - ci-build
New Zealand
Aotearoa Immunisation Register (AIR) FHIR Implementation Guide (API-V2) - Local Development build (v2.0.0-SNAPSHOT) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://fhir-ig-uat.digital.health.nz/air/StructureDefinition/air-immunization-recommendation | Version: 2.0.0-SNAPSHOT | |||
| Active as of 2026-08-31 | Computable Name: AIRImmunizationRecommendation | |||
AIR uses this immunizationRecommendation profile to communicate the details of scheduled events.
To communicate details of a planned immunisation event. Planned events may be generated algorithmically based on a patient's characteristics, a published schedule and their immunisation history.
The Aotearoa Immunisation Register (AIR) holds a collection of "Scheduled Events", where each Scheduled Event represents a dose of vaccine to be administered to a person in the future. As an example, when a newborn is enrolled into AIR, a Scheduled Event is created for each dose listed in the National Immunisation Schedule.
This AIRImmunizationRecommendation profile is the primary vehicle used by the AIR FHIR API to transmit information about each Scheduled Event.
Each recommendation element has a AIR Planned Event Type, supplied in the AIR Scheduled Event extension:
Examples of these are provided in AIRBundleCarePlanExample.
For more information about Scheduled Events in AIR, see the AIR Care Plan Profile and View Consumer Planned Events use case.
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Path | Status | Usage | ValueSet | Version | Source |
| ImmunizationRecommendation.recommendation.vaccineCode | Base | preferred | AIR Vaccine Product | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastStatus | Base | preferred | AIR Forecast Status | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastReason | Base | preferred | AIR Indication Code | 📦2.0.0-SNAPSHOT | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | ImmunizationRecommendation | 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 | ImmunizationRecommendation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | ImmunizationRecommendation | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| imr-1 | error | ImmunizationRecommendation.recommendation | One of vaccineCode or targetDisease SHALL be present |
vaccineCode.exists() or targetDisease.exists()
|
This structure is derived from ImmunizationRecommendation
| Path | Status | Usage | ValueSet | Version | Source |
| ImmunizationRecommendation.recommendation.vaccineCode | Base | preferred | AIR Vaccine Product | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastStatus | Base | preferred | AIR Forecast Status | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastReason | Base | preferred | AIR Indication Code | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.dateCriterion.code | Base | preferred | AIR Planned Event Date Type Code | 📦2.0.0-SNAPSHOT | This IG |
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | ImmunizationRecommendation | Guidance or advice relating to an immunization | |||||
![]() ![]() |
Σ | 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: CommonLanguages (preferred): 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 | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 1..1 | Reference(AIR Patient Profile) | Who this profile is for | ||||
![]() ![]() |
Σ | 1..1 | dateTime | Date recommendation(s) created | ||||
![]() ![]() |
ΣC | 1..* | BackboneElement | Vaccine administration recommendations Constraints: imr-1 | ||||
![]() ![]() ![]() |
1..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
4..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
1..1 | string | AIR Consumer State URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state | |||||
![]() ![]() ![]() ![]() |
1..* | CodeableConcept | AIR Disease Covered URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered Binding: AIR Diseases Covered (required) | |||||
![]() ![]() ![]() ![]() |
1..1 | (Complex) | AIR Antigen Group Vaccination Schedule URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs | |||||
![]() ![]() ![]() ![]() |
1..1 | (Complex) | AIR Scheduled Event URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | Vaccine or vaccine group recommendation applies to Binding: AIR Vaccine Product (preferred) | ||||
![]() ![]() ![]() |
?!Σ | 1..1 | CodeableConcept | Vaccine recommendation status Binding: AIR Forecast Status (preferred) | ||||
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | Vaccine recommendation indication and alternative indications Binding: AIR Indication Code (preferred) | ||||
![]() ![]() ![]() |
0..* | BackboneElement | Dates governing proposed immunization | |||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() ![]() |
1..1 | CodeableConcept | Type of date Binding: AIR Planned Event Date Type Code (preferred) | |||||
![]() ![]() ![]() ![]() |
1..1 | dateTime | Recommended date | |||||
![]() ![]() ![]() |
0..1 | string | Protocol details | |||||
![]() ![]() ![]() |
0..1 | string | Name of vaccination series | |||||
![]() ![]() ![]() |
Σ | 0..1 | string | Recommended dose number within series | ||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| ImmunizationRecommendation.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| ImmunizationRecommendation.recommendation.vaccineCode | Base | preferred | AIR Vaccine Product | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastStatus | Base | preferred | AIR Forecast Status | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastReason | Base | preferred | AIR Indication Code | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.dateCriterion.code | Base | preferred | AIR Planned Event Date Type Code | 📦2.0.0-SNAPSHOT | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | ImmunizationRecommendation | 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 | ImmunizationRecommendation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | ImmunizationRecommendation | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| imr-1 | error | ImmunizationRecommendation.recommendation | One of vaccineCode or targetDisease SHALL be present |
vaccineCode.exists() or targetDisease.exists()
|
This structure is derived from ImmunizationRecommendation
Summary
Mandatory: 5 elements
Prohibited: 7 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Key Elements View
| Path | Status | Usage | ValueSet | Version | Source |
| ImmunizationRecommendation.recommendation.vaccineCode | Base | preferred | AIR Vaccine Product | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastStatus | Base | preferred | AIR Forecast Status | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastReason | Base | preferred | AIR Indication Code | 📦2.0.0-SNAPSHOT | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | ImmunizationRecommendation | 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 | ImmunizationRecommendation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | ImmunizationRecommendation | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| imr-1 | error | ImmunizationRecommendation.recommendation | One of vaccineCode or targetDisease SHALL be present |
vaccineCode.exists() or targetDisease.exists()
|
Differential View
This structure is derived from ImmunizationRecommendation
| Path | Status | Usage | ValueSet | Version | Source |
| ImmunizationRecommendation.recommendation.vaccineCode | Base | preferred | AIR Vaccine Product | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastStatus | Base | preferred | AIR Forecast Status | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastReason | Base | preferred | AIR Indication Code | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.dateCriterion.code | Base | preferred | AIR Planned Event Date Type Code | 📦2.0.0-SNAPSHOT | This IG |
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | ImmunizationRecommendation | Guidance or advice relating to an immunization | |||||
![]() ![]() |
Σ | 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: CommonLanguages (preferred): 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 | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 1..1 | Reference(AIR Patient Profile) | Who this profile is for | ||||
![]() ![]() |
Σ | 1..1 | dateTime | Date recommendation(s) created | ||||
![]() ![]() |
ΣC | 1..* | BackboneElement | Vaccine administration recommendations Constraints: imr-1 | ||||
![]() ![]() ![]() |
1..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
4..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
1..1 | string | AIR Consumer State URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state | |||||
![]() ![]() ![]() ![]() |
1..* | CodeableConcept | AIR Disease Covered URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered Binding: AIR Diseases Covered (required) | |||||
![]() ![]() ![]() ![]() |
1..1 | (Complex) | AIR Antigen Group Vaccination Schedule URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs | |||||
![]() ![]() ![]() ![]() |
1..1 | (Complex) | AIR Scheduled Event URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | Vaccine or vaccine group recommendation applies to Binding: AIR Vaccine Product (preferred) | ||||
![]() ![]() ![]() |
?!Σ | 1..1 | CodeableConcept | Vaccine recommendation status Binding: AIR Forecast Status (preferred) | ||||
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | Vaccine recommendation indication and alternative indications Binding: AIR Indication Code (preferred) | ||||
![]() ![]() ![]() |
0..* | BackboneElement | Dates governing proposed immunization | |||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() ![]() |
1..1 | CodeableConcept | Type of date Binding: AIR Planned Event Date Type Code (preferred) | |||||
![]() ![]() ![]() ![]() |
1..1 | dateTime | Recommended date | |||||
![]() ![]() ![]() |
0..1 | string | Protocol details | |||||
![]() ![]() ![]() |
0..1 | string | Name of vaccination series | |||||
![]() ![]() ![]() |
Σ | 0..1 | string | Recommended dose number within series | ||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| ImmunizationRecommendation.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| ImmunizationRecommendation.recommendation.vaccineCode | Base | preferred | AIR Vaccine Product | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastStatus | Base | preferred | AIR Forecast Status | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.forecastReason | Base | preferred | AIR Indication Code | 📦2.0.0-SNAPSHOT | This IG |
| ImmunizationRecommendation.recommendation.dateCriterion.code | Base | preferred | AIR Planned Event Date Type Code | 📦2.0.0-SNAPSHOT | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | ImmunizationRecommendation | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | ImmunizationRecommendation | 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 | ImmunizationRecommendation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | ImmunizationRecommendation | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| imr-1 | error | ImmunizationRecommendation.recommendation | One of vaccineCode or targetDisease SHALL be present |
vaccineCode.exists() or targetDisease.exists()
|
This structure is derived from ImmunizationRecommendation
Summary
Mandatory: 5 elements
Prohibited: 7 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Other representations of profile: CSV, Excel, Schematron