Health Connect Australia Provider Directory FHIR Implementation Guide, published by Australian Digital Health Agency. This guide is not an authorized publication; it is the continuous build for version 26.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/AuDigitalHealth/HCPD/ and changes regularly. See the Directory of published versions
The Health Connect Australia Provider Directory (the Directory) API gives FHIR-based access to provider and organisation directory data. Clients can search it, read individual records, and export in bulk.
This API is the national implementation of the Health Connect Australia Provider Directory FHIR Implementation Guide.
This specification defines how clients interact with the APIs in practice, focusing on supported operations, validation rules, and operational requirements for integration. The Health Connect Australia Provider Directory FHIR IG remains the normative source of truth for resource structure and semantics.
Detailed behaviour for each capability is described on its own page:
The public API does two things: real-time search and read, and asynchronous bulk export.
Search locates practitioners, organisations, services and the resources linked to them, using standard FHIR search parameters with paging and filtering.
Export returns large datasets asynchronously through the FHIR Bulk Data Access $export pattern, for clients keeping a local copy of the directory.
The public API provides access to the following FHIR resources:
OrganizationPractitionerPractitionerRoleHealthcareServiceLocationEndpointProvenanceAll resources conform to Health Connect Australia Provider Directory FHIR profiles, including constraints on structure, cardinality, search parameters, and terminology. For the profiles, extensions, search parameters and terminology that apply to each resource type, see the Implementation Guide home page.
The API will not store or return the following Practitioner elements. This differs from the FHIR IG, which permits them.
| Element | Cardinality in profile | Search behaviour |
|---|---|---|
| Gender identity | 0..* | Search parameter rejected |
| Gender | 0..1 | Search parameter rejected |
| Birth date | 0..1 | No search parameter |
| Photo | 0..* | No search parameter |
| Address | 0..* | Search parameter rejected |
| PBS prescriber number | 1..* | Search parameter rejected |
A create or update carrying one of these elements still succeeds; the element is stripped before the resource is persisted and is never present in a read or search response. A rejected search parameter is rejected in a forward or reverse chain too. See Restricted search parameters.
Use rsg in place of gender and gender identity. See the Practitioner's Recorded Sex or Gender search parameter.
The PBS prescriber number is identified by the system http://ns.electronichealth.net.au/id/medicare-prescriber-number.
| Environment | Base URL | Usage |
|---|---|---|
| SVT | https://svt.healthconnect.digitalhealth.gov.au/api/v1/fhir |
Production-like data and performance testing. |
| PROD | https://healthconnect.digitalhealth.gov.au/api/v1/fhir |
Live environment (post-conformance). |
Environment access is arranged as part of client onboarding.
All examples in these API pages are path-only and are relative to the environment base URL above.
Example:
https://healthconnect.digitalhealth.gov.au/api/v1/fhir/Organization?name=clinic/Organization?name=clinicAll API requests must include a valid OAuth2 bearer token (JWT) issued by the Health Connect Authorisation Service (HCAS), presented as Authorization: Bearer <jwt>.
Clients are not required to present all scopes on every request. The required scope is operation-specific:
| Operation | Required scope |
|---|---|
| Search operations | search |
| Read operations | read |
| Export kickoff, polling, and file download operations | export |
Presenting a token without the scope required for an operation results in 403 Forbidden.
Authentication example:
GET /Organization?identifier=8003626566707032
Authorization: Bearer <jwt>
X-Request-ID: 6f0d0f2e-3e42-4a43-986a-a4ecba0ab7e4
Accept: application/fhir+json
To be updated.
Registration, token issuance, token lifetime and renewal, and authorisation error conditions are covered in a separate HCAS document. This page will link to it once it is published.
A record is either active or inactive. Practitioner, PractitionerRole, Organization and HealthcareService carry a boolean active; Location and Endpoint carry status.
Search returns active records by default. Inactive records are returned only when the state is asked for explicitly. See Data visibility rules for search for the permitted values on each type and how to request them.
Records may be suppressed by the upstream systems. Suppressed records are never returned in any search. Their status updates are included in incremental exports so that client systems can remove them locally. See Visibility rules for export.
All errors are returned as a FHIR OperationOutcome. Every OperationOutcome also carries the request correlation identifier as an additional informational issue, so that a client-side failure can be correlated with server-side logs for traceability.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "invalid",
"diagnostics": "some error message here"
},
{
"severity": "information",
"code": "informational",
"diagnostics": "X-Request-ID: 9c63ec77-8d78-4bf1-a170-9909b33a786b"
}
]
}
| HTTP | Meaning | Typical cause |
|---|---|---|
| 400 | Bad Request | Invalid FHIR query or parameters; restricted search parameter; paging beyond the result threshold |
| 401 | Unauthorized | Missing or invalid token |
| 403 | Forbidden | Missing required scope; policy restriction; unsupported resource type in an export request |
| 404 | Not Found | Resource not found or not visible |
| 409 | Conflict | Duplicate or inconsistent data |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Server Error | Internal system failure |
| 503 | Service Unavailable | Temporary system outage |
Note that an empty search result is not an error. A search that matches nothing returns 200 OK with a Bundle of total: 0. See No matching records.
To be updated.
Request rate limits and per-client quotas returning 429 Too Many Requests, and the backoff behaviour expected of a client. One limit is already defined: export status polling is limited to one request per status endpoint every 120 seconds - see Polling and completion.
| Term | Definition |
|---|---|
| Active record | A record whose active element is true (or, for Location and Endpoint, whose status is active). Returned by default in search results and standard exports. |
| Inactive record | A record whose active element is false (or, for Location, status = inactive; for Endpoint, status = off). Excluded from default search results and standard exports, and retrievable by explicitly requesting the inactive state. |
| Suppressed record | A record excluded from outward visibility. Suppressed records cannot be searched or returned through the Search API. Their status updates are included in incremental exports so client systems can remove them locally. |
| HCAS | Health Connect Authorisation Service. |
| HI Service | Healthcare Identifiers Service. |
| HPI-I | Healthcare Provider Identifier - Individual. |
| HPI-O | Healthcare Provider Identifier - Organisation. |
| PCA | Provider Connect Australia. |
| RSG | Recorded Sex or Gender. |