// the find
hapifhir/hapi-fhir
🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers
HAPI FHIR is the de facto Java implementation of the HL7 FHIR standard — covering everything from a FHIR client library to a full server with JPA persistence. If you're building healthcare interoperability software in Java and need FHIR R4/R5 support, this is what you use; there's no real alternative at this maturity level.
Active maintenance with daily commits and a mature CI pipeline on Azure DevOps. Covers the full stack: parser, validator, client, server, JPA storage, and terminology services — you don't have to stitch together five libraries. The interceptor/pointcut system is genuinely well-designed and lets you hook into request/response lifecycle without subclassing everything. Multi-version support (DSTU2 through R5) is handled cleanly via FhirContext, so migrating a codebase between FHIR versions is less painful than it should be.
The monorepo is enormous — 50+ Maven modules — and build times reflect that; expect 20+ minutes for a full build locally. Documentation is spread across hapifhir.io and scattered wiki pages, and some of it lags the actual code significantly. The JPA server's search parameter indexing writes a lot of rows per resource, which creates real performance problems at scale that aren't obvious until you hit them in production. Commercial support is gated behind Smile CDR, which means the open-source version sometimes feels like it's missing guardrails that exist in the paid product.