Skip to content

Repository files navigation

WSO2 FHIR Server

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.

License FHIR Go Version

CI GitHub Release GitHub last commit GitHub issues

Why WSO2 FHIR Server?

  • 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.

What is WSO2 FHIR Server?

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 custom SearchParameter registration.
  • Validation — base-spec checks and referential integrity (on both writes and deletes) enforced by default, opt-in profile validation against loaded Implementation Guides, and $validate to 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) or code: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.

How does it work?

WSO2 FHIR Server architecture

Read more in the Architecture documentation.

Getting Started

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 -d

Then 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.

Documentation

Full documentation lives at wso2.github.io/fhir-server/docs:

Join the Community & Contribute

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.

License

WSO2 FHIR Server is licensed under Apache 2.0. See the LICENSE file for full details.

About

🔥 A blazing-fast, lightweight FHIR server written in Go.

Topics

Resources

Contributing

Security policy

Stars

23 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages