Skip to content

Health-Chain-Inc/hyperion

Hyperion

License

Query FHIR with plain SQL.

Hyperion points at a FHIR R4 API and pulls FHIR R4 resources into a columnar database that speaks the MySQL wire protocol. One table per resource type, columns that mirror FHIR R4. Connect any SQL client and start querying.

No FHIRPath. No unnesting JSON. No driver to install — Power BI, Tableau, dbt, DBeaver, Metabase, or your psql-but-for-mysql of choice: if your tool talks to MySQL, it talks to Hyperion.

Why you'd want this

FHIR is built for exchange: deeply nested JSON, designed to move one patient between systems. The second you want a population answer, you're either writing FHIRPath, hand-rolling a flattening pipeline into a warehouse, or authoring SQL-on-FHIR ViewDefinitions one by one. Then you maintain that forever as the spec moves and profiles change.

Hyperion skips all of it:

  • It's just SQL. Tables and columns map to FHIR R4 directly, so JOIN, GROUP BY, and your existing dbt models work unchanged. Nothing new to learn.
  • It's just MySQL on the wire. Power BI, Tableau, dbt, DBeaver, Metabase, JDBC/ODBC clients, BI tools, ORMs, and migration runners all connect over the MySQL wire protocol with zero special handling. No proprietary client.
  • The schema generates itself. Every table is derived mechanically from the FHIR R4 (4.0.1) JSON Schema. New resource or new element? Re-bootstrap, not a code change — you never hand-write or hand-maintain DDL. As the spec evolves, the schema evolves with it.
  • Profiled data lands in the same tables. US Core and other profiles constrain the same base R4 resources Hyperion already models, so profiled data lands straight into the existing columns. Hyperion stores the base resource as-is — it does not validate or enforce profiles.
  • Compute and storage scale separately. Built on shared-data StarRocks 3.4. Burst compute for a heavy query window, shrink it when idle; data lives in Azure Blob, ADLS Gen2, S3, or MinIO.
  • Live or batch. In Azure mode it stream-loads every change in real time via Service Bus. The local demo is a single batch pass — clone, point it at a FHIR endpoint, start querying in minutes.
  • ML-ready. Connect Databricks — or any MySQL-compatible feature/ML pipeline — to the engine for downstream ML workloads.

What Hyperion is not

  • Not a FHIR server. It consumes a FHIR API (HAPI, Azure Health Data Services); it does not serve one.
  • Not an EHR or a replacement for one. It's an analytics layer downstream of your clinical systems.
  • Not a validator or terminology service. Resources are ingested as-is; validation happens upstream.
  • Not a transactional store. The engine is columnar, built for analytical queries, not record-by-record CRUD.
  • Not an HL7 SQL-on-FHIR (v2) ViewDefinition implementation. Same problem, solved with materialized tables instead of views — so there's nothing to author.

Up and running

Requires: Docker Desktop (Mac/Windows) or Docker Engine 24+ (Linux); ~10 GB free disk; ~8 GB free RAM.

git clone https://github.com/Health-Chain-Inc/hyperion.git
cd hyperion
cp .env.example .env
docker compose up --build

Check it's live

Confirm the engine is in shared-data mode and the compute node registered:

ADMIN SHOW FRONTEND CONFIG LIKE 'run_mode';
-- expect: run_mode = shared_data

SHOW STORAGE VOLUMES;
-- expect: hyperion_storage_volume

SHOW COMPUTE NODES\G
-- expect: Alive: true

Run these from any MySQL client against localhost:9030, or through the container:

docker exec -it hyperion-starrocks-fe \
  mysql -h 127.0.0.1 -P 9030 -u root \
  -e "ADMIN SHOW FRONTEND CONFIG LIKE 'run_mode';"

Example queries against the FHIR-shaped tables → docs/queries.md.

Going deeper

You want to… Read this
How the pieces fit together — diagram, key design, operating modes, repo layout docs/architecture.md
Example SQL against the FHIR-shaped + shared tables docs/queries.md
Complete environment-variable reference docs/configuration.md
Dev workflow, common operations, tests, advanced compose docs/development.md
Full Azure deployment walkthrough (prereqs, scaling up, sidecars) docs/deployment-azure.md
Symptoms and fixes docs/troubleshooting.md
Pipeline internals (normalizer, shared tables, FHIR JSON Schema → DDL) core/README.md
Modify the schema (which FHIR resources, which columns) util/README.md + util/schema/fhir.schema.json

All docs are indexed in docs/.

Intended use

Hyperion is data-engineering infrastructure for analytics. It is not a medical device, is not validated or intended for clinical decision-making or patient care, and deploying it does not by itself satisfy HIPAA, SOC 2, or any other regulatory obligation — those remain the responsibility of the deploying organization.

Community and contributing

License

Apache 2.0. See LICENSE.

About

Turn HL7 FHIR R4 into queryable SQL tables - no FHIRPath, no JSON unnesting, just MySQL-compatible SQL.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages