Reusable Scala libraries for working with HL7 FHIR resources, queries, validation, configuration, FHIRPath, templates, and HTTP clients. The library family is transport-neutral and has no Akka or Pekko dependency.
The first independently versioned release is 4.0.0. Existing Maven artifact
IDs and io.onfhir.* package names are preserved.
| Module | Purpose |
|---|---|
| onfhir-common | neutral FHIR models, configuration values, interfaces, and shared utilities |
| onfhir-client | JDK HTTP FHIR client and request builders |
| onfhir-path | standalone FHIRPath parsing and evaluation |
| onfhir-query | FHIR/x-fhir-query parsing and in-memory search evaluation |
| onfhir-config | loading and interpreting FHIR infrastructure configuration |
| onfhir-expression | expression model and language-handler dispatch |
| onfhir-validation | profile, terminology, reference, and invariant validation |
| onfhir-template-engine | declarative generation of FHIR or JSON content from JSON templates with FHIRPath placeholders |
| onfhir-r4 | reusable FHIR R4 foundation-resource parsers |
| onfhir-r5 | reusable FHIR R5 parser facade, defaults, and compatibility tests |
| onfhir-stu3 | reusable FHIR STU3 foundation-resource parsers, layered on the R4 parsers |
| onfhir-definitions-r4 | packaged HL7 FHIR R4 (4.0.1) standard definitions and base CapabilityStatement (resources only, no Scala suffix) |
| onfhir-definitions-r5 | packaged HL7 FHIR R5 (5.0.0) standard definitions and base CapabilityStatement (resources only, no Scala suffix) |
| onfhir-definitions-stu3 | packaged HL7 FHIR STU3 (3.0.2) standard definitions and base CapabilityStatement (resources only, no Scala suffix) |
Use only the modules needed by your application. For example:
<dependency>
<groupId>io.onfhir</groupId>
<artifactId>onfhir-client_2.13</artifactId>
<version>4.0.0</version>
</dependency>Applications using several modules can import the optional BOM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.onfhir</groupId>
<artifactId>onfhir-libs-bom</artifactId>
<version>4.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>Modules log through slf4j-api and do not include or configure an SLF4J
provider. The consuming application selects one provider, such as Logback,
Log4j 2, or java.util.logging, at deployment time. Applications that do not
install a provider receive SLF4J's no-operation fallback behavior.
JDK 17 and Maven are used for the verified build; emitted bytecode targets Java 11.
mvn test
pwsh -File scripts/check-forbidden-imports.ps1
pwsh -File scripts/check-library-dependency-licenses.ps1The release profile attaches source and Scaladoc JARs and signs staged
artifacts. Activating it does not publish to Maven Central.
Version 4.0.0 intentionally contains major API changes and module moves from the 3.x monorepo line. See the migration guide, the changelog, and the MiMa reconciliation.
All coordinates release together at one version. Within a major line, minors
are additive and backward binary-compatible and patches are fixes only;
binary-incompatible changes occur only in a major release, enforced by a
binary-compatibility gate on every build.
The onFHIR server continues separately as Repofyr under io.repofyr
coordinates (GPL-3.0).
To report a vulnerability, see SECURITY.md.
Copyright 2019-2026 SRDC Corp. and contributors. Licensed under the Apache License 2.0.