Skip to content

Releases: FHIR/sushi

SUSHI 1.0.0

13 Nov 19:40
135e348
Compare
Choose a tag to compare

This is the official, stable SUSHI 1.0.0 release, marking the end of the beta phase for SUSHI 1.0.0. SUSHI 1.0.0 includes full support for FHIR Shorthand 1.0 and a new project structure to better support IG Publisher integration.

New Project Structure

SUSHI 1.0 no longer uses a top-level fsh folder or a nested ig-data folder. Instead, SUSHI 1.0 projects are designed to fit seamlessly within the current template-based IG Publisher project structure. Using SUSHI 1.0:

  • Authors configure SUSHI via /sushi-config.yaml (previously /fsh/config.yaml)
  • Authors put all .fsh files in /input/fsh/* (previously /fsh/*)
  • Authors put all other IG files (ig.ini, package-list.json, menu.xml, pages, etc.) in their normal locations based on current IG Publisher requirements (previously /fsh/ig-data/*)
  • SUSHI generates all outputs to /fsh-generated and clears it before each generation (previously /* and /input/* without clearing old generated files)

This approach has several advantages over the old approach:

  • Project layout and structure is consistent with all template-based IG Publisher projects
  • Existing projects can more easily convert to using SUSHI, even leveraging incremental conversion
  • All source files and generated files are clearly separated, and no longer need to be copied around

For detailed instructions on the new project structure see the SUSHI 1.0 Project Structure documentation.

To migrate an existing SUSHI 0.16.0 project to the new project structure see the SUSHI 1.0 Migration Guide.

Supported Templates

The new SUSHI project structure required that changes be made to the base template in order to find and use files in the /fsh-generated folder. Currently, these changes are only in the #current version of the base template, so your project's /ig.ini MUST specify a template that is based on fhir.base.template#current. For now, any of the following should work:

  • fhir.base.template#current
  • hl7.base.template#current
  • hl7.fhir.template#current
  • hl7.davinci.template#current
  • hl7.cda.template#current

Once the base template has been officially released with these changes, you will be able to use a locked version of a template again.

Deprecated Features

SUSHI 1.0.0 deprecates several features found in SUSHI 0.16.0. These features were deprecated based on feedback from the FHIR Core team and SUSHI users, as well as to provide a cleaner, more consistent approach to developing IGs.

  • The template property in the SUSHI configuration is no longer supported. Authors should manage the /ig.ini file directly.
  • The history property in the SUSHI configuration is no longer supported. For now, authors should manage the /package-list.json file directly, but further guidance may come from the FHIR Core team in the future.
  • The /input/ignoreWarnings.txt file is no longer generated by SUSHI. Authors should manage this file directly.
  • The /_updatePublisher, /_genonce, and /_gencontinuous scripts are no longer generated by SUSHI. If you wish to use these scripts, you can always download the latest versions from the sample-ig repository. (NOTE: sushi --init will download these automatically if you use it to initialize a new project).
  • The external keyword for menu URLs in config.yaml is no longer supported since the IG Publisher now detects external links and automatically inserts an external link icon.

Legacy Projects

SUSHI 1.0.0 continues to support "legacy" projects (i.e., projects not using the new file structure). In these cases, the behavior should be the same as in SUSHI 0.x, with one caveat: SUSHI will not generate the publisher scripts even for legacy projects.

If SUSHI detects that you are using a legacy project format, it will issue a warning that you should update your project to the new project structure. Support for legacy projects will be removed in a future version of SUSHI.

HL7 IG Auto-Builder

Currently, the HL7 IG Auto-Builder uses the most recent official version of SUSHI. This means that all projects will now build using SUSHI 1.0.0 by default. We do not anticipate this causing any issues due to SUSHI's support of legacy project structures. If you absolutely must continue using the pre-1.0.0 SUSHI, you can affect the version of SUSHI that the IG Publisher uses by providing a fsh.ini file at the root of the project with the following contents:

[FSH]
sushi-version=0.16.0

Additional Changes
In addition to the changes to project structure and configuration, SUSHI 1.0.0 includes the following changes and bug fixes:

  • Fixes SUSHI incorrectly counting the minimum cardinality on sliced elements (#659)
  • If SUSHI is run against a directory with no FSH files but the directory has a config.yaml file, SUSHI will not exit early.
  • Fixes bug with using ad hoc extensions on nested paths in instances (#621)
  • Fixes bug with cardinality min value of choices when type slicing is used (#596)
  • Fixes bug with finding slices of choice slices (#593)
  • Supports setting the resource description in the generated ImplementationGuide on conformance and terminology resources only (#629)
  • Avoids generating a duplicate resource when a resource is provided in input and defined in FSH (#623)
  • Correctly extracts SUSHI configuration information from a provided ImplementationGuide resource (#635)
  • Skips the processing of XML files that appear to be spreadsheets (#638)
  • Fixes a bug where SUSHI specific comments were appended to input files (#626)
  • Fixes a bug that allows uses the current working directory as the input directory if is not specified (#627)
  • Resets the errors and warnings in between invocations of fshToFhir (#625)
  • Allows (and ignores) non-JSON/non-XML files in input/* resource folders (#641)
  • Fixes ambiguous identifier in error message about duplicate resources (#642)
  • Fixes bug that overwrote a Quantity value when a unit was set in a subsequent rule (#608)
  • Fixes handling of MS flag when applied to sliced elements and/or slices (#647)
  • Fixes assignment to Quantity specializations (e.g., Age) using FSH quantity syntax (#617)
  • Merges Mapping rules when a matching Mapping already exists on the parent resource (#657)
  • Exports _-prefixed properties (e.g., extensions on primitives) directly after their non-_ counterparts (#632)
  • Changes config.yaml's group keys to represent id rather than name, allowing name to be set independently (#646)
  • Emits an error if an inline extension is defined on a profile since this is disallowed by the IG Publisher (#591)
  • Supports new instance-name and instance-description extensions to set example resource metadata in the generated IG (#654)

Full Documentation

For additional documentation, refer to FSH School's SUSHI 1.0 documentation and/or the FSH specification.

Install or Update

To install or update to this release, run the following command:

$ npm install -g fsh-sushi

To revert to a previous stable release, run a command like the following:

$ npm install -g [email protected]

To check or confirm what version of SUSHI you have installed, you can run the following command:

$ sushi -v

SUSHI 1.0.0 Beta 4

04 Nov 20:03
4e32335
Compare
Choose a tag to compare
SUSHI 1.0.0 Beta 4 Pre-release
Pre-release

SUSHI 1.0.0 Beta 4 is a candidate release for SUSHI 1.0.0. Barring the discovery of any major bugs, it will become the official SUSHI 1.0.0 release. SUSHI 1.0.0 Beta 4 contains the following bug fixes and enhancements since Beta 3:

  • Fixes bug that overwrote a Quantity value when a unit was set in a subsequent rule (#608)
  • Fixes handling of MS flag when applied to sliced elements and/or slices (#647)
  • Fixes assignment to Quantity specializations (e.g., Age) using FSH quantity syntax (#617)
  • Merges Mapping rules when a matching Mapping already exists on the parent resource (#657)
  • Exports _-prefixed properties (e.g., extensions on primitives) directly after their non-_ counterparts (#632)
  • Changes config.yaml's group keys to represent id rather than name, allowing name to be set independently (#646)

Full Documentation

For additional documentation, refer to FSH School's SUSHI 1.0 Beta documentation and/or the FSH specification.

Install or Update

To install or update to this beta version, run the following command:

$ npm install -g fsh-sushi@beta

To revert to a previous stable release, run a command like the following:

$ npm install -g [email protected]

To check or confirm what version of SUSHI you have installed, you can run the following command:

$ sushi -v

SUSHI 1.0.0 Beta 3

21 Oct 15:45
f0dab53
Compare
Choose a tag to compare
SUSHI 1.0.0 Beta 3 Pre-release
Pre-release

SUSHI 1.0.0 Beta 3 contains fixes for two bugs reported by our users:

  • Allows (and ignores) non-JSON/non-XML files in input/* resource folders (#641)
  • Fixes ambiguous identifier in error message about duplicate resources (#642)

Full Documentation

For additional documentation, refer to FSH School's SUSHI 1.0 Beta documentation and/or the FSH specification.

Install or Update

To install or update to this beta version, run the following command:

$ npm install -g fsh-sushi@beta

To revert to a previous stable release, run a command like the following:

$ npm install -g [email protected]

To check or confirm what version of SUSHI you have installed, you can run the following command:

$ sushi -v

SUSHI 1.0.0 Beta 2

16 Oct 17:08
023b579
Compare
Choose a tag to compare
SUSHI 1.0.0 Beta 2 Pre-release
Pre-release

SUSHI 1.0.0 Beta 2 contains the following enhancements and bug fixes:

  • Supports setting the resource description in the generated ImplementationGuide on conformance and terminology resources only (#629)
  • Avoids generating a duplicate resource when a resource is provided in input and defined in FSH (#623)
  • Correctly extracts SUSHI configuration information from a provided ImplementationGuide resource (#635)
  • Skips the processing of XML files that appear to be spreadsheets (#638)
  • Fixes a bug where SUSHI specific comments were appended to input files (#626)
  • Fixes a bug that allows uses the current working directory as the input directory if is not specified (#627)
  • Resets the errors and warnings in between invocations of fshToFhir (#625)

Full Documentation

For additional documentation, refer to FSH School's SUSHI 1.0 Beta documentation and/or the FSH specification.

Install or Update

To install or update to this beta version, run the following command:

$ npm install -g fsh-sushi@beta

To revert to a previous stable release, run a command like the following:

$ npm install -g [email protected]

To check or confirm what version of SUSHI you have installed, you can run the following command:

$ sushi -v

SUSHI 1.0.0 Beta 1

02 Oct 19:26
Compare
Choose a tag to compare
SUSHI 1.0.0 Beta 1 Pre-release
Pre-release

SUSHI 1.0.0 Beta 1 is the first beta release of SUSHI 1.0, with full support for FHIR Shorthand 1.0 and a new project structure to better support IG Publisher integration.

NOTE: Installing the beta version is slightly different than installing the normal version of SUSHI. See installation instructions at the bottom of these release notes for further guidance.

New Project Structure

SUSHI 1.0 no longer uses a top-level fsh folder or a nested ig-data folder. Instead, SUSHI 1.0 projects are designed to fit seamlessly within the current template-based IG Publisher project structure. Using SUSHI 1.0:

  • Authors configure SUSHI via /sushi-config.yaml (previously /fsh/config.yaml)
  • Authors put all .fsh files in /input/fsh/* (previously /fsh/*)
  • Authors put all other IG files (ig.ini, package-list.json, menu.xml, pages, etc.) in their normal locations based on current IG Publisher requirements (previously /fsh/ig-data/*)
  • SUSHI generates all outputs to /fsh-generated and clears it before each generation (previously /* and /input/* without clearing old generated files)

This approach has several advantages over the old approach:

  • Project layout and structure is consistent with all template-based IG Publisher projects
  • Existing projects can more easily convert to using SUSHI, even leveraging incremental conversion
  • All source files and generated files are clearly separated, and no longer need to be copied around

For detailed instructions on the new project structure see the SUSHI 1.0 Beta Project Structure documentation.

To migrate an existing SUSHI 0.16.0 project to the new project structure see the SUSHI 1.0 Beta Migration Guide.

Supported Templates

The new SUSHI project structure required that changes be made to the base template in order to find and use files in the /fsh-generated folder. Currently, these changes are only in the #current version of the base template, so your project's /ig.ini MUST specify a template that is based on fhir.base.template#current. For now, any of the following should work:

  • fhir.base.template#current
  • hl7.base.template#current
  • hl7.fhir.template#current
  • hl7.davinci.template#current
  • hl7.cda.template#current

Once the base template has been officially released with these changes, you will be able to use a locked version of a template again.

Deprecated Features

SUSHI 1.0.0 Beta 1 deprecates several features found in SUSHI 0.16.0. These features were deprecated based on feedback from the FHIR Core team and SUSHI users, as well as to provide a cleaner, more consistent approach to developing IGs.

  • The template property in the SUSHI configuration is no longer supported. Authors should manage the /ig.ini file directly.
  • The history property in the SUSHI configuration is no longer supported. For now, authors should manage the /package-list.json file directly, but further guidance may come from the FHIR Core team in the future.
  • The /input/ignoreWarnings.txt file is no longer generated by SUSHI. Authors should manage this file directly.
  • The /_updatePublisher, /_genonce, and /_gencontinuous scripts are no longer generated by SUSHI. If you wish to use these scripts, you can always download the latest versions from the sample-ig repository. (NOTE: sushi --init will download these automatically if you use it to initialize a new project).

Legacy Projects

SUSHI 1.0.0 Beta 1 continues to support "legacy" projects (i.e., projects not using the new file structure). In these cases, the behavior should be the same as in SUSHI 0.x, with one caveat: SUSHI will not generate the publisher scripts even for legacy projects.

If SUSHI detects that you are using a legacy project format, it will issue a warning that you should update your project to the new project structure. Support for legacy projects will be removed in a future version of SUSHI.

HL7 IG Auto-Builder

Currently, the HL7 IG Auto-Builder uses the most recent official version of SUSHI. This means that if you change your project structure and commit it to GitHub, the HL7 Auto-Builder will fail (since it is using SUSHI 0.16.0). We're currently working with the Auto-Builder team to provide a way to indicate that a different version of SUSHI should be used.

Additional Changes

In addition to the changes to project structure and configuration, SUSHI 1.0 Beta 1 includes the following changes:

  • If SUSHI is run on a project with no .fsh files, it will exit gracefully with a success code (#609)
  • Sets the grouping id in the IG JSON file when using the group property in sushi-config.yaml (#590)
  • Fixes bug with using ad hoc extensions on nested paths in instances (#621)
  • Fixes bug with cardinality min value of choices when type slicing is used (#596)
  • Fixes bug with finding slices of choice slices (#593)

Full Documentation

For additional documentation, refer to FSH School's SUSHI 1.0 Beta documentation and/or the FSH specification.

Install or Update

To install or update to this beta version, run the following command:

$ npm install -g fsh-sushi@beta

To revert to a previous version, run a command like the following:

$ npm install -g [email protected]

To check or confirm what version of SUSHI you have installed, you can run the following command:

$ sushi -v

SUSHI 0.16.0

28 Aug 21:27
8a3850e
Compare
Choose a tag to compare

SUSHI 0.16.0 contains the following enhancements and bug fixes:

  • Supports using ImplementationGuide resource as configuration for FSHOnly projects (#577) (details below)
  • Improves logging message when running in "IG Publisher Integration" mode (#555)
  • Detects conflicting fixed values on a parent w/ existing fixed values on children (#560)
  • Does not inherit structuredefinition-summary extensions from parent profiles (#582)
  • Fixes element id when using contains to re-slice a slice (#542)
  • Fixes type constraint handling for special FHIRPath primitive types (#543)
  • Fixes ignored slicing rules when constraining types (#564)
  • Fixes confusing error message re: copyrightYear, releaseLabel, and parameters (#553)
  • Fixes handling of hidden files in ig-data/input subfolders (thanks, @masnick!) (#580)
  • New puns (thanks, Nicole Ng and Ammu Irivinti)!

Using ImplementationGuide Resource as Configuration for FSHOnly Projects

FSHOnly IGs no longer need to provide a config.yaml file. If SUSHI does not detect a config.yaml file it will look for an ImplementationGuide resource using the following approach:

  • If ig.ini exists in the root folder, it will use the ig property to find the corresponding ImplementationGuide resource
  • If ig.ini does not exist or does not contain an ig property, it will search in input for an ImplementationGuide resource
    • if exactly one ImplementationGuide resource is found, it will use it; otherwise it will produce an error and exit

Once an ImplementationGuide resource is found, SUSHI will extract the following configuration parameters from the resource:

  • canonical
  • version
  • fhirVersion
  • dependencies

It will then run SUSHI in "FSHOnly" mode to produce FHIR resources using the extracted configuration.

Full Documentation

For additional documentation, refer to FSH School and/or the FSH specification.

Install or Update

To install or update to the latest version, run the following command:

$ npm install -g fsh-sushi

SUSHI 0.15.1

05 Aug 02:05
6313a98
Compare
Choose a tag to compare

SUSHI 0.15.1 contains the following minor enhancements and bug fixes:

  • Allows instances to be fixed inline in profiles and extensions (#511)
  • Allows Quantity specializations (e.g., Age) to be assigned using quantity syntax (e.g., * onsetAge = 42 'a') (#515)
  • Allows whitespace around Reference parameters (e.g., Reference( MyPatient )) (#535)
  • Relaxes config.yaml required properties for FSHOnly IGs (#517)
  • More accurately reports required config.yaml properties for projects using IG features (#559)
  • Fixes incorrect URL in exported Extension definitions when authors override URL using ^url (#532)
  • Fixes path resolution bug for slices with names similar to what they slice (#549)
  • Fixes invalid .d.ts files in published NPM library (#558)

Full Documentation

For additional documentation, refer to FSH School and/or the FSH specification.

Install or Update

To install or update to the latest version, run the following command:

$ npm install -g fsh-sushi

SUSHI 0.15.0

24 Jul 20:28
cd8f50d
Compare
Choose a tag to compare

SUSHI 0.15.0 contains the following enhancements and bug fixes:

  • New sushi --init capability to kickstart a new SUSHI project (#527) (details below)
  • Supports Bring-Your-Own-XML resources (#444) (details below)
  • Supports new Canonical keyword (#519 and #536) (details below)
  • No longer copies hidden files from ig-data (#350)
  • Now removes only certain top-level extensions from parent definitions (#534)
  • Improves error descriptions for parsing errors related to whitespace around symbolic keywords (#318)
  • sushi -v now reports the SUSHI version and the FHIR Shorthand version it implements
  • Fixes bug related to referencing contained inline resources (#525)
  • Fixes bug with using CodeSystems in code definitions within caret rules (#516)
  • Fixes bug with conflicting extension names (#531)

sushi --init

Authors can now run sushi --init to have SUSHI create a new SUSHI project with a default configuration and project structure. This provides a simple way to get started with FHIR Shorthand and SUSHI.

When sushi --init is run, SUSHI will request high-level project information from the user:

Name (Default: ExampleIG): NewIG
Id (Default: fhir.example): my.id
Canonical (Default: http://example.org): http://myid.org
Status (Default: draft): active
Version (Default: 0.1.0): 2.0.0
Initialize SUSHI project in C:\Users\shorty\dev\NewIG? [y/n]: y

These values are used to generate a simple config.yaml file and a corresponding IG-Publisher-compatible folder structure:

NewIG
├── .gitignore
├── _genonce.bat     
├── _genonce.sh           
├── _updatePublisher.bat  
├── _updatePublisher.sh 
├── _gencontinuous.bat 
├── _gencontinuous.sh  
└── fsh
    ├── config.yaml   
    ├── ig-data
    │   └── input
    │       └── pagecontent
    │           └── index.md  
    └── patient.fsh    

From this point on, the author can make modify the config and definitions as necessary.

Bring-Your-Own-XML Resources

Prior to this release, SUSHI already supported Bring-Your-Own-JSON resources. This allowed authors to put their JSON resource definitions into one of the supported ig-data/input resources folders (e.g., ig-data/input/resources, ig-data/input/profiles, ig-data/input/extensions, ig-data/input/vocabulary, etc.) -- and then reference them from their FSH files. This approach can be helpful for projects incrementally transitioning to FSH, or for authors who wish to use other tools for certain resource types (like CapabilityStatements).

Now this same functionality can be used with XML resources. To support this feature, SUSHI leverages Lantana's FHIR.js library to internally translate the XML resources into JSON.

Canonical Keyword

The new Canonical keyword allows authors to indicate that a resource's canonical URL should be used as a value. The Canonical keyword syntax is similar to Reference:

* system = Canonical(MyCodeSystem)

In the example above, the system would be set to the actual canonical URL of the MyCodeSystem resource definition. This is particularly helpful when you need to reference the canonical of a definition in the same IG (otherwise you would have to construct the canonical yourself).

Note that this also supports specifying a particular version (as supported by the canonical type itself):

* system = Canonical(MyCodeSystem|1.2.3)

Full Documentation

For additional documentation, refer to the FSH language reference.

Install or Update

To install or update to the latest version, run the following command:

$ npm install -g fsh-sushi

SUSHI 0.14.0

07 Jul 19:16
56c5f10
Compare
Choose a tag to compare

SUSHI 0.14.0 contains the following enhancements and bug fixes:

  • Deprecates usage of , when listing items (details below, #483)
  • Deprecates usage of | when listing choices of items (details below, #498)
  • Adds insert rules (details below, #279)
  • Adds support for specifying more complex dependencies in config.yaml (details below, #497)
  • Adds optional include keyword for Value Set rules (#507)
  • Deprecates usage of the optional units keyword (#505)
  • Adds support for inline resources in the contained array of a StructureDefinition (#495)
  • Adds support for escape characters in strings (#392)
  • Fixes bug allowing choice types to be constrained to specializations of specific choices (#447)
  • Fixes bug which causes extra extensions to appear on Instances (#502)
  • Fixes bug with checking the type of a Reference (#504)
  • Fixes bug with references to inline resources (#508)
  • Aligns _genonce, _gencontinuous and _updatePublisher scripts with those in the sample-ig

Deprecates usage of , when listing items
The , character was used to separate lists of items in SUSHI. For example, the , could be used to set flags on multiple items:

* telecom, gender MS

This usage is now deprecated, and any instance of , should be replaced with and:

* telecom and gender MS

To allow for a smooth transition, the , is still supported in this release, but SUSHI will issue a warning. In a later release, support for , will be removed altogether.

Deprecates usage of | when listing choices of items
The | character was used to separate a choice list inside a Reference. For example, the | could be used to constrain a Reference choice:

* generalPractitioner only Reference(Organization | Practitioner)

This usage is now deprecated, and any instance of | should be replaced with or:

* generalPractitioner only Reference(Organization or Practitioner)

To allow for a smooth transition, the | is still supported in this release, but SUSHI will issue a warning. In a later release, support for | will be removed altogether.

Adds insert rules
The Mixins keyword was used to add RuleSets to an entity. This usage is now deprecated, and SUSHI will issue a warning when Mixins is encountered. In a later release, support for Mixins will be removed altogether. Instead of using Mixins, users can now add RuleSets to any entity for which a list of rules is allowed with the insert keyword. The insert keyword is used to add a snippet of rules anywhere within the list of rules being defined for the relevant entity. This differs from the Mixins keyword, which always added the rules from a RuleSet at the beginning of the list of rules. As an example:

RuleSet: rs1
* valueString = "hello"

Instance: ob1
InstanceOf: Observation
* status = #final
* insert rs1
* issued = "2015-02-07T13:28:17.239+02:00"

is equivalent to:

Instance: ob1
InstanceOf: Observation
* status = #final
* valueString = "hello"
* issued = "2015-02-07T13:28:17.239+02:00"

Adds support for specifying more complex dependencies in config.yaml
It is now possible to directly specify information about dependencies in the config.yaml file. For example, one can now specify the uri on a dependency:

dependencies:
  de.basisprofil.r4:
    uri: https://simplifier.net/guide/basisprofil-de-r4
    version: 0.9.7

Some packages do not have a uri, so this is a useful feature in that context. Most packages do have a uri, so they can be specified using the simpler syntax:

dependencies:
  hl7.fhir.us.core: 3.1.0

and SUSHI will infer the uri.

Full Documentation

For additional documentation, refer to the FSH language reference.

Install or Update

To install or update to the latest version, run the following command:

$ npm install -g fsh-sushi

SUSHI 0.13.2

15 Jun 18:39
f9d0eed
Compare
Choose a tag to compare

SUSHI 0.13.2 contains the following bug fix:

  • Correctly sets FSHOnly flag when migrating from an existing project with no ig-data folder (#491)

⚠️
NOTE: SUSHI 0.13.2 is a minor patch fix for the large SUSHI 0.13.x release. Users upgrading to 0.13.2 who have not read the release notes for 0.13.0 should read the release notes for 0.13.0, which are copied below:

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 ^type since 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 FSH language reference.

Install or Update

To install or update to the latest version, run the following command:

$ npm install -g fsh-sushi