{
  "resourceType" : "CapabilityStatement",
  "id" : "AIRCapabilityStatement",
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: CapabilityStatement AIRCapabilityStatement</b></p><a name=\"AIRCapabilityStatement\"> </a><a name=\"hcAIRCapabilityStatement\"> </a><h2 id=\"title\">AIR FHIR Server Capability Statement</h2><ul><li>Implementation Guide Version: 2.7.0 </li><li>FHIR Version: 4.0.1 </li><li>Supported Formats: <code>json</code></li><li>Published on: 2023-02-14 </li><li>Published by: Te Whatu Ora </li></ul><blockquote class=\"impl-note\"><p><strong>Note to Implementers: FHIR Capabilities</strong></p><p>Any FHIR capability may be 'allowed' by the system unless explicitly marked as 'SHALL NOT'. A few items are marked as MAY in the Implementation Guide to highlight their potential relevance to the use case.</p></blockquote><h2 id=\"rest\">FHIR RESTful Capabilities</h2><div class=\"panel panel-default\"><div class=\"panel-heading\"><h3 id=\"mode1\" class=\"panel-title\">Mode: <code>server</code></h3></div><div class=\"panel-body\"><div class=\"lead\"><em>Security</em></div><div class=\"row\"><div class=\"col-lg-6\">Enable CORS: yes</div><div class=\"col-lg-6\">Security services supported: <code>OAuth</code></div></div><div class=\"lead\"><em>Summary of System-wide Interactions</em></div><ul><li>Supports the <code>transaction</code>interaction.</li></ul><div class=\"row\"><div class=\"col-12\"><span class=\"lead\">Summary of System-wide Operations</span><table class=\"table table-condensed table-hover\"><thead><tr><th>Conformance</th><th>Operation</th><th>Documentation</th></tr></thead><tbody><tr><td><b>SHALL</b></td><td>$process-message</td><td><div><p>POST| [base]/$process-message| http://hl7.org/fhir/OperationDefinition/MessageHeader-process-message| system/MessageHeader.u</p>\n</div></td></tr></tbody></table></div></div></div></div><h3 id=\"resourcesCap1\">Capabilities by Resource/Profile</h3><h4 id=\"resourcesSummary1\">Summary</h4><p>The summary table lists the resources that are part of this configuration, and for each resource it lists:</p><ul><li>The relevant profiles (if any)</li><li>The interactions supported by each resource (<b><span class=\"bg-info\">R</span></b>ead, <b><span class=\"bg-info\">S</span></b>earch, <b><span class=\"bg-info\">U</span></b>pdate, and <b><span class=\"bg-info\">C</span></b>reate, are always shown, while <b><span class=\"bg-info\">VR</span></b>ead, <b><span class=\"bg-info\">P</span></b>atch, <b><span class=\"bg-info\">D</span></b>elete, <b><span class=\"bg-info\">H</span></b>istory on <b><span class=\"bg-info\">I</span></b>nstance, or <b><span class=\"bg-info\">H</span></b>istory on <b><span class=\"bg-info\">T</span></b>ype are only present if at least one of the resources has support for them.</li><li><span>The required, recommended, and some optional search parameters (if any). </span></li><li>The linked resources enabled for <code>_include</code></li><li>The other resources enabled for <code>_revinclude</code></li><li>The operations on the resource (if any)</li></ul><div class=\"table-responsive\"><table class=\"table table-condensed table-hover\"><thead><tr><th><b>Resource Type</b></th><th><b>Profile</b></th><th class=\"text-center\"><b title=\"GET a resource (read interaction)\">R</b></th><th class=\"text-center\"><b title=\"GET all set of resources of the type (search interaction)\">S</b></th><th class=\"text-center\"><b title=\"PUT a new resource version (update interaction)\">U</b></th><th class=\"text-center\"><b title=\"POST a new resource (create interaction)\">C</b></th><th class=\"text-center\"><b title=\"GET changes to a resource (history interaction on instance)\">H-I</b></th><th><b title=\"Required and recommended search parameters\">Searches</b></th><th><code><b>_include</b></code></th><th><code><b>_revinclude</b></code></th><th><b>Operations</b></th></tr></thead><tbody><tr><td><a href=\"#Immunization1-1\">Immunization</a></td><td><a href=\"StructureDefinition-air-immunization.html\">https://standards.digital.health.nz/fhir/air/StructureDefinition/air-immunization</a></td><td class=\"text-center\">y</td><td class=\"text-center\"/><td class=\"text-center\">y</td><td class=\"text-center\">y</td><td class=\"text-center\">y</td><td>patient, protocolApplied.targetDisease, status-reason:not-in, status:not-in, data-quality</td><td><code>*</code>, <code>Immunization.patient</code>, <code>Immunization.performer.actor</code>, <code>Immunization.location</code></td><td/><td><code>$upsert</code>, <code>$bulk-update</code></td></tr><tr><td><a href=\"#Patient1-2\">Patient</a></td><td><a href=\"StructureDefinition-air-patient.html\">https://standards.digital.health.nz/fhir/air/StructureDefinition/air-patient</a></td><td class=\"text-center\">y</td><td class=\"text-center\"/><td class=\"text-center\"/><td class=\"text-center\"/><td class=\"text-center\"/><td/><td/><td/><td><code>$update-state</code>, <code>$reassign-schedules</code>, <code>$patient-history</code></td></tr></tbody></table></div><hr/><div class=\"panel panel-default\"><div class=\"panel-heading\"><h4 id=\"Immunization1-1\" class=\"panel-title\"><span style=\"float: right;\">Resource Conformance: unspecified </span>Immunization</h4></div><div class=\"panel-body\"><div class=\"container\"><div class=\"row\"><div class=\"col-lg-6\"><span class=\"lead\">Base System Profile</span><br/><a href=\"StructureDefinition-air-immunization.html\">AIR Immunization</a></div><div class=\"col-lg-3\"><span class=\"lead\">Profile Conformance</span><br/><b>SHALL</b></div><div class=\"col-lg-3\"><span class=\"lead\">Reference Policy</span><br/></div></div><p/><div class=\"row\"><div class=\"col-lg-6\"><span class=\"lead\">Interaction summary</span><br/><ul><li>Supports <br/><code>create</code><div><p>POST|[base]/Immunization/|The &quot;create&quot; operation is used to create a new immunisation event. This method performs  validation checks to ensure that the event is valid before it is created.</p>\n<pre><code>    Returns either the created Immunization record or if there were any issues with the create, the  response will contain an OperationOutcome resource array. The OperationOutcome resource has an informational issue indicating that the create operation failed. The issue array of the OperationOutcome resource would contain additional issues with appropriate severity and code values.|system/Immunization.c\n</code></pre>\n</div><code>read</code><div><p>GET|[base]/Immunization/[id]|The &quot;read&quot; operation is used to read an immunisation event. This method takes an immunisation event id and returns back the FHIR resource for the immunization event.|system/Immunization.r</p>\n</div><code>update</code><div><p>PUT|[base]/Immunization/[id]| The &quot;update&quot; operation is used to update an existing immunisation event. This method checks if the immunisation event with the given ID exists, and if it does, it updates the event with the new details provided. The method also performs validation checks to ensure that the updated event is valid before it is saved.</p>\n<pre><code>    Returns either the the updated immunisation record or an OperationOutcome if there were any issues with the update.\n\n    On success - returns the updated immunisation record. data quality issues will be identified and sent as part of the response in the meta section of the resource.\n\n    On Fail - if there were any issues with the update, the response will contain an OperationOutcome resource array. The OperationOutcome resource has an informational issue indicating that the update operation failed. The issue array of the OperationOutcome resource would contain additional issues with appropriate severity and code values.|system/Immunization.u\n</code></pre>\n</div><code>history-instance</code><div><p>GET|[base]/Immunization/[id]_history|The _history interaction is used to return all the versions of an immunization event including the data quality. This method takes an immsot_id and returns back the FHIR bundle, which is a collection of immunization event resources where each resource in the bundle represents a version.|system/Immunization.r, air-admin/Immunization.r</p>\n</div></li></ul></div></div><p/><div class=\"row\"><div class=\"col-lg-7\"><span class=\"lead\">Search Parameters</span><table class=\"table table-condensed table-hover\"><thead><tr><th>Conformance</th><th>Parameter</th><th>Type</th><th>Documentation</th></tr></thead><tbody><tr><td><b>SHALL</b></td><td>patient</td><td><code>reference</code></td><td><div><p>NHI number of the patient</p>\n</div></td></tr><tr><td><b>SHALL</b></td><td>protocolApplied.targetDisease</td><td><code>token</code></td><td><div><p>Vaccine-preventable disease being targeted by an immunisation.</p>\n</div></td></tr><tr><td><b>SHALL</b></td><td><a href=\"SearchParameter-Immunization-StatusReason.html\">status-reason:not-in</a></td><td><code>token</code></td><td><div><p>Exclude immunisation events with specified status reason codes</p>\n</div></td></tr><tr><td><b>SHALL</b></td><td><a href=\"SearchParameter-Immunization-Status.html\">status:not-in</a></td><td><code>token</code></td><td><div><p>Exclude immunisation events with specified statuses</p>\n</div></td></tr><tr><td><b>SHALL</b></td><td><a href=\"OperationDefinition-Data-quality.html\">data-quality</a></td><td><code>special</code></td><td><div><p>Query search for immunisation events with data quality issues. Restricted to admin users.</p>\n</div></td></tr></tbody></table></div><div class=\"col-lg-5\"><span class=\"lead\">Combined Search Parameters</span><table class=\"table table-condensed table-hover\"><thead><tr><th>Conformance</th><th>Parameters</th><th>Types</th></tr></thead><tbody><tr><td>\u00a0</td><td>patient</td><td><code>reference</code></td></tr><tr><td>\u00a0</td><td>patient(+protocolApplied.targetDisease+<a href=\"SearchParameter-Immunization-StatusReason.html\">status-reason:not-in</a>+<a href=\"SearchParameter-Immunization-Status.html\">status:not-in</a>)</td><td><code>reference</code>(+<code>token</code>+<code>token</code>+<code>token</code>)</td></tr></tbody></table></div></div><div class=\"row\"><div class=\"col-12\"><span class=\"lead\">Extended Operations</span><table class=\"table table-condensed table-hover\"><thead><tr><th>Conformance</th><th>Operation</th><th>Documentation</th></tr></thead><tbody><tr><td><b>SHALL</b></td><td><a href=\"OperationDefinition-Immunization-upsert.html\">$upsert</a></td><td><div><p>Update or add an immunisation event</p>\n</div></td></tr><tr><td><b>SHALL</b></td><td><a href=\"OperationDefinition-Immunization-bulk-update.html\">$bulk-update</a></td><td><div><p>Update or add immunisation events in bulk.</p>\n</div></td></tr></tbody></table></div></div></div></div></div><div class=\"panel panel-default\"><div class=\"panel-heading\"><h4 id=\"Patient1-2\" class=\"panel-title\"><span style=\"float: right;\">Resource Conformance: unspecified </span>Patient</h4></div><div class=\"panel-body\"><div class=\"container\"><div class=\"row\"><div class=\"col-lg-6\"><span class=\"lead\">Base System Profile</span><br/><a href=\"StructureDefinition-air-patient.html\">AIR Patient Profile</a></div><div class=\"col-lg-3\"><span class=\"lead\">Profile Conformance</span><br/><b>SHALL</b></div><div class=\"col-lg-3\"><span class=\"lead\">Reference Policy</span><br/></div></div><p/><div class=\"row\"><div class=\"col-lg-6\"><span class=\"lead\">Interaction summary</span><br/><ul><li>Supports <br/><code>read</code><div><p>GET|[base]/Patient/[id]|Read the current state of an ImmSOT Consumer. Consumer state held in ImmSOT is returned as a FHIR AIR Patient. When an optional header &quot;origin-nhi-version&quot; is included which contains the NHI version, the API will check if it is the same NHI version we have stored in ImmSoT database for the Consumer. If it is the same, we return the current data we have in ImmSoT database. If it is not the same, we do a Consumer sync with NHI and update the data we have in ImmSoT database and then return this updated data in the response.|system/Patient.r, air-test/Patient.r</p>\n</div></li></ul></div></div><p/><div class=\"row\"><div class=\"col-12\"><span class=\"lead\">Extended Operations</span><table class=\"table table-condensed table-hover\"><thead><tr><th>Conformance</th><th>Operation</th><th>Documentation</th></tr></thead><tbody><tr><td><b>SHALL</b></td><td><a href=\"OperationDefinition-Update-patient-state.html\">$update-state</a></td><td><div><p>Update the current state of an ImmSOT Consumer. Updates the Consumer state and/or sub status only. Input is the Consumer version previously read (used for operation optimistic locking) and the desired Consumer state. At least one of state and subStatus must be specified. If state or subStatus is not specified, then these attributes will not be updated. Setting subStatus to null will clear the current sub status. A 412 Preconditioned Failed will be returned if the version received in the payload does not match the server version.</p>\n</div></td></tr><tr><td><b>SHALL</b></td><td><a href=\"OperationDefinition-Reassign-patient-schedules.html\">$reassign-schedules</a></td><td><div><p>Reassign immunisation schedules for a patient. Cancels the existing schedules and then creates a new set of schedules based on the new onboarding date. Input is the new onboarding date.</p>\n</div></td></tr><tr><td><b>SHALL</b></td><td><a href=\"OperationDefinition-Patient-History.html\">$patient-history</a></td><td><div><p>Fetch all the versions of an ImmSOT Patient/Consumer.</p>\n</div></td></tr></tbody></table></div></div></div></div></div><h2 id=\"messaging\">FHIR Messaging Capabilities</h2><div class=\"panel panel-default\"><div class=\"panel-heading\"><h3 id=\"messaging_1\" class=\"panel-title\">Messaging Capability</h3></div><div class=\"panel-body\"><h4 id=\"msg_sm_1\">Supported Message(s)</h4><table class=\"table table-condensed table-hover\"><thead><tr><th>Mode</th><th>Definition</th></tr></thead><tbody><tr><td>sender</td><td><a href=\"MessageDefinition-UpdateImmunisationRequestMessageDefinition.html\">MessageDefinition[http://hl7.org.nz/fhir/MessageDefinition/UpdateImmunisationRequestMessageDefinition|2.7.0]</a></td></tr><tr><td>sender</td><td><a href=\"MessageDefinition-UpdateImmunisationResponseMessageDefinition.html\">MessageDefinition[http://hl7.org.nz/fhir/MessageDefinition/UpdateImmunisationResponsetMessageDefinition|2.7.0]</a></td></tr></tbody></table><br/></div></div></div>"
  },
  "url" : "https://standards.digital.health.nz/fhir/air/CapabilityStatement/AIRCapabilityStatement",
  "version" : "2.7.0",
  "name" : "AIRCapabilityStatement",
  "title" : "AIR FHIR Server Capability Statement",
  "status" : "draft",
  "experimental" : false,
  "date" : "2023-02-14",
  "publisher" : "Te Whatu Ora",
  "contact" : [{
    "name" : "Te Whatu Ora",
    "telecom" : [{
      "system" : "url",
      "value" : "https://tewhatuora.govt.nz"
    }]
  }],
  "description" : "The Aotearoa Immunisation Register (AIR) FHIR v4.0.1 API",
  "jurisdiction" : [{
    "coding" : [{
      "system" : "urn:iso:std:iso:3166",
      "code" : "US",
      "display" : "New Zealand"
    }]
  }],
  "kind" : "instance",
  "implementation" : {
    "description" : "PROD - ImmSoT Service endpoint",
    "url" : "https://air.api.digital.health.nz/v2/fhir"
  },
  "fhirVersion" : "4.0.1",
  "format" : ["json"],
  "rest" : [{
    "mode" : "server",
    "security" : {
      "extension" : [{
        "extension" : [{
          "url" : "token",
          "valueUri" : "https://auth.integration.covid19.health.nz/oauth2/token"
        },
        {
          "url" : "authorize",
          "valueUri" : "https://auth.integration.covid19.health.nz/oauth2/authorize"
        }],
        "url" : "http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"
      }],
      "cors" : true,
      "service" : [{
        "coding" : [{
          "system" : "http://terminology.hl7.org/CodeSystem/restful-security-service",
          "code" : "OAuth"
        }]
      }]
    },
    "resource" : [{
      "extension" : [{
        "extension" : [{
          "url" : "required",
          "valueString" : "patient"
        }],
        "url" : "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
      },
      {
        "extension" : [{
          "url" : "required",
          "valueString" : "patient"
        },
        {
          "url" : "optional",
          "valueString" : "protocolApplied.targetDisease"
        },
        {
          "url" : "optional",
          "valueString" : "status-reason:not-in"
        },
        {
          "url" : "optional",
          "valueString" : "status:not-in"
        }],
        "url" : "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
      }],
      "type" : "Immunization",
      "profile" : "https://standards.digital.health.nz/fhir/air/StructureDefinition/air-immunization",
      "interaction" : [{
        "code" : "create",
        "documentation" : "POST|[base]/Immunization/|The \"create\" operation is used to create a new immunisation event. This method performs  validation checks to ensure that the event is valid before it is created.  \n\n        Returns either the created Immunization record or if there were any issues with the create, the  response will contain an OperationOutcome resource array. The OperationOutcome resource has an informational issue indicating that the create operation failed. The issue array of the OperationOutcome resource would contain additional issues with appropriate severity and code values.|system/Immunization.c"
      },
      {
        "code" : "read",
        "documentation" : "GET|[base]/Immunization/[id]|The \"read\" operation is used to read an immunisation event. This method takes an immunisation event id and returns back the FHIR resource for the immunization event.|system/Immunization.r"
      },
      {
        "code" : "update",
        "documentation" : "PUT|[base]/Immunization/[id]| The \"update\" operation is used to update an existing immunisation event. This method checks if the immunisation event with the given ID exists, and if it does, it updates the event with the new details provided. The method also performs validation checks to ensure that the updated event is valid before it is saved.\n\n        Returns either the the updated immunisation record or an OperationOutcome if there were any issues with the update.\n\n        On success - returns the updated immunisation record. data quality issues will be identified and sent as part of the response in the meta section of the resource.\n\n        On Fail - if there were any issues with the update, the response will contain an OperationOutcome resource array. The OperationOutcome resource has an informational issue indicating that the update operation failed. The issue array of the OperationOutcome resource would contain additional issues with appropriate severity and code values.|system/Immunization.u"
      },
      {
        "code" : "history-instance",
        "documentation" : "GET|[base]/Immunization/[id]_history|The _history interaction is used to return all the versions of an immunization event including the data quality. This method takes an immsot_id and returns back the FHIR bundle, which is a collection of immunization event resources where each resource in the bundle represents a version.|system/Immunization.r, air-admin/Immunization.r"
      }],
      "versioning" : "versioned",
      "readHistory" : false,
      "updateCreate" : false,
      "conditionalCreate" : false,
      "conditionalRead" : "not-supported",
      "conditionalUpdate" : false,
      "conditionalDelete" : "not-supported",
      "searchInclude" : ["*",
      "Immunization.patient",
      "Immunization.performer.actor",
      "Immunization.location"],
      "searchParam" : [{
        "name" : "patient",
        "definition" : "http://hl7.org/fhir/SearchParameter/patient",
        "type" : "reference",
        "documentation" : "NHI number of the patient"
      },
      {
        "name" : "protocolApplied.targetDisease",
        "definition" : "http://hl7.org/fhir/SearchParameter/target-disease",
        "type" : "token",
        "documentation" : "Vaccine-preventable disease being targeted by an immunisation."
      },
      {
        "name" : "status-reason:not-in",
        "definition" : "http://hl7.org/fhir/SearchParameter/Immunization-StatusReason",
        "type" : "token",
        "documentation" : "Exclude immunisation events with specified status reason codes"
      },
      {
        "name" : "status:not-in",
        "definition" : "http://hl7.org/fhir/SearchParameter/Immunization-Status",
        "type" : "token",
        "documentation" : "Exclude immunisation events with specified statuses"
      },
      {
        "name" : "data-quality",
        "definition" : "https://standards.digital.health.nz/fhir/air/StructureDefinition/immunization-data-quality",
        "type" : "special",
        "documentation" : "Query search for immunisation events with data quality issues. Restricted to admin users."
      }],
      "operation" : [{
        "name" : "upsert",
        "definition" : "https://standards.digital.health.nz/fhir/air/OperationDefinition/immunization-upsert",
        "documentation" : "Update or add an immunisation event"
      },
      {
        "name" : "bulk-update",
        "definition" : "https://standards.digital.health.nz/fhir/air/OperationDefinition/immunization-bulk-update",
        "documentation" : "Update or add immunisation events in bulk."
      }]
    },
    {
      "type" : "Patient",
      "profile" : "https://standards.digital.health.nz/fhir/air/StructureDefinition/air-patient",
      "interaction" : [{
        "code" : "read",
        "documentation" : "GET|[base]/Patient/[id]|Read the current state of an ImmSOT Consumer. Consumer state held in ImmSOT is returned as a FHIR AIR Patient. When an optional header \"origin-nhi-version\" is included which contains the NHI version, the API will check if it is the same NHI version we have stored in ImmSoT database for the Consumer. If it is the same, we return the current data we have in ImmSoT database. If it is not the same, we do a Consumer sync with NHI and update the data we have in ImmSoT database and then return this updated data in the response.|system/Patient.r, air-test/Patient.r"
      }],
      "operation" : [{
        "name" : "update-state",
        "definition" : "https://standards.digital.health.nz/fhir/air/OperationDefinition/update-patient-state",
        "documentation" : "Update the current state of an ImmSOT Consumer. Updates the Consumer state and/or sub status only. Input is the Consumer version previously read (used for operation optimistic locking) and the desired Consumer state. At least one of state and subStatus must be specified. If state or subStatus is not specified, then these attributes will not be updated. Setting subStatus to null will clear the current sub status. A 412 Preconditioned Failed will be returned if the version received in the payload does not match the server version."
      },
      {
        "name" : "reassign-schedules",
        "definition" : "https://standards.digital.health.nz/fhir/air/OperationDefinition/reassign-patient-schedules",
        "documentation" : "Reassign immunisation schedules for a patient. Cancels the existing schedules and then creates a new set of schedules based on the new onboarding date. Input is the new onboarding date."
      },
      {
        "name" : "patient-history",
        "definition" : "https://standards.digital.health.nz/fhir/air/OperationDefinition/patient-history",
        "documentation" : "Fetch all the versions of an ImmSOT Patient/Consumer."
      }]
    }],
    "interaction" : [{
      "code" : "transaction"
    }],
    "operation" : [{
      "name" : "process-message",
      "definition" : "http://hl7.org/fhir/OperationDefinition/MessageHeader-process-message",
      "documentation" : "POST| [base]/$process-message| http://hl7.org/fhir/OperationDefinition/MessageHeader-process-message| system/MessageHeader.u"
    }]
  }],
  "messaging" : [{
    "supportedMessage" : [{
      "mode" : "sender",
      "definition" : "http://hl7.org.nz/fhir/MessageDefinition/UpdateImmunisationRequestMessageDefinition"
    },
    {
      "mode" : "sender",
      "definition" : "http://hl7.org.nz/fhir/MessageDefinition/UpdateImmunisationResponsetMessageDefinition"
    }]
  }]
}