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
Also known as GP notifications.
An ‘Immunisation Update Message’ interaction is initiated by ImmSOT when it wishes to notify interested parties that a new immunisation has been recorded or an existing immunisation is updated. The notification can be either an 'HL7' message or via the NEMS messaging service.
The request includes details of the patient who received the immunisation, the next of kin who attended the immunisation encounter, the immunisation itself, the pracitioner who administered the immunisation and the PMS systems to which the message should be sent. At a later time, after the health provider has processed the request, they send a response back to the nominated endpoint indicating if the immunisation request has been accepted or declined.
If the patient has opted to suppress access to their immunisation records, an 'Immunisation Update Message' notification will not be sent to either the Enrolled facility or the Immunization event facility.
update-immunisation-request3 - RESEND
Requests which specify a processing flag value of 'D' in the bundle meta.tag[0].code element should be treated as debug messages. The server must ensure that processing these messages results in no change to production data. They server should return a success response to indicate that it is healthy, and failure response to indicate that it is unhealthy
If the ID of the Immunisation resource matches an ID held in the receiving system then the message should be treated as an update rather than a create. This should be regarded as a full update rather than a delta, so the existing Immunisation record should be replaced with the Immunisation resource in the request
The air-immunisation-notification-action-code is used by Orchestration server to determine which PMS systems messages should be sent to as described in the table below
| Value | |
|---|---|
| RESEND | send an immunisation notification message to the facilityId in MessageHeader.destination.name |
One of the following a synchronous error response may be returned by the server
| Scenarios | http status code | body | description |
|---|---|---|---|
| Success | 202 | OperationOutcome | The message has been accepted for processing |
| Server Error | 50x | empty | An unexpected error occurred on the part of the server. The client may resend the message at a later time once the server is issue is resolved |
| Data Error | 400 | OperationOutcome | If the server cannot process the message due to a data error, it should return a 400 error with an OperationOutcome in the body describing the error |
| Data Error | 429 | OperationOutcome | If the server cannot process the message because it under too much load it should return a 429 error with an OperationOutcome with OperationOutcome.issue[].code= "throttled" |
| Other processing errors | 40x | empty | Other 40x errors may be returned by intermediary gateways (e.g. 401 Unauthorized). These may not provide an OperationOutcome |
The Response body may contain an OperationOutcome resource describing the result of the request message processing. Since the Orchestration server may have sent two separate messages to HealthLink for a single ImmSOT request, the OperationOutcome it returns to ImmSOT may contain two Issue elements, each describing the outcome of a separate notification message. The OperationOutcome.Issue[n].expression field should be used to hold the facility id of the target PMS to which the message was sent. The table below describes how the OperationOutcome should be populated
| Field | Description | Cardinality |
|---|---|---|
| OperationOutcome.issue | 0..n | |
| OperationOutcome.issue[].severity | error | 1 |
| OperationOutcome.issue[].code | processing (or throttled for 429) | 1 |
| OperationOutcome.issue[].diagnostics | Details of the error | 0..1 |
| OperationOutcome.issue[].expression | FacilityId of the PMS to which the message was sent | 0..1 |
Population of he issue.details will element be depend on the source of the error:
| Field | Source | Description | Cardinality |
|---|---|---|---|
| OperationOutcome.issue[].details.coding.code | HIP | HIP error code | 1 |
| OperationOutcome.issue[n]details.coding.system | HIP | https://standards.digital.health.nz/ns/hip-error-code | 1 |
| OperationOutcome.issue[].details.coding.code | HealthLink | AA or AE | 1 |
| OperationOutcome.issue[n]details.coding.system | HealthLink | http://terminology.hl7.org/CodeSystem/v2-0008 | 1 |
This is an example of a case where Orchestration server sends two immunisation update messages to two PMS systems in response to a single request from ImmSOT. One of the messages is successfully sent to Healthlink and one fails
update-immunisation-request-response1
Here is a second example, similar to the first except one of the messages fails due to a 429. ImmSOT should respond by backing off and retrying
update-immunisation-request-response2
The response codes which may be sent in response to an Immunisation Update Message Response message are the same as those described for Immunisation Update Message Request Responses Codes
The Orchestration Server should simply forward whatever it receives from ImmSOT
update-immunisation-response-message-1