WSO2 FHIR Server is a blazing-fast, open-source FHIR server written in Go and backed by PostgreSQL — built for the cloud-native and agentic era.
- Fast. Write-time indexing and per-query plan selection in PostgreSQL, engineered for FHIR-shaped data.
- Lightweight. One binary, one database, a container image under 25 MB — and cold start to ready in under a second.
- Open source. Apache 2.0 licensed and community-driven — inspect it, extend it, and own your deployment and your data outright.
- Cloud-native. Stateless and Helm-deployable, with health probes, Prometheus metrics, OpenTelemetry tracing, and multi-tenancy built in.
- Sovereign. Deploy in your preferred environment — VMs, Docker, Kubernetes, any cloud.
WSO2 FHIR Server is an open-source FHIR REST server written in Go and backed by PostgreSQL. It is also the fastest open-source FHIR server according to a third-party performance benchmark.
Key capabilities:
- Full FHIR REST API — CRUD with versioning and history, conditional interactions, batch/transaction bundles,
$everything,$validate, and a generated CapabilityStatement. - Rich search — string, token, date, reference, number, quantity, URI and composite parameters, with modifiers, chaining,
_include/_revinclude, and customSearchParameterregistration. - Validation — base-spec checks and referential integrity (on both writes and deletes) enforced by default, opt-in profile validation against loaded Implementation Guides, and
$validateto test resources without storing them. - Implementation Guides — configure IG packages to load at startup; their profiles and search parameters feed validation and the CapabilityStatement.
- Terminology — externalized by design: point the server at any standard FHIR terminology service (e.g. the WSO2 FHIR terminology service) and searches like
code:in=<value-set>(any code in a value set) orcode:below=<code>(a code and its descendants) just work. - Multi-tenancy — physical (per-tenant server and database) or logical (shared) isolation models.
- Operations-ready — liveness/readiness probes, structured JSON logs, observability hooks, and configuration via YAML, environment variables, or both.
Read more in the Architecture documentation.
The fastest way to try the server is Docker Compose, using the released container image from GHCR:
curl -LO https://raw.githubusercontent.com/wso2/fhir-server/main/docker-compose.yml
docker compose up -dThen create your first resource:
curl -s -X POST http://localhost:9090/fhir/r4/Patient \
-H "Content-Type: application/fhir+json" \
-d '{"resourceType":"Patient","name":[{"family":"Smith","given":["Alice"]}]}'Follow the Quickstart Guide for the full walkthrough, or the Deployment Guide to build from source and run against your own PostgreSQL. For Kubernetes, deploy with the Helm chart.
Don't want to set anything up yourself? Try the hosted demo at fhir-explorer.openhealthcare.wso2.com.
Full documentation lives at wso2.github.io/fhir-server/docs:
- FHIR API — interactions, search, conditional operations, and operations.
- Profiles & Conformance — Implementation Guides, resource types, validation, and terminology, plus a browsable FHIR262 conformance report.
- Administration — deployment, configuration, multi-tenancy, and observability.
- Performance Tuning — storage and PostgreSQL sizing, search tunables, and regression gates.
We'd love for you to be part of the project! Whether you're fixing a bug, improving documentation, or suggesting new features, every contribution counts.
- Contributor Guide — learn how to get started.
- Testing Guide — run the unit and integration test suites.
- Report an Issue — help us improve the server.
- Security Policy — how to report vulnerabilities responsibly.
WSO2 FHIR Server is licensed under Apache 2.0. See the LICENSE file for full details.
