Package Exports
- babelfhir-ts
- babelfhir-ts/out/src/main.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (babelfhir-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
BabelFHIR-TS
Generate production-ready TypeScript from FHIR® StructureDefinitions — typed interfaces, runtime validators, and FHIR clients.
BabelFHIR-TS transforms FHIR® StructureDefinitions into production-ready TypeScript code with full type safety and built-in validation. Unlike generic FHIR type definitions, BabelFHIR-TS generates profile-aware interfaces that understand your Implementation Guide's constraints, extensions, and slicing rules.
What you get
- Strongly typed interfaces that merge profile constraints with base FHIR types (types come from
@types/fhir) - Compiled output by default — packages ship JavaScript (
.js) plus TypeScript declarations (.d.ts) - Runtime validation using FHIRPath expressions from the profile—no external validator required for basic checks
- Type-safe extension handling with proper slicing and nested extension support
- Random data builders for testing and development (when class generation is enabled)
- Zero manual mapping—consume any FHIR package or Implementation Guide directly from registries
- Fast and lightweight—minimal runtime deps; only
fhirpathis required for validators - Type-safe FHIR client — generated client extends
@babelfhir-ts/client-r4with profile-specific methods (e.g.,.usCorePatient(),.pASClaim()) on top of base R4 resource accessors - Install any FHIR profile as a node module—use
babelfhir-ts installto add Implementation Guides directly to your project
Continuous Validation
Every pull request runs two independent CI pipelines that validate generated code against real-world FHIR Implementation Guides. For each IG, the pipeline:
- Downloads the FHIR package from a registry
- Generates TypeScript interfaces, validators, and classes
- Compiles the output with
tsc(zero errors required) - Generates
empty()andrandom()test resources for every profile - Validates those resources against two external FHIR validators
Tested Implementation Guides (28 packages)
| Category | Implementation Guide | Package |
|---|---|---|
| US | US Core | hl7.fhir.us.core@8.0.0 |
| US | QI-Core | hl7.fhir.us.qicore@6.0.0 |
| US | mCODE | hl7.fhir.us.mcode@4.0.0 |
| US | SDOH Clinical Care | hl7.fhir.us.sdoh-clinicalcare@2.2.0 |
| US | NDH (National Directory) | hl7.fhir.us.ndh@1.0.0 |
| US | CARIN BB | hl7.fhir.us.carin-bb@2.1.0 |
| US | CQF Measures | hl7.fhir.us.cqfmeasures@4.0.0 |
| US | Physical Activity | hl7.fhir.us.physical-activity@1.0.0 |
| DaVinci | PAS | hl7.fhir.us.davinci-pas@2.0.1 |
| DaVinci | CDex | hl7.fhir.us.davinci-cdex@2.1.0 |
| DaVinci | PDex | hl7.fhir.us.davinci-pdex@2.1.0 |
| DaVinci | DTR | hl7.fhir.us.davinci-dtr@2.1.0 |
| DaVinci | Alerts | hl7.fhir.us.davinci-alerts@1.0.0 |
| DaVinci | DEQM | hl7.fhir.us.davinci-deqm@4.0.0 |
| DaVinci | Drug Formulary | hl7.fhir.us.davinci-drug-formulary@2.1.0 |
| Universal | IPS | hl7.fhir.uv.ips@2.0.0 |
| Universal | SMART App Launch | hl7.fhir.uv.smart-app-launch@2.2.0 |
| Universal | SDC (Structured Data Capture) | hl7.fhir.uv.sdc@3.0.0 |
| Universal | Genomics Reporting | hl7.fhir.uv.genomics-reporting@3.0.0 |
| Universal | CPG (Clinical Practice Guidelines) | hl7.fhir.uv.cpg@2.0.0 |
| DE | ISiK Basis | de.gematik.isik-basismodul@4.0.3 |
| DE | ISiK Medikation | de.gematik.isik-medikation@4.0.1 |
| DE | KBV eRezept | kbv.ita.erp@1.1.1 |
| DE | DE Basisprofil | de.basisprofil.r4@1.5.0 |
| CH | CH Core (Switzerland) | ch.fhir.ig.ch-core@5.0.0 |
| AU | AU Core (Australia) | hl7.fhir.au.core@1.0.0 |
| IHE | PIXm | ihe.iti.pixm@3.0.4 |
| IHE | MHD | ihe.iti.mhd@4.2.2 |
Validation with Firely .NET SDK
The first pipeline validates generated resources using the Firely .NET SDK validator (Firely.Fhir.Validation.R4 v3.1.1). Results are published as live badges:
Validation with HL7 Java Validator
The second pipeline validates using the official HL7 FHIR Validator (v6.9.4), the reference implementation for FHIR conformance checking:
Terminology validation requires a tx server. The pipeline uses
--tx-server https://tx.fhir.org/r4during generation to expand ValueSets and produce valid codes.
Installation
npm install -g babelfhir-tsOr on-demand: npx babelfhir-ts --help
Requirements: Node.js 18+ and an internet connection for remote registries.
Quick Start
# Generate from a local folder
babelfhir-ts input/ output/
# Download and process from a registry
babelfhir-ts --package hl7.fhir.us.core@8.0.0
# Install as a project dependency
babelfhir-ts install hl7.fhir.us.core@8.0.0import { USCorePatientClass } from "./output/USCorePatientClass";
const patient = USCorePatientClass.random();
const { errors, warnings } = await patient.validate();CLI Reference
BabelFHIR-TS: Generate TypeScript interfaces from FHIR StructureDefinitions
Usage:
babelfhir-ts [options] [<input> [output]]
babelfhir-ts install [--package] <pkg@version|path> [--registry <url>] [options]
Arguments:
input Input can be:
- Canonical URL of a FHIR profile (http://... or https://...)
- Directory containing FHIR packages (.tgz/.zip files)
- Single FHIR package (.tgz/.zip file)
- Single StructureDefinition (.json file)
- Directory containing StructureDefinition files
output Output directory or archive name (optional)
Commands:
install Download, process, and npm install package as dependency
Options:
-h, --help Show this help message
-v, --version Show version number
--log <dest> Log destination: console (default) or file
--log-level <level> Log verbosity: error, warn, info (default), or debug
--cache-dir <path> Custom cache directory (default: .cache, env: FHIR_CACHE_ROOT)
--no-cache Delete .cache folder after generation
--no-classes Only generate interfaces and types (skip class generation)
--no-client Skip FHIR client generation (client generated by default)
--schema <format> Generate schema files alongside outputs (supported: zod)
--dicomweb Generate DICOMweb helpers typed to ImagingStudy profiles in the IG
--fhir-version <ver> FHIR version to target: r4, r4b, or r5 (auto-detected from package if omitted)
--package <pkg@version> Download FHIR package from registry and process it
--registry <url> FHIR package registry URL (default: https://packages.simplifier.net)
--tx-server <url> Terminology server URL for ValueSet expansion (e.g., https://tx.fhir.org/r4)
When set, expands ValueSets without explicit codes using $expand operation
Examples:
babelfhir-ts # Process ./input to ./output
babelfhir-ts http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient # Generate from profile URL
babelfhir-ts package.tgz # Process package to current directory
babelfhir-ts package.tgz modified-package.tgz # Embed interfaces in package
babelfhir-ts profiles/ generated/ # Process directory to directory
babelfhir-ts --package hl7.fhir.us.core@8.0.0 # Download and process from default registry
babelfhir-ts --package hl7.fhir.us.core@8.0.0 output/ # Download and output to directory
babelfhir-ts --package pkg@version --log console --log-level debug # With verbose logging
babelfhir-ts install de.gematik.isik-basismodul@3.1.0 # Download, process, and npm install
babelfhir-ts install ./package.tgz # Install from local package file
babelfhir-ts install hl7.fhir.us.core@8.0.0 --registry <url> # Install from custom registry
babelfhir-ts install --package hl7.fhir.us.core@8.0.0 --registry <url> # Alternative syntax
Documentation
Full documentation is available at max-health-inc.github.io/BabelFHIR-TS/docs/
- Getting Started — installation, quick start, first generation
- CLI Reference — full list of commands and options
- Generated Code Guide — understanding the output, module resolution, FHIR type imports
- FHIR Client — type-safe server interactions
- Validation — what validators check, CI pipelines, known Firely SDK issues
- Limitations — R4 only, edge cases, random() caveats
- Contributing — dev setup, scripts, project structure
License
ISC © Maximilian Nussbaumer
Changelog
Release notes are published automatically on GitHub Releases: View all releases
Contributing
Contributions are welcome! See the Contributing guide for dev setup, scripts, and how to submit changes.
Security
For security issues, please see SECURITY.md for our security policy and how to report vulnerabilities.