FHIR Release 3 (STU) R4 Ballot #2 (Mixed Normative/Trial use)

This page is part of the FHIR Specification (v3.0.2: STU 3). (v3.5.0: R4 Ballot #2). 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 2.30.0 Element Definition

FHIR Infrastructure Work Group Maturity Level : 5 Ballot Status : Trial Use Normative

Normative Candidate Note: This page is candidate normative content for R4 in the Infrastructure Package . Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.

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 ).

ElementDefinition is used in StructureDefinition

Structure

Name Flags Card. Type Description & Constraints doco
. . ElementDefinition Σ I N Element BackBoneElement Definition of an element in a resource or extension
+ Rule: Min <= Max
+ Rule: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
+ Pattern Rule: Fixed value may only be specified if there is one type
+ Fixed value Rule: Pattern may only be specified if there is one type
+ Rule: Pattern and value are mutually exclusive
+ Rule: Binding can only be present for coded elements, string, and uri
+ Pattern and value are mutually exclusive Rule: Types must be unique by code
+ Rule: Constraints must be unique by key
+ Types must be unique by the combination of code Rule: default value and profile meaningWhenMissing are mutually exclusive
+ Rule: sliceName must be composed of proper tokens separated by "/" "/"
+ default value and meaningWhenMissing are mutually exclusive Rule: Must have a modifier reason if isModifier = true
+ Rule: Element names cannot include some special characters
+ Warning: Element names should be simple alphanumerics, or code generation tools may be broken
+ Rule: sliceIsConstraining can only appear if slicename is present
Elements defined in Ancestors: id , extension , modifierExtension
. . . path Σ 1..1 string Path of the element in the hierarchy of elements
. . . representation Σ 0..* code xmlAttr | xmlText | typeAttr | cdaText | xhtml
PropertyRepresentation ( Required )
. . . sliceName Σ 0..1 string Name for this particular element (in a set of slices)
. . . label sliceIsConstraining Σ TU 0..1 boolean If this slice definition constrains an inherited slice definition (or not)
... label Σ 0..1 string Name for element to display with or prompt for element
. . . code Σ 0..* Coding Corresponding codes in terminologies
LOINC Codes ( Example )
. . . slicing Σ I 0..1 Element This element is sliced - slices follow
+ Rule: If there are no discriminators, there must be a definition
. . . . discriminator Σ 0..* Element Element values that are used to distinguish the slices
. . . . . type Σ 1..1 code value | exists | pattern | type | profile
DiscriminatorType ( Required )
. . . . . path Σ 1..1 string Path to element value
. . . . description Σ I 0..1 string Text description of how slicing works (or not)
. . . . ordered Σ 0..1 boolean If elements must be in same order as slices
. . . . rules Σ 1..1 code closed | open | openAtEnd
SlicingRules ( Required )
. . . short Σ 0..1 string Concise definition for space-constrained presentation
. . . definition Σ 0..1 markdown Full formal definition as narrative text
. . . comment Σ 0..1 markdown Comments about the use of this element
. . . requirements Σ 0..1 markdown Why this resource has been created
. . . alias Σ 0..* string Other names
. . . min Σ I 0..1 unsignedInt Minimum Cardinality
. . . max Σ I 0..1 string Maximum Cardinality (a number or *)
+ Rule: Max SHALL be a number or "*" "*"
. . . base Σ 0..1 Element Base definition information for tools
. . . . path Σ 1..1 string Path that identifies the base element
. . . . min Σ 1..1 unsignedInt Min cardinality of the base element
. . . . max Σ 1..1 string Max cardinality of the base element
. . . contentReference Σ I 0..1 uri Reference to definition of content for the element
. . . type Σ I 0..* Element Data type and Profile for this element
+ Rule: Aggregation may only be specified if one of the allowed types for the element is a resource reference
+ Rule: targetProfile is only allowed if the type is reference or canonical
. . . . code Σ 1..1 uri Data type or Resource (reference to definition)
FHIRDefinedType ( Extensible )
. . . . profile Σ 0..1 0..* uri canonical ( StructureDefinition | ImplementationGuide ) Profile (StructureDefinition) to apply (or Profiles (StructureDefinition or IG) - one must apply
. . . . targetProfile Σ 0..1 0..* uri canonical ( StructureDefinition | ImplementationGuide ) Profile (StructureDefinition) to apply to reference target (or (StructureDefinition or IG) on the Reference/canonical target - one must apply
. . . . aggregation Σ I 0..* code contained | referenced | bundled - how aggregated
AggregationMode ( Required )
. . . . versioning Σ 0..1 code either | independent | specific
ReferenceVersionRules ( Required )
. . . defaultValue[x] Σ I 0..1 * Specified value if missing from instance
. . . meaningWhenMissing Σ I 0..1 markdown Implicit meaning when this element is missing
. . . orderMeaning Σ 0..1 string What the order of the elements means
. . . fixed[x] Σ I 0..1 * Value must be exactly this
. . . pattern[x] Σ I 0..1 * Value must have at least these property values
. . . example Σ 0..* Element Example value (as defined for type)
. . . . label Σ 1..1 string Describes the purpose of this example
. . . . value[x] Σ 1..1 * Value of Example (one of allowed types)
. . . minValue[x] Σ 0..1 Minimum Allowed Value (for some types)
. . . . minValueDate date
. . . . minValueDateTime dateTime
. . . . minValueInstant instant
. . . . minValueTime time
. . . . minValueDecimal decimal
. . . . minValueInteger integer
. . . . minValuePositiveInt positiveInt
. . . . minValueUnsignedInt unsignedInt
. . . . minValueQuantity Quantity
. . . maxValue[x] Σ 0..1 Maximum Allowed Value (for some types)
. . . . maxValueDate date
. . . . maxValueDateTime dateTime
. . . . maxValueInstant instant
. . . . maxValueTime time
. . . . maxValueDecimal decimal
. . . . maxValueInteger integer
. . . . maxValuePositiveInt positiveInt
. . . . maxValueUnsignedInt unsignedInt
. . . . maxValueQuantity Quantity
. . . maxLength Σ 0..1 integer Max length for strings
. . . condition Σ 0..* id Reference to invariant about presence
. . . constraint Σ I 0..* Element Condition that must evaluate to true
+ Warning: Constraints should have an expression or else validators will not be able to enforce them
. . . . key Σ I 1..1 id Target of 'condition' reference above
. . . . requirements Σ 0..1 string Why this constraint is necessary or appropriate
. . . . severity Σ 1..1 code error | warning
ConstraintSeverity ( Required )
. . . . human Σ 1..1 string Human description of constraint
. . . . expression Σ 1..1 0..1 string FHIRPath expression of constraint
. . . . xpath Σ TU 0..1 string XPath expression of constraint
. . . . source Σ 0..1 uri canonical ( StructureDefinition ) Reference to original source of constraint
. . . mustSupport Σ 0..1 boolean If the element must be supported
. . . isModifier Σ 0..1 boolean If this modifies the meaning of other elements
. . . isSummary isModifierReason Σ 0..1 string Reason that this element is marked as a modifier
... isSummary Σ 0..1 boolean Include when _summary = true?
. . . binding Σ I 0..1 Element ValueSet details if this is coded
+ Rule: ValueSet as a URI SHALL start with http:// or https:// or urn:
. . . . strength Σ 1..1 code required | extensible | preferred | example
BindingStrength ( Required )
. . . . description Σ I 0..1 string Human explanation of the value set
. . . valueSet[x] . valueSet Σ I 0..1 Source of value set valueSetUri uri valueSetReference Reference canonical ( ValueSet ) Source of value set
. . . mapping Σ 0..* Element Map element to another set of definitions
. . . . identity Σ 1..1 id Reference to mapping declaration
. . . . language Σ 0..1 code Computable language of mapping
MimeType ( Required )
. . . . map Σ 1..1 string Details of the mapping
. . . . comment Σ 0..1 string Comments about the mapping or its use

doco Documentation for this format

UML Diagram ( Legend )

Element BackboneElement Extensions - as described for all elements: additional information that is not part of the basic definition of the resource / type extension : Extension 0..* Modifier Extensions - as described for some elements: additional information that is not part of the basic definition of the resource / type that modifies the interpretation of the containing element modifierExtension : Extension 0..* ElementDefinition The path identifies the element and is expressed as a "."-separated "."-separated list of ancestor elements, beginning with the name of the resource or extension path : string [1..1] Codes that define how this element is represented in instances, when the deviation varies from the normal case representation : code [0..*] « How a property is represented when serialized. (Strength=Required) PropertyRepresentation ! » The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element sliceName : string [0..1] If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName sliceIsConstraining : boolean [0..1] A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form label : string [0..1] A code that has the same meaning as the element in a particular terminology code : Coding [0..*] « Codes that indicate the meaning of a data element. (Strength=Example) LOINC LOINCCodes ?? » A concise description of what this element means (e.g. for use in autogenerated summaries) short : string [0..1] Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource resource. (Note: The text you are reading is specified in ElementDefinition.definition) definition : markdown [0..1] Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc etc. (Note: The text you are reading is specified in ElementDefinition.comment) comment : markdown [0..1] This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element requirements : markdown [0..1] Identifies additional names by which this element might also be known alias : string [0..*] The minimum number of times this element SHALL appear in the instance min : unsignedInt [0..1] The maximum number of times this element is permitted to appear in the instance max : string [0..1] Identifies the identity of an element defined elsewhere in the profile definition whose content rules should be applied to the current element element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc contentReference : uri [0..1] The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false') defaultValue[x] : * [0..1] The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing' ongoing') meaningWhenMissing : markdown [0..1] If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning orderMeaning : string [0..1] Specifies a value that SHALL be exactly the value for this element in the instance. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing fixed[x] : * [0..1] Specifies a value that the value in the instance SHALL follow - that is, any value in the pattern must be found in the instance. Other additional values may be found too. This is effectively constraint by example. The values of elements present in the pattern must match exactly (case-sensitive, accent-sensitive, etc.) pattern[x] : * [0..1] The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity minValue[x] : Type [0..1] « date | dateTime | instant | time | decimal | integer | positiveInt | unsignedInt | Quantity » The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity maxValue[x] : Type [0..1] « date | dateTime | instant | time | decimal | integer | positiveInt | unsignedInt | Quantity » Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element maxLength : integer [0..1] A reference to an invariant that may make additional statements about the cardinality or value in the instance condition : id [0..*] If true, implementations that produce or consume resources SHALL provide "support" "support" for the element in some meaningful way. If false, the element may be ignored and not supported supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation mustSupport : boolean [0..1] If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system isModifier : boolean [0..1] Explains how that element affects the interpretation of the resource or element that contains it isModifierReason : string [0..1] Whether the element should be included if a client requests a search with the parameter _summary=true isSummary : boolean [0..1] Slicing A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated description : string [0..1] If the matching elements have to occur in the same order as defined in the profile ordered : boolean [0..1] Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end rules : code [1..1] « How slices are interpreted when evaluating an instance. (Strength=Required) SlicingRules ! » Discriminator How the element value is interpreted when discrimination is evaluated type : code [1..1] « How an element value is interpreted when discrimination is evaluated evaluated. (Strength=Required) DiscriminatorType ! » A FHIRPath expression, using a restricted [the simple subset of FHIRPath, FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based path : string [1..1] Base The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.base path : string [1..1] Minimum cardinality of the base element identified by the path min : unsignedInt [1..1] Maximum cardinality of the base element identified by the path max : string [1..1] TypeRef URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models code : uri [1..1] « Either a resource or a data type, including logical model types types. (Strength=Extensible) FHIRDefinedType + » Identifies a profile structure or implementation Guide that SHALL hold for applies to the datatype this element refers to. Can If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the resource type SHALL conform to at least one profile defined in the implementation guide profile : uri canonical [0..1] [0..*] « StructureDefinition | ImplementationGuide » Identifies Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that SHALL hold for applies to the target of the reference this element refers to. Can If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide targetProfile : uri canonical [0..1] [0..*] « StructureDefinition | ImplementationGuide » If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle aggregation : code [0..*] « How resource references can be aggregated. (Strength=Required) AggregationMode ! » Whether this reference needs to be version specific or version independent, or whether either can be used versioning : code [0..1] « Whether a reference needs to be version specific or version independent, or whether either can be used used. (Strength=Required) ReferenceVersionRules ! » Example Describes the purpose of this example amoung the set of examples label : string [1..1] The actual value for the element, which must be one of the types allowed for this element value[x] : * [1..1] Constraint Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality key : id [1..1] Description of why this constraint is necessary or appropriate requirements : string [0..1] Identifies the impact constraint violation has on the conformance of the instance severity : code [1..1] « SHALL applications comply with this constraint? (Strength=Required) ConstraintSeverity ! » Text that can be used to describe the constraint in messages identifying that the constraint has been violated human : string [1..1] A [FHIRPath](http://hl7.org/fluentpath) [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met expression : string [1..1] [0..1] An XPath expression of constraint that can be executed to see if this constraint is met xpath : string [0..1] A reference to the original source of the constraint, for traceability purposes source : uri canonical [0..1] « StructureDefinition » ElementDefinitionBinding Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances strength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required) BindingStrength ! » Describes the intended use of this particular set of codes description : string [0..1] Points Refers to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used. If the binding refers to an explicit value set - the normal case - then use a Reference(ValueSet) preferably containing the canonical URL for the value set. If the reference is to an implicit value set - usually, an IETF RFC that defines a grammar, such as mime types - then use a uri valueSet[x] valueSet : Type canonical [0..1] uri | Reference ( « ValueSet ) » Mapping An internal reference to the definition of a mapping identity : id [1..1] Identifies the computable language in which mapping.map is expressed language : code [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required) MimeType Mime Types ! » Expresses what part of the target specification corresponds to this element map : string [1..1] Comments that provide information about the mapping or its use comment : string [0..1] Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices discriminator [0..*] Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set) slicing [0..1] Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. This information is provided when When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same base [0..1] The data type or resource that the value of this element is permitted to be type [0..*] A sample value for this element demonstrating the type of information that would typically be found in the element example [0..*] Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance constraint [0..*] Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri) binding [0..1] Identifies a concept from an external specification that roughly corresponds to this element mapping [0..*]

XML Template

<
 <!-- from Element:  -->
 <
 <
 <
 <

<ElementDefinition xmlns="http://hl7.org/fhir">
 <!-- from BackboneElement: extension, modifierExtension -->
 <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) -->
 <sliceIsConstraining value="[boolean]"/><!-- 0..1 If this slice definition constrains an inherited slice definition (or not) -->
 <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><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profiles (StructureDefinition or IG) - one must apply --></profile>
  <targetProfile><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply --></targetProfile>
  <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]"/><!-- 0..1 FHIRPath expression of constraint -->
  <xpath value="[string]"/><!-- 0..1 XPath expression of constraint -->
  <source><!-- 0..1 canonical(StructureDefinition) Reference to original source of constraint --></source>

 </constraint>
 <
 <
 <

 <mustSupport value="[boolean]"/><!-- 0..1 If the element must be supported -->
 <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements -->
 <isModifierReason value="[string]"/><!-- 0..1 Reason that this element is marked as a modifier -->
 <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? -->

 <binding>  <!-- ?? 0..1 ValueSet details if this is coded -->
  <
  <
  <</valueSet[x]>

  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- 0..1 Human explanation of the value set -->
  <valueSet><!-- ?? 0..1 canonical(ValueSet) Source of value set --></valueSet>

 </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]>

</ElementDefinition>

JSON Template


{doco
  // from Element: 
  "
  "
  "
  "
  "
  "
    "
      "
      "

  // from BackboneElement: extension, modifierExtension
  "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)
  "sliceIsConstraining" : <boolean>, // If this slice definition constrains an inherited slice definition (or not)
  "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" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profiles (StructureDefinition or IG) - one must apply
    "targetProfile" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
    "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
    "versioning" : "<code>" // either | independent | specific

  }],
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  "
  "
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  "
    "
    
    ">
    ">
    ">"
    ">"
    ">"
    ">"
    ">"
    ">
    ">"
    ">"
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }

  // defaultValue[x]: Specified value if missing from instance. One of these 49:
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCanonical" : "<canonical>",
  "defaultValueCode" : "<code>",
  "defaultValueDate" : "<date>",
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDecimal" : <decimal>,
  "defaultValueId" : "<id>",
  "defaultValueInstant" : "<instant>",
  "defaultValueInteger" : <integer>,
  "defaultValueMarkdown" : "<markdown>",
  "defaultValueOid" : "<oid>",
  "defaultValuePositiveInt" : "<positiveInt>",
  "defaultValueString" : "<string>",
  "defaultValueTime" : "<time>",
  "defaultValueUnsignedInt" : "<unsignedInt>",
  "defaultValueUri" : "<uri>",
  "defaultValueUrl" : "<url>",
  "defaultValueUuid" : "<uuid>",
  "defaultValueAddress" : { Address },
  "defaultValueAge" : { Age },
  "defaultValueAnnotation" : { Annotation },
  "defaultValueAttachment" : { Attachment },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueCoding" : { Coding },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueCount" : { Count },
  "defaultValueDistance" : { Distance },
  "defaultValueDuration" : { Duration },
  "defaultValueHumanName" : { HumanName },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueMoney" : { Money },
  "defaultValuePeriod" : { Period },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValueRatio" : { Ratio },
  "defaultValueReference" : { Reference },
  "defaultValueSampledData" : { SampledData },
  "defaultValueSignature" : { Signature },
  "defaultValueTiming" : { Timing },
  "defaultValueParameterDefinition" : { ParameterDefinition },
  "defaultValueDataRequirement" : { DataRequirement },
  "defaultValueRelatedArtifact" : { RelatedArtifact },
  "defaultValueContactDetail" : { ContactDetail },
  "defaultValueContributor" : { Contributor },
  "defaultValueTriggerDefinition" : { TriggerDefinition },
  "defaultValueExpression" : { Expression },
  "defaultValueUsageContext" : { UsageContext },
  "defaultValueDosage" : { Dosage },
  "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 49:

  "fixedBase64Binary" : "<base64Binary>",
  "fixedBoolean" : <boolean>,
  "fixedCanonical" : "<canonical>",
  "fixedCode" : "<code>",
  "fixedDate" : "<date>",
  "fixedDateTime" : "<dateTime>",
  "fixedDecimal" : <decimal>,
  "fixedId" : "<id>",
  "fixedInstant" : "<instant>",
  "fixedInteger" : <integer>,
  "fixedMarkdown" : "<markdown>",
  "fixedOid" : "<oid>",
  "fixedPositiveInt" : "<positiveInt>",
  "fixedString" : "<string>",
  "fixedTime" : "<time>",
  "fixedUnsignedInt" : "<unsignedInt>",
  "fixedUri" : "<uri>",
  "fixedUrl" : "<url>",
  "fixedUuid" : "<uuid>",
  "fixedAddress" : { Address },
  "fixedAge" : { Age },
  "fixedAnnotation" : { Annotation },
  "fixedAttachment" : { Attachment },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedCoding" : { Coding },
  "fixedContactPoint" : { ContactPoint },
  "fixedCount" : { Count },
  "fixedDistance" : { Distance },
  "fixedDuration" : { Duration },
  "fixedHumanName" : { HumanName },
  "fixedIdentifier" : { Identifier },
  "fixedMoney" : { Money },
  "fixedPeriod" : { Period },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedRatio" : { Ratio },
  "fixedReference" : { Reference },
  "fixedSampledData" : { SampledData },
  "fixedSignature" : { Signature },
  "fixedTiming" : { Timing },
  "fixedParameterDefinition" : { ParameterDefinition },
  "fixedDataRequirement" : { DataRequirement },
  "fixedRelatedArtifact" : { RelatedArtifact },
  "fixedContactDetail" : { ContactDetail },
  "fixedContributor" : { Contributor },
  "fixedTriggerDefinition" : { TriggerDefinition },
  "fixedExpression" : { Expression },
  "fixedUsageContext" : { UsageContext },
  "fixedDosage" : { Dosage },
  // pattern[x]: Value must have at least these property values. One of these 49:

  "patternBase64Binary" : "<base64Binary>",
  "patternBoolean" : <boolean>,
  "patternCanonical" : "<canonical>",
  "patternCode" : "<code>",
  "patternDate" : "<date>",
  "patternDateTime" : "<dateTime>",
  "patternDecimal" : <decimal>,
  "patternId" : "<id>",
  "patternInstant" : "<instant>",
  "patternInteger" : <integer>,
  "patternMarkdown" : "<markdown>",
  "patternOid" : "<oid>",
  "patternPositiveInt" : "<positiveInt>",
  "patternString" : "<string>",
  "patternTime" : "<time>",
  "patternUnsignedInt" : "<unsignedInt>",
  "patternUri" : "<uri>",
  "patternUrl" : "<url>",
  "patternUuid" : "<uuid>",
  "patternAddress" : { Address },
  "patternAge" : { Age },
  "patternAnnotation" : { Annotation },
  "patternAttachment" : { Attachment },
  "patternCodeableConcept" : { CodeableConcept },
  "patternCoding" : { Coding },
  "patternContactPoint" : { ContactPoint },
  "patternCount" : { Count },
  "patternDistance" : { Distance },
  "patternDuration" : { Duration },
  "patternHumanName" : { HumanName },
  "patternIdentifier" : { Identifier },
  "patternMoney" : { Money },
  "patternPeriod" : { Period },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternRatio" : { Ratio },
  "patternReference" : { Reference },
  "patternSampledData" : { SampledData },
  "patternSignature" : { Signature },
  "patternTiming" : { Timing },
  "patternParameterDefinition" : { ParameterDefinition },
  "patternDataRequirement" : { DataRequirement },
  "patternRelatedArtifact" : { RelatedArtifact },
  "patternContactDetail" : { ContactDetail },
  "patternContributor" : { Contributor },
  "patternTriggerDefinition" : { TriggerDefinition },
  "patternExpression" : { Expression },
  "patternUsageContext" : { UsageContext },
  "patternDosage" : { Dosage },
  "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 49:

    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>
    "valueCanonical" : "<canonical>"
    "valueCode" : "<code>"
    "valueDate" : "<date>"
    "valueDateTime" : "<dateTime>"
    "valueDecimal" : <decimal>
    "valueId" : "<id>"
    "valueInstant" : "<instant>"
    "valueInteger" : <integer>
    "valueMarkdown" : "<markdown>"
    "valueOid" : "<oid>"
    "valuePositiveInt" : "<positiveInt>"
    "valueString" : "<string>"
    "valueTime" : "<time>"
    "valueUnsignedInt" : "<unsignedInt>"
    "valueUri" : "<uri>"
    "valueUrl" : "<url>"
    "valueUuid" : "<uuid>"
    "valueAddress" : { Address }
    "valueAge" : { Age }
    "valueAnnotation" : { Annotation }
    "valueAttachment" : { Attachment }
    "valueCodeableConcept" : { CodeableConcept }
    "valueCoding" : { Coding }
    "valueContactPoint" : { ContactPoint }
    "valueCount" : { Count }
    "valueDistance" : { Distance }
    "valueDuration" : { Duration }
    "valueHumanName" : { HumanName }
    "valueIdentifier" : { Identifier }
    "valueMoney" : { Money }
    "valuePeriod" : { Period }
    "valueQuantity" : { Quantity }
    "valueRange" : { Range }
    "valueRatio" : { Ratio }
    "valueReference" : { Reference }
    "valueSampledData" : { SampledData }
    "valueSignature" : { Signature }
    "valueTiming" : { Timing }
    "valueParameterDefinition" : { ParameterDefinition }
    "valueDataRequirement" : { DataRequirement }
    "valueRelatedArtifact" : { RelatedArtifact }
    "valueContactDetail" : { ContactDetail }
    "valueContributor" : { Contributor }
    "valueTriggerDefinition" : { TriggerDefinition }
    "valueExpression" : { Expression }
    "valueUsageContext" : { UsageContext }
    "valueDosage" : { Dosage }

  }],
  // 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>", // FHIRPath expression of constraint
    "xpath" : "<string>", // XPath expression of constraint
    "source" : { canonical(StructureDefinition) } // Reference to original source of constraint

  }],
  "
  "
  "
  "
    "
    "
    
    ">"
    " }

  "mustSupport" : <boolean>, // If the element must be supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isModifierReason" : "<string>", // Reason that this element is marked as a modifier
  "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" : { canonical(ValueSet) } // C? Source of value set

  },
  "
    "
    "
    "
    "

  "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: 

 # from BackboneElement: Element.extension, BackboneElement.modifierextension

  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.sliceIsConstraining [ boolean ]; # 0..1 If this slice definition constrains an inherited slice definition (or not)

  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:

      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:
  fhir:

  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:

  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:

  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:
    fhir:

    fhir:ElementDefinition.type.profile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profiles (StructureDefinition or IG) - one must apply
    fhir:ElementDefinition.type.targetProfile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply

    fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated
    fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific
  ], ...;
  # . One of these 38

  # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 49

    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCanonical [ canonical ]

    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.defaultValueUrl [ url ]
    fhir:ElementDefinition.defaultValueUuid [ uuid ]

    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: ]
  fhir:

    fhir:ElementDefinition.defaultValueParameterDefinition [ ParameterDefinition ]
    fhir:ElementDefinition.defaultValueDataRequirement [ DataRequirement ]
    fhir:ElementDefinition.defaultValueRelatedArtifact [ RelatedArtifact ]
    fhir:ElementDefinition.defaultValueContactDetail [ ContactDetail ]
    fhir:ElementDefinition.defaultValueContributor [ Contributor ]
    fhir:ElementDefinition.defaultValueTriggerDefinition [ TriggerDefinition ]
    fhir:ElementDefinition.defaultValueExpression [ Expression ]
    fhir:ElementDefinition.defaultValueUsageContext [ UsageContext ]
    fhir:ElementDefinition.defaultValueDosage [ Dosage ]
  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
  # . One of these 38

  # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 49

    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCanonical [ canonical ]

    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.fixedUrl [ url ]
    fhir:ElementDefinition.fixedUuid [ uuid ]

    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: ]
  # . One of these 38

    fhir:ElementDefinition.fixedParameterDefinition [ ParameterDefinition ]
    fhir:ElementDefinition.fixedDataRequirement [ DataRequirement ]
    fhir:ElementDefinition.fixedRelatedArtifact [ RelatedArtifact ]
    fhir:ElementDefinition.fixedContactDetail [ ContactDetail ]
    fhir:ElementDefinition.fixedContributor [ Contributor ]
    fhir:ElementDefinition.fixedTriggerDefinition [ TriggerDefinition ]
    fhir:ElementDefinition.fixedExpression [ Expression ]
    fhir:ElementDefinition.fixedUsageContext [ UsageContext ]
    fhir:ElementDefinition.fixedDosage [ Dosage ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 49

    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCanonical [ canonical ]

    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.patternUrl [ url ]
    fhir:ElementDefinition.patternUuid [ uuid ]

    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: ]

    fhir:ElementDefinition.patternParameterDefinition [ ParameterDefinition ]
    fhir:ElementDefinition.patternDataRequirement [ DataRequirement ]
    fhir:ElementDefinition.patternRelatedArtifact [ RelatedArtifact ]
    fhir:ElementDefinition.patternContactDetail [ ContactDetail ]
    fhir:ElementDefinition.patternContributor [ Contributor ]
    fhir:ElementDefinition.patternTriggerDefinition [ TriggerDefinition ]
    fhir:ElementDefinition.patternExpression [ Expression ]
    fhir:ElementDefinition.patternUsageContext [ UsageContext ]
    fhir:ElementDefinition.patternDosage [ Dosage ]

  fhir:ElementDefinition.example [ # 0..* Example value (as defined for type)
    fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example
    # . One of these 38

    # ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 49

      fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ]
      fhir:ElementDefinition.example.valueBoolean [ boolean ]
      fhir:ElementDefinition.example.valueCanonical [ canonical ]

      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.valueUrl [ url ]
      fhir:ElementDefinition.example.valueUuid [ uuid ]

      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: ]

      fhir:ElementDefinition.example.valueParameterDefinition [ ParameterDefinition ]
      fhir:ElementDefinition.example.valueDataRequirement [ DataRequirement ]
      fhir:ElementDefinition.example.valueRelatedArtifact [ RelatedArtifact ]
      fhir:ElementDefinition.example.valueContactDetail [ ContactDetail ]
      fhir:ElementDefinition.example.valueContributor [ Contributor ]
      fhir:ElementDefinition.example.valueTriggerDefinition [ TriggerDefinition ]
      fhir:ElementDefinition.example.valueExpression [ Expression ]
      fhir:ElementDefinition.example.valueUsageContext [ UsageContext ]
      fhir:ElementDefinition.example.valueDosage [ Dosage ]

  ], ...;
  # 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:

    fhir:ElementDefinition.constraint.expression [ string ]; # 0..1 FHIRPath expression of constraint

    fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraint
    fhir:

    fhir:ElementDefinition.constraint.source [ canonical(StructureDefinition) ]; # 0..1 Reference to original source of constraint

  ], ...;
  fhir:

  fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must be supported

  fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements
  fhir:ElementDefinition.isModifierReason [ string ]; # 0..1 Reason that this element is marked as a modifier

  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
    # . One of these 2
      fhir: ]
      fhir:) ]

    fhir:ElementDefinition.binding.valueSet [ canonical(ValueSet) ]; # 0..1 Source of value set

  ];
  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 Release 3


