Skip to content

MAKI - FSH Toolchain

A fast, modern toolchain for FHIR Shorthand - lint, format, build, and convert

⚡ SUSHI-Compatible Build

Compile FSH to FHIR resources. Drop-in replacement for SUSHI with improved performance.

🔄 GoFSH Converter

Convert FHIR JSON/XML resources back to FSH. Includes smart optimization and rule extraction.

🔍 Comprehensive Linting

Extensive rule set covering FHIR and FSH best practices, from correctness to style.

✨ Automatic Formatting

Lossless code formatter with configurable style. Format on save, in CI, or on demand.

🎨 Beautiful Errors

Rich, colorful diagnostics with code frames, diffs, and actionable suggestions.

🔧 Extensible

Write custom validation rules using powerful GritQL patterns.

⚙️ Configurable

Fine-tune every aspect with flexible JSON/JSONC configuration.

🚀 CI/CD Ready

First-class support for GitHub Actions, GitLab CI, and other platforms.

Terminal window
# Install
cargo install maki
# Initialize a new IG project
maki init
# Build FSH to FHIR resources (SUSHI-compatible)
maki build --progress
# Lint your FSH files
maki lint input/fsh/
# Format your FSH files
maki fmt input/fsh/
# Convert FHIR back to FSH (GoFSH)
maki gofsh ./fsh-generated -o ./input/fsh
error[correctness/duplicate-definition]: Duplicate profile definition
> 15 │ Profile: PatientProfile
│ ^^^^^^^^^^^^^^ Profile 'PatientProfile' is already defined
16 │ * name 1..1 MS
17 │ * gender 1..1
i Safe fix: Rename this profile to avoid duplication
15 │ - Profile: PatientProfile
│ ^^^^^^^^^^^^^^^^
15 │ + Profile: PatientProfile2
│ ^^^^^^^^^^^^^^^^^

FHIR Shorthand (FSH) is a domain-specific language for defining FHIR Implementation Guides. FSH Lint helps you catch errors early and maintain high-quality FHIR profiles.