FHIR Release 3 (STU)

This page is part of the FHIR Specification (v3.0.2: STU 3). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

2.32.0 Element Definition

FHIR Infrastructure Work GroupMaturity Level: 5Ballot Status: Trial Use

The definition of an element in a resource or an extension. The definition includes:

  • Path (name), Cardinality, and data type
  • Definitions, usage notes, and requirements
  • Default or fixed values
  • Constraints, Length limits, and other usage rules
  • Terminology Binding
  • Mappings to other specifications
  • Structural Usage Information such as Slicing

The ElementDefinition type is the core of the FHIR metadata layer, and is closely (conceptually) aligned to ISO 11179. The DataElement resource is a packaging wrapper around the ElementDefinition type. All the data elements defined in this specification are published as a collection of data elements (XML or JSON).

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition ΣIElementDefinition of an element in a resource or extension
+ Min <= Max
+ if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
+ Pattern may only be specified if there is one type
+ Fixed value may only be specified if there is one type
+ Binding can only be present for coded elements, string, and uri
+ Pattern and value are mutually exclusive
+ Constraints must be unique by key
+ Types must be unique by the combination of code and profile
+ sliceName must be composed of proper tokens separated by "/"
+ default value and meaningWhenMissing are mutually exclusive
Elements defined in Ancestors: id, extension
... path Σ1..1stringPath of the element in the hierarchy of elements
... representation Σ0..*codexmlAttr | xmlText | typeAttr | cdaText | xhtml
PropertyRepresentation (Required)
... sliceName Σ0..1stringName for this particular element (in a set of slices)
... label Σ0..1stringName for element to display with or prompt for element
... code Σ0..*CodingCorresponding codes in terminologies
LOINC Codes (Example)
... slicing ΣI0..1ElementThis element is sliced - slices follow
+ If there are no discriminators, there must be a definition
.... discriminator Σ0..*ElementElement values that are used to distinguish the slices
..... type Σ1..1codevalue | exists | pattern | type | profile
DiscriminatorType (Required)
..... path Σ1..1stringPath to element value
.... description ΣI0..1stringText description of how slicing works (or not)
.... ordered Σ0..1booleanIf elements must be in same order as slices
.... rules Σ1..1codeclosed | open | openAtEnd
SlicingRules (Required)
... short Σ0..1stringConcise definition for space-constrained presentation
... definition Σ0..1markdownFull formal definition as narrative text
... comment Σ0..1markdownComments about the use of this element
... requirements Σ0..1markdownWhy this resource has been created
... alias Σ0..*stringOther names
... min ΣI0..1unsignedIntMinimum Cardinality
... max ΣI0..1stringMaximum Cardinality (a number or *)
+ Max SHALL be a number or "*"
... base Σ0..1ElementBase definition information for tools
.... path Σ1..1stringPath that identifies the base element
.... min Σ1..1unsignedIntMin cardinality of the base element
.... max Σ1..1stringMax cardinality of the base element
... contentReference ΣI0..1uriReference to definition of content for the element
... type ΣI0..*ElementData type and Profile for this element
+ Aggregation may only be specified if one of the allowed types for the element is a resource
.... code Σ1..1uriData type or Resource (reference to definition)
FHIRDefinedType (Extensible)
.... profile Σ0..1uriProfile (StructureDefinition) to apply (or IG)
.... targetProfile Σ0..1uriProfile (StructureDefinition) to apply to reference target (or IG)
.... aggregation ΣI0..*codecontained | referenced | bundled - how aggregated
AggregationMode (Required)
.... versioning Σ0..1codeeither | independent | specific
ReferenceVersionRules (Required)
... defaultValue[x] ΣI0..1*Specified value if missing from instance
... meaningWhenMissing ΣI0..1markdownImplicit meaning when this element is missing
... orderMeaning Σ0..1stringWhat the order of the elements means
... fixed[x] ΣI0..1*Value must be exactly this
... pattern[x] ΣI0..1*Value must have at least these property values
... example Σ0..*ElementExample value (as defined for type)
.... label Σ1..1stringDescribes the purpose of this example
.... value[x] Σ1..1*Value of Example (one of allowed types)
... minValue[x] Σ0..1Minimum Allowed Value (for some types)
.... minValueDatedate
.... minValueDateTimedateTime
.... minValueInstantinstant
.... minValueTimetime
.... minValueDecimaldecimal
.... minValueIntegerinteger
.... minValuePositiveIntpositiveInt
.... minValueUnsignedIntunsignedInt
.... minValueQuantityQuantity
... maxValue[x] Σ0..1Maximum Allowed Value (for some types)
.... maxValueDatedate
.... maxValueDateTimedateTime
.... maxValueInstantinstant
.... maxValueTimetime
.... maxValueDecimaldecimal
.... maxValueIntegerinteger
.... maxValuePositiveIntpositiveInt
.... maxValueUnsignedIntunsignedInt
.... maxValueQuantityQuantity
... maxLength Σ0..1integerMax length for strings
... condition Σ0..*idReference to invariant about presence
... constraint Σ0..*ElementCondition that must evaluate to true
.... key ΣI1..1idTarget of 'condition' reference above
.... requirements Σ0..1stringWhy this constraint is necessary or appropriate
.... severity Σ1..1codeerror | warning
ConstraintSeverity (Required)
.... human Σ1..1stringHuman description of constraint
.... expression Σ1..1stringFHIRPath expression of constraint
.... xpath Σ0..1stringXPath expression of constraint
.... source Σ0..1uriReference to original source of constraint
... mustSupport Σ0..1booleanIf the element must supported
... isModifier Σ0..1booleanIf this modifies the meaning of other elements
... isSummary Σ0..1booleanInclude when _summary = true?
... binding ΣI0..1ElementValueSet details if this is coded
+ ValueSet as a URI SHALL start with http:// or https:// or urn:
.... strength Σ1..1coderequired | extensible | preferred | example
BindingStrength (Required)
.... description ΣI0..1stringHuman explanation of the value set
.... valueSet[x] ΣI0..1Source of value set
..... valueSetUriuri
..... valueSetReferenceReference(ValueSet)
... mapping Σ0..*ElementMap element to another set of definitions
.... identity Σ1..1idReference to mapping declaration
.... language Σ0..1codeComputable language of mapping
MimeType (Required)
.... map Σ1..1stringDetails of the mapping
.... comment Σ0..1stringComments about the mapping or its use

doco Documentation for this format

UML Diagram (Legend)