ElementDefinition.representation Add Codes xmlText, typeAttr, cdaText, xhtml ElementDefinition.sliceName
ElementDefinition Renamed from name to sliceName ElementDefinition.slicing.discriminator Type changed from string to Element ElementDefinition.slicing.discriminator.type Added Element
ElementDefinition.slicing.discriminator.path ElementDefinition.sliceIsConstraining
  • Added Element
ElementDefinition.comment ElementDefinition.slicing.ordered
  • Renamed from comments to comment Default Value "false" removed
ElementDefinition.min ElementDefinition.type.profile
  • Type Max Cardinality changed from integer 1 to unsignedInt *
  • ElementDefinition.base.min
  • Type changed from integer uri to unsignedInt canonical
ElementDefinition.contentReference ElementDefinition.type.targetProfile
  • Renamed from nameReference to contentReference Type Max Cardinality changed from string 1 to uri *
  • ElementDefinition.type.code
  • Type changed from code to uri Change binding strength from required to extensible canonical
ElementDefinition.type.profile Max Cardinality changed from * to 1 ElementDefinition.type.targetProfile Added Element ElementDefinition.type.versioning
  • Added Element Default Value "either" removed
ElementDefinition.defaultValue[x]
  • Remove Meta, Add Age, canonical, Add Count, url, Add Distance, uuid, Add Duration, ParameterDefinition, Add Money DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.orderMeaning ElementDefinition.fixed[x]
  • Added Element Remove Meta, Add canonical, Add url, Add uuid, Add ParameterDefinition, Add DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.fixed[x] ElementDefinition.pattern[x]
  • Remove Meta, Add Age, canonical, Add Count, url, Add Distance, uuid, Add Duration, ParameterDefinition, Add Money DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.pattern[x] ElementDefinition.example.value[x]
  • Remove Meta, Add Age, canonical, Add Count, url, Add Distance, uuid, Add Duration, ParameterDefinition, Add Money DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.example ElementDefinition.constraint.expression
  • Renamed from example[x] to example Max Min 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 0
