View raw Markdown
type: docsource: source/formats.html

[%settitle Resource Definitions%] [%file newheader%] [%file newnavbar%] <%fmtheader base%>

Resource Definitions

Responsible Owner: [[%wgt fhir%]]([%wg fhir%]) Work GroupStandards Status:Normative

This page documents how the content of the resources defined by the FHIR specification are described. In actual exchange, resources can be represented in the following formats: XML, JSON and RDF (Turtle). A UML Based Object-Oriented Definition is also provided.

This specification defines <%res-type-count%> resources as part of this specification. Additional resources may be defined in other specifications - see the discussion on Resource.

Resource Definition

The resources are described in several different ways:

In addition to this descriptive syntax, other definitional forms are available, including W3C schema, Schematron, JSON Schema, and the StructureDefinition syntax defined internally.

Logical table

The Logical View shows the resources as a tree structure with the following columns:

ColumnContent
NameThe name of the element in the resource (manifests as XML element name or JSON or RDF property name). Some names finish with [x] - the meaning of this is discussed below. In addition, this column contains an icon that denotes the underlying type of the content. The icons are described below
FlagsA set of information about the element that impacts how implementers handle them. The flags are described below
Card.Cardinality: the lower and upper bounds on how many times this element is allowed to appear in the resource
TypeThe 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 & ConstraintsA description of the element, and details about constraints that are applied to it. Particularly, for coded elements, information about which codes can be used. The description comes from ElementDefinition.short

Here's an example:

NameFlagsCard.TypeDescription & Constraints
.. Resource NameBase TypeDefinition
... nameAΣ1..1TypeAdescription of content
... nameB[x]?! Σ0..1description <br/> SHALL at least have a value
.... nameBType10..1typeB
.... nameBType2I0..1typeC
... nameC1..*BackboneElementDefinition
.... nameD1..1TypeDRelevant Records

Key to Type Icons

Key to Flags

Notes:

The datatype 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 datatypes, or is a Reference these are represented by showing the common type (Reference or Type), and then showing the applicable datatype names or resource types in a stereotype, separated by the | character.

Choice of Datatypes

A few elements have a choice of more than one datatype 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 datatype cannot repeat - 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 datatype chosen from among the list of permitted datatypes.

Note: In object-oriented implementations, this is naturally represented as a polymorphic property (see Object Representation of FHIR). 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. To help with code generation, a list of choice elements is published.

[%file newfooter%]