Healthcare/AU Core, Australia
National program

My Health Record and AU Core FHIR integration in Australia

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.

R4AU Core FHIR version
2025sharing by default act
IHInational identifier
au_core_search.py
# -*- 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'])

What FHIR standards does Australia use?

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.

How do I connect to the My Health Record FHIR gateway?

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.

How do I call an AU Core endpoint from Python?

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.

au_core_medications.py
# -*- 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)

How do I bridge existing HL7 v2 feeds to AU Core FHIR?

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.

v2_to_au_core.py
# -*- 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()

Frequently asked questions

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.

Ready to integrate with AU Core?

Get started with Zato and call your first Australian FHIR endpoint in minutes.

Open source In Python