ElementDefinition.example.value[x] ElementDefinition.constraint.source
  • Added Element Type changed from uri to canonical
ElementDefinition.minValue[x] ElementDefinition.mustSupport
  • 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 Default Value "false" removed
ElementDefinition.maxValue[x] ElementDefinition.isModifier
  • 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 Default Value "false" removed
ElementDefinition.constraint.expression ElementDefinition.isModifierReason
  • Added Element
ElementDefinition.constraint.xpath ElementDefinition.isSummary
  • Min Cardinality changed from 1 to 0 Default Value "false" removed
ElementDefinition.constraint.source ElementDefinition.binding.valueSet
  • Added Element Renamed from valueSet[x] to valueSet
  • ElementDefinition.mapping.comment
  • Added Element Remove uri, Remove Reference(ValueSet), Add canonical

See the Full Difference for further information

Structure

Source of value set valueSetUri uri valueSetReference
Name Flags Card. Type Description & Constraints doco
. . ElementDefinition Σ I N Element BackBoneElement Definition of an element in a resource or extension
+ Rule: Min <= Max
+ Rule: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
+ Pattern Rule: Fixed value may only be specified if there is one type
+ Fixed value Rule: Pattern may only be specified if there is one type
+ Rule: Pattern and value are mutually exclusive
+ Rule: Binding can only be present for coded elements, string, and uri
+ Pattern and value are mutually exclusive Rule: Types must be unique by code
+ Rule: Constraints must be unique by key
+ Types must be unique by the combination of code Rule: default value and profile meaningWhenMissing are mutually exclusive
+ Rule: sliceName must be composed of proper tokens separated by "/" "/"
+ default value and meaningWhenMissing are mutually exclusive Rule: Must have a modifier reason if isModifier = true
+ Rule: Element names cannot include some special characters
+ Warning: Element names should be simple alphanumerics, or code generation tools may be broken
+ Rule: sliceIsConstraining can only appear if slicename is present
Elements defined in Ancestors: id , extension , modifierExtension
. . . path Σ 1..1 string Path of the element in the hierarchy of elements
. . . representation Σ 0..* code xmlAttr | xmlText | typeAttr | cdaText | xhtml
PropertyRepresentation ( Required )
. . . sliceName Σ 0..1 string Name for this particular element (in a set of slices)
. . . label sliceIsConstraining Σ TU 0..1 boolean If this slice definition constrains an inherited slice definition (or not)
... label Σ 0..1 string Name for element to display with or prompt for element
. . . code Σ 0..* Coding Corresponding codes in terminologies
LOINC Codes ( Example )
. . . slicing Σ I 0..1 Element This element is sliced - slices follow
+ Rule: If there are no discriminators, there must be a definition
. . . . discriminator Σ 0..* Element Element values that are used to distinguish the slices
. . . . . type Σ 1..1 code value | exists | pattern | type | profile
DiscriminatorType ( Required )
. . . . . path Σ 1..1 string Path to element value
. . . . description Σ I 0..1 string Text description of how slicing works (or not)
. . . . ordered Σ 0..1 boolean If elements must be in same order as slices
. . . . rules Σ 1..1 code closed | open | openAtEnd
SlicingRules ( Required )
. . . short Σ 0..1 string Concise definition for space-constrained presentation
. . . definition Σ 0..1 markdown Full formal definition as narrative text
. . . comment Σ 0..1 markdown Comments about the use of this element
. . . requirements Σ 0..1 markdown Why this resource has been created
. . . alias Σ 0..* string Other names
. . . min Σ I 0..1 unsignedInt Minimum Cardinality
. . . max Σ I 0..1 string Maximum Cardinality (a number or *)
+ Rule: Max SHALL be a number or "*" "*"
. . . base Σ 0..1 Element Base definition information for tools
. . . . path Σ 1..1 string Path that identifies the base element
. . . . min Σ 1..1 unsignedInt Min cardinality of the base element
. . . . max Σ 1..1 string Max cardinality of the base element
. . . contentReference Σ I 0..1 uri Reference to definition of content for the element
. . . type Σ I 0..* Element Data type and Profile for this element
+ Rule: Aggregation may only be specified if one of the allowed types for the element is a resource reference
+ Rule: targetProfile is only allowed if the type is reference or canonical
. . . . code Σ 1..1 uri Data type or Resource (reference to definition)
FHIRDefinedType ( Extensible )
. . . . profile Σ 0..1 0..* uri canonical ( StructureDefinition | ImplementationGuide ) Profile (StructureDefinition) to apply (or Profiles (StructureDefinition or IG) - one must apply
. . . . targetProfile Σ 0..1 0..* uri canonical ( StructureDefinition | ImplementationGuide ) Profile (StructureDefinition) to apply to reference target (or (StructureDefinition or IG) on the Reference/canonical target - one must apply
. . . . aggregation Σ I 0..* code contained | referenced | bundled - how aggregated
AggregationMode ( Required )
. . . . versioning Σ 0..1 code either | independent | specific
ReferenceVersionRules ( Required )
. . . defaultValue[x] Σ I 0..1 * Specified value if missing from instance
. . . meaningWhenMissing Σ I 0..1 markdown Implicit meaning when this element is missing
. . . orderMeaning Σ 0..1 string What the order of the elements means
. . . fixed[x] Σ I 0..1 * Value must be exactly this
. . . pattern[x] Σ I 0..1 * Value must have at least these property values
. . . example Σ 0..* Element Example value (as defined for type)
. . . . label Σ 1..1 string Describes the purpose of this example
. . . . value[x] Σ 1..1 * Value of Example (one of allowed types)
. . . minValue[x] Σ 0..1 Minimum Allowed Value (for some types)
. . . . minValueDate date
. . . . minValueDateTime dateTime
. . . . minValueInstant instant
. . . . minValueTime time
. . . . minValueDecimal decimal
. . . . minValueInteger integer
. . . . minValuePositiveInt positiveInt
. . . . minValueUnsignedInt unsignedInt
. . . . minValueQuantity Quantity
. . . maxValue[x] Σ 0..1 Maximum Allowed Value (for some types)
. . . . maxValueDate date
. . . . maxValueDateTime dateTime
. . . . maxValueInstant instant
. . . . maxValueTime time
. . . . maxValueDecimal decimal
. . . . maxValueInteger integer
. . . . maxValuePositiveInt positiveInt
. . . . maxValueUnsignedInt unsignedInt
. . . . maxValueQuantity Quantity
. . . maxLength Σ 0..1 integer Max length for strings
. . . condition Σ 0..* id Reference to invariant about presence
. . . constraint Σ I 0..* Element Condition that must evaluate to true
+ Warning: Constraints should have an expression or else validators will not be able to enforce them
. . . . key Σ I 1..1 id Target of 'condition' reference above
. . . . requirements Σ 0..1 string Why this constraint is necessary or appropriate
. . . . severity Σ 1..1 code error | warning
ConstraintSeverity ( Required )
. . . . human Σ 1..1 string Human description of constraint
. . . . expression Σ 1..1 0..1 string FHIRPath expression of constraint
. . . . xpath Σ TU 0..1 string XPath expression of constraint
. . . . source Σ 0..1 uri canonical ( StructureDefinition ) Reference to original source of constraint
. . . mustSupport Σ 0..1 boolean If the element must be supported
. . . isModifier Σ 0..1 boolean If this modifies the meaning of other elements
. . . isSummary isModifierReason Σ 0..1 string Reason that this element is marked as a modifier
... isSummary Σ 0..1 boolean Include when _summary = true?
. . . binding Σ I 0..1 Element ValueSet details if this is coded
+ Rule: ValueSet as a URI SHALL start with http:// or https:// or urn:
. . . . strength Σ 1..1 code required | extensible | preferred | example
BindingStrength ( Required )
. . . . description Σ I 0..1 string Human explanation of the value set
. . . valueSet[x] . valueSet Σ I 0..1 Reference canonical ( ValueSet ) Source of value set
. . . mapping Σ 0..* Element Map element to another set of definitions
. . . . identity Σ 1..1 id Reference to mapping declaration
. . . . language Σ 0..1 code Computable language of mapping
MimeType ( Required )
. . . . map Σ 1..1 string Details of the mapping
. . . . comment Σ 0..1 string Comments about the mapping or its use

doco Documentation for this format

UML Diagram ( Legend )

Element BackboneElement Extensions - as described for all elements: additional information that is not part of the basic definition of the resource / type extension : Extension 0..* Modifier Extensions - as described for some elements: additional information that is not part of the basic definition of the resource / type that modifies the interpretation of the containing element modifierExtension : Extension 0..* ElementDefinition The path identifies the element and is expressed as a "."-separated "."-separated list of ancestor elements, beginning with the name of the resource or extension path : string [1..1] Codes that define how this element is represented in instances, when the deviation varies from the normal case representation : code [0..*] « How a property is represented when serialized. (Strength=Required) PropertyRepresentation ! » The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same element sliceName : string [0..1] If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceName sliceIsConstraining : boolean [0..1] A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form label : string [0..1] A code that has the same meaning as the element in a particular terminology code : Coding [0..*] « Codes that indicate the meaning of a data element. (Strength=Example) LOINC LOINCCodes ?? » A concise description of what this element means (e.g. for use in autogenerated summaries) short : string [0..1] Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource resource. (Note: The text you are reading is specified in ElementDefinition.definition) definition : markdown [0..1] Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc etc. (Note: The text you are reading is specified in ElementDefinition.comment) comment : markdown [0..1] This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this element requirements : markdown [0..1] Identifies additional names by which this element might also be known alias : string [0..*] The minimum number of times this element SHALL appear in the instance min : unsignedInt [0..1] The maximum number of times this element is permitted to appear in the instance max : string [0..1] Identifies the identity of an element defined elsewhere in the profile definition whose content rules should be applied to the current element element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etc contentReference : uri [0..1] The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false') defaultValue[x] : * [0..1] The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing' ongoing') meaningWhenMissing : markdown [0..1] If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaning orderMeaning : string [0..1] Specifies a value that SHALL be exactly the value for this element in the instance. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missing fixed[x] : * [0..1] Specifies a value that the value in the instance SHALL follow - that is, any value in the pattern must be found in the instance. Other additional values may be found too. This is effectively constraint by example. The values of elements present in the pattern must match exactly (case-sensitive, accent-sensitive, etc.) pattern[x] : * [0..1] The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity minValue[x] : Type [0..1] « date | dateTime | instant | time | decimal | integer | positiveInt | unsignedInt | Quantity » The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and Quantity maxValue[x] : Type [0..1] « date | dateTime | instant | time | decimal | integer | positiveInt | unsignedInt | Quantity » Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the element maxLength : integer [0..1] A reference to an invariant that may make additional statements about the cardinality or value in the instance condition : id [0..*] If true, implementations that produce or consume resources SHALL provide "support" "support" for the element in some meaningful way. If false, the element may be ignored and not supported supported. If false, whether to populate or use the data element in any way is at the discretion of the implementation mustSupport : boolean [0..1] If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular system isModifier : boolean [0..1] Explains how that element affects the interpretation of the resource or element that contains it isModifierReason : string [0..1] Whether the element should be included if a client requests a search with the parameter _summary=true isSummary : boolean [0..1] Slicing A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated description : string [0..1] If the matching elements have to occur in the same order as defined in the profile ordered : boolean [0..1] Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the end rules : code [1..1] « How slices are interpreted when evaluating an instance. (Strength=Required) SlicingRules ! » Discriminator How the element value is interpreted when discrimination is evaluated type : code [1..1] « How an element value is interpreted when discrimination is evaluated evaluated. (Strength=Required) DiscriminatorType ! » A FHIRPath expression, using a restricted [the simple subset of FHIRPath, FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is based path : string [1..1] Base The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.base path : string [1..1] Minimum cardinality of the base element identified by the path min : unsignedInt [1..1] Maximum cardinality of the base element identified by the path max : string [1..1] TypeRef URL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models code : uri [1..1] « Either a resource or a data type, including logical model types types. (Strength=Extensible) FHIRDefinedType + » Identifies a profile structure or implementation Guide that SHALL hold for applies to the datatype this element refers to. Can If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the resource type SHALL conform to at least one profile defined in the implementation guide profile : uri canonical [0..1] [0..*] « StructureDefinition | ImplementationGuide » Identifies Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that SHALL hold for applies to the target of the reference this element refers to. Can If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide targetProfile : uri canonical [0..1] [0..*] « StructureDefinition | ImplementationGuide » If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundle aggregation : code [0..*] « How resource references can be aggregated. (Strength=Required) AggregationMode ! » Whether this reference needs to be version specific or version independent, or whether either can be used versioning : code [0..1] « Whether a reference needs to be version specific or version independent, or whether either can be used used. (Strength=Required) ReferenceVersionRules ! » Example Describes the purpose of this example amoung the set of examples label : string [1..1] The actual value for the element, which must be one of the types allowed for this element value[x] : * [1..1] Constraint Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality key : id [1..1] Description of why this constraint is necessary or appropriate requirements : string [0..1] Identifies the impact constraint violation has on the conformance of the instance severity : code [1..1] « SHALL applications comply with this constraint? (Strength=Required) ConstraintSeverity ! » Text that can be used to describe the constraint in messages identifying that the constraint has been violated human : string [1..1] A [FHIRPath](http://hl7.org/fluentpath) [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is met expression : string [1..1] [0..1] An XPath expression of constraint that can be executed to see if this constraint is met xpath : string [0..1] A reference to the original source of the constraint, for traceability purposes source : uri canonical [0..1] « StructureDefinition » ElementDefinitionBinding Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances strength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required) BindingStrength ! » Describes the intended use of this particular set of codes description : string [0..1] Points Refers to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used. If the binding refers to an explicit value set - the normal case - then use a Reference(ValueSet) preferably containing the canonical URL for the value set. If the reference is to an implicit value set - usually, an IETF RFC that defines a grammar, such as mime types - then use a uri valueSet[x] valueSet : Type canonical [0..1] uri | Reference ( « ValueSet ) » Mapping An internal reference to the definition of a mapping identity : id [1..1] Identifies the computable language in which mapping.map is expressed language : code [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required) MimeType Mime Types ! » Expresses what part of the target specification corresponds to this element map : string [1..1] Comments that provide information about the mapping or its use comment : string [0..1] Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices discriminator [0..*] Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set) slicing [0..1] Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. This information is provided when When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be same base [0..1] The data type or resource that the value of this element is permitted to be type [0..*] A sample value for this element demonstrating the type of information that would typically be found in the element example [0..*] Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance constraint [0..*] Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri) binding [0..1] Identifies a concept from an external specification that roughly corresponds to this element mapping [0..*]

XML Template

<
 <!-- from Element:  -->
 <
 <
 <
 <

<ElementDefinition xmlns="http://hl7.org/fhir">
 <!-- from BackboneElement: extension, modifierExtension -->
 <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) -->
 <sliceIsConstraining value="[boolean]"/><!-- 0..1 If this slice definition constrains an inherited slice definition (or not) -->
 <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><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profiles (StructureDefinition or IG) - one must apply --></profile>
  <targetProfile><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply --></targetProfile>
  <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]"/><!-- 0..1 FHIRPath expression of constraint -->
  <xpath value="[string]"/><!-- 0..1 XPath expression of constraint -->
  <source><!-- 0..1 canonical(StructureDefinition) Reference to original source of constraint --></source>

 </constraint>
 <
 <
 <

 <mustSupport value="[boolean]"/><!-- 0..1 If the element must be supported -->
 <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements -->
 <isModifierReason value="[string]"/><!-- 0..1 Reason that this element is marked as a modifier -->
 <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? -->

 <binding>  <!-- ?? 0..1 ValueSet details if this is coded -->
  <
  <
  <</valueSet[x]>

  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- 0..1 Human explanation of the value set -->
  <valueSet><!-- ?? 0..1 canonical(ValueSet) Source of value set --></valueSet>

 </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]>

