Resource rendering
Simplifier renders a StructureDefinition as a tree table: the Overview tab of a profile page shows it, and the {{tree:}} widget embeds the same table in an implementation guide (see Rendering FHIR resources). This page explains what the tree shows and what the icons, flags and labels in it mean.
Tree views
A profile says two things at once: what it changed (its differential) and what the resulting resource looks like (its snapshot). The buttons at the top right of the tree switch between those perspectives.
Button |
What you see |
|---|---|
|
Only the elements this profile changed, and the parent elements needed to reach them. An element counts as changed when the profile’s own differential touches it, or when one of its descendants was touched. This is the closest view to the profile source. |
|
Every element available in the resulting resource, taken from the generated snapshot. Elements the profile removed ( |
|
The full snapshot, with everything this profile changed in black and everything it inherited in grey. Elements the profile removed stay visible with a line through them. This is the default view. |
show common is a separate toggle. By default the tree hides the elements that are the same in every resource and carry no information about the profile: id elements, the attributes inherited from Resource and DomainResource, XML attributes, and extension roots the profile did not touch. Turn it on to show them anyway. The toggle has no effect in the diff view, where these elements are hidden already unless the profile constrained them, and it is disabled there.
Your choice of view and of show common is remembered in a browser cookie, so it carries over to the next profile you open.
Note
In an implementation guide you can fix the view per widget ({{tree:<canonical>, diff}}) or give the reader the buttons ({{tree:<canonical>, buttons}}). See the tree widget properties.
What the colours mean
In the hybrid view, grey means inherited and black means set by this profile. The same distinction is applied to the flags and labels: a flag that this profile introduced is shown in red, and one that comes from the base definition is grey. In the diff view, the inherited parts are not greyed out but hidden altogether, so everything you see is the profile’s own work.
Element icons
The icon in front of an element name tells you what kind of element it is. Hovering over an icon shows the same description.
Icon |
Meaning |
Shown for |
|---|---|---|
|
Primitive Data Type |
An element of a primitive type such as |
|
Data Type |
An element of a complex type such as |
|
Element |
A backbone element: a nested structure defined inside the resource itself, such as |
|
Resource |
The root of the tree, and elements that contain a resource. |
|
Choice of Types |
A choice element such as |
|
Reference to another Resource |
An element of type |
|
Reference to another Element |
An element that reuses the definition of another element through |
|
Extension |
A simple extension: one that carries a value. |
|
Complex Extension |
An extension with sub-extensions instead of a single value. |
|
Modifier Extension |
A simple extension that changes the meaning of the element it is on. |
|
Complex Modifier Extension |
A modifier extension with sub-extensions. |
|
Sliced |
The element that introduces a slice: it holds the slicing rules, and the slices are listed underneath it. |
|
Slice |
One named slice of a sliced element. |
Flags
The second column holds the flags of the element. A flag in red was introduced by this profile; a grey flag is inherited.
Flag |
Meaning |
|---|---|
|
The element must be supported ( |
|
The element carries obligations. It is shown next to |
|
The element is part of the resource summary, so a server may return it in a search result even when the full resource is not requested. |
|
The element is a modifier element: ignoring it changes the meaning of the resource. |
|
The element has invariants, or is affected by one. The invariants themselves are listed in the element’s description. |
Labels
Some elements show a small labelled box in the description column. Like the flags, a label is highlighted when this profile is the one that added it.
Binding - the element is bound to a value set. The strength and the value set are in the description.
Fixed Value - the element is fixed to one value.
Pattern - the element must match a pattern.
Impose - the element imposes another profile through the
structuredefinition-imposeProfileextension.
Suppressing inherited mappings and examples
The Details and Mappings tabs render the profile’s snapshot, so they also show everything the profile inherits from the profiles it is derived from. To keep an inherited mapping or example out of those views, add the elementdefinition-suppress extension to a matching entry in your profile’s differential:
"mapping": [
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/elementdefinition-suppress",
"valueBoolean": true
}
],
"identity": "rim",
"map": "Patient"
}
]
The entry you write must match the inherited one exactly: mappings are matched on both identity and map, examples are matched on label. An entry carrying the extension is never added to the snapshot itself, so if it matches nothing, the only effect is that it does not appear.
Note
Simplifier supports the extension on ElementDefinition.mapping and ElementDefinition.example. The FHIR specification also lists comment, requirements, alias, label and code as contexts for this extension; there the extension has no effect and the inherited value stays in the snapshot.
The same rules apply wherever the Firely .NET SDK generates a snapshot, so the snapshots produced by Bake, Forge and Firely Terminal behave the same way.












