Maven library for Australia's Healthcare Identifiers (HI) Service over JAX-WS (SOAP). It provides Java clients for IHI (individual), HPI-I (provider person), and HPI-O (provider organisation) operations.
Audience: applications that add au.gov.nehta:hi-b2b-client as a dependency, supply mutual-TLS credentials and ADHA-registered product metadata, and resolve the licensed WSDL/XSD tree at runtime.
Traffic uses HTTPS with mutual TLS and signed SOAP. You need ADHA / Services Australia registration, test or production certificates, and endpoint URLs before live calls succeed.
| Term | Meaning |
|---|---|
| ADHA | Australian Digital Health Agency (specs, registration). |
| HI Service | National SOAP services for healthcare identifiers. |
| IHI | Individual Healthcare Identifier. |
| HPI-I | Healthcare Provider Identifier - Individual. |
| HPI-O | Healthcare Provider Identifier - Organisation. |
| NEHTA | Historical agency name; package namespaces may still use nehta. |
Registration: https://implementer.digitalhealth.gov.au/resources/hi-service-registration-and-certificates
Add the artifact from Maven Central. Use a <version> that matches your JDK and API stack (see Release lines).
<dependency>
<groupId>au.gov.nehta</groupId>
<artifactId>hi-b2b-client</artifactId>
<version>1.6.3</version>
</dependency>This line (1.6.3): Java 8, javax.xml.ws / javax.xml.bind, 14 standard HI B2B facade clients. Add com.sun.xml.ws:jaxws-rt 2.3.7 at runtime in your application.
| Version | Java | APIs | Facade clients |
|---|---|---|---|
| 1.6.3 | 8 | javax.xml.ws, javax.xml.bind |
14 (standard HI B2B) |
| 1.6.5 | 11 | Jakarta XML WS / Bind | 14 (standard HI B2B) |
| 1.7.0 | 11 | Jakarta XML WS / Bind | 26 (full MCA) |
All published versions are on Maven Central.
SOAP application code on 1.6.3 uses javax.xml.ws, javax.xml.bind, and related javax APIs. SOAP types come from au.gov.nehta:hi-wsdl at the same version when both artifacts are on the classpath.
The published JAR does not contain HI WSDL or XSD files. You must obtain the ADHA/Services Australia bundle under your licence and make it available at runtime.
- Download from https://healthsoftware.humanservices.gov.au/claiming/ext-vnd/ (see
wsdls/readme.txt). - Install so one directory has immediate children
wsdl/andschema/(lowercase).
Point the library at that directory using au.gov.nehta.vendorlibrary.hi.wsdl.HiWsdlArtifactRoot. Resolution order (first match wins):
HiWsdlArtifactRoot.setRoot(Path)- Environment variable
HI_WSDL_ARTIFACT_ROOT - Key
HI_WSDL_ARTIFACT_ROOTinlocal.propertiesin the JVM working directory (user.dir) - JVM system property
-DHI_WSDL_ARTIFACT_ROOT=...
Optional: place WSDL on the application classpath under your licence (fallback when no root is configured).
hi.wsdl.tree.root and HI_WSDL_TREE_ROOT are used only when building this project from source; they are not read at runtime. See CONTRIBUTING.md and wsdls/readme.txt.
Construct a facade client (for example ConsumerSearchIHIClient) with:
| Item | Purpose |
|---|---|
SSLSocketFactory |
Mutual TLS to the HI endpoint. |
| Private key + certificate | TLS and SOAP signing (often from a PKCS#12 keystore). |
| Endpoint URL | SOAP service URL from your registration (cert vs production). |
| Product / vendor / user qualified IDs | Values issued for your software product. |
| WSDL root | As above (HiWsdlArtifactRoot or equivalent). |
Load keystores, truststores, and identifiers from your platform (secrets manager, environment, or config files). Do not commit credentials to source control (SECURITY.md).
Keystore paths in .properties files: prefer forward slashes (./config/keystore.jks).
If local.properties exists in user.dir, the library reads HI_WSDL_ARTIFACT_ROOT from it (see local.properties.example). The same property names are used by this repository's integration tests when you build from a checkout (CONTRIBUTING.md); your production app may use different configuration.
| Key | Purpose |
|---|---|
HI_WSDL_ARTIFACT_ROOT |
Runtime WSDL/XSD root (wsdl/ + schema/). |
HI_KEYSTORE_*, HI_KEY_PASSWORD |
Client keystore for TLS/signing. |
HI_KEY_ALIAS_MEDICARE_IHI |
Private-key alias (IHI operations). |
HI_KEY_ALIAS_MEDICARE_HPIO |
Private-key alias (HPIO/HPI-I operations). |
HI_KEY_ALIAS_MEDICARE |
Fallback alias when the specific alias is unset. |
HI_TRUSTSTORE_* |
Truststore for the HI HTTPS server. |
HI_MEDICARE_ENDPOINT_BASE |
SOAP base URL (cert environment example in local.properties.example). |
HI_USER_*, HI_VENDOR_*, HI_HPIO_*, HI_PRODUCT_* |
Registration metadata. |
Copy local.properties.example to local.properties, fill in values, and keep local.properties out of Git.
Package base: au.gov.nehta.vendorlibrary.hi. This artifact line (1.6.3) exposes 14 standard HI B2B facade classes. Full MCA coverage (26 stubs) is version 1.7.0.
| Area | Classes |
|---|---|
IHI (ihi) |
ConsumerSearchIHIClient, ConsumerSearchIHIBatchSyncClient |
HPI-I (hpii) |
ProviderSearchForProviderIndividualClient, ProviderSearchHIProviderDirectoryForIndividualClient, SearchForProviderIndividualBatchAsyncClient |
HPI-O (hpio) |
ProviderSearchForProviderOrganisationClient, ProviderSearchHIProviderDirectoryForOrganisationClient, SearchForProviderOrganisationBatchAsyncClient, ProviderReadProviderOrganisationClient, ProviderReadAdministrativeIndividualClient, ProviderManageProviderOrganisationClient, ProviderManageProviderDirectoryEntryClient, ProviderManageProviderAdministrativeIndividualClient |
| Reference data | ReadReferenceDataClient |
Samples under src/sample/java (...hi.sample) are not on the default classpath; see CONTRIBUTING.md to compile them from a source checkout.
ConsumerSearchIHIClient validates the payload before each SOAP call. checkCommonMandatoryParameters requires family name, date of birth, and sex; given name is optional.
| Client method | Required identity | Must not set (among others) |
|---|---|---|
basicSearch |
IHI number | Medicare card, DVA file, address blocks |
detailedSearch |
None (demographics only) | IHI number, Medicare, DVA, address blocks |
basicMedicareSearch |
Medicare card number | IHI number, DVA, address blocks |
basicDvaSearch |
DVA file number | IHI number, Medicare, address blocks |
Address searches (australianPostalAddressSearch, australianStreetAddressSearch, internationalAddressSearch) also require ihiNumber to be unset. Use detailedSearch for demographics-only lookup, not basicSearch.
Batch sync/async clients apply the same rules in SearchBatch.ArgumentValidator.
| Document | Content |
|---|---|
wsdls/readme.txt |
WSDL download, layout, runtime property names |
SECURITY.md |
Secrets and reporting |
CONTRIBUTING.md |
Building or changing this repository from source |
MAINTAINERS.md |
Release and build internals |
| Javadoc | Attached to releases on Maven Central |
Copyright 2011 NEHTA
Copyright 2021-2026 ADHA (Australian Digital Health Agency)
Licensed under the Apache License, Version 2.0. See LICENSE.md.