Australia's national FHIR program - AU Core profiles, the Sparked accelerator and a modernising My Health Record - and the Python code that connects to it.
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
class AUCoreSearch(Service):
name = 'demo.au.core-search'
def handle(self) -> 'None':
# An AU Core R4 endpoint, OAuth handled for you
client = self.fhir['FHIR.AU']
# Look up a patient by their IHI
patient = client.resources('Patient').search(
identifier = 'http://ns.electronichealth.net.au/id/hi/ihi/1.0|8003608166690503',
).first()
self.logger.info('Found %s', patient['id'])
Australian healthcare builds on HL7 AU Base and AU Core - FHIR R4 profiles maintained by HL7 Australia, with AU Core defining the minimum expectations for exchanging core clinical data. The content they hold is shaped by the AUCDI - the Australian Core Data for Interoperability - developed by the Sparked FHIR accelerator, a collaboration of CSIRO's Australian e-Health Research Centre, HL7 Australia, the Australian Digital Health Agency (ADHA) and the Department of Health.
My Health Record, the national record system, is being modernised to be FHIR-native - with Telstra Health, Smile Digital Health and Leidos involved in the platform work - and the Modernising My Health Record Act 2025 introduces "sharing by default" obligations for key health information.
Access to My Health Record is for registered, conformant systems - consumer access authenticates through myGov, and provider systems register with the ADHA and connect through the national gateway. A working integration presumes the Healthcare Identifiers (HI) Service - resolving the IHI for patients and the HPI-I and HPI-O identifiers for providers and organizations - before My Health Record interactions can take place.
From the integration layer's perspective, the gateway is a FHIR endpoint with OAuth in front - an outgoing FHIR connection with an OAuth security definition handles the tokens, and conformance and registration are organizational steps with the ADHA, not code.
AU Core endpoints are standard FHIR R4 servers, so the search and read patterns from the searches and bundles chapter apply unchanged - only the identifier systems are Australian.
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
# The IHI identifier system used across AU Core profiles
ihi_system = 'http://ns.electronichealth.net.au/id/hi/ihi/1.0'
class ReadAUCoreData(Service):
name = 'demo.au.read-core-data'
def handle(self) -> 'None':
# The connection holds the OAuth definition
client = self.fhir['FHIR.AU']
# Find the patient by their IHI ..
patient = client.resources('Patient').search(
identifier = f'{ihi_system}|8003608166690503',
).first()
# .. and read their active medication requests.
medications = client.resources('MedicationRequest').search(
subject = f'Patient/{patient.id}',
status = 'active',
)
for medication in medications.fetch():
name = medication.get_by_path('medicationCodeableConcept.text')
self.logger.info('Medication: %s', name)Australian pathology and hospital systems still exchange HL7 v2 - ORU results and ADT feeds - so the bridge pattern applies - an MLLP channel receives the v2 message and a service maps it to AU Core shaped resources, following the mapping reference.
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
ihi_system = 'http://ns.electronichealth.net.au/id/hi/ihi/1.0'
class V2ToAUCore(Service):
name = 'demo.au.v2-to-au-core'
def handle(self) -> 'None':
# An ADT from a hospital system, parsed by the MLLP channel ..
msg = self.request.input
# .. the IHI travels in PID-3 ..
ihi = msg.pid.patient_identifier_list.id_number
family_name = msg.pid.patient_name.family_name
# .. and becomes an AU Core identifier on the FHIR side.
client = self.fhir['FHIR.AU']
patient = client.resource('Patient',
identifier = [{'system': ihi_system, 'value': ihi}],
name = [{'family': family_name}],
)
patient.save()The national healthcare identifiers - IHI for individuals, HPI-I for individual providers and HPI-O for provider organizations, issued through the HI Service. AU Core profiles include them as FHIR identifiers with their own identifier systems.
Under the Modernising My Health Record Act 2025, key health information - starting with pathology and diagnostic imaging reports - is to be shared to My Health Record by default, turning uploading from an option into the expected behavior for connected systems.
Sparked publishes AUCDI and AU Core increments in regular releases, developed in the open with connectathon testing - integrations track the release notes the same way they track any national profile program.
Conformance is assessed per connected system, by the ADHA, at the level of your registered software - Zato is the integration layer inside it, a FHIR client and transformer, not a product with a conformance status of its own.
Get started with Zato and call your first Australian FHIR endpoint in minutes.