
FHIR data stores compared (HAPI / HealthLake / Azure / Google)
Choose a managed FHIR data store (AWS HealthLake, Azure Health Data Services or Google Cloud Healthcare API) to run a scalable FHIR server without managing infrastructure. Choose self-hosted HAPI FHIR for full control, cloud portability and deep customization, at the cost of running it yourself.
What is a FHIR data store?
Quick answer
A FHIR data store is a server that stores health data as HL7 FHIR resources and answers FHIR API reads, searches and bulk exports. You can self-host one, such as HAPI FHIR, or use a managed store from AWS HealthLake, Azure Health Data Services or Google Cloud Healthcare API. Agnotic Technologies builds and integrates either option.
| Criterion | HAPI (self-host) | Managed cloud |
|---|---|---|
| Operational burden | You run it | Provider runs it |
| Cost model | Infra + your team | Managed service fees |
| Control / customization | Full | Within service limits |
| Cloud portability | High (any host) | Locked to that cloud |
| Scaling & HA | Your responsibility | Handled by provider |
| Analytics / ML integration | Build it | Native to the cloud |
| Compliance (infra) | You own more of it | Shared with provider |
What are self-hosted and managed FHIR stores?
What is HAPI (self-host)
HAPI FHIR is the leading open-source FHIR server (Java), which you deploy and operate on your own infrastructure or containers. You control the version, storage, extensions, and scaling, with no managed-service fees, in exchange for owning deployment, upgrades, security, and operations.
What is Managed cloud
Managed FHIR stores (AWS HealthLake, Azure Health Data Services and Google Cloud Healthcare API) are hosted FHIR servers run by the cloud provider. They handle scaling, availability and much of the compliance surface, and connect to each cloud's analytics and ML services.
Self-hosted vs managed FHIR data platforms
Operational burden is the core trade
A managed FHIR store means the provider handles scaling, high availability, patching and infrastructure compliance, and you consume an endpoint. Self-hosted HAPI FHIR means you own all of that. Small teams without deep DevOps gain the most from managed; teams that want control self-host.
Portability vs lock-in
HAPI FHIR runs anywhere, on-premises, in any cloud or hybrid, so you're not tied to a vendor. Managed stores bind you to AWS, Azure or Google, and migrating off is non-trivial. If exit options matter, self-host; if you're committed to one cloud, lock-in matters less.
Analytics and ecosystem integration
Managed FHIR stores shine when you want more from the data: HealthLake integrates NLP and analytics, and Azure and Google connect to their data and ML stacks. Rebuilding those pipelines on HAPI FHIR is engineering you'd own, so managed helps when analytics is central.
Cost shape
Self-hosting trades service fees for infrastructure plus the people to run it, which can be cheaper at scale if you have the team. Managed pricing is predictable and includes operations, but per-store and per-operation fees grow with usage. Model both against your real data volume.
When should you self-host or use a managed store?
When to use Self-Hosted (HAPI FHIR)
- You need full control over configuration, extensions, and FHIR version.
- You want cloud portability and to avoid managed-service lock-in.
- Per-store or per-operation cloud fees don't fit your cost model.
- You have the DevOps capacity to run, scale, and secure a stateful server.
- You're building on-prem or in a multi/hybrid-cloud environment.
When to use Managed (HealthLake / Azure / Google)
- You're already on AWS, Azure, or GCP and want native FHIR without running servers.
- You want the provider to own scaling, availability, and infra-level compliance.
- You value built-in analytics/ML integrations (e.g. HealthLake's NLP, BigQuery export).
- You'd rather trade some control and cloud lock-in for lower operational burden.
- You need to stand up a compliant FHIR store quickly with a small team.
What should a FHIR server proof of concept test?
A FHIR server proof of concept should run your own app's queries and a realistic volume of your data against each candidate: HAPI FHIR, AWS HealthLake, Azure Health Data Services or Google Cloud Healthcare API. These gaps usually surface only after go-live.
Test US Core profile validation, the searches you really send (chained parameters, _include and _revinclude), Bulk Data $export and import at your volume, subscriptions, SMART on FHIR authorization, history and audit export, data residency, and a full export into another server to price your exit.
Which sources does this comparison rely on?
- The HL7 FHIR Bulk Data Access guide defines an asynchronous export operation for data on all patients, a defined group of patients or all FHIR data on a server (HL7 FHIR Bulk Data Access, hl7.org)
- The FHIR R4 search specification defines chained parameters and the _include and _revinclude parameters that pull related resources into one search result (HL7 FHIR R4, hl7.org)
- The HL7 US Core Implementation Guide profiles FHIR resources for the USCDI data classes and is the foundation for US Realm FHIR implementation guides (hl7.org)
- AWS lists AWS HealthLake among its HIPAA eligible services, and requires covered entities and business associates to sign an AWS business associate agreement before using them with protected health information (aws.amazon.com)
Frequently Asked Questions
Not sure which fits your build?
Tell us about your product, integration targets, and timeline. We'll map the trade-offs to your context and recommend the path that gets you to a compliant launch fastest.