</ElementDefinition>

JSON Template

{doco
  // from Element: 
  "
  "
  "
  "
  "
  "
    "
      "
      "

  // from BackboneElement: extension, modifierExtension
  "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)
  "sliceIsConstraining" : <boolean>, // If this slice definition constrains an inherited slice definition (or not)
  "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" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profiles (StructureDefinition or IG) - one must apply
    "targetProfile" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
    "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
    "versioning" : "<code>" // either | independent | specific

  }],
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  "
  "
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  "
    "
    
    ">
    ">
    ">"
    ">"
    ">"
    ">"
    ">"
    ">
    ">"
    ">"
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }
    " }

  // defaultValue[x]: Specified value if missing from instance. One of these 49:
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCanonical" : "<canonical>",
  "defaultValueCode" : "<code>",
  "defaultValueDate" : "<date>",
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDecimal" : <decimal>,
  "defaultValueId" : "<id>",
  "defaultValueInstant" : "<instant>",
  "defaultValueInteger" : <integer>,
  "defaultValueMarkdown" : "<markdown>",
  "defaultValueOid" : "<oid>",
  "defaultValuePositiveInt" : "<positiveInt>",
  "defaultValueString" : "<string>",
  "defaultValueTime" : "<time>",
  "defaultValueUnsignedInt" : "<unsignedInt>",
  "defaultValueUri" : "<uri>",
  "defaultValueUrl" : "<url>",
  "defaultValueUuid" : "<uuid>",
  "defaultValueAddress" : { Address },
  "defaultValueAge" : { Age },
  "defaultValueAnnotation" : { Annotation },
  "defaultValueAttachment" : { Attachment },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueCoding" : { Coding },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueCount" : { Count },
  "defaultValueDistance" : { Distance },
  "defaultValueDuration" : { Duration },
  "defaultValueHumanName" : { HumanName },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueMoney" : { Money },
  "defaultValuePeriod" : { Period },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValueRatio" : { Ratio },
  "defaultValueReference" : { Reference },
  "defaultValueSampledData" : { SampledData },
  "defaultValueSignature" : { Signature },
  "defaultValueTiming" : { Timing },
  "defaultValueParameterDefinition" : { ParameterDefinition },
  "defaultValueDataRequirement" : { DataRequirement },
  "defaultValueRelatedArtifact" : { RelatedArtifact },
  "defaultValueContactDetail" : { ContactDetail },
  "defaultValueContributor" : { Contributor },
  "defaultValueTriggerDefinition" : { TriggerDefinition },
  "defaultValueExpression" : { Expression },
  "defaultValueUsageContext" : { UsageContext },
  "defaultValueDosage" : { Dosage },
  "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 49:

  "fixedBase64Binary" : "<base64Binary>",
  "fixedBoolean" : <boolean>,
  "fixedCanonical" : "<canonical>",
  "fixedCode" : "<code>",
  "fixedDate" : "<date>",
  "fixedDateTime" : "<dateTime>",
  "fixedDecimal" : <decimal>,
  "fixedId" : "<id>",
  "fixedInstant" : "<instant>",
  "fixedInteger" : <integer>,
  "fixedMarkdown" : "<markdown>",
  "fixedOid" : "<oid>",
  "fixedPositiveInt" : "<positiveInt>",
  "fixedString" : "<string>",
  "fixedTime" : "<time>",
  "fixedUnsignedInt" : "<unsignedInt>",
  "fixedUri" : "<uri>",
  "fixedUrl" : "<url>",
  "fixedUuid" : "<uuid>",
  "fixedAddress" : { Address },
  "fixedAge" : { Age },
  "fixedAnnotation" : { Annotation },
  "fixedAttachment" : { Attachment },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedCoding" : { Coding },
  "fixedContactPoint" : { ContactPoint },
  "fixedCount" : { Count },
  "fixedDistance" : { Distance },
  "fixedDuration" : { Duration },
  "fixedHumanName" : { HumanName },
  "fixedIdentifier" : { Identifier },
  "fixedMoney" : { Money },
  "fixedPeriod" : { Period },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedRatio" : { Ratio },
  "fixedReference" : { Reference },
  "fixedSampledData" : { SampledData },
  "fixedSignature" : { Signature },
  "fixedTiming" : { Timing },
  "fixedParameterDefinition" : { ParameterDefinition },
  "fixedDataRequirement" : { DataRequirement },
  "fixedRelatedArtifact" : { RelatedArtifact },
  "fixedContactDetail" : { ContactDetail },
  "fixedContributor" : { Contributor },
  "fixedTriggerDefinition" : { TriggerDefinition },
  "fixedExpression" : { Expression },
  "fixedUsageContext" : { UsageContext },
  "fixedDosage" : { Dosage },
  // pattern[x]: Value must have at least these property values. One of these 49:

  "patternBase64Binary" : "<base64Binary>",
  "patternBoolean" : <boolean>,
  "patternCanonical" : "<canonical>",
  "patternCode" : "<code>",
  "patternDate" : "<date>",
  "patternDateTime" : "<dateTime>",
  "patternDecimal" : <decimal>,
  "patternId" : "<id>",
  "patternInstant" : "<instant>",
  "patternInteger" : <integer>,
  "patternMarkdown" : "<markdown>",
  "patternOid" : "<oid>",
  "patternPositiveInt" : "<positiveInt>",
  "patternString" : "<string>",
  "patternTime" : "<time>",
  "patternUnsignedInt" : "<unsignedInt>",
  "patternUri" : "<uri>",
  "patternUrl" : "<url>",
  "patternUuid" : "<uuid>",
  "patternAddress" : { Address },
  "patternAge" : { Age },
  "patternAnnotation" : { Annotation },
  "patternAttachment" : { Attachment },
  "patternCodeableConcept" : { CodeableConcept },
  "patternCoding" : { Coding },
  "patternContactPoint" : { ContactPoint },
  "patternCount" : { Count },
  "patternDistance" : { Distance },
  "patternDuration" : { Duration },
  "patternHumanName" : { HumanName },
  "patternIdentifier" : { Identifier },
  "patternMoney" : { Money },
  "patternPeriod" : { Period },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternRatio" : { Ratio },
  "patternReference" : { Reference },
  "patternSampledData" : { SampledData },
  "patternSignature" : { Signature },
  "patternTiming" : { Timing },
  "patternParameterDefinition" : { ParameterDefinition },
  "patternDataRequirement" : { DataRequirement },
  "patternRelatedArtifact" : { RelatedArtifact },
  "patternContactDetail" : { ContactDetail },
  "patternContributor" : { Contributor },
  "patternTriggerDefinition" : { TriggerDefinition },
  "patternExpression" : { Expression },
  "patternUsageContext" : { UsageContext },
  "patternDosage" : { Dosage },
  "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 49:

    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>
    "valueCanonical" : "<canonical>"
    "valueCode" : "<code>"
    "valueDate" : "<date>"
    "valueDateTime" : "<dateTime>"
    "valueDecimal" : <decimal>
    "valueId" : "<id>"
    "valueInstant" : "<instant>"
    "valueInteger" : <integer>
    "valueMarkdown" : "<markdown>"
    "valueOid" : "<oid>"
    "valuePositiveInt" : "<positiveInt>"
    "valueString" : "<string>"
    "valueTime" : "<time>"
    "valueUnsignedInt" : "<unsignedInt>"
    "valueUri" : "<uri>"
    "valueUrl" : "<url>"
    "valueUuid" : "<uuid>"
    "valueAddress" : { Address }
    "valueAge" : { Age }
    "valueAnnotation" : { Annotation }
    "valueAttachment" : { Attachment }
    "valueCodeableConcept" : { CodeableConcept }
    "valueCoding" : { Coding }
    "valueContactPoint" : { ContactPoint }
    "valueCount" : { Count }
    "valueDistance" : { Distance }
    "valueDuration" : { Duration }
    "valueHumanName" : { HumanName }
    "valueIdentifier" : { Identifier }
    "valueMoney" : { Money }
    "valuePeriod" : { Period }
    "valueQuantity" : { Quantity }
    "valueRange" : { Range }
    "valueRatio" : { Ratio }
    "valueReference" : { Reference }
    "valueSampledData" : { SampledData }
    "valueSignature" : { Signature }
    "valueTiming" : { Timing }
    "valueParameterDefinition" : { ParameterDefinition }
    "valueDataRequirement" : { DataRequirement }
    "valueRelatedArtifact" : { RelatedArtifact }
    "valueContactDetail" : { ContactDetail }
    "valueContributor" : { Contributor }
    "valueTriggerDefinition" : { TriggerDefinition }
    "valueExpression" : { Expression }
    "valueUsageContext" : { UsageContext }
    "valueDosage" : { Dosage }

  }],
  // 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>", // FHIRPath expression of constraint
    "xpath" : "<string>", // XPath expression of constraint
    "source" : { canonical(StructureDefinition) } // Reference to original source of constraint

  }],
  "
  "
  "
  "
    "
    "
    
    ">"
    " }

  "mustSupport" : <boolean>, // If the element must be supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isModifierReason" : "<string>", // Reason that this element is marked as a modifier
  "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" : { canonical(ValueSet) } // C? Source of value set

  },
  "
    "
    "
    "
    "

  "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: 

 # from BackboneElement: Element.extension, BackboneElement.modifierextension

  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.sliceIsConstraining [ boolean ]; # 0..1 If this slice definition constrains an inherited slice definition (or not)

  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:

      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:
  fhir:

  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:

  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:

  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:
    fhir:

    fhir:ElementDefinition.type.profile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profiles (StructureDefinition or IG) - one must apply
    fhir:ElementDefinition.type.targetProfile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply

    fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated
    fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific
  ], ...;
  # . One of these 38

  # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 49

    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCanonical [ canonical ]

    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.defaultValueUrl [ url ]
    fhir:ElementDefinition.defaultValueUuid [ uuid ]

    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: ]
  fhir:

    fhir:ElementDefinition.defaultValueParameterDefinition [ ParameterDefinition ]
    fhir:ElementDefinition.defaultValueDataRequirement [ DataRequirement ]
    fhir:ElementDefinition.defaultValueRelatedArtifact [ RelatedArtifact ]
    fhir:ElementDefinition.defaultValueContactDetail [ ContactDetail ]
    fhir:ElementDefinition.defaultValueContributor [ Contributor ]
    fhir:ElementDefinition.defaultValueTriggerDefinition [ TriggerDefinition ]
    fhir:ElementDefinition.defaultValueExpression [ Expression ]
    fhir:ElementDefinition.defaultValueUsageContext [ UsageContext ]
    fhir:ElementDefinition.defaultValueDosage [ Dosage ]
  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
  # . One of these 38

  # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 49

    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCanonical [ canonical ]

    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.fixedUrl [ url ]
    fhir:ElementDefinition.fixedUuid [ uuid ]

    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: ]
  # . One of these 38

    fhir:ElementDefinition.fixedParameterDefinition [ ParameterDefinition ]
    fhir:ElementDefinition.fixedDataRequirement [ DataRequirement ]
    fhir:ElementDefinition.fixedRelatedArtifact [ RelatedArtifact ]
    fhir:ElementDefinition.fixedContactDetail [ ContactDetail ]
    fhir:ElementDefinition.fixedContributor [ Contributor ]
    fhir:ElementDefinition.fixedTriggerDefinition [ TriggerDefinition ]
    fhir:ElementDefinition.fixedExpression [ Expression ]
    fhir:ElementDefinition.fixedUsageContext [ UsageContext ]
    fhir:ElementDefinition.fixedDosage [ Dosage ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 49

    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCanonical [ canonical ]

    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.patternUrl [ url ]
    fhir:ElementDefinition.patternUuid [ uuid ]

    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: ]

    fhir:ElementDefinition.patternParameterDefinition [ ParameterDefinition ]
    fhir:ElementDefinition.patternDataRequirement [ DataRequirement ]
    fhir:ElementDefinition.patternRelatedArtifact [ RelatedArtifact ]
    fhir:ElementDefinition.patternContactDetail [ ContactDetail ]
    fhir:ElementDefinition.patternContributor [ Contributor ]
    fhir:ElementDefinition.patternTriggerDefinition [ TriggerDefinition ]
    fhir:ElementDefinition.patternExpression [ Expression ]
    fhir:ElementDefinition.patternUsageContext [ UsageContext ]
    fhir:ElementDefinition.patternDosage [ Dosage ]

  fhir:ElementDefinition.example [ # 0..* Example value (as defined for type)
    fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example
    # . One of these 38

    # ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 49

      fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ]
      fhir:ElementDefinition.example.valueBoolean [ boolean ]
      fhir:ElementDefinition.example.valueCanonical [ canonical ]

      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.valueUrl [ url ]
      fhir:ElementDefinition.example.valueUuid [ uuid ]

      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: ]

      fhir:ElementDefinition.example.valueParameterDefinition [ ParameterDefinition ]
      fhir:ElementDefinition.example.valueDataRequirement [ DataRequirement ]
      fhir:ElementDefinition.example.valueRelatedArtifact [ RelatedArtifact ]
      fhir:ElementDefinition.example.valueContactDetail [ ContactDetail ]
      fhir:ElementDefinition.example.valueContributor [ Contributor ]
      fhir:ElementDefinition.example.valueTriggerDefinition [ TriggerDefinition ]
      fhir:ElementDefinition.example.valueExpression [ Expression ]
      fhir:ElementDefinition.example.valueUsageContext [ UsageContext ]
      fhir:ElementDefinition.example.valueDosage [ Dosage ]

  ], ...;
  # 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:

    fhir:ElementDefinition.constraint.expression [ string ]; # 0..1 FHIRPath expression of constraint

    fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraint
    fhir:

    fhir:ElementDefinition.constraint.source [ canonical(StructureDefinition) ]; # 0..1 Reference to original source of constraint

  ], ...;
  fhir:

  fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must be supported

  fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements
  fhir:ElementDefinition.isModifierReason [ string ]; # 0..1 Reason that this element is marked as a modifier

  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
    # . One of these 2
      fhir: ]
      fhir:) ]

    fhir:ElementDefinition.binding.valueSet [ canonical(ValueSet) ]; # 0..1 Source of value set

  ];
  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 Release 3

