Aotearoa Immunisation Register (AIR) FHIR Implementation Guide
2.7.0 - ci-build New Zealand

Aotearoa Immunisation Register (AIR) FHIR Implementation Guide - Local Development build (v2.7.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: AIR Immunization Recommendation

Official URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-immunization-recommendation Version: 2.7.0
Active as of 2026-07-20 Computable Name: AIRImmunizationRecommendation

AIR uses this immunizationRecommendation profile to communicate the details of scheduled events. The specification for this profile is available at https://mohits.atlassian.net/wiki/spaces/NIS/pages/3507781730/AIRImmunizationRecommendation+FHIR+API+into+ImmSOT.

To communicate. the details of a planned immunisation event. Planned events may be generated algorithmically based on a patient's characteristics and a published schedule or created by a health provider.

Introduction

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 jab listed on the National Immunisation Schedule (see this chart https://www.health.govt.nz/our-work/immunisation-handbook-2020/national-immunisation-schedule).

This AIRImmunizationRecommendation profile is the primary vehicle used by the AIR FHIR API to transmit information about Scheduled Events.

For more information about Scheduled Events in AIR, see this page: Scheduled Events

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. ImmunizationRecommendation 0..* ImmunizationRecommendation Guidance or advice relating to an immunization
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... patient Σ 1..1 Reference(AIR Patient Profile) Who this profile is for
... recommendation ΣC 1..* BackboneElement Vaccine administration recommendations
Constraints: imr-1
.... id 1..1 string Unique id for inter-element referencing
.... Slices for extension 4..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:id 1..1 string AIR Consumer State
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state
..... extension:disease-covered 1..* CodeableConcept AIR Disease Covered
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered
Binding: AIR Diseases Covered (required)
..... extension:antigen-group 1..1 (Complex) AIR Antigen Group Vaccination Schedule
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs
..... extension:air-scheduled-event 1..1 (Complex) AIR Scheduled Event
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... vaccineCode Σ 0..* CodeableConcept Vaccine or vaccine group recommendation applies to
Binding: AIR Vaccine Product (preferred)
.... forecastStatus ?!Σ 1..1 CodeableConcept Vaccine recommendation status
Binding: AIR Forecast Status (preferred)
.... doseNumber[x] Σ 0..1 string Recommended dose number within series

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
ImmunizationRecommendation.​recommendation.vaccineCode Base preferred AIR Vaccine Product 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastStatus Base preferred AIR Forecast Status 📦2.7.0 This IG

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. ImmunizationRecommendation 0..* ImmunizationRecommendation Guidance or advice relating to an immunization
... identifier 0..0 Business identifier
... patient 1..1 Reference(AIR Patient Profile) Who this profile is for
... authority 0..0 Who is responsible for protocol
.... id 1..1 string Unique id for inter-element referencing
.... Slices for extension 4..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:id 1..1 string AIR Recommendation Id
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state
..... extension:disease-covered 1..* CodeableConcept AIR Disease Covered
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered
Binding: AIR Diseases Covered (required)
..... extension:antigen-group 1..1 (Complex) AIR Antigen Group Vaccination Schedule
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs
..... extension:air-scheduled-event 1..1 (Complex) AIR Scheduled Event
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event
.... vaccineCode 0..* CodeableConcept Vaccine or vaccine group recommendation applies to
Binding: AIR Vaccine Product (preferred)
.... targetDisease 0..0 Disease to be immunized against
.... contraindicatedVaccineCode 0..0 Vaccine which is contraindicated to fulfill the recommendation
.... forecastStatus 1..1 CodeableConcept Vaccine recommendation status
Binding: AIR Forecast Status (preferred)
.... dateCriterion
..... code 1..1 CodeableConcept Type of date
Binding: AIR Planned Event Date Type Code (preferred)
.... doseNumber[x] 0..1 string Recommended dose number within series
.... seriesDoses[x] 0..0 Recommended number of doses for immunity
.... supportingImmunization 0..0 Past immunizations supporting recommendation
.... supportingPatientInformation 0..0 Patient observations supporting recommendation

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
ImmunizationRecommendation.​recommendation.vaccineCode Base preferred AIR Vaccine Product 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastStatus Base preferred AIR Forecast Status 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.dateCriterion.​code Base preferred AIR Planned Event Date Type Code 📦2.7.0 This IG
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. ImmunizationRecommendation 0..* ImmunizationRecommendation Guidance or advice relating to an immunization
... 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
... 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
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... patient Σ 1..1 Reference(AIR Patient Profile) Who this profile is for
... date Σ 1..1 dateTime Date recommendation(s) created
... recommendation ΣC 1..* BackboneElement Vaccine administration recommendations
Constraints: imr-1
.... id 1..1 string Unique id for inter-element referencing
.... Slices for extension 4..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:id 1..1 string AIR Consumer State
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state
..... extension:disease-covered 1..* CodeableConcept AIR Disease Covered
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered
Binding: AIR Diseases Covered (required)
..... extension:antigen-group 1..1 (Complex) AIR Antigen Group Vaccination Schedule
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs
..... extension:air-scheduled-event 1..1 (Complex) AIR Scheduled Event
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... vaccineCode Σ 0..* CodeableConcept Vaccine or vaccine group recommendation applies to
Binding: AIR Vaccine Product (preferred)
.... forecastStatus ?!Σ 1..1 CodeableConcept Vaccine recommendation status
Binding: AIR Forecast Status (preferred)
.... forecastReason Σ 0..* CodeableConcept Vaccine administration status reason
Binding: ImmunizationRecommendationReasonCodes (example): The reason for the patient's status with respect to a vaccination protocol.
.... dateCriterion 0..* BackboneElement Dates governing proposed immunization
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code 1..1 CodeableConcept Type of date
Binding: AIR Planned Event Date Type Code (preferred)
..... value 1..1 dateTime Recommended date
.... description 0..1 string Protocol details
.... series 0..1 string Name of vaccination series
.... doseNumber[x] Σ 0..1 string Recommended dose number within series

doco Documentation for this format

Terminology Bindings

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.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastStatus Base preferred AIR Forecast Status 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastReason Base example Immunization Recommendation Reason Codes 📍4.0.1 FHIR Std.
ImmunizationRecommendation.​recommendation.dateCriterion.​code Base preferred AIR Planned Event Date Type Code 📦2.7.0 This IG

Constraints

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

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. ImmunizationRecommendation 0..* ImmunizationRecommendation Guidance or advice relating to an immunization
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... patient Σ 1..1 Reference(AIR Patient Profile) Who this profile is for
... recommendation ΣC 1..* BackboneElement Vaccine administration recommendations
Constraints: imr-1
.... id 1..1 string Unique id for inter-element referencing
.... Slices for extension 4..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:id 1..1 string AIR Consumer State
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state
..... extension:disease-covered 1..* CodeableConcept AIR Disease Covered
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered
Binding: AIR Diseases Covered (required)
..... extension:antigen-group 1..1 (Complex) AIR Antigen Group Vaccination Schedule
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs
..... extension:air-scheduled-event 1..1 (Complex) AIR Scheduled Event
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... vaccineCode Σ 0..* CodeableConcept Vaccine or vaccine group recommendation applies to
Binding: AIR Vaccine Product (preferred)
.... forecastStatus ?!Σ 1..1 CodeableConcept Vaccine recommendation status
Binding: AIR Forecast Status (preferred)
.... doseNumber[x] Σ 0..1 string Recommended dose number within series

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
ImmunizationRecommendation.​recommendation.vaccineCode Base preferred AIR Vaccine Product 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastStatus Base preferred AIR Forecast Status 📦2.7.0 This IG

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. ImmunizationRecommendation 0..* ImmunizationRecommendation Guidance or advice relating to an immunization
... identifier 0..0 Business identifier
... patient 1..1 Reference(AIR Patient Profile) Who this profile is for
... authority 0..0 Who is responsible for protocol
.... id 1..1 string Unique id for inter-element referencing
.... Slices for extension 4..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:id 1..1 string AIR Recommendation Id
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state
..... extension:disease-covered 1..* CodeableConcept AIR Disease Covered
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered
Binding: AIR Diseases Covered (required)
..... extension:antigen-group 1..1 (Complex) AIR Antigen Group Vaccination Schedule
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs
..... extension:air-scheduled-event 1..1 (Complex) AIR Scheduled Event
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event
.... vaccineCode 0..* CodeableConcept Vaccine or vaccine group recommendation applies to
Binding: AIR Vaccine Product (preferred)
.... targetDisease 0..0 Disease to be immunized against
.... contraindicatedVaccineCode 0..0 Vaccine which is contraindicated to fulfill the recommendation
.... forecastStatus 1..1 CodeableConcept Vaccine recommendation status
Binding: AIR Forecast Status (preferred)
.... dateCriterion
..... code 1..1 CodeableConcept Type of date
Binding: AIR Planned Event Date Type Code (preferred)
.... doseNumber[x] 0..1 string Recommended dose number within series
.... seriesDoses[x] 0..0 Recommended number of doses for immunity
.... supportingImmunization 0..0 Past immunizations supporting recommendation
.... supportingPatientInformation 0..0 Patient observations supporting recommendation

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
ImmunizationRecommendation.​recommendation.vaccineCode Base preferred AIR Vaccine Product 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastStatus Base preferred AIR Forecast Status 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.dateCriterion.​code Base preferred AIR Planned Event Date Type Code 📦2.7.0 This IG

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. ImmunizationRecommendation 0..* ImmunizationRecommendation Guidance or advice relating to an immunization
... 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
... 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
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... patient Σ 1..1 Reference(AIR Patient Profile) Who this profile is for
... date Σ 1..1 dateTime Date recommendation(s) created
... recommendation ΣC 1..* BackboneElement Vaccine administration recommendations
Constraints: imr-1
.... id 1..1 string Unique id for inter-element referencing
.... Slices for extension 4..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:id 1..1 string AIR Consumer State
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-consumer-state
..... extension:disease-covered 1..* CodeableConcept AIR Disease Covered
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-disease-covered
Binding: AIR Diseases Covered (required)
..... extension:antigen-group 1..1 (Complex) AIR Antigen Group Vaccination Schedule
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-agvs
..... extension:air-scheduled-event 1..1 (Complex) AIR Scheduled Event
URL: https://standards.digital.health.nz/fhir/air/StructureDefinition/air-scheduled-event
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... vaccineCode Σ 0..* CodeableConcept Vaccine or vaccine group recommendation applies to
Binding: AIR Vaccine Product (preferred)
.... forecastStatus ?!Σ 1..1 CodeableConcept Vaccine recommendation status
Binding: AIR Forecast Status (preferred)
.... forecastReason Σ 0..* CodeableConcept Vaccine administration status reason
Binding: ImmunizationRecommendationReasonCodes (example): The reason for the patient's status with respect to a vaccination protocol.
.... dateCriterion 0..* BackboneElement Dates governing proposed immunization
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code 1..1 CodeableConcept Type of date
Binding: AIR Planned Event Date Type Code (preferred)
..... value 1..1 dateTime Recommended date
.... description 0..1 string Protocol details
.... series 0..1 string Name of vaccination series
.... doseNumber[x] Σ 0..1 string Recommended dose number within series

doco Documentation for this format

Terminology Bindings

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.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastStatus Base preferred AIR Forecast Status 📦2.7.0 This IG
ImmunizationRecommendation.​recommendation.forecastReason Base example Immunization Recommendation Reason Codes 📍4.0.1 FHIR Std.
ImmunizationRecommendation.​recommendation.dateCriterion.​code Base preferred AIR Planned Event Date Type Code 📦2.7.0 This IG

Constraints

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

 

Other representations of profile: CSV, Excel, Schematron