AU Core Examples¶
FHIR Frog includes comprehensive test coverage for AU Core profiles, demonstrating real-world usage with Australian FHIR identifiers.
Overview¶
AU Core is the Australian national FHIR Implementation Guide. These examples show how to test AU Core profiles with FHIR Frog.
What's Tested¶
- 4 Resource Types: Patient, Practitioner, Organization, Observation
- 6 Australian Identifiers: Medicare, IHI, HPI-I, AHPRA, HPI-O, ABN
- 7 Test Scenarios: CRUD, search, negative tests, advanced patterns
Test Results¶
Setup¶
1. Build AU Core Image¶
AU Core IG takes 10-15 minutes to load. Build a Docker image once:
This creates hapi-fhir-au-core:1.0.0 with AU Core pre-loaded.
2. Run Tests¶
Tests start in ~30 seconds using the pre-built image.
Test Architecture¶
Australian Identifiers¶
Patient Identifiers¶
Medicare Number¶
IHI (Individual Healthcare Identifier)¶
Practitioner Identifiers¶
HPI-I (Healthcare Provider Identifier - Individual)¶
AHPRA (Australian Health Practitioner Regulation Agency)¶
Organization Identifiers¶
HPI-O (Healthcare Provider Identifier - Organisation)¶
ABN (Australian Business Number)¶
Test Scenarios¶
1. Patient CRUD¶
Tests creating, reading, and deleting an AU Core Patient:
What it tests: - ✅ Create Patient with Medicare number and IHI - ✅ Read Patient by ID - ✅ Search for Patients - ✅ Delete Patient
2. Patient Search by Identifiers¶
Tests AU-specific search parameters:
@TestTemplate
@TestScriptSource("fhir/au-core-patient-search-identifiers.json")
void testPatientSearchByIdentifiers() {
}
What it tests: - ✅ Search by Medicare number - ✅ Search by IHI - ✅ Search by family name
3. Practitioner CRUD¶
Tests AU Core Practitioner with HPI-I and AHPRA:
4. Organization CRUD¶
Tests AU Core Organization with HPI-O and ABN:
5. Observation with Transaction Bundle¶
Tests creating related resources atomically:
Uses transaction bundle to create Patient and Observation together.
6. Negative Testing¶
Tests error handling:
What it tests: - ✅ Invalid Medicare number format (400/422) - ✅ Non-existent resource (404)
7. Advanced Search¶
Tests complex search patterns:
What it tests:
- ✅ Date range queries (ge, le)
- ✅ _include parameters
- ✅ Multiple search parameters
Performance¶
| Test | Time | Operations |
|---|---|---|
| Patient CRUD | ~10s | Create, Read, Search, Delete |
| Patient Search | ~12s | 3 identifier searches |
| Practitioner CRUD | ~9s | Create, Read, Search, Delete |
| Organization CRUD | ~9s | Create, Read, Search, Delete |
| Observation | ~8s | Transaction bundle, Search |
| Negative Tests | ~5s | 2 error scenarios |
| Advanced Search | ~7s | 3 search patterns |
| Total | 34.4s | 7 test scenarios |
Files¶
Test Classes¶
AUCoreSuiteIT.java- Comprehensive test suiteAUCorePatientIT.java- Patient-specific testsBasicPatientIT.java- Standard FHIR tests
TestScripts¶
au-core-patient-crud.jsonau-core-patient-search-identifiers.jsonau-core-practitioner-crud.jsonau-core-organization-crud.jsonau-core-observation-crud.jsonau-core-patient-negative.jsonau-core-advanced-search.json
Fixtures¶
au-core-patient-example.jsonau-core-practitioner-example.jsonau-core-organization-example.jsonobservation-bundle.jsoninvalid-patient-example.json
Key Patterns¶
Transaction Bundles for Related Resources¶
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"fullUrl": "urn:uuid:patient-1",
"resource": { /* Patient */ },
"request": {"method": "POST", "url": "Patient"}
},
{
"resource": {
/* Observation referencing urn:uuid:patient-1 */
},
"request": {"method": "POST", "url": "Observation"}
}
]
}
Variable Extraction¶
{
"variable": [{
"name": "patientId",
"expression": "Patient.id",
"sourceId": "create-response"
}]
}
Identifier Searches¶
{
"operation": {
"type": {"code": "search"},
"resource": "Patient",
"params": "?identifier=http://ns.electronichealth.net.au/id/medicare-number|6951449304"
}
}