ElementDefinition.representation
ElementDefinition 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 ElementDefinition.sliceIsConstraining
  • Added Element
ElementDefinition.comment ElementDefinition.slicing.ordered
  • Renamed from comments to comment Default Value "false" removed
ElementDefinition.min ElementDefinition.type.profile
  • Type Max Cardinality changed from integer 1 to unsignedInt *
  • ElementDefinition.base.min
  • Type changed from integer uri to unsignedInt canonical
ElementDefinition.contentReference ElementDefinition.type.targetProfile
  • Renamed from nameReference to contentReference Type Max Cardinality changed from string 1 to uri *
  • ElementDefinition.type.code
  • Type changed from code to uri Change binding strength from required to extensible canonical
ElementDefinition.type.profile Max Cardinality changed from * to 1 ElementDefinition.type.targetProfile Added Element ElementDefinition.type.versioning
  • Added Element Default Value "either" removed
ElementDefinition.defaultValue[x]
  • Remove Meta, Add Age, canonical, Add Count, url, Add Distance, uuid, Add Duration, ParameterDefinition, Add Money DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.orderMeaning ElementDefinition.fixed[x]
  • Added Element Remove Meta, Add canonical, Add url, Add uuid, Add ParameterDefinition, Add DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.fixed[x] ElementDefinition.pattern[x]
  • Remove Meta, Add Age, canonical, Add Count, url, Add Distance, uuid, Add Duration, ParameterDefinition, Add Money DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.pattern[x] ElementDefinition.example.value[x]
  • Remove Meta, Add Age, canonical, Add Count, url, Add Distance, uuid, Add Duration, ParameterDefinition, Add Money DataRequirement, Add RelatedArtifact, Add ContactDetail, Add Contributor, Add TriggerDefinition, Add Expression, Add UsageContext, Add Dosage
ElementDefinition.example ElementDefinition.constraint.expression
  • Renamed from example[x] to example Max Min 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 0
ElementDefinition.example.value[x] ElementDefinition.constraint.source
  • Added Element Type changed from uri to canonical
ElementDefinition.minValue[x] ElementDefinition.mustSupport
  • 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 Default Value "false" removed
ElementDefinition.maxValue[x] ElementDefinition.isModifier
  • 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 Default Value "false" removed
ElementDefinition.constraint.expression ElementDefinition.isModifierReason
  • Added Element
ElementDefinition.constraint.xpath ElementDefinition.isSummary
  • Min Cardinality changed from 1 to 0 Default Value "false" removed
ElementDefinition.constraint.source ElementDefinition.binding.valueSet
  • Added Element Renamed from valueSet[x] to valueSet
  • ElementDefinition.mapping.comment
  • Added Element Remove uri, Remove Reference(ValueSet), Add canonical

See the Full Difference for further information

Constraints

id Level Location Description Expression
eld-1 : On ElementDefinition.slicing: Rule ElementDefinition.slicing If there are no discriminators, there must be a definition ( expression on ElementDefinition.slicing: discriminator.exists() or description.exists() )
eld-2 : Rule (base) Min <= Max ( expression : min.empty() or max.empty() or (max = '*') or (min iif(max != '*', min <= max.toInteger()) )
eld-3 : On ElementDefinition.max: Rule ElementDefinition.max Max SHALL be a number or "*" ( expression "*" on ElementDefinition.max: empty() or ($this = '*') or (toInteger() >= 0) )
eld-4 : On ElementDefinition.type: Rule ElementDefinition.type Aggregation may only be specified if one of the allowed types for the element is a resource ( expression reference on ElementDefinition.type: aggregation.empty() or (code = 'Reference') )
eld-5 : Rule (base) 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 : Rule (base) Fixed value may only be specified if there is one type ( expression : fixed.empty() or (type.count() <= 1) )
eld-7 : Rule (base) Pattern may only be specified if there is one type ( expression : pattern.empty() or (type.count() <= 1) )
eld-8 : Rule (base) Pattern and value are mutually exclusive ( expression : pattern.empty() or fixed.empty() )
eld-11 : Rule (base) 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: Rule 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:') valueSet.exists() implies (valueSet.startsWith('http:') or valueSet.as(uri).startsWith('https') valueSet.startsWith('https') or valueSet.as(uri).startsWith('urn:') valueSet.startsWith('urn:')) )
eld-13 : Rule (base) Types must be unique by the combination of code and profile ( expression : type.select(code&profile&targetProfile).isDistinct() type.select(code).isDistinct() )
eld-14 : Rule (base) Constraints must be unique by key ( expression : constraint.select(key).isDistinct() )
eld-15 : Rule (base) default value and meaningWhenMissing are mutually exclusive ( expression : defaultValue.empty() or meaningWhenMissing.empty() )
eld-16 : Rule (base) sliceName must be composed of proper tokens separated by "/" ( expression "/" : sliceName.empty() or sliceName.matches('^[a-zA-Z0-9\\/\\-\\_]+$') sliceName.matches('^[a-zA-Z0-9\\/\\-_\\[\\]\\@]+$') )
eld-17 Rule ElementDefinition.type targetProfile is only allowed if the type is reference or canonical (code='Reference' or code = 'canonical') or targetProfile.empty()
eld-18 Rule (base) Must have a modifier reason if isModifier = true isModifier implies isModifierReason.exists()
eld-19 Rule (base) Element names cannot include some special characters path.matches('[^\\s#\\/]+')
eld-20 Warning (base) Element names should be simple alphanumerics, or code generation tools may be broken path.matches('[A-Za-z][A-Za-z0-9]*(\\.[a-z][A-Za-z0-9]*)*')
eld-21 Warning ElementDefinition.constraint Constraints should have an expression or else validators will not be able to enforce them expression.exists()
eld-22 Rule (base) sliceIsConstraining can only appear if slicename is present sliceIsConstraining.exists() implies sliceName.exists()

 

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). path. 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 NOT contain whitespace (i.e. Unicode characters marked as whitespace)
  • Element names SHALL not NOT contain the characters ,:;'"/|?|!@#$%^&*()[]{} ,:;'"/|?|!@#$%^&*()[]{}
  • Element names SHOULD not contain non-ASCII characters
  • Element paths SHALL not 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 type 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
  • For type choice elements, the id reflects the type slice. e.g. For path = Patient.deceasedBoolean, the id is Patient.deceased[x]:deceasedBoolean

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 . The way its elements are to be used and interpreted depends on the context where ElementDefinition used: context:

