maki gofsh
Convert FHIR resources (JSON/XML) back to FSH (GoFSH functionality).
maki gofsh [OPTIONS] <INPUT>Options
Section titled “Options”--output, -o <PATH>- Output directory for FSH files (default:output)--fhir-version <VERSION>- FHIR version:R4orR5(default:R4)--dependency, -d <PKG>- FHIR package dependencies (e.g.,hl7.fhir.us.core@5.0.1)--strategy <STRATEGY>- File organization strategy:file- One file per definition (default)type- Group by FSH type (profiles.fsh, valuesets.fsh, etc.)profile- Group by profilesingle- All definitions in one file
--indent-size <N>- Number of spaces for indentation (default: 2)--line-width <N>- Maximum line width (default: 100)--progress- Show progress bar and detailed output
Examples
Section titled “Examples”# Convert FHIR resources in a directorymaki gofsh ./fsh-generated
# Specify output directorymaki gofsh ./fsh-generated -o ./input/fsh
# With FHIR dependenciesmaki gofsh ./resources -d hl7.fhir.us.core@5.0.1
# Use R5 FHIR versionmaki gofsh ./resources --fhir-version R5
# With progress reportingmaki gofsh ./resources --progress
# Group output by FSH typemaki gofsh ./resources --strategy type
# All in one filemaki gofsh ./resources --strategy singleConversion Process
Section titled “Conversion Process”- Setup Packages - Installs base FHIR packages and dependencies
- Load Resources - Reads FHIR JSON/XML files from input
- Process Resources - Extracts FSH definitions:
- StructureDefinitions → Profiles, Extensions, Logical Models
- ValueSets → ValueSet definitions
- CodeSystems → CodeSystem definitions
- Other resources → Instance definitions
- Optimize - Applies rule optimizations:
- Remove duplicate rules
- Combine related rules
- Simplify cardinality expressions
- Remove implied/redundant rules
- Write FSH - Generates formatted FSH files
- Generate Config - Creates
sushi-config.yamland.makirc.json
Output Structure
Section titled “Output Structure”With --strategy file (default):
output/├── MyProfile.fsh├── MyExtension.fsh├── MyValueSet.fsh├── sushi-config.yaml└── .makirc.jsonWith --strategy type:
output/├── profiles.fsh├── extensions.fsh├── valuesets.fsh├── codesystems.fsh├── instances.fsh├── sushi-config.yaml└── .makirc.jsonSupported Resources
Section titled “Supported Resources”The following FHIR resource types are converted to FSH:
| FHIR Resource | FSH Definition |
|---|---|
| StructureDefinition (constraint) | Profile |
| StructureDefinition (extension) | Extension |
| StructureDefinition (logical) | Logical |
| StructureDefinition (resource) | Resource |
| ValueSet | ValueSet |
| CodeSystem | CodeSystem |
| Other resources | Instance |
Limitations
Section titled “Limitations”- Complex slicing patterns may not be fully reconstructed
- Some inline extensions may be expanded unnecessarily
- Mapping definitions are partially supported
- Invariants with complex FHIRPath may need manual review