Releases: FHIR/sushi
SUSHI 2.5.0
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
andValueSet
definitions (#1069) - Fix resolution of
baseDefinition
s that use a versioned canonical URL (#1067) - Only consider
master
/main
branches when searching forcurrent
dependency version (#1017) - Fix download of
current
dependencies that usemain
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
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
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 inValueSet
s (#1039) - Now constrains the
Reference
type when using theReference()
keyword on an R4B/R5 element that supportsReference
andCodeableReference
(#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 adiv
tag (#305) - Warns when properties specific to IG creation are included in
sushi-config.yaml
when SUSHI is run inFSHOnly
mode (#1051) - Provides a more detailed error message when an attempt is made to add a top-level
Extension
to aBundle
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
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
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
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
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
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
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
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