AU Core Implementation Guide
0.2.2-preview - Preview
This page is part of the Australian Core IG (v0.2.2-preview: AU Core) based on FHIR R4. For a full list of available versions, see the Directory of published versions
Page standards status: Informative |
The requirements of the FHIR standard and FHIR Conformance Rules apply, and define the use of terms in this guide including the conformance verbs - SHALL, SHALL NOT, SHOULD, SHOULD NOT, MAY.
Implementers are advised to be familiar with the requirements of the FHIR standard when implementing AU Core, in particular:
AU Core defines the following conformance artifacts:
There are two different ways to implement AU Core:
Systems may deploy, and support, one or more AU Core profiles (i.e. the profiles governed by this guide) to represent digital health information. A system that implements profile only support will use a profile’s content model without any expectations to implement AU Core interactions.
A system SHOULD support all AU Core profiles unless the system does not anticipate supplying or consuming a certain type of data, usually by virtue of playing a limited or specialised role in clinical or information workflows. For example, a pathology laboratory may support AU Core DiagnosticReport, but may not support AU Core MedicationRequest.
Profile elements consist of both Mandatory and Must Support elements. Mandatory elements are elements with a minimum cardinality of 1 (min=1). The base FHIR Must Support guidance requires specifications to define the support expected for profile elements labelled Must Support. AU Core defines server and client requirements for profile elements labelled as Must Support on the Must Support page.
Servers that implement AU Core Profile Only Support:
CapabilityStatement.rest.resource.profile
or CapabilityStatement.rest.resource.supportedProfile
elementDeclaring Conformance
Servers that implement Profile Only Support declare conformance to each profile supported:
The server hosts a capability statement at [url]/metadata that is available to both authenticated and unauthenticated clients and that declares the profiles supported as either a base profile using CapabilityStatement.rest.resource.profile or supported profile using CapabilityStatement.rest.resource.supportedProfile.
Example: CapabilityStatement resource for a server supporting the AU Core Patient profile as a system-wide profile that is applied across all instances of the Patient resource:
{
"resourceType": "CapabilityStatement",
...
"instantiates": [
"http://hl7.org.au/fhir/core/CapabilityStatement/au-core-server"
],
...
"rest": [
{
"mode": "server",
...
"resource": [
...
{
"type": "Patient",
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/au-core-patient"
],
...
}
]
}
]
}
Example: CapabilityStatement resource for a server supporting the AU Core Waist Circumference profile as a profile for supported use cases provided by the server:
{
"resourceType": "CapabilityStatement",
...
"instantiates": [
"http://hl7.org.au/fhir/core/CapabilityStatement/au-core-server"
],
...
"rest": [
{
"mode": "server",
...
"resource": [
...
{
"type": "Patient",
"supportedProfile": [
"http://hl7.org.au/fhir/core/StructureDefinition/au-core-waistcircum"
],
...
}
]
}
]
}
Profile Support refers to the support of the AU Core profiles, such that the system exposes FHIR resources that adhere to the AU Core profiles’ content model. Interaction Support refers to a system that supports the AU Core RESTful interactions.
Servers that implement AU Core Profile + Interaction Support:
CapabilityStatement.instantiates
element: http://hl7.org.au/fhir/core/CapabilityStatement/au-core-server
CapabilityStatement.rest.resource.supportedProfile
elementDeclaring Conformance
Servers that implement Profile + Interaction Support declare conformance to the capability statement supported:
The server hosts a capability statement at [url]/metadata that is available to both authenticated and unauthenticated clients and that declares that AU Core is supported using CapabilityStatement.instantiates, as shown in the following fragment:
{
"resourceType": "CapabilityStatement",
...
"instantiates": [
"http://hl7.org.au/fhir/core/CapabilityStatement/au-core-server"
],
...
"rest": [
{
"mode": "server",
...
}
]
}
There are situations when information for a particular data element is missing and the source system does not know reason for the absence of data.
If the source system does not have data for an element with a minimum cardinality = 0 (including elements labelled Must Support), the data element SHALL be omitted from the resource.
If the data element is a Mandatory element (in other words, where the minimum cardinality is > 0), the element SHALL be present even if the source system does not have data or know the reason for the absence of data. The core specification provides guidance for what to do in this situation, which is summarised below.
unknown
- The value is expected to exist but is not known.Example: ExplanationOfBenefit resource where the patient’s insurance coverage is not available.
{
"resourceType" : "ExplanationOfBenefit",
...
"outcome" : "complete",
"insurance" : [
{
"focal" : true,
"coverage" : {
"extension" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
"valueCode" : "unknown"
}
]
}
}
],
...
}
display
element.unknown
from the DataAbsentReason Code System.Example: AllergyIntolerance resource where the manifestation is unknown.
...
"reaction" : [
{
"manifestation" : [
{
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/data-absent-reason",
"code" : "unknown",
"display" : "unknown"
}
]
}
]
}
]
...
if the value set does not have the appropriate “unknown” concept code you must use a concept from the value set otherwise the instance will not be conformant.
AllergyIntolerance.clinicalStatus
*Condition.clinicalStatus
*Composition.status
DiagnosticReport.status
DocumentReference.status
Immunization.status
*The clinicalStatus element is conditionally mandatory based on resource specific constraints.
In some circumstances, specific pieces of data may hidden due to security or privacy reasons.
Elements with a minimum cardinality = 0 (including elements labelled Must Support), the element SHALL be omitted from the resource if they are suppressed.
For mandatory elements (minimum cardinality is > 0), the element SHALL be populated but it may exceed the data requester’s access rights to know that the data is suppressed:
unknown
from the DataAbsentReason Code System following the section on Missing Data.masked
from the DataAbsentReason Code System following the section on Missing Data.