SUSHI 0.13.0 is a significant release with major changes to how FSH-based IGs are configured as well as many other enhancements and bug fixes. All SUSHI users should read these release notes thoroughly.
SUSHI 0.13.0 contains the following new features, enhancements, and bug fixes:
- NEW YAML-based configuration replaces project.json file (details below)
- config.yaml menu now supports 'new-tab' and 'external' keywords (#440, new since 0.13.0-beta.2)
- Adds support for creating and assigning non-Resource instances (#385, #391)
- Sets the CodeSystem count when it can be safely determined (#419)
- Enforces unique ids and names to reduce unintended overwrites (#152)
- Avoids invalid ids when defaulting id based on name (#441)
- Avoids invalid characters when generating dependsOn.id in Implementation Guide (#466)
- Fixes how extensions on StructureDefinitions (using
^) are represented (#412) - Validates that references point only to allowed types in instances (#395)
- Disallows changing profile
^typesince it should never change (#462) - Re-enables "sparse" differentials (#463)
- Removes warning regarding past extension syntax change (#456)
- Rewords ambiguous error message regarding rule paths (#436)
- Only loads "current" dependencies if the remote IG has changed (#470)
- Fixes deprecated package formats when loading packages in the cache (#482)
- Internal code restructuring to support improved testing and future enhancements (#345)
New YAML-based configuration replaces project.json file
This version of SUSHI deprecates use of package.json, replacing it with config.yaml, a more robust configuration format. To simplify migration for existing projects, SUSHI will create a customized config.yaml using existing projects' current configurations (after which, config.yaml will become the gold source configuration). New projects should create a new config.yaml file, as specified in the updated SUSHI documentation.
Background: In previous versions of SUSHI, project configuration was primarily done in package.json, along with supplemental IG configuration files in the ig-data, such as ig.ini, package-list.json, and menu.xml. Configuration was also limited in that IG authors had very little control over specific values in the ImplementationGuide resource representing the IG. Some SUSHI users struggled with configuration spread across so many files and/or lack of ability to fine-tune the ImplementationGuide resource file.
Approach: To address these issues, the SUSHI team designed a new configuration approach that allows for a single config.yaml file to optionally control all configuration and provide users fine-grained control over the generated ImplementationGuide resource.
This config.yaml file is loosely based on the ImplementationGuide resource, but also allows for defining other necessary aspects of files like ig.ini, menu.xml, and package-list.json. There is a detailed breakdown of the contents and usage of config.yaml in the updated SUSHI documentation. Users unfamiliar with YAML may also benefit from reviewing the YAML syntax.
Integration and Configuration Slide Deck: The SUSHI team developed a slide deck providing an overview of the new configuration and multiple approaches to using it. This file is recommended reading for all SUSHI users: SUSHI_Config_and_Integration_v4.pptx
The new YAML configuration format was tested in two beta releases with positive feedback from users who tried it.
Full Documentation
For additional documentation, refer to the SUSHI documentation and FSH language reference.
Install or Update
To install or update to the latest version, run the following command:
$ npm install -g fsh-sushi