Element💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนextension : Extension 0..*ElementDefinition💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpath : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrepresentation : code [0..*] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนPropertyRepresentation! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนsliceName : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนlabel : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcode : Coding [0..*] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนLOINC ?? 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนshort : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdefinition : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcomment : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrequirements : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนalias : string [0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmin : unsignedInt [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmax : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcontentReference : uri [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdefaultValue[x] : * [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmeaningWhenMissing : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนorderMeaning : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนfixed[x] : * [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpattern[x] : * [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนminValue[x] : Type [0..1] date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmaxValue[x] : Type [0..1] date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmaxLength : integer [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcondition : id [0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmustSupport : boolean [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนisModifier : boolean [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนisSummary : boolean [0..1]Slicing💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdescription : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนordered : boolean [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrules : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนSlicingRules! Discriminator💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนtype : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนDiscriminatorType! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpath : string [1..1]Base💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpath : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmin : unsignedInt [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmax : string [1..1]TypeRef💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcode : uri [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนFHIRDefinedType+ 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนprofile : uri [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนtargetProfile : uri [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนaggregation : code [0..*] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนAggregationMode! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนversioning : code [0..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนReferenceVersionRules! Example💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนlabel : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนvalue[x] : * [1..1]Constraint💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนkey : id [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrequirements : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนseverity : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนConstraintSeverity! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนhuman : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนexpression : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนxpath : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนsource : uri [0..1]ElementDefinitionBinding💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนstrength : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนBindingStrength! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdescription : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนvalueSet[x] : Type [0..1] uri|Reference(ValueSet) Mapping💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนidentity : id [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนlanguage : code [0..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนMimeType! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmap : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcomment : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdiscriminator[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนslicing[0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนbase[0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนtype[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนexample[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนconstraint[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนbinding[0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmapping[0..*]

XML Template

<[name] xmlns="http://hl7.org/fhir"> doco
 <!-- from Element: extension -->
 <path value="[string]"/><!-- 1..1 Path of the element in the hierarchy of elements -->
 <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <sliceName value="[string]"/><!-- 0..1 Name for this particular element (in a set of slices) -->
 <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element -->
 <code><!-- 0..* Coding Corresponding codes in terminologies --></code>
 <slicing>  <!-- 0..1 This element is sliced - slices follow -->
  <discriminator>  <!-- 0..* Element values that are used to distinguish the slices -->
   <type value="[code]"/><!-- 1..1 value | exists | pattern | type | profile -->
   <path value="[string]"/><!-- 1..1 Path to element value -->
  </discriminator>
  <description value="[string]"/><!-- ?? 0..1 Text description of how slicing works (or not) -->
  <ordered value="[boolean]"/><!-- 0..1 If elements must be in same order as slices -->
  <rules value="[code]"/><!-- 1..1 closed | open | openAtEnd -->
 </slicing>
 <short value="[string]"/><!-- 0..1 Concise definition for space-constrained presentation -->
 <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text -->
 <comment value="[markdown]"/><!-- 0..1 Comments about the use of this element -->
 <requirements value="[markdown]"/><!-- 0..1 Why this resource has been created -->
 <alias value="[string]"/><!-- 0..* Other names -->
 <min value="[unsignedInt]"/><!-- ?? 0..1 Minimum Cardinality -->
 <max value="[string]"/><!-- ?? 0..1 Maximum Cardinality (a number or *) -->
 <base>  <!-- 0..1 Base definition information for tools -->
  <path value="[string]"/><!-- 1..1 Path that identifies the base element -->
  <min value="[unsignedInt]"/><!-- 1..1 Min cardinality of the base element -->
  <max value="[string]"/><!-- 1..1 Max cardinality of the base element -->
 </base>
 <contentReference value="[uri]"/><!-- ?? 0..1 Reference to definition of content for the element -->
 <type>  <!-- ?? 0..* Data type and Profile for this element -->
  <code value="[uri]"/><!-- 1..1 Data type or Resource (reference to definition) -->
  <profile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply (or IG) -->
  <targetProfile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply to reference target (or IG) -->
  <aggregation value="[code]"/><!-- ?? 0..* contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- 0..1 either | independent | specific -->
 </type>
 <defaultValue[x]><!-- ?? 0..1 * Specified value if missing from instance --></defaultValue[x]>
 <meaningWhenMissing value="[markdown]"/><!-- ?? 0..1 Implicit meaning when this element is missing -->
 <orderMeaning value="[string]"/><!-- 0..1 What the order of the elements means -->
 <fixed[x]><!-- ?? 0..1 * Value must be exactly this --></fixed[x]>
 <pattern[x]><!-- ?? 0..1 * Value must have at least these property values --></pattern[x]>
 <example>  <!-- 0..* Example value (as defined for type) -->
  <label value="[string]"/><!-- 1..1 Describes the purpose of this example -->
  <value[x]><!-- 1..1 * Value of Example (one of allowed types) --></value[x]>
 </example>
 <minValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt|
   unsignedInt|Quantity Minimum Allowed Value (for some types) --></minValue[x]>
 <maxValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt|
   unsignedInt|Quantity Maximum Allowed Value (for some types) --></maxValue[x]>
 <maxLength value="[integer]"/><!-- 0..1 Max length for strings -->
 <condition value="[id]"/><!-- 0..* Reference to invariant about presence -->
 <constraint>  <!-- 0..* Condition that must evaluate to true -->
  <key value="[id]"/><!-- ?? 1..1 Target of 'condition' reference above -->
  <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate -->
  <severity value="[code]"/><!-- 1..1 error | warning -->
  <human value="[string]"/><!-- 1..1 Human description of constraint -->
  <expression value="[string]"/><!-- 1..1 FHIRPath expression of constraint -->
  <xpath value="[string]"/><!-- 0..1 XPath expression of constraint -->
  <source value="[uri]"/><!-- 0..1 Reference to original source of constraint -->
 </constraint>
 <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported -->
 <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements -->
 <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? -->
 <binding>  <!-- ?? 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- ?? 0..1 Human explanation of the value set -->
  <valueSet[x]><!-- ?? 0..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]>
 </binding>
 <mapping>  <!-- 0..* Map element to another set of definitions -->
  <identity value="[id]"/><!-- 1..1 Reference to mapping declaration -->
  <language value="[code]"/><!-- 0..1 Computable language of mapping  -->
  <map value="[string]"/><!-- 1..1 Details of the mapping -->
  <comment value="[string]"/><!-- 0..1 Comments about the mapping or its use -->
 </mapping>
</[name]>

JSON Template


{doco
  // from Element: extension
  "path" : "<string>", // R!  Path of the element in the hierarchy of elements
  "representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml
  "sliceName" : "<string>", // Name for this particular element (in a set of slices)
  "label" : "<string>", // Name for element to display with or prompt for element
  "code" : [{ Coding }], // Corresponding codes in terminologies
  "slicing" : { // This element is sliced - slices follow
    "discriminator" : [{ // Element values that are used to distinguish the slices
      "type" : "<code>", // R!  value | exists | pattern | type | profile
      "path" : "<string>" // R!  Path to element value
    }],
    "description" : "<string>", // C? Text description of how slicing works (or not)
    "ordered" : <boolean>, // If elements must be in same order as slices
    "rules" : "<code>" // R!  closed | open | openAtEnd
  },
  "short" : "<string>", // Concise definition for space-constrained presentation
  "definition" : "<markdown>", // Full formal definition as narrative text
  "comment" : "<markdown>", // Comments about the use of this element
  "requirements" : "<markdown>", // Why this resource has been created
  "alias" : ["<string>"], // Other names
  "min" : "<unsignedInt>", // C? Minimum Cardinality
  "max" : "<string>", // C? Maximum Cardinality (a number or *)
  "base" : { // Base definition information for tools
    "path" : "<string>", // R!  Path that identifies the base element
    "min" : "<unsignedInt>", // R!  Min cardinality of the base element
    "max" : "<string>" // R!  Max cardinality of the base element
  },
  "contentReference" : "<uri>", // C? Reference to definition of content for the element
  "type" : [{ // C? Data type and Profile for this element
    "code" : "<uri>", // R!  Data type or Resource (reference to definition)
    "profile" : "<uri>", // Profile (StructureDefinition) to apply (or IG)
    "targetProfile" : "<uri>", // Profile (StructureDefinition) to apply to reference target (or IG)
    "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
    "versioning" : "<code>" // either | independent | specific
  }],
  // defaultValue[x]: Specified value if missing from instance. One of these 23:
  "defaultValueInteger" : <integer>,
  "defaultValueDecimal" : <decimal>,
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDate" : "<date>",
  "defaultValueInstant" : "<instant>",
  "defaultValueString" : "<string>",
  "defaultValueUri" : "<uri>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCode" : "<code>",
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueCoding" : { Coding },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueAttachment" : { Attachment },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValuePeriod" : { Period },
  "defaultValueRatio" : { Ratio },
  "defaultValueHumanName" : { HumanName },
  "defaultValueAddress" : { Address },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueSchedule" : { Schedule },
  "defaultValueReference" : { Reference },
  "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing
  "orderMeaning" : "<string>", // What the order of the elements means
  // fixed[x]: Value must be exactly this. One of these 23:
  "fixedInteger" : <integer>,
  "fixedDecimal" : <decimal>,
  "fixedDateTime" : "<dateTime>",
  "fixedDate" : "<date>",
  "fixedInstant" : "<instant>",
  "fixedString" : "<string>",
  "fixedUri" : "<uri>",
  "fixedBoolean" : <boolean>,
  "fixedCode" : "<code>",
  "fixedBase64Binary" : "<base64Binary>",
  "fixedCoding" : { Coding },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedAttachment" : { Attachment },
  "fixedIdentifier" : { Identifier },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedPeriod" : { Period },
  "fixedRatio" : { Ratio },
  "fixedHumanName" : { HumanName },
  "fixedAddress" : { Address },
  "fixedContactPoint" : { ContactPoint },
  "fixedSchedule" : { Schedule },
  "fixedReference" : { Reference },
  // pattern[x]: Value must have at least these property values. One of these 23:
  "patternInteger" : <integer>,
  "patternDecimal" : <decimal>,
  "patternDateTime" : "<dateTime>",
  "patternDate" : "<date>",
  "patternInstant" : "<instant>",
  "patternString" : "<string>",
  "patternUri" : "<uri>",
  "patternBoolean" : <boolean>,
  "patternCode" : "<code>",
  "patternBase64Binary" : "<base64Binary>",
  "patternCoding" : { Coding },
  "patternCodeableConcept" : { CodeableConcept },
  "patternAttachment" : { Attachment },
  "patternIdentifier" : { Identifier },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternPeriod" : { Period },
  "patternRatio" : { Ratio },
  "patternHumanName" : { HumanName },
  "patternAddress" : { Address },
  "patternContactPoint" : { ContactPoint },
  "patternSchedule" : { Schedule },
  "patternReference" : { Reference },
  "example" : [{ // Example value (as defined for type)
    "label" : "<string>", // R!  Describes the purpose of this example
    // value[x]: Value of Example (one of allowed types). One of these 23:
    "valueInteger" : <integer>
    "valueDecimal" : <decimal>
    "valueDateTime" : "<dateTime>"
    "valueDate" : "<date>"
    "valueInstant" : "<instant>"
    "valueString" : "<string>"
    "valueUri" : "<uri>"
    "valueBoolean" : <boolean>
    "valueCode" : "<code>"
    "valueBase64Binary" : "<base64Binary>"
    "valueCoding" : { Coding }
    "valueCodeableConcept" : { CodeableConcept }
    "valueAttachment" : { Attachment }
    "valueIdentifier" : { Identifier }
    "valueQuantity" : { Quantity }
    "valueRange" : { Range }
    "valuePeriod" : { Period }
    "valueRatio" : { Ratio }
    "valueHumanName" : { HumanName }
    "valueAddress" : { Address }
    "valueContactPoint" : { ContactPoint }
    "valueSchedule" : { Schedule }
    "valueReference" : { Reference }
  }],
  // minValue[x]: Minimum Allowed Value (for some types). One of these 9:
  "minValueDate" : "<date>",
  "minValueDateTime" : "<dateTime>",
  "minValueInstant" : "<instant>",
  "minValueTime" : "<time>",
  "minValueDecimal" : <decimal>,
  "minValueInteger" : <integer>,
  "minValuePositiveInt" : "<positiveInt>",
  "minValueUnsignedInt" : "<unsignedInt>",
  "minValueQuantity" : { Quantity },
  // maxValue[x]: Maximum Allowed Value (for some types). One of these 9:
  "maxValueDate" : "<date>",
  "maxValueDateTime" : "<dateTime>",
  "maxValueInstant" : "<instant>",
  "maxValueTime" : "<time>",
  "maxValueDecimal" : <decimal>,
  "maxValueInteger" : <integer>,
  "maxValuePositiveInt" : "<positiveInt>",
  "maxValueUnsignedInt" : "<unsignedInt>",
  "maxValueQuantity" : { Quantity },
  "maxLength" : <integer>, // Max length for strings
  "condition" : ["<id>"], // Reference to invariant about presence
  "constraint" : [{ // Condition that must evaluate to true
    "key" : "<id>", // C? R!  Target of 'condition' reference above
    "requirements" : "<string>", // Why this constraint is necessary or appropriate
    "severity" : "<code>", // R!  error | warning
    "human" : "<string>", // R!  Human description of constraint
    "expression" : "<string>", // R!  FHIRPath expression of constraint
    "xpath" : "<string>", // XPath expression of constraint
    "source" : "<uri>" // Reference to original source of constraint
  }],
  "mustSupport" : <boolean>, // If the element must supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isSummary" : <boolean>, // Include when _summary = true?
  "binding" : { // C? ValueSet details if this is coded
    "strength" : "<code>", // R!  required | extensible | preferred | example
    "description" : "<string>", // Human explanation of the value set
    // valueSet[x]: Source of value set. One of these 2:
    "valueSetUri" : "<uri>"
    "valueSetReference" : { Reference(ValueSet) }
  },
  "mapping" : [{ // Map element to another set of definitions
    "identity" : "<id>", // R!  Reference to mapping declaration
    "language" : "<code>", // Computable language of mapping 
    "map" : "<string>", // R!  Details of the mapping
    "comment" : "<string>" // Comments about the mapping or its use
  }]
}

Turtle Template


@prefix fhir: <http://hl7.org/fhir/> .

[
 # from Element: Element.extension
  fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the hierarchy of elements
  fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml
  fhir:ElementDefinition.sliceName [ string ]; # 0..1 Name for this particular element (in a set of slices)
  fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element
  fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Corresponding codes in terminologies
  fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow
    fhir:ElementDefinition.slicing.discriminator [ # 0..* Element values that are used to distinguish the slices
      fhir:ElementDefinition.slicing.discriminator.type [ code ]; # 1..1 value | exists | pattern | type | profile
      fhir:ElementDefinition.slicing.discriminator.path [ string ]; # 1..1 Path to element value
    ], ...;
    fhir:ElementDefinition.slicing.description [ string ]; # 0..1 Text description of how slicing works (or not)
    fhir:ElementDefinition.slicing.ordered [ boolean ]; # 0..1 If elements must be in same order as slices
    fhir:ElementDefinition.slicing.rules [ code ]; # 1..1 closed | open | openAtEnd
  ];
  fhir:ElementDefinition.short [ string ]; # 0..1 Concise definition for space-constrained presentation
  fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text
  fhir:ElementDefinition.comment [ markdown ]; # 0..1 Comments about the use of this element
  fhir:ElementDefinition.requirements [ markdown ]; # 0..1 Why this resource has been created
  fhir:ElementDefinition.alias [ string ], ... ; # 0..* Other names
  fhir:ElementDefinition.min [ unsignedInt ]; # 0..1 Minimum Cardinality
  fhir:ElementDefinition.max [ string ]; # 0..1 Maximum Cardinality (a number or *)
  fhir:ElementDefinition.base [ # 0..1 Base definition information for tools
    fhir:ElementDefinition.base.path [ string ]; # 1..1 Path that identifies the base element
    fhir:ElementDefinition.base.min [ unsignedInt ]; # 1..1 Min cardinality of the base element
    fhir:ElementDefinition.base.max [ string ]; # 1..1 Max cardinality of the base element
  ];
  fhir:ElementDefinition.contentReference [ uri ]; # 0..1 Reference to definition of content for the element
  fhir:ElementDefinition.type [ # 0..* Data type and Profile for this element
    fhir:ElementDefinition.type.code [ uri ]; # 1..1 Data type or Resource (reference to definition)
    fhir:ElementDefinition.type.profile [ uri ]; # 0..1 Profile (StructureDefinition) to apply (or IG)
    fhir:ElementDefinition.type.targetProfile [ uri ]; # 0..1 Profile (StructureDefinition) to apply to reference target (or IG)
    fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated
    fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific
  ], ...;
  # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 38
    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCode [ code ]
    fhir:ElementDefinition.defaultValueDate [ date ]
    fhir:ElementDefinition.defaultValueDateTime [ dateTime ]
    fhir:ElementDefinition.defaultValueDecimal [ decimal ]
    fhir:ElementDefinition.defaultValueId [ id ]
    fhir:ElementDefinition.defaultValueInstant [ instant ]
    fhir:ElementDefinition.defaultValueInteger [ integer ]
    fhir:ElementDefinition.defaultValueMarkdown [ markdown ]
    fhir:ElementDefinition.defaultValueOid [ oid ]
    fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.defaultValueString [ string ]
    fhir:ElementDefinition.defaultValueTime [ time ]
    fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.defaultValueUri [ uri ]
    fhir:ElementDefinition.defaultValueAddress [ Address ]
    fhir:ElementDefinition.defaultValueAge [ Age ]
    fhir:ElementDefinition.defaultValueAnnotation [ Annotation ]
    fhir:ElementDefinition.defaultValueAttachment [ Attachment ]
    fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.defaultValueCoding [ Coding ]
    fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ]
    fhir:ElementDefinition.defaultValueCount [ Count ]
    fhir:ElementDefinition.defaultValueDistance [ Distance ]
    fhir:ElementDefinition.defaultValueDuration [ Duration ]
    fhir:ElementDefinition.defaultValueHumanName [ HumanName ]
    fhir:ElementDefinition.defaultValueIdentifier [ Identifier ]
    fhir:ElementDefinition.defaultValueMoney [ Money ]
    fhir:ElementDefinition.defaultValuePeriod [ Period ]
    fhir:ElementDefinition.defaultValueQuantity [ Quantity ]
    fhir:ElementDefinition.defaultValueRange [ Range ]
    fhir:ElementDefinition.defaultValueRatio [ Ratio ]
    fhir:ElementDefinition.defaultValueReference [ Reference ]
    fhir:ElementDefinition.defaultValueSampledData [ SampledData ]
    fhir:ElementDefinition.defaultValueSignature [ Signature ]
    fhir:ElementDefinition.defaultValueTiming [ Timing ]
    fhir:ElementDefinition.defaultValueMeta [ Meta ]
  fhir:ElementDefinition.meaningWhenMissing [ markdown ]; # 0..1 Implicit meaning when this element is missing
  fhir:ElementDefinition.orderMeaning [ string ]; # 0..1 What the order of the elements means
  # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 38
    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCode [ code ]
    fhir:ElementDefinition.fixedDate [ date ]
    fhir:ElementDefinition.fixedDateTime [ dateTime ]
    fhir:ElementDefinition.fixedDecimal [ decimal ]
    fhir:ElementDefinition.fixedId [ id ]
    fhir:ElementDefinition.fixedInstant [ instant ]
    fhir:ElementDefinition.fixedInteger [ integer ]
    fhir:ElementDefinition.fixedMarkdown [ markdown ]
    fhir:ElementDefinition.fixedOid [ oid ]
    fhir:ElementDefinition.fixedPositiveInt [ positiveInt ]
    fhir:ElementDefinition.fixedString [ string ]
    fhir:ElementDefinition.fixedTime [ time ]
    fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.fixedUri [ uri ]
    fhir:ElementDefinition.fixedAddress [ Address ]
    fhir:ElementDefinition.fixedAge [ Age ]
    fhir:ElementDefinition.fixedAnnotation [ Annotation ]
    fhir:ElementDefinition.fixedAttachment [ Attachment ]
    fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.fixedCoding [ Coding ]
    fhir:ElementDefinition.fixedContactPoint [ ContactPoint ]
    fhir:ElementDefinition.fixedCount [ Count ]
    fhir:ElementDefinition.fixedDistance [ Distance ]
    fhir:ElementDefinition.fixedDuration [ Duration ]
    fhir:ElementDefinition.fixedHumanName [ HumanName ]
    fhir:ElementDefinition.fixedIdentifier [ Identifier ]
    fhir:ElementDefinition.fixedMoney [ Money ]
    fhir:ElementDefinition.fixedPeriod [ Period ]
    fhir:ElementDefinition.fixedQuantity [ Quantity ]
    fhir:ElementDefinition.fixedRange [ Range ]
    fhir:ElementDefinition.fixedRatio [ Ratio ]
    fhir:ElementDefinition.fixedReference [ Reference ]
    fhir:ElementDefinition.fixedSampledData [ SampledData ]
    fhir:ElementDefinition.fixedSignature [ Signature ]
    fhir:ElementDefinition.fixedTiming [ Timing ]
    fhir:ElementDefinition.fixedMeta [ Meta ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 38
    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCode [ code ]
    fhir:ElementDefinition.patternDate [ date ]
    fhir:ElementDefinition.patternDateTime [ dateTime ]
    fhir:ElementDefinition.patternDecimal [ decimal ]
    fhir:ElementDefinition.patternId [ id ]
    fhir:ElementDefinition.patternInstant [ instant ]
    fhir:ElementDefinition.patternInteger [ integer ]
    fhir:ElementDefinition.patternMarkdown [ markdown ]
    fhir:ElementDefinition.patternOid [ oid ]
    fhir:ElementDefinition.patternPositiveInt [ positiveInt ]
    fhir:ElementDefinition.patternString [ string ]
    fhir:ElementDefinition.patternTime [ time ]
    fhir:ElementDefinition.patternUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.patternUri [ uri ]
    fhir:ElementDefinition.patternAddress [ Address ]
    fhir:ElementDefinition.patternAge [ Age ]
    fhir:ElementDefinition.patternAnnotation [ Annotation ]
    fhir:ElementDefinition.patternAttachment [ Attachment ]
    fhir:ElementDefinition.patternCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.patternCoding [ Coding ]
    fhir:ElementDefinition.patternContactPoint [ ContactPoint ]
    fhir:ElementDefinition.patternCount [ Count ]
    fhir:ElementDefinition.patternDistance [ Distance ]
    fhir:ElementDefinition.patternDuration [ Duration ]
    fhir:ElementDefinition.patternHumanName [ HumanName ]
    fhir:ElementDefinition.patternIdentifier [ Identifier ]
    fhir:ElementDefinition.patternMoney [ Money ]
    fhir:ElementDefinition.patternPeriod [ Period ]
    fhir:ElementDefinition.patternQuantity [ Quantity ]
    fhir:ElementDefinition.patternRange [ Range ]
    fhir:ElementDefinition.patternRatio [ Ratio ]
    fhir:ElementDefinition.patternReference [ Reference ]
    fhir:ElementDefinition.patternSampledData [ SampledData ]
    fhir:ElementDefinition.patternSignature [ Signature ]
    fhir:ElementDefinition.patternTiming [ Timing ]
    fhir:ElementDefinition.patternMeta [ Meta ]
  fhir:ElementDefinition.example [ # 0..* Example value (as defined for type)
    fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example
    # ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 38
      fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ]
      fhir:ElementDefinition.example.valueBoolean [ boolean ]
      fhir:ElementDefinition.example.valueCode [ code ]
      fhir:ElementDefinition.example.valueDate [ date ]
      fhir:ElementDefinition.example.valueDateTime [ dateTime ]
      fhir:ElementDefinition.example.valueDecimal [ decimal ]
      fhir:ElementDefinition.example.valueId [ id ]
      fhir:ElementDefinition.example.valueInstant [ instant ]
      fhir:ElementDefinition.example.valueInteger [ integer ]
      fhir:ElementDefinition.example.valueMarkdown [ markdown ]
      fhir:ElementDefinition.example.valueOid [ oid ]
      fhir:ElementDefinition.example.valuePositiveInt [ positiveInt ]
      fhir:ElementDefinition.example.valueString [ string ]
      fhir:ElementDefinition.example.valueTime [ time ]
      fhir:ElementDefinition.example.valueUnsignedInt [ unsignedInt ]
      fhir:ElementDefinition.example.valueUri [ uri ]
      fhir:ElementDefinition.example.valueAddress [ Address ]
      fhir:ElementDefinition.example.valueAge [ Age ]
      fhir:ElementDefinition.example.valueAnnotation [ Annotation ]
      fhir:ElementDefinition.example.valueAttachment [ Attachment ]
      fhir:ElementDefinition.example.valueCodeableConcept [ CodeableConcept ]
      fhir:ElementDefinition.example.valueCoding [ Coding ]
      fhir:ElementDefinition.example.valueContactPoint [ ContactPoint ]
      fhir:ElementDefinition.example.valueCount [ Count ]
      fhir:ElementDefinition.example.valueDistance [ Distance ]
      fhir:ElementDefinition.example.valueDuration [ Duration ]
      fhir:ElementDefinition.example.valueHumanName [ HumanName ]
      fhir:ElementDefinition.example.valueIdentifier [ Identifier ]
      fhir:ElementDefinition.example.valueMoney [ Money ]
      fhir:ElementDefinition.example.valuePeriod [ Period ]
      fhir:ElementDefinition.example.valueQuantity [ Quantity ]
      fhir:ElementDefinition.example.valueRange [ Range ]
      fhir:ElementDefinition.example.valueRatio [ Ratio ]
      fhir:ElementDefinition.example.valueReference [ Reference ]
      fhir:ElementDefinition.example.valueSampledData [ SampledData ]
      fhir:ElementDefinition.example.valueSignature [ Signature ]
      fhir:ElementDefinition.example.valueTiming [ Timing ]
      fhir:ElementDefinition.example.valueMeta [ Meta ]
  ], ...;
  # ElementDefinition.minValue[x] : 0..1 Minimum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.minValueDate [ date ]
    fhir:ElementDefinition.minValueDateTime [ dateTime ]
    fhir:ElementDefinition.minValueInstant [ instant ]
    fhir:ElementDefinition.minValueTime [ time ]
    fhir:ElementDefinition.minValueDecimal [ decimal ]
    fhir:ElementDefinition.minValueInteger [ integer ]
    fhir:ElementDefinition.minValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.minValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.minValueQuantity [ Quantity ]
  # ElementDefinition.maxValue[x] : 0..1 Maximum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.maxValueDate [ date ]
    fhir:ElementDefinition.maxValueDateTime [ dateTime ]
    fhir:ElementDefinition.maxValueInstant [ instant ]
    fhir:ElementDefinition.maxValueTime [ time ]
    fhir:ElementDefinition.maxValueDecimal [ decimal ]
    fhir:ElementDefinition.maxValueInteger [ integer ]
    fhir:ElementDefinition.maxValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.maxValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.maxValueQuantity [ Quantity ]
  fhir:ElementDefinition.maxLength [ integer ]; # 0..1 Max length for strings
  fhir:ElementDefinition.condition [ id ], ... ; # 0..* Reference to invariant about presence
  fhir:ElementDefinition.constraint [ # 0..* Condition that must evaluate to true
    fhir:ElementDefinition.constraint.key [ id ]; # 1..1 Target of 'condition' reference above
    fhir:ElementDefinition.constraint.requirements [ string ]; # 0..1 Why this constraint is necessary or appropriate
    fhir:ElementDefinition.constraint.severity [ code ]; # 1..1 error | warning
    fhir:ElementDefinition.constraint.human [ string ]; # 1..1 Human description of constraint
    fhir:ElementDefinition.constraint.expression [ string ]; # 1..1 FHIRPath expression of constraint
    fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraint
    fhir:ElementDefinition.constraint.source [ uri ]; # 0..1 Reference to original source of constraint
  ], ...;
  fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must supported
  fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements
  fhir:ElementDefinition.isSummary [ boolean ]; # 0..1 Include when _summary = true?
  fhir:ElementDefinition.binding [ # 0..1 ValueSet details if this is coded
    fhir:ElementDefinition.binding.strength [ code ]; # 1..1 required | extensible | preferred | example
    fhir:ElementDefinition.binding.description [ string ]; # 0..1 Human explanation of the value set
    # ElementDefinition.binding.valueSet[x] : 0..1 Source of value set. One of these 2
      fhir:ElementDefinition.binding.valueSetUri [ uri ]
      fhir:ElementDefinition.binding.valueSetReference [ Reference(ValueSet) ]
  ];
  fhir:ElementDefinition.mapping [ # 0..* Map element to another set of definitions
    fhir:ElementDefinition.mapping.identity [ id ]; # 1..1 Reference to mapping declaration
    fhir:ElementDefinition.mapping.language [ code ]; # 0..1 Computable language of mapping
    fhir:ElementDefinition.mapping.map [ string ]; # 1..1 Details of the mapping
    fhir:ElementDefinition.mapping.comment [ string ]; # 0..1 Comments about the mapping or its use
  ], ...;
]

Changes since DSTU2


ElementDefinition
ElementDefinition.representation
  • Add Codes xmlText, typeAttr, cdaText, xhtml
ElementDefinition.sliceName
  • Renamed from name to sliceName
ElementDefinition.slicing.discriminator
  • Type changed from string to Element
ElementDefinition.slicing.discriminator.type
  • Added Element
ElementDefinition.slicing.discriminator.path
  • Added Element
ElementDefinition.comment
  • Renamed from comments to comment
ElementDefinition.min
  • Type changed from integer to unsignedInt
ElementDefinition.base.min
  • Type changed from integer to unsignedInt
ElementDefinition.contentReference
  • Renamed from nameReference to contentReference
  • Type changed from string to uri
ElementDefinition.type.code
  • Type changed from code to uri
  • Change binding strength from required to extensible
ElementDefinition.type.profile
  • Max Cardinality changed from * to 1
ElementDefinition.type.targetProfile
  • Added Element
ElementDefinition.type.versioning
  • Added Element
ElementDefinition.defaultValue[x]
  • Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.orderMeaning
  • Added Element
ElementDefinition.fixed[x]
  • Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.pattern[x]
  • Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.example
  • Renamed from example[x] to example
  • Max Cardinality changed from 1 to *
  • Remove boolean, Remove integer, Remove decimal, Remove base64Binary, Remove instant, Remove string, Remove uri, Remove date, Remove dateTime, Remove time, Remove code, Remove oid, Remove id, Remove unsignedInt, Remove positiveInt, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Quantity, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.example.label
  • Added Element
ElementDefinition.example.value[x]
  • Added Element
ElementDefinition.minValue[x]
  • Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.maxValue[x]
  • Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.constraint.expression
  • Added Element
ElementDefinition.constraint.xpath
  • Min Cardinality changed from 1 to 0
ElementDefinition.constraint.source
  • Added Element
ElementDefinition.mapping.comment
  • Added Element

See the Full Difference for further information

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition ΣIElementDefinition of an element in a resource or extension
+ Min <= Max
+ if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
+ Pattern may only be specified if there is one type
+ Fixed value may only be specified if there is one type
+ Binding can only be present for coded elements, string, and uri
+ Pattern and value are mutually exclusive
+ Constraints must be unique by key
+ Types must be unique by the combination of code and profile
+ sliceName must be composed of proper tokens separated by "/"
+ default value and meaningWhenMissing are mutually exclusive
Elements defined in Ancestors: id, extension
... path Σ1..1stringPath of the element in the hierarchy of elements
... representation Σ0..*codexmlAttr | xmlText | typeAttr | cdaText | xhtml
PropertyRepresentation (Required)
... sliceName Σ0..1stringName for this particular element (in a set of slices)
... label Σ0..1stringName for element to display with or prompt for element
... code Σ0..*CodingCorresponding codes in terminologies
LOINC Codes (Example)
... slicing ΣI0..1ElementThis element is sliced - slices follow
+ If there are no discriminators, there must be a definition
.... discriminator Σ0..*ElementElement values that are used to distinguish the slices
..... type Σ1..1codevalue | exists | pattern | type | profile
DiscriminatorType (Required)
..... path Σ1..1stringPath to element value
.... description ΣI0..1stringText description of how slicing works (or not)
.... ordered Σ0..1booleanIf elements must be in same order as slices
.... rules Σ1..1codeclosed | open | openAtEnd
SlicingRules (Required)
... short Σ0..1stringConcise definition for space-constrained presentation
... definition Σ0..1markdownFull formal definition as narrative text
... comment Σ0..1markdownComments about the use of this element
... requirements Σ0..1markdownWhy this resource has been created
... alias Σ0..*stringOther names
... min ΣI0..1unsignedIntMinimum Cardinality
... max ΣI0..1stringMaximum Cardinality (a number or *)
+ Max SHALL be a number or "*"
... base Σ0..1ElementBase definition information for tools
.... path Σ1..1stringPath that identifies the base element
.... min Σ1..1unsignedIntMin cardinality of the base element
.... max Σ1..1stringMax cardinality of the base element
... contentReference ΣI0..1uriReference to definition of content for the element
... type ΣI0..*ElementData type and Profile for this element
+ Aggregation may only be specified if one of the allowed types for the element is a resource
.... code Σ1..1uriData type or Resource (reference to definition)
FHIRDefinedType (Extensible)
.... profile Σ0..1uriProfile (StructureDefinition) to apply (or IG)
.... targetProfile Σ0..1uriProfile (StructureDefinition) to apply to reference target (or IG)
.... aggregation ΣI0..*codecontained | referenced | bundled - how aggregated
AggregationMode (Required)
.... versioning Σ0..1codeeither | independent | specific
ReferenceVersionRules (Required)
... defaultValue[x] ΣI0..1*Specified value if missing from instance
... meaningWhenMissing ΣI0..1markdownImplicit meaning when this element is missing
... orderMeaning Σ0..1stringWhat the order of the elements means
... fixed[x] ΣI0..1*Value must be exactly this
... pattern[x] ΣI0..1*Value must have at least these property values
... example Σ0..*ElementExample value (as defined for type)
.... label Σ1..1stringDescribes the purpose of this example
.... value[x] Σ1..1*Value of Example (one of allowed types)
... minValue[x] Σ0..1Minimum Allowed Value (for some types)
.... minValueDatedate
.... minValueDateTimedateTime
.... minValueInstantinstant
.... minValueTimetime
.... minValueDecimaldecimal
.... minValueIntegerinteger
.... minValuePositiveIntpositiveInt
.... minValueUnsignedIntunsignedInt
.... minValueQuantityQuantity
... maxValue[x] Σ0..1Maximum Allowed Value (for some types)
.... maxValueDatedate
.... maxValueDateTimedateTime
.... maxValueInstantinstant
.... maxValueTimetime
.... maxValueDecimaldecimal
.... maxValueIntegerinteger
.... maxValuePositiveIntpositiveInt
.... maxValueUnsignedIntunsignedInt
.... maxValueQuantityQuantity
... maxLength Σ0..1integerMax length for strings
... condition Σ0..*idReference to invariant about presence
... constraint Σ0..*ElementCondition that must evaluate to true
.... key ΣI1..1idTarget of 'condition' reference above
.... requirements Σ0..1stringWhy this constraint is necessary or appropriate
.... severity Σ1..1codeerror | warning
ConstraintSeverity (Required)
.... human Σ1..1stringHuman description of constraint
.... expression Σ1..1stringFHIRPath expression of constraint
.... xpath Σ0..1stringXPath expression of constraint
.... source Σ0..1uriReference to original source of constraint
... mustSupport Σ0..1booleanIf the element must supported
... isModifier Σ0..1booleanIf this modifies the meaning of other elements
... isSummary Σ0..1booleanInclude when _summary = true?
... binding ΣI0..1ElementValueSet details if this is coded
+ ValueSet as a URI SHALL start with http:// or https:// or urn:
.... strength Σ1..1coderequired | extensible | preferred | example
BindingStrength (Required)
.... description ΣI0..1stringHuman explanation of the value set
.... valueSet[x] ΣI0..1Source of value set
..... valueSetUriuri
..... valueSetReferenceReference(ValueSet)
... mapping Σ0..*ElementMap element to another set of definitions
.... identity Σ1..1idReference to mapping declaration
.... language Σ0..1codeComputable language of mapping
MimeType (Required)
.... map Σ1..1stringDetails of the mapping
.... comment Σ0..1stringComments about the mapping or its use

doco Documentation for this format

UML Diagram (Legend)

Element💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนextension : Extension 0..*ElementDefinition💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpath : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrepresentation : code [0..*] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนPropertyRepresentation! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนsliceName : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนlabel : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcode : Coding [0..*] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนLOINC ?? 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนshort : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdefinition : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcomment : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrequirements : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนalias : string [0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmin : unsignedInt [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmax : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcontentReference : uri [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdefaultValue[x] : * [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmeaningWhenMissing : markdown [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนorderMeaning : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนfixed[x] : * [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpattern[x] : * [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนminValue[x] : Type [0..1] date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmaxValue[x] : Type [0..1] date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmaxLength : integer [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcondition : id [0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmustSupport : boolean [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนisModifier : boolean [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนisSummary : boolean [0..1]Slicing💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdescription : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนordered : boolean [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrules : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนSlicingRules! Discriminator💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนtype : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนDiscriminatorType! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpath : string [1..1]Base💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนpath : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmin : unsignedInt [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmax : string [1..1]TypeRef💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcode : uri [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนFHIRDefinedType+ 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนprofile : uri [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนtargetProfile : uri [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนaggregation : code [0..*] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนAggregationMode! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนversioning : code [0..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนReferenceVersionRules! Example💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนlabel : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนvalue[x] : * [1..1]Constraint💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนkey : id [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนrequirements : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนseverity : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนConstraintSeverity! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนhuman : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนexpression : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนxpath : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนsource : uri [0..1]ElementDefinitionBinding💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนstrength : code [1..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนBindingStrength! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdescription : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนvalueSet[x] : Type [0..1] uri|Reference(ValueSet) Mapping💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนidentity : id [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนlanguage : code [0..1] 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนMimeType! 💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmap : string [1..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนcomment : string [0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนdiscriminator[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนslicing[0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนbase[0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนtype[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนexample[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนconstraint[0..*]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนbinding[0..1]💬 ชาวเน็ตแห่แชร์: fhir/STU/elementdefinition.html - ประเด็นร้อนmapping[0..*]

XML Template

<[name] xmlns="http://hl7.org/fhir"> doco
 <!-- from Element: extension -->
 <path value="[string]"/><!-- 1..1 Path of the element in the hierarchy of elements -->
 <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <sliceName value="[string]"/><!-- 0..1 Name for this particular element (in a set of slices) -->
 <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element -->
 <code><!-- 0..* Coding Corresponding codes in terminologies --></code>
 <slicing>  <!-- 0..1 This element is sliced - slices follow -->
  <discriminator>  <!-- 0..* Element values that are used to distinguish the slices -->
   <type value="[code]"/><!-- 1..1 value | exists | pattern | type | profile -->
   <path value="[string]"/><!-- 1..1 Path to element value -->
  </discriminator>
  <description value="[string]"/><!-- ?? 0..1 Text description of how slicing works (or not) -->
  <ordered value="[boolean]"/><!-- 0..1 If elements must be in same order as slices -->
  <rules value="[code]"/><!-- 1..1 closed | open | openAtEnd -->
 </slicing>
 <short value="[string]"/><!-- 0..1 Concise definition for space-constrained presentation -->
 <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text -->
 <comment value="[markdown]"/><!-- 0..1 Comments about the use of this element -->
 <requirements value="[markdown]"/><!-- 0..1 Why this resource has been created -->
 <alias value="[string]"/><!-- 0..* Other names -->
 <min value="[unsignedInt]"/><!-- ?? 0..1 Minimum Cardinality -->
 <max value="[string]"/><!-- ?? 0..1 Maximum Cardinality (a number or *) -->
 <base>  <!-- 0..1 Base definition information for tools -->
  <path value="[string]"/><!-- 1..1 Path that identifies the base element -->
  <min value="[unsignedInt]"/><!-- 1..1 Min cardinality of the base element -->
  <max value="[string]"/><!-- 1..1 Max cardinality of the base element -->
 </base>
 <contentReference value="[uri]"/><!-- ?? 0..1 Reference to definition of content for the element -->
 <type>  <!-- ?? 0..* Data type and Profile for this element -->
  <code value="[uri]"/><!-- 1..1 Data type or Resource (reference to definition) -->
  <profile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply (or IG) -->
  <targetProfile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply to reference target (or IG) -->
  <aggregation value="[code]"/><!-- ?? 0..* contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- 0..1 either | independent | specific -->
 </type>
 <defaultValue[x]><!-- ?? 0..1 * Specified value if missing from instance --></defaultValue[x]>
 <meaningWhenMissing value="[markdown]"/><!-- ?? 0..1 Implicit meaning when this element is missing -->
 <orderMeaning value="[string]"/><!-- 0..1 What the order of the elements means -->
 <fixed[x]><!-- ?? 0..1 * Value must be exactly this --></fixed[x]>
 <pattern[x]><!-- ?? 0..1 * Value must have at least these property values --></pattern[x]>
 <example>  <!-- 0..* Example value (as defined for type) -->
  <label value="[string]"/><!-- 1..1 Describes the purpose of this example -->
  <value[x]><!-- 1..1 * Value of Example (one of allowed types) --></value[x]>
 </example>
 <minValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt|
   unsignedInt|Quantity Minimum Allowed Value (for some types) --></minValue[x]>
 <maxValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt|
   unsignedInt|Quantity Maximum Allowed Value (for some types) --></maxValue[x]>
 <maxLength value="[integer]"/><!-- 0..1 Max length for strings -->
 <condition value="[id]"/><!-- 0..* Reference to invariant about presence -->
 <constraint>  <!-- 0..* Condition that must evaluate to true -->
  <key value="[id]"/><!-- ?? 1..1 Target of 'condition' reference above -->
  <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate -->
  <severity value="[code]"/><!-- 1..1 error | warning -->
  <human value="[string]"/><!-- 1..1 Human description of constraint -->
  <expression value="[string]"/><!-- 1..1 FHIRPath expression of constraint -->
  <xpath value="[string]"/><!-- 0..1 XPath expression of constraint -->
  <source value="[uri]"/><!-- 0..1 Reference to original source of constraint -->
 </constraint>
 <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported -->
 <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements -->
 <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? -->
 <binding>  <!-- ?? 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- ?? 0..1 Human explanation of the value set -->
  <valueSet[x]><!-- ?? 0..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]>
 </binding>
 <mapping>  <!-- 0..* Map element to another set of definitions -->
  <identity value="[id]"/><!-- 1..1 Reference to mapping declaration -->
  <language value="[code]"/><!-- 0..1 Computable language of mapping  -->
  <map value="[string]"/><!-- 1..1 Details of the mapping -->
  <comment value="[string]"/><!-- 0..1 Comments about the mapping or its use -->
 </mapping>
</[name]>

JSON Template

{doco
  // from Element: extension
  "path" : "<string>", // R!  Path of the element in the hierarchy of elements
  "representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml
  "sliceName" : "<string>", // Name for this particular element (in a set of slices)
  "label" : "<string>", // Name for element to display with or prompt for element
  "code" : [{ Coding }], // Corresponding codes in terminologies
  "slicing" : { // This element is sliced - slices follow
    "discriminator" : [{ // Element values that are used to distinguish the slices
      "type" : "<code>", // R!  value | exists | pattern | type | profile
      "path" : "<string>" // R!  Path to element value
    }],
    "description" : "<string>", // C? Text description of how slicing works (or not)
    "ordered" : <boolean>, // If elements must be in same order as slices
    "rules" : "<code>" // R!  closed | open | openAtEnd
  },
  "short" : "<string>", // Concise definition for space-constrained presentation
  "definition" : "<markdown>", // Full formal definition as narrative text
  "comment" : "<markdown>", // Comments about the use of this element
  "requirements" : "<markdown>", // Why this resource has been created
  "alias" : ["<string>"], // Other names
  "min" : "<unsignedInt>", // C? Minimum Cardinality
  "max" : "<string>", // C? Maximum Cardinality (a number or *)
  "base" : { // Base definition information for tools
    "path" : "<string>", // R!  Path that identifies the base element
    "min" : "<unsignedInt>", // R!  Min cardinality of the base element
    "max" : "<string>" // R!  Max cardinality of the base element
  },
  "contentReference" : "<uri>", // C? Reference to definition of content for the element
  "type" : [{ // C? Data type and Profile for this element
    "code" : "<uri>", // R!  Data type or Resource (reference to definition)
    "profile" : "<uri>", // Profile (StructureDefinition) to apply (or IG)
    "targetProfile" : "<uri>", // Profile (StructureDefinition) to apply to reference target (or IG)
    "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
    "versioning" : "<code>" // either | independent | specific
  }],
  // defaultValue[x]: Specified value if missing from instance. One of these 23:
  "defaultValueInteger" : <integer>,
  "defaultValueDecimal" : <decimal>,
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDate" : "<date>",
  "defaultValueInstant" : "<instant>",
  "defaultValueString" : "<string>",
  "defaultValueUri" : "<uri>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCode" : "<code>",
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueCoding" : { Coding },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueAttachment" : { Attachment },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValuePeriod" : { Period },
  "defaultValueRatio" : { Ratio },
  "defaultValueHumanName" : { HumanName },
  "defaultValueAddress" : { Address },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueSchedule" : { Schedule },
  "defaultValueReference" : { Reference },
  "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing
  "orderMeaning" : "<string>", // What the order of the elements means
  // fixed[x]: Value must be exactly this. One of these 23:
  "fixedInteger" : <integer>,
  "fixedDecimal" : <decimal>,
  "fixedDateTime" : "<dateTime>",
  "fixedDate" : "<date>",
  "fixedInstant" : "<instant>",
  "fixedString" : "<string>",
  "fixedUri" : "<uri>",
  "fixedBoolean" : <boolean>,
  "fixedCode" : "<code>",
  "fixedBase64Binary" : "<base64Binary>",
  "fixedCoding" : { Coding },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedAttachment" : { Attachment },
  "fixedIdentifier" : { Identifier },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedPeriod" : { Period },
  "fixedRatio" : { Ratio },
  "fixedHumanName" : { HumanName },
  "fixedAddress" : { Address },
  "fixedContactPoint" : { ContactPoint },
  "fixedSchedule" : { Schedule },
  "fixedReference" : { Reference },
  // pattern[x]: Value must have at least these property values. One of these 23:
  "patternInteger" : <integer>,
  "patternDecimal" : <decimal>,
  "patternDateTime" : "<dateTime>",
  "patternDate" : "<date>",
  "patternInstant" : "<instant>",
  "patternString" : "<string>",
  "patternUri" : "<uri>",
  "patternBoolean" : <boolean>,
  "patternCode" : "<code>",
  "patternBase64Binary" : "<base64Binary>",
  "patternCoding" : { Coding },
  "patternCodeableConcept" : { CodeableConcept },
  "patternAttachment" : { Attachment },
  "patternIdentifier" : { Identifier },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternPeriod" : { Period },
  "patternRatio" : { Ratio },
  "patternHumanName" : { HumanName },
  "patternAddress" : { Address },
  "patternContactPoint" : { ContactPoint },
  "patternSchedule" : { Schedule },
  "patternReference" : { Reference },
  "example" : [{ // Example value (as defined for type)
    "label" : "<string>", // R!  Describes the purpose of this example
    // value[x]: Value of Example (one of allowed types). One of these 23:
    "valueInteger" : <integer>
    "valueDecimal" : <decimal>
    "valueDateTime" : "<dateTime>"
    "valueDate" : "<date>"
    "valueInstant" : "<instant>"
    "valueString" : "<string>"
    "valueUri" : "<uri>"
    "valueBoolean" : <boolean>
    "valueCode" : "<code>"
    "valueBase64Binary" : "<base64Binary>"
    "valueCoding" : { Coding }
    "valueCodeableConcept" : { CodeableConcept }
    "valueAttachment" : { Attachment }
    "valueIdentifier" : { Identifier }
    "valueQuantity" : { Quantity }
    "valueRange" : { Range }
    "valuePeriod" : { Period }
    "valueRatio" : { Ratio }
    "valueHumanName" : { HumanName }
    "valueAddress" : { Address }
    "valueContactPoint" : { ContactPoint }
    "valueSchedule" : { Schedule }
    "valueReference" : { Reference }
  }],
  // minValue[x]: Minimum Allowed Value (for some types). One of these 9:
  "minValueDate" : "<date>",
  "minValueDateTime" : "<dateTime>",
  "minValueInstant" : "<instant>",
  "minValueTime" : "<time>",
  "minValueDecimal" : <decimal>,
  "minValueInteger" : <integer>,
  "minValuePositiveInt" : "<positiveInt>",
  "minValueUnsignedInt" : "<unsignedInt>",
  "minValueQuantity" : { Quantity },
  // maxValue[x]: Maximum Allowed Value (for some types). One of these 9:
  "maxValueDate" : "<date>",
  "maxValueDateTime" : "<dateTime>",
  "maxValueInstant" : "<instant>",
  "maxValueTime" : "<time>",
  "maxValueDecimal" : <decimal>,
  "maxValueInteger" : <integer>,
  "maxValuePositiveInt" : "<positiveInt>",
  "maxValueUnsignedInt" : "<unsignedInt>",
  "maxValueQuantity" : { Quantity },
  "maxLength" : <integer>, // Max length for strings
  "condition" : ["<id>"], // Reference to invariant about presence
  "constraint" : [{ // Condition that must evaluate to true
    "key" : "<id>", // C? R!  Target of 'condition' reference above
    "requirements" : "<string>", // Why this constraint is necessary or appropriate
    "severity" : "<code>", // R!  error | warning
    "human" : "<string>", // R!  Human description of constraint
    "expression" : "<string>", // R!  FHIRPath expression of constraint
    "xpath" : "<string>", // XPath expression of constraint
    "source" : "<uri>" // Reference to original source of constraint
  }],
  "mustSupport" : <boolean>, // If the element must supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isSummary" : <boolean>, // Include when _summary = true?
  "binding" : { // C? ValueSet details if this is coded
    "strength" : "<code>", // R!  required | extensible | preferred | example
    "description" : "<string>", // Human explanation of the value set
    // valueSet[x]: Source of value set. One of these 2:
    "valueSetUri" : "<uri>"
    "valueSetReference" : { Reference(ValueSet) }
  },
  "mapping" : [{ // Map element to another set of definitions
    "identity" : "<id>", // R!  Reference to mapping declaration
    "language" : "<code>", // Computable language of mapping 
    "map" : "<string>", // R!  Details of the mapping
    "comment" : "<string>" // Comments about the mapping or its use
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .

[
 # from Element: Element.extension
  fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the hierarchy of elements
  fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml
  fhir:ElementDefinition.sliceName [ string ]; # 0..1 Name for this particular element (in a set of slices)
  fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element
  fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Corresponding codes in terminologies
  fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow
    fhir:ElementDefinition.slicing.discriminator [ # 0..* Element values that are used to distinguish the slices
      fhir:ElementDefinition.slicing.discriminator.type [ code ]; # 1..1 value | exists | pattern | type | profile
      fhir:ElementDefinition.slicing.discriminator.path [ string ]; # 1..1 Path to element value
    ], ...;
    fhir:ElementDefinition.slicing.description [ string ]; # 0..1 Text description of how slicing works (or not)
    fhir:ElementDefinition.slicing.ordered [ boolean ]; # 0..1 If elements must be in same order as slices
    fhir:ElementDefinition.slicing.rules [ code ]; # 1..1 closed | open | openAtEnd
  ];
  fhir:ElementDefinition.short [ string ]; # 0..1 Concise definition for space-constrained presentation
  fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text
  fhir:ElementDefinition.comment [ markdown ]; # 0..1 Comments about the use of this element
  fhir:ElementDefinition.requirements [ markdown ]; # 0..1 Why this resource has been created
  fhir:ElementDefinition.alias [ string ], ... ; # 0..* Other names
  fhir:ElementDefinition.min [ unsignedInt ]; # 0..1 Minimum Cardinality
  fhir:ElementDefinition.max [ string ]; # 0..1 Maximum Cardinality (a number or *)
  fhir:ElementDefinition.base [ # 0..1 Base definition information for tools
    fhir:ElementDefinition.base.path [ string ]; # 1..1 Path that identifies the base element
    fhir:ElementDefinition.base.min [ unsignedInt ]; # 1..1 Min cardinality of the base element
    fhir:ElementDefinition.base.max [ string ]; # 1..1 Max cardinality of the base element
  ];
  fhir:ElementDefinition.contentReference [ uri ]; # 0..1 Reference to definition of content for the element
  fhir:ElementDefinition.type [ # 0..* Data type and Profile for this element
    fhir:ElementDefinition.type.code [ uri ]; # 1..1 Data type or Resource (reference to definition)
    fhir:ElementDefinition.type.profile [ uri ]; # 0..1 Profile (StructureDefinition) to apply (or IG)
    fhir:ElementDefinition.type.targetProfile [ uri ]; # 0..1 Profile (StructureDefinition) to apply to reference target (or IG)
    fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated
    fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific
  ], ...;
  # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 38
    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCode [ code ]
    fhir:ElementDefinition.defaultValueDate [ date ]
    fhir:ElementDefinition.defaultValueDateTime [ dateTime ]
    fhir:ElementDefinition.defaultValueDecimal [ decimal ]
    fhir:ElementDefinition.defaultValueId [ id ]
    fhir:ElementDefinition.defaultValueInstant [ instant ]
    fhir:ElementDefinition.defaultValueInteger [ integer ]
    fhir:ElementDefinition.defaultValueMarkdown [ markdown ]
    fhir:ElementDefinition.defaultValueOid [ oid ]
    fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.defaultValueString [ string ]
    fhir:ElementDefinition.defaultValueTime [ time ]
    fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.defaultValueUri [ uri ]
    fhir:ElementDefinition.defaultValueAddress [ Address ]
    fhir:ElementDefinition.defaultValueAge [ Age ]
    fhir:ElementDefinition.defaultValueAnnotation [ Annotation ]
    fhir:ElementDefinition.defaultValueAttachment [ Attachment ]
    fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.defaultValueCoding [ Coding ]
    fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ]
    fhir:ElementDefinition.defaultValueCount [ Count ]
    fhir:ElementDefinition.defaultValueDistance [ Distance ]
    fhir:ElementDefinition.defaultValueDuration [ Duration ]
    fhir:ElementDefinition.defaultValueHumanName [ HumanName ]
    fhir:ElementDefinition.defaultValueIdentifier [ Identifier ]
    fhir:ElementDefinition.defaultValueMoney [ Money ]
    fhir:ElementDefinition.defaultValuePeriod [ Period ]
    fhir:ElementDefinition.defaultValueQuantity [ Quantity ]
    fhir:ElementDefinition.defaultValueRange [ Range ]
    fhir:ElementDefinition.defaultValueRatio [ Ratio ]
    fhir:ElementDefinition.defaultValueReference [ Reference ]
    fhir:ElementDefinition.defaultValueSampledData [ SampledData ]
    fhir:ElementDefinition.defaultValueSignature [ Signature ]
    fhir:ElementDefinition.defaultValueTiming [ Timing ]
    fhir:ElementDefinition.defaultValueMeta [ Meta ]
  fhir:ElementDefinition.meaningWhenMissing [ markdown ]; # 0..1 Implicit meaning when this element is missing
  fhir:ElementDefinition.orderMeaning [ string ]; # 0..1 What the order of the elements means
  # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 38
    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCode [ code ]
    fhir:ElementDefinition.fixedDate [ date ]
    fhir:ElementDefinition.fixedDateTime [ dateTime ]
    fhir:ElementDefinition.fixedDecimal [ decimal ]
    fhir:ElementDefinition.fixedId [ id ]
    fhir:ElementDefinition.fixedInstant [ instant ]
    fhir:ElementDefinition.fixedInteger [ integer ]
    fhir:ElementDefinition.fixedMarkdown [ markdown ]
    fhir:ElementDefinition.fixedOid [ oid ]
    fhir:ElementDefinition.fixedPositiveInt [ positiveInt ]
    fhir:ElementDefinition.fixedString [ string ]
    fhir:ElementDefinition.fixedTime [ time ]
    fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.fixedUri [ uri ]
    fhir:ElementDefinition.fixedAddress [ Address ]
    fhir:ElementDefinition.fixedAge [ Age ]
    fhir:ElementDefinition.fixedAnnotation [ Annotation ]
    fhir:ElementDefinition.fixedAttachment [ Attachment ]
    fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.fixedCoding [ Coding ]
    fhir:ElementDefinition.fixedContactPoint [ ContactPoint ]
    fhir:ElementDefinition.fixedCount [ Count ]
    fhir:ElementDefinition.fixedDistance [ Distance ]
    fhir:ElementDefinition.fixedDuration [ Duration ]
    fhir:ElementDefinition.fixedHumanName [ HumanName ]
    fhir:ElementDefinition.fixedIdentifier [ Identifier ]
    fhir:ElementDefinition.fixedMoney [ Money ]
    fhir:ElementDefinition.fixedPeriod [ Period ]
    fhir:ElementDefinition.fixedQuantity [ Quantity ]
    fhir:ElementDefinition.fixedRange [ Range ]
    fhir:ElementDefinition.fixedRatio [ Ratio ]
    fhir:ElementDefinition.fixedReference [ Reference ]
    fhir:ElementDefinition.fixedSampledData [ SampledData ]
    fhir:ElementDefinition.fixedSignature [ Signature ]
    fhir:ElementDefinition.fixedTiming [ Timing ]
    fhir:ElementDefinition.fixedMeta [ Meta ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 38
    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCode [ code ]
    fhir:ElementDefinition.patternDate [ date ]
    fhir:ElementDefinition.patternDateTime [ dateTime ]
    fhir:ElementDefinition.patternDecimal [ decimal ]
    fhir:ElementDefinition.patternId [ id ]
    fhir:ElementDefinition.patternInstant [ instant ]
    fhir:ElementDefinition.patternInteger [ integer ]
    fhir:ElementDefinition.patternMarkdown [ markdown ]
    fhir:ElementDefinition.patternOid [ oid ]
    fhir:ElementDefinition.patternPositiveInt [ positiveInt ]
    fhir:ElementDefinition.patternString [ string ]
    fhir:ElementDefinition.patternTime [ time ]
    fhir:ElementDefinition.patternUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.patternUri [ uri ]
    fhir:ElementDefinition.patternAddress [ Address ]
    fhir:ElementDefinition.patternAge [ Age ]
    fhir:ElementDefinition.patternAnnotation [ Annotation ]
    fhir:ElementDefinition.patternAttachment [ Attachment ]
    fhir:ElementDefinition.patternCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.patternCoding [ Coding ]
    fhir:ElementDefinition.patternContactPoint [ ContactPoint ]
    fhir:ElementDefinition.patternCount [ Count ]
    fhir:ElementDefinition.patternDistance [ Distance ]
    fhir:ElementDefinition.patternDuration [ Duration ]
    fhir:ElementDefinition.patternHumanName [ HumanName ]
    fhir:ElementDefinition.patternIdentifier [ Identifier ]
    fhir:ElementDefinition.patternMoney [ Money ]
    fhir:ElementDefinition.patternPeriod [ Period ]
    fhir:ElementDefinition.patternQuantity [ Quantity ]
    fhir:ElementDefinition.patternRange [ Range ]
    fhir:ElementDefinition.patternRatio [ Ratio ]
    fhir:ElementDefinition.patternReference [ Reference ]
    fhir:ElementDefinition.patternSampledData [ SampledData ]
    fhir:ElementDefinition.patternSignature [ Signature ]
    fhir:ElementDefinition.patternTiming [ Timing ]
    fhir:ElementDefinition.patternMeta [ Meta ]
  fhir:ElementDefinition.example [ # 0..* Example value (as defined for type)
    fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example
    # ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 38
      fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ]
      fhir:ElementDefinition.example.valueBoolean [ boolean ]
      fhir:ElementDefinition.example.valueCode [ code ]
      fhir:ElementDefinition.example.valueDate [ date ]
      fhir:ElementDefinition.example.valueDateTime [ dateTime ]
      fhir:ElementDefinition.example.valueDecimal [ decimal ]
      fhir:ElementDefinition.example.valueId [ id ]
      fhir:ElementDefinition.example.valueInstant [ instant ]
      fhir:ElementDefinition.example.valueInteger [ integer ]
      fhir:ElementDefinition.example.valueMarkdown [ markdown ]
      fhir:ElementDefinition.example.valueOid [ oid ]
      fhir:ElementDefinition.example.valuePositiveInt [ positiveInt ]
      fhir:ElementDefinition.example.valueString [ string ]
      fhir:ElementDefinition.example.valueTime [ time ]
      fhir:ElementDefinition.example.valueUnsignedInt [ unsignedInt ]
      fhir:ElementDefinition.example.valueUri [ uri ]
      fhir:ElementDefinition.example.valueAddress [ Address ]
      fhir:ElementDefinition.example.valueAge [ Age ]
      fhir:ElementDefinition.example.valueAnnotation [ Annotation ]
      fhir:ElementDefinition.example.valueAttachment [ Attachment ]
      fhir:ElementDefinition.example.valueCodeableConcept [ CodeableConcept ]
      fhir:ElementDefinition.example.valueCoding [ Coding ]
      fhir:ElementDefinition.example.valueContactPoint [ ContactPoint ]
      fhir:ElementDefinition.example.valueCount [ Count ]
      fhir:ElementDefinition.example.valueDistance [ Distance ]
      fhir:ElementDefinition.example.valueDuration [ Duration ]
      fhir:ElementDefinition.example.valueHumanName [ HumanName ]
      fhir:ElementDefinition.example.valueIdentifier [ Identifier ]
      fhir:ElementDefinition.example.valueMoney [ Money ]
      fhir:ElementDefinition.example.valuePeriod [ Period ]
      fhir:ElementDefinition.example.valueQuantity [ Quantity ]
      fhir:ElementDefinition.example.valueRange [ Range ]
      fhir:ElementDefinition.example.valueRatio [ Ratio ]
      fhir:ElementDefinition.example.valueReference [ Reference ]
      fhir:ElementDefinition.example.valueSampledData [ SampledData ]
      fhir:ElementDefinition.example.valueSignature [ Signature ]
      fhir:ElementDefinition.example.valueTiming [ Timing ]
      fhir:ElementDefinition.example.valueMeta [ Meta ]
  ], ...;
  # ElementDefinition.minValue[x] : 0..1 Minimum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.minValueDate [ date ]
    fhir:ElementDefinition.minValueDateTime [ dateTime ]
    fhir:ElementDefinition.minValueInstant [ instant ]
    fhir:ElementDefinition.minValueTime [ time ]
    fhir:ElementDefinition.minValueDecimal [ decimal ]
    fhir:ElementDefinition.minValueInteger [ integer ]
    fhir:ElementDefinition.minValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.minValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.minValueQuantity [ Quantity ]
  # ElementDefinition.maxValue[x] : 0..1 Maximum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.maxValueDate [ date ]
    fhir:ElementDefinition.maxValueDateTime [ dateTime ]
    fhir:ElementDefinition.maxValueInstant [ instant ]
    fhir:ElementDefinition.maxValueTime [ time ]
    fhir:ElementDefinition.maxValueDecimal [ decimal ]
    fhir:ElementDefinition.maxValueInteger [ integer ]
    fhir:ElementDefinition.maxValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.maxValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.maxValueQuantity [ Quantity ]
  fhir:ElementDefinition.maxLength [ integer ]; # 0..1 Max length for strings
  fhir:ElementDefinition.condition [ id ], ... ; # 0..* Reference to invariant about presence
  fhir:ElementDefinition.constraint [ # 0..* Condition that must evaluate to true
    fhir:ElementDefinition.constraint.key [ id ]; # 1..1 Target of 'condition' reference above
    fhir:ElementDefinition.constraint.requirements [ string ]; # 0..1 Why this constraint is necessary or appropriate
    fhir:ElementDefinition.constraint.severity [ code ]; # 1..1 error | warning
    fhir:ElementDefinition.constraint.human [ string ]; # 1..1 Human description of constraint
    fhir:ElementDefinition.constraint.expression [ string ]; # 1..1 FHIRPath expression of constraint
    fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraint
    fhir:ElementDefinition.constraint.source [ uri ]; # 0..1 Reference to original source of constraint
  ], ...;
  fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must supported
  fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements
  fhir:ElementDefinition.isSummary [ boolean ]; # 0..1 Include when _summary = true?
  fhir:ElementDefinition.binding [ # 0..1 ValueSet details if this is coded
    fhir:ElementDefinition.binding.strength [ code ]; # 1..1 required | extensible | preferred | example
    fhir:ElementDefinition.binding.description [ string ]; # 0..1 Human explanation of the value set
    # ElementDefinition.binding.valueSet[x] : 0..1 Source of value set. One of these 2
      fhir:ElementDefinition.binding.valueSetUri [ uri ]
      fhir:ElementDefinition.binding.valueSetReference [ Reference(ValueSet) ]
  ];
  fhir:ElementDefinition.mapping [ # 0..* Map element to another set of definitions
    fhir:ElementDefinition.mapping.identity [ id ]; # 1..1 Reference to mapping declaration
    fhir:ElementDefinition.mapping.language [ code ]; # 0..1 Computable language of mapping
    fhir:ElementDefinition.mapping.map [ string ]; # 1..1 Details of the mapping
    fhir:ElementDefinition.mapping.comment [ string ]; # 0..1 Comments about the mapping or its use
  ], ...;
]

Changes since DSTU2

ElementDefinition
ElementDefinition.representation
  • Add Codes xmlText, typeAttr, cdaText, xhtml
ElementDefinition.sliceName
  • Renamed from name to sliceName
ElementDefinition.slicing.discriminator
  • Type changed from string to Element
ElementDefinition.slicing.discriminator.type
  • Added Element
ElementDefinition.slicing.discriminator.path
  • Added Element
ElementDefinition.comment
  • Renamed from comments to comment
ElementDefinition.min
  • Type changed from integer to unsignedInt
ElementDefinition.base.min
  • Type changed from integer to unsignedInt
ElementDefinition.contentReference
  • Renamed from nameReference to contentReference
  • Type changed from string to uri
ElementDefinition.type.code
  • Type changed from code to uri
  • Change binding strength from required to extensible
ElementDefinition.type.profile
  • Max Cardinality changed from * to 1
ElementDefinition.type.targetProfile
  • Added Element
ElementDefinition.type.versioning
  • Added Element
ElementDefinition.defaultValue[x]
  • Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.orderMeaning
  • Added Element
ElementDefinition.fixed[x]
  • Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.pattern[x]
  • Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.example
  • Renamed from example[x] to example
  • Max Cardinality changed from 1 to *
  • Remove boolean, Remove integer, Remove decimal, Remove base64Binary, Remove instant, Remove string, Remove uri, Remove date, Remove dateTime, Remove time, Remove code, Remove oid, Remove id, Remove unsignedInt, Remove positiveInt, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Quantity, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.example.label
  • Added Element
ElementDefinition.example.value[x]
  • Added Element
ElementDefinition.minValue[x]
  • Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.maxValue[x]
  • Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.constraint.expression
  • Added Element
ElementDefinition.constraint.xpath
  • Min Cardinality changed from 1 to 0
ElementDefinition.constraint.source
  • Added Element
ElementDefinition.mapping.comment
  • Added Element

See the Full Difference for further information

Constraints

  • eld-1: On ElementDefinition.slicing: If there are no discriminators, there must be a definition (expression on ElementDefinition.slicing: discriminator.exists() or description.exists())
  • eld-2: Min <= Max (expression : min.empty() or max.empty() or (max = '*') or (min <= max.toInteger()))
  • eld-3: On ElementDefinition.max: Max SHALL be a number or "*" (expression on ElementDefinition.max: empty() or ($this = '*') or (toInteger() >= 0))
  • eld-4: On ElementDefinition.type: Aggregation may only be specified if one of the allowed types for the element is a resource (expression on ElementDefinition.type: aggregation.empty() or (code = 'Reference'))
  • eld-5: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding (expression : contentReference.empty() or (type.empty() and defaultValue.empty() and fixed.empty() and pattern.empty() and example.empty() and minValue.empty() and maxValue.empty() and maxLength.empty() and binding.empty()))
  • eld-6: Fixed value may only be specified if there is one type (expression : fixed.empty() or (type.count() <= 1))
  • eld-7: Pattern may only be specified if there is one type (expression : pattern.empty() or (type.count() <= 1))
  • eld-8: Pattern and value are mutually exclusive (expression : pattern.empty() or fixed.empty())
  • eld-11: Binding can only be present for coded elements, string, and uri (expression : binding.empty() or type.code.empty() or type.select((code = 'code') or (code = 'Coding') or (code='CodeableConcept') or (code = 'Quantity') or (code = 'Extension') or (code = 'string') or (code = 'uri')).exists())
  • eld-12: On ElementDefinition.binding: ValueSet as a URI SHALL start with http:// or https:// or urn: (expression on ElementDefinition.binding: valueSet.is(uri).not() or valueSet.as(uri).startsWith('http:') or valueSet.as(uri).startsWith('https') or valueSet.as(uri).startsWith('urn:'))
  • eld-13: Types must be unique by the combination of code and profile (expression : type.select(code&profile&targetProfile).isDistinct())
  • eld-14: Constraints must be unique by key (expression : constraint.select(key).isDistinct())
  • eld-15: default value and meaningWhenMissing are mutually exclusive (expression : defaultValue.empty() or meaningWhenMissing.empty())
  • eld-16: sliceName must be composed of proper tokens separated by "/" (expression : sliceName.empty() or sliceName.matches('^[a-zA-Z0-9\\/\\-\\_]+$'))

 

The path element is the most important property of the element definition. It both names the element, and locates the element within a hierarchy defined within a particular context. Within the FHIR specification, there is only one original definition for each path (that is, an element definition with no base element). This is the master definition to which all the other definitions with the same path must conform.

All elements defined within the FHIR specification itself are defined within a StructureDefinition that defines a resource, or a datatype. This defines the identity of the element and provides the context in which the meaning of the element is understood. When Elements are defined, the following rules apply:

  • Element names (the parts of a path delineated by the '.' character) SHALL not contain whitespace (i.e. Unicode characters marked as whitespace)
  • Element names SHALL not contain the characters ,:;'"/|?|!@#$%^&*()[]{}
  • Element names SHOULD not contain non-ASCII characters
  • Element paths SHALL not exceed 64 characters in length
  • Element paths cannot imply elements that are not explicitly defined i.e. a.b.c.d cannot be defined unless a.b.c is explicitly defined
  • By convention, each path start with an uppercase letter (type) but all the element names that follow this are lowercase (not type names). All resources and data types (except for Primitive data types) follow this convention, but logical models are not required to do so

Elements may be defined in:

  • StructureDefinitions of kind = resource, complex-type or primitive-type, where derivation = specialization. These are either Resources or Data types defined in the specification, or in custom resource definitions (see Custom Resource Policy )
  • StructureDefinitions of kind = logical
  • Data Elements

StructureDefinitions with derivation = constraint (i.e. Resource and Data Type profiles) are not allowed to define or include ElementDefinitions with a path not defined within the base resource definition from which they derive (e.g. in the FHIR specification).

In addition to the path, every ElementDefinition SHALL have a populated id, and the id SHALL have a unique value populated by following this algorithm:

  • The id will be constructed as a dot separated string, each part corresponding to a token in the path
  • For each token in the path, use the syntax pathpart:slicename/reslicename

Note that in a profile with no slices, this id will match the path exactly and entirely. id values constructed in this fashion are unique, and persistent, and may be used as the target of external references into the definition, where necessary.

The data type ElementDefinition is used both in StructureDefinition and DataElement, and within those resources, the way its elements are to be used and interpreted depends on the context where ElementDefinition used:

ElementDefinition field DataElement Type definition, first element Type definition, following elements Constraint Definition, first element Constraint Definition, following elements
sliceName prohibited prohibited prohibited prohibited required for slices, else prohibited
label optional optional optional recommended recommended
code optional optional optional optional optional
slicing prohibited prohibited prohibited prohibited optional
short/definition optional required required required‡ required‡
requirements/
comments/alias
optional prohibited optional prohibited‡ optional‡
base prohibited prohibited prohibited required required
type required required required optional optional
nameReference prohibited prohibited optional prohibited optional
min/max optional optional (irrelevant) required optional optional†
defaultValue[x] optional prohibited optional prohibited optional†
meaningWhenMissing optional prohibited optional prohibited optional†
fixed[x] prohibited prohibited prohibited prohibited optional
pattern[x] optional prohibited prohibited prohibited optional
example[x] optional prohibited optional prohibited optional
minValue[x] optional prohibited prohibited prohibited optional
maxValue[x] optional prohibited prohibited prohibited optional
maxLength optional prohibited prohibited prohibited optional
mustSupport optional prohibited prohibited optional optional
isModifier prohibited prohibited optional prohibited optional†
isSummary prohibited prohibited optional prohibited optional†
binding optional prohibited optional prohibited optional
constraint optional optional optional optional∆ optional∆
condition optional prohibited optional prohibited optional∆
mapping optional optional optional optional∆ optional∆

Notes:

  • Type definition: A StructureDefinition without a base element, or where the derivation type is 'specialization'
  • Constraint definition: A StructureDefinition with a base element and a derivation of 'constraint' - e.g. a definition of a structure that constrains another base structure, referring to the differential portion
  • †: The element's presence, and value, must match the definition in the base structure
  • ‡: The element content must be consistent with that matching element in the base structure
  • ∆: Additional constraints and mappings can be defined, but they do not replace the ones in the base structure

The use of Path and type depends more deeply on the context where the ElementDefinition is used:

Context path (1st element) path (following elements) type (1st element)
Data Element Any token Any token (distinct in the DataElement) Any type
Base definition of a data type
(example: Quantity - XML, JSON)
Name of the type Path inside the datatype Element
A constrained data type
(example: Money - XML, JSON)
Name of the base type Path inside the datatype Name of the base type
Base definition of a resource
(example: Patient - XML, JSON)
The name of the resource Path inside the resource DomainResource or sometimes Resource
Constraint on a resource
(example: DAF Patient - XML, JSON)
The name of the resource Path inside the resource
(including into the data types)
The name of the resource
Base Extension (a standard data type)
(example: Extension - XML, JSON)
Extension Extension.value[x] or Extension.extension Extension
A defined Extension
(example: Extension - XML, JSON)
Extension Extension.value[x] or Extension.extension (for complex extensions) Extension

There are additional notes about the use of ElementDefinition when defining Extensions on the Defining Extensions page.

For a description of slicing, see Slicing

  • Slicing is only allowed when constraining an existing structure
  • slicing can only be used on the first repeat of an element, this element is considered to be the slicing entry
  • All elements following the first repeat that containing a slicing SHALL have a sliceName
  • The first entry (the one having the slicing information) is understood to be the set of constraints to be used for the "open" slice, i.e., when the slice is open, this definition is used as a constraint on elements in the instance that are not part of a slice and belong to the open portion of the slice. Its use follows the "normal case", except:
    • slicing must be present
    • min and max govern the number of total occurrences of the sliced element including the number of occurrences in the open portion of the slice.
  • An element with a cardinality of 0..1 and a choice of multiple types can be sliced by type. This is to specify different constraints for different types. In this case, the discriminator SHALL be "@type"

In a DataElement, min and max are always required.

In a StructureDefinition:

  • If there is no StructureDefinition.base: min and max are always required
  • Otherwise, in StructureDefinition.differential: min and max are always optional; if they are not present, they default to the base min and max
  • In StructureDefinition.snapshot: min and max are always required

Most elements have a minimum cardinality of 0, which means that they may be missing from a resource when it is exchanged between systems. Generally, when an element is missing, all that an application processing the resource can say about the element is that the value is unknown - it may have a correct value, but it has not been provided for security or workflow reasons. On the other hand, it may not have a value at all. All the application can say is that the value is unknown.

However, for some elements, this specification makes specific rules about what it means if the element is missing. For some elements, this takes the form of a default value, a value that should be assumed if an element is present. For example, here are some default values:

ElementDefault Value
ElementDefinition.mustSupportfalse
SampledData.factor1
ValueSet.codeSystem.concept.abstractfalse
List.entry.deletedfalse

Most default values are mathematical / numerical non-operations e.g. false, 0 for addition or 1 for multiplication. Default values are rarely used because:

  • The value must be known by all implementations
  • When an element has a default value, it can never be unknown - e.g. it is implicitly mandatory
  • The default value can never be changed.

For other elements, the resource explicitly documents the meaning of a missing element, and that meaning is not represented by a default value. Some examples:

ElementMeaning when missing
Period.endIf the end of the period is missing, it means that the period is ongoing
Quantity.comparatorIf there is no comparator, then there is no modification of the value
MedicationAdministration.wasNotGivenIf this is missing, then the medication was administered
Substance.instanceIf this element is not present, then the substance resource describes a kind of substance

Like default values, and for the same reasons, assigning a meaning when an element is missing is something that is not done very often. Note that Profiles cannot change the default value or missing meaning of an element, since this cannot be done in the base specification either.

Here is a list of all elements with a default value or a missing meaning: