Type
|
Reference
|
Content
|
web
|
github.com
|
FSH Grammar
|
web
|
github.com
|
FHIR Shorthand, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 3.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/vadi2/fhir-shorthand/
and changes regularly. See the Directory of published versions
|
web
|
github.com
|
For a complete list of changes, see all commits from FSH 3.0.0-ballot to FSH 3.0.0 release
on GitHub.
|
web
|
fshschool.org
|
Conceived in September 2019, with the first version of the specification released in March 2020, FSH has been rapidly adopted by the FHIR community. Since that time, several significant tools for processing FSH have been developed, including SUSHI
, a reference implementation and de facto
standard compiler for transforming FSH into FHIR artifacts. GoFSH
, a tool for transforming FHIR artifacts to FSH, enables lossless round-tripping from FHIR JSON to FSH and back. FSH and SUSHI have been integrated with the HL7 FHIR Implementation Guide Publishing tool
and Firely's Simplifier.net
, allowing seamless processing from FSH to a complete IG.
|
web
|
fshschool.org
|
Conceived in September 2019, with the first version of the specification released in March 2020, FSH has been rapidly adopted by the FHIR community. Since that time, several significant tools for processing FSH have been developed, including SUSHI
, a reference implementation and de facto
standard compiler for transforming FSH into FHIR artifacts. GoFSH
, a tool for transforming FHIR artifacts to FSH, enables lossless round-tripping from FHIR JSON to FSH and back. FSH and SUSHI have been integrated with the HL7 FHIR Implementation Guide Publishing tool
and Firely's Simplifier.net
, allowing seamless processing from FSH to a complete IG.
|
web
|
fshschool.org
|
The FSH Finder
tool reports over 600 IG-development projects using FSH.
|
web
|
npm-stat.com
|
The site npm-stat
reports over 250,000 downloads of the fsh-sushi
npm
package.
|
web
|
www.npmjs.com
|
The site npm-stat
reports over 250,000 downloads of the fsh-sushi
npm
package.
|
web
|
github.com
|
The Excel spreadsheet method
was introduced before FHIR 1.0 and was used for many of the first implementation guides, including US Core
. Version management is very difficult when using this method, as files are saved in binary form (.xslx) or as XML files, with the content mixed with formatting directives. Today, authors are heavily discouraged from authoring with spreadsheets and are not likely to receive priority support when using this method.
|
web
|
fire.ly
|
Simplifier/Forge
and Trifolia-on-FHIR
provide graphical, form-based interfaces that help guide users through common profiling tasks. The upside is that the tools provide guidance to authors, while the potential downside is the need to navigate through many screens, and difficulty making cross-cutting changes. Trifolia is fully browser-based, with no software to install locally. Both are commercially-supported products.
|
web
|
trifolia-fhir.lantanagroup.com
|
Simplifier/Forge
and Trifolia-on-FHIR
provide graphical, form-based interfaces that help guide users through common profiling tasks. The upside is that the tools provide guidance to authors, while the potential downside is the need to navigate through many screens, and difficulty making cross-cutting changes. Trifolia is fully browser-based, with no software to install locally. Both are commercially-supported products.
|
web
|
github.com
|
FSH Grammar
– An ANTLR v4
representation of the FSH syntax (informative content)
.
|
web
|
www.antlr.org
|
FSH Grammar
– An ANTLR v4
representation of the FSH syntax (informative content)
.
|
web
|
fshschool.org
|
The following materials, useful for learning and applying FHIR Shorthand but not part of the language specification, are found on FSHSchool.org
:
|
web
|
fshschool.org
|
SUSHI User Guide
– SUSHI ("SUSHI Unshortens ShortHand Inputs") is a reference implementation and de facto
standard interpreter/compiler for FHIR Shorthand. SUSHI produces Health Level Seven (HL7®) Fast Healthcare Interoperability Resources (FHIR®)
profiles, extensions, and other artifacts needed to create FHIR Implementation Guides (IG).
|
web
|
fshschool.org
|
GoFSH User Guide
– GoFSH is a tool that turns FHIR artifacts into FSH. Using GoFSH, existing FHIR artifacts or complete Implementation Guides can be transformed into FSH, automatically.
|
web
|
fshschool.org
|
FSH Visual Studio Code Extension Overview
– The FSH Visual Studio Code extension provides syntax highlighting, code snippets, path completion, and other features that improve FSH authoring efficiency.
|
web
|
fshschool.org
|
FHIR Shorthand Tutorials
– A step-by-step hands-on introduction to producing an Implementation Guide (IG) with FHIR Shorthand and SUSHI.
|
web
|
fshschool.org
|
FHIR Shorthand Seminar
– A comprehensive overview of FHIR IG authoring basics for people who are interested in being able to independently create FHIR IGs.
|
web
|
fshschool.org
|
FSH Online
– A coding playground for FSH, an online environment that allows you to write FSH and convert it to FHIR artifacts, convert FHIR artifacts to FSH, access examples, and share FSH code with others.
|
web
|
fshschool.org
|
FSH Finder
– A list of public GitHub repositories that contain FSH code, refreshed daily.
|
web
|
semver.org
|
FHIR Shorthand follows the same modified semantic versioning
approach as FHIR. See the documentation on versioning in FHIR Releases and Versioning
for more detail. Implementers are encouraged to clearly indicate what version or versions of the FSH specification they implement.
|
web
|
github.com
|
SUSHI bugs, issues, and suggestions can be made here
.
|
web
|
github.com
|
GoFSH bugs, issues, and suggestions can be made here
.
|
web
|
github.com
|
If your FSH project is not listed in FSH Finder, log an issue here
or submit a pull request on the list of organizations in settings.yml
.
|
web
|
github.com
|
If your FSH project is not listed in FSH Finder, log an issue here
or submit a pull request on the list of organizations in settings.yml
.
|
web
|
github.com
|
FSH examples for inclusion in FSH Online can be contributed here
.
|
web
|
github.com
|
Grammar
: FSH has a formal grammar
defined in ANTLR
.
|
web
|
www.antlr.org
|
Grammar
: FSH has a formal grammar
defined in ANTLR
.
|
web
|
blog.healthlanguage.com
|
Extensional
rules list individual codes to be included and/or excluded, for example:
|
web
|
blog.healthlanguage.com
|
Intensional
rules define the value set contents indirectly, for example:
|
web
|
fshschool.org
|
This section presents an overview of how the FSH language is put into practice using SUSHI
. SUSHI
(an acronym for " S
USHI U
nshortens SH
orthand I
nputs") is a reference implementation and de facto
standard for a FSH compiler that translates FSH into FHIR artifacts such as profiles, extensions, and value sets.
|
web
|
fshschool.org
|
This section presents an overview of how the FSH language is put into practice using SUSHI
. SUSHI
(an acronym for " S
USHI U
nshortens SH
orthand I
nputs") is a reference implementation and de facto
standard for a FSH compiler that translates FSH into FHIR artifacts such as profiles, extensions, and value sets.
|
web
|
fshschool.org
|
The process for installing SUSHI is described here
. A text editor is also needed. Visual Studio Code
has a useful FSH plug-in
that knows FSH syntax and colorizes text accordingly.
|
web
|
code.visualstudio.com
|
The process for installing SUSHI is described here
. A text editor is also needed. Visual Studio Code
has a useful FSH plug-in
that knows FSH syntax and colorizes text accordingly.
|
web
|
marketplace.visualstudio.com
|
The process for installing SUSHI is described here
. A text editor is also needed. Visual Studio Code
has a useful FSH plug-in
that knows FSH syntax and colorizes text accordingly.
|
web
|
fshschool.org
|
To set up a directory structure for your IG, run sushi init
at a command prompt. This will create the specific project structure
required by the IG Publisher.
|
web
|
fshschool.org
|
Before running SUSHI, you must have a
configuration file named sushi-config.yaml
(2) containing some basic information about the project, such as its canonical URL.
|
web
|
fshschool.org
|
For more information on the use of SUSHI and the IG Publisher, see the SUSHI Documentation
.
|
web
|
fshschool.org
|
This chapter contains the formal specification of the FHIR Shorthand (FSH) language. It is intended primarily as a reference, not a tutorial. For tutorials and additional documentation please consult the Overview
or go to fshschool.org
.
|
web
|
www.antlr.org
|
The grammar of FSH has been described using ANTLR
(see Appendix: FSH Grammar
). The ANTLR grammar captures the syntax of FSH, but is not a complete specification of the language, since FSH defines the additional validation criteria for rules and items, and the behavior of rules in terms of FHIR artifacts.
|
web
|
www.w3schools.com
|
FSH follows JavaScript syntax
for code comments:
|
web
|
unitsofmeasure.org
|
The first shorthand syntax only applies if the units are expressed in Unified Code for Units of Measure
(UCUM). When this syntax is used, implementations MUST set the code system ( Quantity.system
) to the UCUM code system (http://unitsofmeasure.org). The second shorthand MAY be used when the units are not UCUM. Alternatively, the value and units MAY be assigned independently (see Assignments with the Quantity Data Type
).
|
web
|
wiki.c2.com
|
Item names SHOULD follow FHIR naming guidance
. All item names MUST be between 1 and 255 characters. Item names MUST begin with an uppercase ASCII letter and contain only ASCII letters, numbers, and underscores ( _
). By convention, item names SHOULD use PascalCase (also known as UpperCamelCase)
.
|
web
|
wiki.c2.com
|
Slice names
and local slice names for extensions
SHOULD use lower camelCase
. Slice names MUST contain only ASCII letters, numbers, underscores ( _
), hyphens ( -
), at signs ( @
), and forward slashes ( /
, used only for re-slicing). These conventions are consistent with FHIR slice naming conventions specified in eld-16
, aside from disallowing square brackets ( [
and ]
) since they are used by sliced array path
syntax.
|
web
|
blog.healthlanguage.com
|
Define a value set using intensional
rules:
|
web
|
unitsofmeasure.org
|
FSH provides a shorthand that allows quantities, units of measure, and display string for the units of measure to be specified simultaneously, provided the units of measure are Unified Code for Units of Measure
(UCUM) codes:
|
web
|
wiki.c2.com
|
In these expressions, the names ( name
, name1
, name2
, etc.) are new local names created by the rule author. They are used to refer to that extension in later rules. By convention, the local names SHOULD be lower camelCase
. Implementers SHALL export these names as slice names in the generated StructureDefinition.
|
web
|
wiki.c2.com
|
In this pattern, <array>
is a path to the element that is to be sliced and MUST match the path on which the slicing rules were defined in step (1). The names ( name
, name1
, etc.) are created by the rule author to describe the slice in the context of the profile. These names are used to refer to the slice in later rules. By convention, the slice names SHOULD be lower camelCase
.
|
web
|
developer.mozilla.org
|
Invariants
are constraints that apply to one or more values in instances, expressed as FHIRPath
or XPath
expressions. One or more invariants MAY be applied to an instance as a whole or a single element. The syntax for applying invariants in profiles is:
|
web
|
github.com
|
SUSHI
provides an implementation of a FSH language parser described in ANTLR v4
. It includes elements of the FSH language marked as TU
. The entity names defined in the grammar may not correspond to those used in the language specification. If there is a conflict between the language specification and the grammar defined in this Appendix, the language specification SHALL take precedence. This grammar implementation is provided for informational purposes and is not normative.
|
web
|
www.antlr.org
|
SUSHI
provides an implementation of a FSH language parser described in ANTLR v4
. It includes elements of the FSH language marked as TU
. The entity names defined in the grammar may not correspond to those used in the language specification. If there is a conflict between the language specification and the grammar defined in this Appendix, the language specification SHALL take precedence. This grammar implementation is provided for informational purposes and is not normative.
|
web
|
github.com
|
The parser grammar corresponding to this version of the specification can be found here
and here
.
|
web
|
github.com
|
The parser grammar corresponding to this version of the specification can be found here
and here
.
|
web
|
github.com
|
The lexer grammar corresponding to this version of the specification can be found here
and here
.
|
web
|
github.com
|
The lexer grammar corresponding to this version of the specification can be found here
and here
.
|