Skip to content
FerroHEALTHPublic

About

a pure-Rust, machine-generated multi-version FHIR terminology server for SNOMED CT. No JVM, no Elasticsearch.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

620 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FerroTERM

The FHIR terminology server for SNOMED CT, LOINC, ICD and every other code system, in one binary.

Documentation · Quick start · What ships today · Licensing

Project
Release CI License: BUSL-1.1 Docs GHCR Image pulls

Quality and security
OpenSSF Scorecard Quality gate Coverage CodeQL Signed releases SLSA Build Level 3

Conformance and compliance
tx-ecosystem R4 tx-ecosystem R4B tx-ecosystem R5
CRA

What FerroTERM does

Health records are full of codes. A diagnosis is a SNOMED CT or ICD code, a lab result a LOINC code, a medicine a code from a national drug database. These code systems (the shared lists of medical terms) are what let two systems agree that they mean the same thing. Every application that records or exchanges clinical data needs to look codes up, check them and search them.

FerroTERM answers those questions for every application at once. It loads the code systems you are licensed for and serves them over FHIR, the standard interface health software uses for terminology: look up a code, check that a code belongs to a list, find every narrower term, translate a code from one system to another. It runs as one program, with no database or search engine to operate beside it.

Who it is for

  • Hospitals and national eHealth programmes that need one terminology service for all their applications.
  • Software vendors and integrators that need SNOMED CT, LOINC or ICD in their products without running a heavy terminology stack.
  • Terminology teams that edit and publish value sets (curated lists of codes) in the console.

Why you can trust what it claims

Every release is signed and comes with a software bill of materials (the list of every component inside) and SLSA build provenance, so you can check that what you install is what was built here. The source is public, and every feature is in this repository: there is no paid edition with extra functions. The conformance badges come from the HL7 terminology test suite, run against every change, with a committed pass list per FHIR version, so you can check a result against the standard yourself.

Part of FerroHEALTH

FerroTERM is one of five FerroHEALTH servers. Each does one job and reaches the others only over published standards: FerroEHR stores the record, FerroBRIDGE translates it to FHIR and the OMOP research model, FerroFED connects records across organisations and borders, FerroPIX matches patient identities, and FerroTERM serves the code systems. Any FHIR client can use FerroTERM, not only the FerroHEALTH products. Sign-in, the audit trail and the web consoles come from three shared libraries: FerroAUTH, FerroAUDIT and FerroUI.

The FerroTERM console dashboard

Quick start

The image serves UCUM, BCP 47, BCP 13 and ISO 3166-1 with no configuration, so the first call needs nothing beyond Docker:

docker run --rm -p 8080:8080 ghcr.io/ferrohealth/ferroterm:0.4.1

In a second terminal, look up a unit of measure:

curl 'http://localhost:8080/r4b/CodeSystem/$lookup?system=http://unitsofmeasure.org&code=mg/dL'

A clinical code system such as SNOMED CT is a release you hold a licence for. ferroterm-build, in the same image, turns it into an index once, and the server reads that index at startup. Install and run and loading code systems continue from here.

What it serves

SNOMED CT, LOINC, UCUM, BCP 47, BCP 13, ISO 3166-1, ICD-10 (WHO), ICD-10-NL, ICD-10-CM, ICD-11 MMS, ICD-11 ICF, ICD-11 Foundation, ATC/DDD, ICPC-2, RxNorm, the DHD Diagnosethesaurus and Verrichtingenthesaurus, the G-Standaard, the Nederlandse Labcodeset, the NHG ICPC-1 to SNOMED CT map, and any FHIR CodeSystem, ValueSet, and ConceptMap resources (HL7 Terminology's 900+ systems load this way).

The code systems page lists, per system, the versions handled, the build command and the licence position. You bring the release you are licensed for; UCUM and the registries are built in.

What ships today

Terminology

Operations

Libraries

  • The SNOMED CT, LOINC, ICD, RxNorm and Dutch release readers and the terminology engine, published as Rust crates (listed below)
Speed and footprint, measured per code system
Code system Release Concepts Build Peak build memory Index on disk Resident $lookup $validate-code $subsumes $expand (small) $expand (large) Search Snowstorm
ICD-10-CM 2026 98,827 1.51 s 359 MB 44 MB 91 MB 105 µs 60 µs 58 µs n/a n/a n/a not run
ICD-10-NL 2021 42,769 880.52 ms 221 MB 21 MB 66 MB 96 µs 60 µs 64 µs n/a n/a n/a not run
ICD-11 MMS 2026-01 37,211 n/a n/a 44 MB 99 MB 138 µs 59 µs n/a 129 µs 116 µs 139 µs not run
LOINC 2.83 257,266 8.15 s 2.54 GB 310 MB 440 MB 136 µs 56 µs n/a 126 µs 7.23 ms 283 µs not run
RxNorm (prescribable subset) 09082026 81,468 4.58 s 667 MB 77 MB 133 MB 388 µs 114 µs n/a n/a n/a n/a not run
SNOMED CT (International edition) 20260901 535,502 14.12 s 3.06 GB 559 MB 943 MB 217 µs 66 µs 59 µs 215 µs 1.7 ms 353 µs not run
SNOMED CT (Netherlands edition) 20260630 548,949 17.66 s 3.88 GB 864 MB 1.14 GB 222 µs 66 µs 59 µs 285 µs 2.28 ms 817 µs not run

Warm p50 over 200 HTTP round trips on one machine (Apple M2, 17.18 GB, macos/aarch64), FerroTERM 0.1.4 serving FHIR R4B, taken 2026-09-22. The records are under bench/records/; the benchmarks page has the method, the cold and tail latencies, and how to reproduce a record.

Published crates (14)
Crate What it does Version Docs Downloads
rf2 The SNOMED CT RF2 release loader and typed component model (Apache-2.0) crates.io docs.rs downloads
concept-graph The SNOMED CT ontology as CSR adjacency and roaring transitive-closure bitmaps crates.io docs.rs downloads
concept-store The disk-backed columnar concept and description store crates.io docs.rs downloads
designation-index The fst and roaring description search index crates.io docs.rs downloads
sct-ecl The SNOMED CT Expression Constraint Language lexer, parser and evaluator crates.io docs.rs downloads
sct-scg The SNOMED CT Compositional Grammar lexer, parser and printer crates.io docs.rs downloads
loinc The LOINC release loader and typed row model crates.io docs.rs downloads
classification The ClaML and ICD-10-CM tabular readers into one classification model crates.io docs.rs downloads
dhd-thesaurus The DHD Diagnosethesaurus and Verrichtingenthesaurus reader crates.io docs.rs downloads
gstandaard The G-Standaard (Z-Index) product ladder reader crates.io docs.rs downloads
labcodeset The Nederlandse Labcodeset publication reader crates.io docs.rs downloads
icd11 ICD-11 entities from the WHO ICD-API local deployment, cached and read crates.io docs.rs downloads
rxnorm-rrf The RxNorm Rich Release Format reader and typed row model crates.io docs.rs downloads
fhir-terminology The FHIR terminology operations over the code system provider seam crates.io docs.rs downloads

Learn more

Licence

Business Source License 1.1 (LICENSE), with Apache License 2.0 as the Change License four years after each version; the rf2 crate is Apache-2.0 today. The code systems keep their own licences, and the licensing page says when you need a commercial licence from Cadasto B.V.

About

a pure-Rust, machine-generated multi-version FHIR terminology server for SNOMED CT. No JVM, no Elasticsearch.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages