Releases: FHIR/sushi
SUSHI 0.13.1
SUSHI 0.13.1 contains the following enhancements and bug fixes:
- Fixes a bug which causes SUSHI to hang when duplicate file names were present (#487)
- Fixes a bug which caused an error when no
ig-data
folder was present (#489)
NOTE: SUSHI 0.13.1 is a minor patch fix for the large SUSHI 0.13.0 release. Users upgrading to 0.13.1 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
SUSHI 0.13.0 (YAML Configuration Release)
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
^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 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
SUSHI 0.13.0 Beta 2
SUSHI 0.13.0-beta.2 contains the following enhancements and bug fixes over the first beta release:
- Catches and reports config.yaml parsing errors (#437)
- Sanitizes invalid
id
s (particularly when defaulting from name) (#441 ) - Fixes rendering of extensions when set using the "caret" rule (#412)
SUSHI 0.13.0-beta.2 also integrates the following fixes and enhancements that were introduced in the mainline SUSHI 0.12.7 release:
- No longer exports sparse differentials (#442)
- Allows constraints on children of choice elements (details below)
- Generates
id
s forImplementationGuide.dependsOn
(#445) - Considers child elements / extensions of primitives when counting cardinality (#393)
- Reports an error when a profile declares itself as its own parent (#175)
- Reports an error when authors attempt to add a duplicate slice name (#199)
- Fixes issue that previously could result in slices having wrong cardinality (#450)
- Correctly handles profiles of the
Reference
datatype (#451) - Replaces deprecated
request
library with currentaxios
library (#344) - Fixes a typo in an error message (#417)
- More FSH/fish puns (thanks @blangley28!)
SUSHI 0.13.0 BETA Features
For more details about the SUSHI 0.13.0 beta in general, see the SUSHI 0.13.0-beta.1 Release Notes.
NOTE: As stated in the warning above, this is an experimental beta, and the approach taken here is subject to change based on user feedback. New users of SUSHI are best off using the most recent non-beta version of SUSHI.
Install or Update
To install or update to the beta version, run the following command:
$ npm install -g fsh-sushi@beta
SUSHI 0.12.7
SUSHI 0.12.7 contains the following enhancements and bug fixes:
- No longer exports sparse differentials (#442)
- Allows constraints on children of choice elements (details below)
- Generates
id
s forImplementationGuide.dependsOn
(#445) - Considers child elements / extensions of primitives when counting cardinality (#393)
- Reports an error when a profile declares itself as its own parent (#175)
- Reports an error when authors attempt to add a duplicate slice name (#199)
- Fixes issue that previously could result in slices having wrong cardinality (#450)
- Correctly handles profiles of the
Reference
datatype (#451) - Replaces deprecated
request
library with currentaxios
library (#344) - Fixes a typo in an error message (#417)
- More FSH/fish puns (thanks @blangley28!)
Allows constraints on children of choice elements
While SUSHI already supported setting constraints on individual choices, it did not support setting constraints on children of the choice element itself (i.e., constraints that applied to common elements within the choice). For example, the following was not supported in previous versions of SUSHI:
* value[x].extension only SomeExtension named some-extension
SUSHI now supports this for paths that are on common ancestors of all the choices (which often includes extension
, as in the example above).
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.0-beta.1
SUSHI 0.13.0-beta.1 adds a new approach to configuring SUSHI. Details below:
Configuring SUSHI with config.yaml
In the current non-beta release of SUSHI, the following files are used for configuration package.json
, ig-data/ig.ini
, and ig-data/package-list.json
. Additionally, there is no way for the user to give custom configuration that would go into the ImplementationGuide
resource representing the IG. This release replaces the current system with a single config.yaml
file that can be used to give custom configuration for the 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
or package-list.json
. There is a detailed breakdown of the contents and usage of config.yaml
in the beta version of the FSH documentation.
NOTE: To make the transition to config.yaml
easier for users with existing FSH projects, we have added functionality to generate a config.yaml
based on the existing configuration files in your project. This happens automatically when SUSHI 0.13.0-beta.1 runs on a FSH project with old configuration files and no config.yaml
. You will notice a config.yaml
file gets added to your FSH project input, and should double check this file for accuracy against your current configuration. Once the config.yaml
is generated, SUSHI will use that file for configuration on future runs.
NOTE: As stated in the warning above, this is an experimental beta, and the approach taken here is subject to change based on user feedback. New users of SUSHI are best off using the most recent non-beta version of SUSHI.
Install or Update
To install or update to the beta version, run the following command:
$ npm install -g fsh-sushi@beta
SUSHI 0.12.6
SUSHI 0.12.5
SUSHI 0.12.5 contains the following bug fixes:
- Fixes bug which allowed cardinality to be widened from
x..1
tox..*
(#394) - Fixes regular expression used for base64Binary datatype (#402)
- Fixes bug which prevented setting a value on an Instance to the same value fixed by fixed[x] on a StructureDefinition (#398)
Install or Update
To install or update to the latest version, run the following command:
$ npm install -g fsh-sushi
SUSHI 0.12.4
SUSHI 0.12.4 contains the following fix:
- Update
_updatePublisher
scripts to use new IG Publisher location (#397)
Install or Update
To install or update to the latest version, run the following command:
$ npm install -g fsh-sushi
SUSHI 0.12.3
SUSHI 0.12.3 contains the following enhancements and bug fixes:
- Elements can receive mappings, even if they previously had none (#372)
_genonce.sh
should work correctly on case-sensitive file systems (#379) (thanks, @peturv!)- Elements that allow a choice of
Resource
types can be set to specific instances of one of the allowed types. (#377 ) - Lists of instances correctly contain all of the instances specified instead of overriding previously set instances (#378)
- SUSHI now returns a non-zero exit code when exiting from a known early exit point or when exiting due to an unexpected error (#375)
- When a dependency is specified with a version of
dev
, but is not present in the local cache, thecurrent
version is loaded and used. (#374)
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.12.2
SUSHI 0.12.2 contains the following enhancements and bug fixes:
- Adds support for overriding and/or assigning sub-paths of inlined instances (details below)
- Fixes bug that listed inline instances in the generated ImplementationGuide JSON (#366)
Overriding and/or Assigning Sub-paths of Inlined Instances
When an inlined instance is assigned to an element of type Resource
, previous versions of SUSHI did not allow authors to access sub-paths of that inlined instance (since SUSHI still understood the type as being Resource
). SUSHI 0.12.2 now allows authors to access any valid sub-path of the inlined instance. For example:
Instance: MyBundle
InstanceOf: Bundle
* type = #transaction
* entry[0].resource = MyPatient
* entry[0].resource.name.given = "Bob" // <-- this is now allowed in SUSHI 0.12.2
In addition, new resources can be fully inlined (without separate Instance definitions) by setting the resourceType
. For example:
Instance: MyBundle
InstanceOf: Bundle
* type = #transaction
* entry[0].resource.resourceType = "Patient" // <-- this is now allowed in SUSHI 0.12.2
* entry[0].resource.name.given = "Bob"
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