FHIR Implementation Guides
The server can load FHIR packages from your preferred IGs at startup. Loaded packages contribute profiles and search definitions used by validation and the generated CapabilityStatement.
Configure packages
In config.yaml:
ig:
packages:
- hl7.fhir.us.core@6.1.0
- hl7.fhir.us.carin-bb@2.0.0
registryUrl: https://packages.fhir.org
forceReload: false
cacheDir: .fhir-ig-cache
Or use environment variables:
export IG_PACKAGES="hl7.fhir.us.core@6.1.0,hl7.fhir.us.carin-bb@2.0.0"
export IG_REGISTRY_URL="https://packages.fhir.org"
Package entries may use name@version or a direct .tgz URL.
Startup behavior
For each configured package, the loader:
- Resolves and downloads the package when it is not cached.
- Extracts relevant StructureDefinitions and SearchParameters.
- Stores package and profile metadata in PostgreSQL.
- Updates the in-memory registries used by validation and search.
Previously loaded packages are skipped unless IG_FORCE_RELOAD=true.
Verify loaded profiles
Read the server CapabilityStatement:
curl -sS http://localhost:9090/fhir/r4/metadata | jq
Loaded packages appear as canonical URLs in CapabilityStatement.implementationGuide; supported profiles and search parameters appear under the per-type entries in rest[0].resource:
curl -sS http://localhost:9090/fhir/r4/metadata | jq '.implementationGuide'
[
"http://hl7.org/fhir/ig/hl7.fhir.us.core/6.1.0"
]
An empty array means no packages are loaded — check the startup logs for load failures.
Pin package versions. An unpinned package source makes startup behavior and validation rules harder to reproduce across environments.