|FHIR Infrastructure Work Group||Maturity Level: 3||Ballot Status: STU 3|
This page documents how the content of the resources are described. In actual exchange, resources can be represented in the following formats: XML, JSON and Turtle. Other representations are allowed, but are not described by this specification.
The resources are described in several different ways:
In addition to this descriptive syntax, other definitional forms are available, including W3C schema and Schematron, and the StructureDefinition syntax defined internally.
The Logical View shows the resources as a tree structure with the following columns:
|Name||The name of the element in the resource (manifests as XML element name, or JSON property name. Some names finish with |
|Flags||A set of information about the element that impacts how implementers handle them. The flags are described below|
|Card.||The lower and upper bounds on how many times this element is allowed to appear in the resource|
|Type||The type of the element (hyperlinked to the definition of the type). Note that the type of the element has one of two meanings, depending on whether the element has defined children. If the element has children, then the element has an anonymous type that specializes the given type. If the element has no children, then the element has properties and children as specified by the nominated type|
|Description & Constraints||A description of the element, and details about constraints that are applied to it. Particularly, for coded elements, information about which codes can be used|
Here's an example:
|Name||Flags||Card.||Type||Description & Constraints|
|Resource Name||Base Type||Definition|
|nameA||Σ||1..1||type||description of content|
SHALL at least have a value
Key to Type Icons and Flags
?!: This element is a modifying element - see Modifier Elements
S: This element is an element that must be supported - see Must-Support Elements
Σ: This element is an element that is part of the summary set - see Summary Searches
I: This element defines or is affected by constraints - see Constraints
NE: This element cannot have extensions (some infrastructural elements only)
valueattribute/property to contain the actual value of the element
valueattribute/property can never be empty. Either it is absent, or it is present with at least one character of non-whitespace content
idattribute to serve as the target of an internal reference. The
idattribute is not shown in this format. Extensions are not always shown, but may appear except where the flag
A few elements have a choice of more than one data type for their content. All such elements have a name that
takes the form
nnn[x]. The "nnn" part of the name is constant, and the "[x]" is replaced with the title-cased
name of the type that is actually used. The table view shows each of these names explicitly.
Elements that have a choice of data type cannot repeat. I.e. They must have a maximum cardinality of 1. When constructing an instance of an element with a choice of types, the authoring system must create a single element with a data type chosen from among the list of permitted data types.
Note: In object-orientated based implementations, this is naturally represented as a polymorphic property. However this is not necessary and the correct implementation varies according to the particular features of the language. In XML schema, these become an xs:choice of element.
The UML diagrams represent the same content as a series of classes that represent the elements of a resource.
The elements and the data types are hyperlinks to the formal definitions of the parts. The UML diagrams also show the vocabulary bindings. These are hyperlinks to the value set details.
Where an element can have a choice of data types, or is a Reference these are
represented by showing the common type (
Type), and then showing the applicable data type names or
resource types in a stereotype, separated by the
Type is not formally otherwise defined by
this specification, but is a super type of all the data types.
The actual order of the elements in XML cannot be determined from the diagram, nor whether a UML property becomes an element or an attribute in the XML representation.
Bindings to value sets are indicated by a stereotype on the element. The stereotype has 2 parts: the value set name, and a symbol that denotes the strength of the binding:
This specification defines the following ways to represent resources when they are exchanged:
Clients and servers can choose what syntax(s) to implement. In
the interests of interoperability, servers SHOULD support all formats (though support for RDF
should best wait until it is more fully developed).
Systems SHALL declare which format(s) they support in their Capability Statement.
If a server receives a request for its Capability Statement in
a format it does not otherwise support, it SHALL return a
415 Unsupported Media Type.