Guidance for FHIR IG Creation
0.1.0 - CI Build
Guidance for FHIR IG Creation, published by HL7 International - FHIR Management Group. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/FHIR/ig-guidance/ and changes regularly. See the Directory of published versions
Different implementation guides will have different settings used in their rendering. However, most implementation guides published using the HL7 IG templates will have a common set of behavior. This page provides an overview of the elements found in most implementation guides.
These characteristics apply to most/all pages within the IG
The top and bottom of all HL7 IGs have color schemes that are specific to product family:
A structure definition is made up of a collection of ElementDefinitions that describe the individual data elements that make up the model. When an implementation guide displays those elements, there are often different subsets of the elements that are of interest to the reader. For this reason, implementation guides offer up different 'views' of the model, each of which exposes different subsets of elements. This view-based approach is used for both the table views and the data dictionaries.
There are up to four different types of table view, though not all will appear in every implementation guide:
Table views provide a grid-like view of a structure definition, with a hierarchical view of the model supplemented by metadata describing the elements within the model. There can be multiple tables (typically in tabs) showing different subsets of elements (see Model Views above). Each of the views shows the resource, data type, extension definition or logical model with the following columns:
Column | Content |
Name | This column starts with icon that denotes the underlying type of the element. The icons are described below. Following the icon is the name of the element in the resource/data type/logical model described by the row. If the element is an extension slice, the name of the extension slice will be displayed instead of the element name (which is always 'extension' or 'modifierExtension' and is implied by the icon). For other slices, this column will include both the name of the element and the name of the slice. Clicking on the name will jump to the data dictionary page for the element, which provides more detailed information, including full definitions and other guidance. |
Flags | A set of information about the element that impacts how implementers handle them. The flags are described below. Hovering over a flag will provide a description of its meaning. |
Card. | Cardinality: the lower and upper bounds on how many times this element is allowed to appear within the containing model or element. In some views, cardinality may be greyed out, indicating that they are unchanged from the reference model for that view. |
Type | The type (or types) of the element (hyperlinked to the definition of the type). These might be base data types or profiles of data types. If the type is one that references other models, the allowed target models that can be referenced will be listed in () brackets after the type name. As with cardinality, some views may also show changes from the reference model fro the view. In addition, within profiles, some types might be marked with the S mustSupport indicator (see the legend below). |
Description & Constraints | A short description of the element (from ElementDefinition.short) as well as certain constraints or other key information, including the vocabulary binding, fixed values or patterns, information about slicing behavior, the URL value for extensions, etc. In some views, content may be greyed out, indicating that they are unchanged from the reference model for that view. Full details about the element can be found on the corresponding data dictionary page. |
Here's an example:
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Resource Name | Base Type | Definition | ||
nameA | Σ | 1..1 | TypeA | description of content |
nameB[x] | ?! Σ | 0..1 | description SHALL at least have a value |
|
nameBType1 | 0..1 | Type1 | ||
nameBType2 | I | 0..1 | type2 | |
nameC | 1..* | BackboneElement | Definition | |
nameD | 1..1 | TypeD | Relevant Records |
Key to Type Icons
value
attribute/property. These are also known as primitive types. All primitive type names start with a lower case letterKey to Flags
?!
: This element is a modifying element - see Modifier ElementsS
: This element is an element that must be supported - see MustSupport ElementsΣ
: This element is an element that is part of the summary set - see Summary SearchesC
: This element defines or is affected by constraints - see ConstraintsNE
: This element cannot have extensions (some infrastructural elements only)The data type for a particular element is typically expressed as the name of the specified type with a hyperlink to its definition. However, there are two exceptions:
In profiles, references to types may be profiled - i.e. Instances of the element must comply with a specified profile or one of a list of profiles. The canonical URLs of any applicable profiles are listed inside {}.
Where an element can have a choice of data types, or is a Reference these are
represented by showing the common type (Reference
or Type
), and then showing the applicable data type names or
resource types in a stereotype, separated by the |
character. Type
is not formally otherwise defined by
this specification, but is a super type of all the data types.
Data dictionaries provide a list of model elements with full details about each element. There can be multiple data dictionary lists (typically in tabs) showing different subsets of elements (see Model Views above). Each of the views shows the only the elements that fall within the scope of that view. For some views, the information will also convey changes between the current model and the reference model for that particular view. For example, unchanged properties will be shown in grey, new properties in black and removed properties with strike-through.
TODO - list all of the types of information that can appear on the data dictionary page.