optional
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
slicing prohibited prohibited prohibited prohibited optional
short/definition optional required required required required
requirements/
comments/alias
optional prohibited optional prohibited optional
base prohibited prohibited snpshot: required
differential: optional
prohibited snpshot: required
differential: optional
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 baseDefinition element, or where the derivation type is 'specialization'
  • Constraint definition: A StructureDefinition with a base baseDefinition 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 definition
  • : The element content must be consistent with that matching element in the base structure definition
  • : Additional constraints and mappings can be defined, but they do not replace the ones in the base structure definition

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 (which is 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 special slice name @default applies to all entries that are not in any other slice
  • 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 apply to all slices and entries, whether they have a defined slice and belong to the open portion of the slice. Its or not It's use follows the "normal case", "normal case", except:
    • slicing must be present
    • min and max govern governs the number of total occurrences of the sliced element including the number of occurrences in the open portion of the slice. slice (individual slices may have a different min value).
  • An element

Elements that allow a choice of multiple types can be sliced by type. This is to specify constrained. In principle, there are two different types of constraints for different types. In to apply:

  • A constraint that applies to the element as a whole - e.g. as restricting the cardinality, or limiting the choice of types
  • A constraint that applies to the use of a particular type - e.g. value set binding

When constraining elements with multiple types, the following rules apply:

  • Constraints limiting the acceptable list of types must be applied to the original "[x]" element as this case, is where the discriminator list of acceptable types is defined
  • The inclusion of a type specific path (such as "Patient.deceasedBoolean") SHALL NOT be "@type" interpreted as constraining allowed types, but instead, it constrains the use of a particular type
  • the original element SHALL always be represented in a snapshot; the type specific variants are only represented when needed
In a DataElement , min and max are always required. In a StructureDefinition :
  • If there is no StructureDefinition.base StructureDefinition.baseDefinition : 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 from the base definition
  • In StructureDefinition.snapshot : min and max are always required
  • If an aggregationMode is present in the definition, the 'reference' element SHALL be present and have a value and the target of the reference SHALL be aggregated as defined
  • If type.versioning is present in the definition, the 'reference' element SHALL be present and have a value and the reference SHALL be populated as the versioning constraint dictates.

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 might not have a value at all. All the application can say is that the value is unknown.

This also applies when the element is present, but has no value or child elements, and only has extensions instead.

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: Element Default Value ElementDefinition.mustSupport false SampledData.factor 1 ValueSet.codeSystem.concept.abstract false List.entry.deleted false 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 Constraints on other elements, the resource explicitly documents the meaning of a missing element, and that meaning is not represented by a default value. Some examples: Element Meaning when missing Period.end If the end of the period is missing, it means that the period is ongoing Quantity.comparator If there is no comparator, then there is no modification of the value MedicationAdministration.wasNotGiven If this is missing, then the medication was administered Substance.instance If 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 structures cannot change the default value or missing meaning of an element, since this cannot be done in the base specification either. element. Here is a list of all elements with a default value or a missing meaning:

  • DataRequirement.subject[x] : Patient
  • Period.end : If the end of the period is missing, it means that the period is ongoing
  • Quantity.comparator : If there is no comparator, then there is no modification of the value
  • SampledData.factor : 1 If no factor is assigned, the data is not adjusted before adding to the origin
  • ElementDefinition.slicing.ordered Timing.repeat.frequency : false If no frequency is stated, the assumption is that the event occurs once per period, but systems SHOULD always be specific about this
  • ElementDefinition.type.versioning ElementDefinition.slicing.ordered : either Order is not required unless specified
  • ElementDefinition.mustSupport : false In a base type, where the element is being defined for the first time, the element is assumed to be mustSupport = false. In a profile (a constraint on an existing type), if mustSupport is not specific in either the differentil or the snapshot, the mustSupport value is not changed fro the base definition. Not, though, that the snapshot SHOULD always populate the mustSuppot value
  • ElementDefinition.isModifier : false An element is not a modifier element unless it is explicitly specified to be one
  • ElementDefinition.isSummary : false An element is not included in the summary unless it is explicitly specified to be so
  • Timing.repeat.frequency ActivityDefinition.subject[x] : 1 Patient
  • BodySite.active BodyStructure.active : true This resource is generally assumed to be active if no value is provided for the active element
  • CarePlan.activity.detail.prohibited CarePlan.activity.detail.doNotPerform : false If missing indicates that the described activity is one that should be engaged in when following the plan.
  • Communication.priority : If missing, this communication should be treated with normal priority
  • CommunicationRequest.priority : If missing, this task should be performed with normal priority
  • ConceptMap.group.element.target.equivalence CommunicationRequest.doNotPerform : equivalent If do not perform is not specified, the request is a positive request e.g. "do perform"
  • ConceptMap.group.element.target.dependsOn.system : The code is in the source (dependsOn) or target (product) system
  • Condition.verificationStatus : unknown Consent.period : all date ranges included Consent.actor : There is no specific actor associated with the consent Consent.action : all actions Consent.data : all data Consent.except.actor Consent.provision.actor : There is no specific actor associated with the exception
  • Consent.except.action Consent.provision.action : all actions
  • Consent.except.data Consent.provision.data : all data
  • DeviceRequest.priority : If missing, normal priority
  • ExpansionProfile.excludedSystem.version : Exclusion is not version specific ExpansionProfile.includeDefinition : false ExpansionProfile.activeOnly : false FamilyMemberHistory.notDone EventDefinition.subject[x] : false Patient
  • FamilyMemberHistory.estimatedAge : It is unknown whether the age is an estimate or not
  • Group.active : true This resource is generally assumed to be active if no value is provided for the active element
  • Group.member.period : The member is in the group at this time
  • Group.member.inactive : false Members are considered active unless explicitly specified otherwise
  • HealthcareService.active : true This resource is generally assumed to be active if no value is provided for the active element
  • Linkage.active Immunization.isSubpotent : true By default, a dose should be considered to be potent.
  • List.entry.deleted InsurancePlan.status : false Default interpretation is active.
  • Media.frames Library.subject[x] : 1 Patient
  • MedicationAdministration.notGiven Linkage.active : If this This resource is missing, then generally assumed to be active if no value is provided for the medication was administered active element
  • MessageDefinition.focus.min List.entry.deleted : 0 List items are generally only treated as deleted when this element explicitly carries a value of true. Systems SHOULD always populate this value when mode is 'changes'
  • MessageDefinition.responseRequired Measure.subject[x] : false Patient
  • NamingSystem.uniqueId.preferred : If there are multiple ids, and one is labeled "preferred", "preferred", then the assumption is that the others are not preferred. In the absence of any id marked as preferred, no inference can be drawn
  • Organization.active : true Patient.active : true This resource is generally assumed to be active if no value is provided for the active element
  • Practitioner.active OrganizationAffiliation.active : true This resource is generally assumed to be active if no value is provided for the active element
  • PractitionerRole.active Patient.active : true This resource is generally assumed to be active if no value is provided for the active element
  • Procedure.notDone PlanDefinition.subject[x] : false Patient
  • ProcedureRequest.priority Practitioner.active : If missing, this task should This resource is generally assumed to be performed with normal priority active if no value is provided for the active element
  • ProcedureRequest.doNotPerform PractitionerRole.active : false This resource is generally assumed to be active if no value is provided for the active element
  • Questionnaire.item.required : false Items are generally assumed not to be required unless explicitly specified. Systems SHOULD always populate this value
  • Questionnaire.item.repeats : false Items are generally assumed not to repeat unless explicitly specified. Systems SHOULD always populate this value
  • Questionnaire.item.answerOption.initialSelected : Only selected items explicitly marked to be selected
  • RelatedPerson.active : true This resource is generally assumed to be active if no value is provided for the active element
  • RequestGroup.priority : If missing, this request should be performed with normal priority
  • Schedule.active : true This resource is generally assumed to be active if no value is provided for the active element
  • ServiceRequest.priority : If missing, this task should be performed with normal priority
  • ServiceRequest.doNotPerform : If missing, the request is a positive request e.g. "do perform"
  • Slot.overbooked : If overbooked is missing, systems may assume that there are still appointments available
  • Substance.instance : If this element is not present, then the substance resource describes a kind of substance
  • SupplyRequest.priority : If missing, this task should be performed with normal priority
  • Task.priority : If missing, this task should be performed with normal priority
  • TestScript.origin.profile : FHIR-Client
  • TestScript.destination.profile : FHIR-Server
  • TestScript.metadata.capability.required : false TestScript.metadata.capability.validated : false TestScript.fixture.autocreate : false TestScript.fixture.autodelete : false TestScript.setup.action.operation.accept : xml TestScript.setup.action.operation.contentType : xml TestScript.setup.action.operation.encodeRequestUrl : true TestScript.setup.action.assert.contentType : xml TestScript.setup.action.assert.warningOnly UserSession.expires : false If missing, the user session does not expire
  • ValueSet.expansion.offset : Paging is not being used
  • ValueSet.expansion.contains.abstract : false If this is not populated, systems can assume that the concept it not abstract. This SHALL always be populated for abstract concepts

This specification does not define any default values for resources or data types because:

  • The value must be known by all implementations
  • ValueSet.expansion.contains.inactive : false 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
  • The presence of a default value interacts with minimum cardinality and the :missing search token in ways that create confusion for implementations

Note that default values can be defined in Logical Models .