Skip to content

Releases: FHIR/sushi

SUSHI 2.5.0

16 May 20:16
Compare
Choose a tag to compare

SUSHI 2.5.0 includes the following enhancements and bug fixes:

  • New --require-latest flag to indicate SUSHI should fail if it is not the latest version (details below) (#1083)
  • Failure to determine latest SUSHI version is now logged as a warning (rather than error) (#1084)
  • Fix handling of extensions in CodeSystem and ValueSet definitions (#1069)
  • Fix resolution of baseDefinitions that use a versioned canonical URL (#1067)
  • Only consider master/main branches when searching for current dependency version (#1017)
  • Fix download of current dependencies that use main branch (#1075)
  • Warn when authors access an existing slice by index rather than slice name (#1030)

New --require-latest flag to indicate SUSHI should fail if it is not the latest version

As of SUSHI 2.4.0, SUSHI informs users when there is a newer version of SUSHI available. Starting with this release (2.5.0), authors may optionally use the --require-latest flag to force SUSHI to exit with an error if it detects that a newer version is available or if it can't determine what the latest version is. This may be especially helpful in publication workflows where it is important that the latest version of SUSHI be used.

Full Documentation

For additional documentation, refer to FSH School's SUSHI 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 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 2.4.1

26 Apr 14:38
c15a18f
Compare
Choose a tag to compare

SUSHI 2.4.1 addresses security vulnerabilities found in SUSHI 2.4.0.

Full Documentation

For additional documentation, refer to FSH School's SUSHI 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 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 2.4.0

25 Apr 21:12
43e8d24
Compare
Choose a tag to compare

SUSHI 2.4.0 includes the following enhancements and bug fixes:

  • Allows contentReference elements to be defined on Logical Models and custom Resources (#1009) (details below)
  • Fixes choice type rule paths in Instance assignment rules to use the type specific path (#1032) (details below)
  • Alerts users when a new version of SUSHI is available (#969)
  • Fixes support for HTTPS proxies (using https_proxy environment variable) (#1045)
  • Loads predefined resources in subfolders of existing supported input folders when implicated by the path-resource parameter (#1037)
  • Allows concepts added to a CodeSystem via caret rules (e.g., ^) to be included in ValueSets (#1039)
  • Now constrains the Reference type when using the Reference() keyword on an R4B/R5 element that supports Reference and CodeableReference (#1044)
  • Fixes an issue where assigning a Reference value on an element would wipe out other values already present on the element (#1058)
  • Fixes cardinality validation on choice element slices containing extensions (#1021)
  • No longer warns for an invalid name or id on a resource when a caret rule on the same resource sets a valid name or id (#1024)
  • Warns when an xhtml div element does not start and end with a div tag (#305)
  • Warns when properties specific to IG creation are included in sushi-config.yaml when SUSHI is run in FSHOnly mode (#1051)
  • Provides a more detailed error message when an attempt is made to add a top-level Extension to a Bundle resource (#1020)

Support for contentReference elements on Logical Models and custom Resources

Elements of type contentReference are now supported in AddElementRules by way of the contentReference keyword. To define an element of type contentReference simply include contentReference <url-to-referenced-element> in the AddElementRule where the type would typically go. E.g. the final AddElementRule will create an element nameReference that is a contentReference to the element found at http://example.org/StructureDefinition/PatientExample#Patient.name.

* section.section 0..1 contentReference http://example.org/StructureDefinition/Report#Report.section "A sub-section"

Updating choice element paths to be type-specific

When assigning values to choice elements on an Instance, type-specific elements should always be used in the rules. In cases where an author specifies a choice element in an instance (e.g., value[x]), SUSHI will change the path to refer to the type-specific element if the choice is constrained to a single type. E.g. The final assignment rule on the following example will be read as * valueBoolean = true as the Instance is exported. Authors, however, should avoid using this construct in instances and should always prefer using type-specific elements to begin with.

Profile: BooleanObservation
Parent: Observation
* value[x] only boolean

Instance: MyObservation
InstanceOf: BooleanObservation
* status = #final
* code = http://example#somecode
* value[x] = true

Full Documentation

For additional documentation, refer to FSH School's SUSHI 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 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 2.3.0

25 Feb 20:12
db6a745
Compare
Choose a tag to compare

SUSHI 2.3.0 includes the following enhancements and bug fixes:

  • Improve warning message about files in unsupported folders within the input directory (#987, #986)
  • Add support for specifying additional resource paths to predefined resources (#1014, #986) (details below)
  • Include provided extensions from sushi-config in the ImplementationGuide resource (#1005)
  • Create an IG URL for dependencies listed in sushi-config that do not have an ImplementationGuide resource (#1007) (details below)
  • Support referencing the canonical URL of the ImplementationGuide using the Canonical keyword (#963) (details below)
  • Improve SUSHI's efficiency when processing profiles and eliminate unexpected error (#1013)
  • Improve support for processing large base64 encoded values (#998)
  • Update the copy utility used during the build process (#1004)

Specifying additional resource paths

Sometimes authors may wish to put predefined resources in folders other than the normally supported input sub-folders. To support this, SUSHI now recognizes the ImplementationGuide parameter path-resource. Authors can include this parameter in sushi-config.yaml to specify relative paths to additional folders that contain predefined resources. For example, the following can now be used in sushi-config.yaml to include resources from the sub-folder predefined-resources:

parameters:
  path-resource:
    - input/predefined-resources

Note that the value of path-resource is an array (or sequence) formatted in the standard YAML style.

For SUSHI users who manage their own ImplementationGuide resource (i.e. FSHOnly IGs), SUSHI will use the parameter from the ImplementationGuide resource:

"parameter": [
  {
    "code": "path-resource",
    "value": "input/predefined-resource"
  }
]

Automatically create a URL for dependencies with no ImplementationGuide

Some dependency packages do not contain an ImplementationGuide resource. Since SUSHI needs the ImplementationGuide URL to specify the dependency in its own generated ImplementationGuide (per FHIR requirements), this caused problems in the past. Prior to this release, authors had to address the problem by fully specifying the dependency with a uri, like this:

dependencies:
  de.basisprofil.r4:
    uri: http://fhir.org/packages/de.basisprofil.r4/ImplementationGuide/de.basisprofil.r4
    version: 1.1.0

Since then, the FHIR community has determined that packages without an ImplementationGuide should use a virtual IG URL of the format http://fhir.org/packages/${packageId}/ImplementationGuide/${packageId}. Using that guidance, SUSHI can now infer IG URLs for dependency packages without an IG; meaning that authors no longer need to fully specify such dependencies. Starting with this release, authors can simply declare an IG-less dependency like all other dependencies:

dependencies:
  de.basisprofil.r4: 1.1.0

Use the Canonical keyword to reference the canonical URL of the ImplementationGuide

There may be cases where an author needs to refer to the canonical URL of the ImplementationGuide resource they are creating. SUSHI now supports using the Canonical keyword with the id, packageId, or name that is specified in sushi-config.yaml. For example, when creating a CapabilityStatement, the following Assignment Rule can be added:

* implementationGuide = Canonical(my-package-id)

Full Documentation

For additional documentation, refer to FSH School's SUSHI 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 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 2.2.6

06 Jan 00:36
Compare
Choose a tag to compare

SUSHI 2.2.6 includes the following bug fixes and minor enhancements:

  • Supports in-lining FSH-defined profiles, value sets, and code systems in instances (e.g., in contained, Bundle.entry.resource) (#971, #1000)
  • Fixes bug in XHTML processing that could cause invalid XHTML output (#1001, #1002)

Full Documentation

For additional documentation, refer to FSH School's SUSHI documentation, the FSH STU1 specification, and/or the FSH current build 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 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 2.2.5

22 Dec 20:56
Compare
Choose a tag to compare

SUSHI 2.2.5 includes the following bug fixes and minor enhancements:

  • Supports projects using FHIR version 5.0.0-snapshot1 (#994, #995) (details below)
  • Fixes handling of elements w/ a slicename matching the element name (#993, #996)

FHIR 5.0.0-snapshot1

The latest R5 pre-release is version 5.0.0-snapshot. Projects that wish to use this version of FHIR can now specify it in their sushi-config.yaml file:

fhirVersion: 5.0.0-snapshot1

NOTE: At the time of this release, the IG Publisher does not yet support FHIR 5.0.0-snapshot1. So while you can use it with SUSHI, you will not yet be able to fully build the IG using the FHIR IG Publisher. IG Publisher support for 5.0.0-snapshot1 is expected later today.

Full Documentation

For additional documentation, refer to FSH School's SUSHI documentation, the FSH STU1 specification, and/or the FSH current build 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 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 2.2.4

21 Dec 02:44
Compare
Choose a tag to compare

SUSHI 2.2.4 includes the following bug fixes and minor enhancements:

  • Fix output paths for resources with path separators in their id (#990, #991) (details below)
  • Fix canonical lookups for instances whose URL was set by an insert rule (#958, #985)
  • Update dependency libraries to address known vulnerabilities (#992)

Output Paths and IDs

SUSHI generates file names based on the resource id (i.e., ${resourceType}-${resourceId}.json). In past versions of SUSHI, if the id contained one or more path separators, it was possible to cause SUSHI to write the JSON file to other locations on the filesystem. This behavior could be abused to intentionally overwrite existing JSON files. The utility of leveraging this bug, however, is limited by the fact that the file contents would still be a FHIR resource (i.e., you cannot force it to write arbitrary JSON). In this version of SUSHI, the bug has been fixed by properly sanitizing file names before writing them to disk.

Full Documentation

For additional documentation, refer to FSH School's SUSHI documentation, the FSH STU1 specification, and/or the FSH current build 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 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 2.2.3

14 Dec 00:44
bffa4b2
Compare
Choose a tag to compare

SUSHI 2.2.3 includes the following bug fixes:

  • Remove incorrect warnings about unused soft indices in rules (#978, #979)
  • Correctly handle mixed case dependencies extracted from the IG resource (#980, #981)

These fixes are for bugs that were introduced in SUSHI 2.2.2. We apologize for the inconvenience!

Full Documentation

For additional documentation, refer to FSH School's SUSHI documentation, the FSH STU1 specification, and/or the FSH current build 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 2.2.2

10 Dec 21:01
34323f8
Compare
Choose a tag to compare

SUSHI 2.2.2 includes the following bug fixes and minor improvements:

  • Use package.json canonical when a package does not have an IG resource (#948, #966)
  • Log an error when a modifier extension is used in a non-modifier extension array (and vice-versa) (#576, #960)
  • Mirror slice base extensions in slices to accommodate validator (#932, #955)
  • Improve handling of package name case insensitivity (#962, #912, #800)
  • Fix handling of soft-indexing when used with indent rules (#973, #974)
  • Fix package loading errors by no longer using HTTP HEAD method (#975)

Full Documentation

For additional documentation, refer to FSH School's SUSHI documentation, the FSH STU1 specification, and/or the FSH current build 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 2.2.1

29 Nov 20:13
943bb78
Compare
Choose a tag to compare

SUSHI 2.2.1 includes the following bug fixes:

  • Fixes failing to find element slices when other elements have the same slice name (#956, #957)
  • Always fallback to packages2.fhir.org when a package doesn't exist at packages.fhir.org (#961, #965)
  • Fix assignment of value 0 on Quantities (#947, #964)

Full Documentation

For additional documentation, refer to FSH School's SUSHI documentation, the FSH STU1 specification, and/or the FSH current build 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