DSTU2 STU 3 Ballot
This page is part of the FHIR Specification (v1.0.2: DSTU 2). The current version which supercedes this version is

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

1.23.0 2.25.0 Element Definition Element Definition

The definition of an element in a resource or extension. The definition includes: Name, Cardinality, and data type Definitions, usage notes, requirements Default or fixed values Constraints, Length limits, and other usage rules Terminology Binding Mappings to other specifications
FHIR Infrastructure FHIR Infrastructure Work Group Work Group Maturity Level : N/A Maturity Level : N/A Ballot Status : DSTU 2 Ballot Status : STU 3

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

  • Name, Cardinality, and data type
  • Definitions, usage notes, requirements
  • Default or fixed values
  • Constraints, Length limits, and other usage rules
  • Structural Usage Information such as 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

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 ( 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 or JSON ). ).

1.23.0.1 Content 2.25.0.1 Content

Structure

*
Name Flags Card. Type Description & Constraints Description & Constraints doco
. . ElementDefinition Σ I Element Definition of an element in a resource or extension Definition of an element in a resource or extension
Types must be unique by the combination of code and profile Min <= Max
Constraints must be unique by key if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
Binding can only be present for coded elements, string, and uri Pattern may only be specified if there is one type
Pattern and value are mutually exclusive Fixed value may only be specified if there is one type
default value and meaningWhenMissing are mutually exclusive Binding can only be present for coded elements, string, and uri
Min <= Max Pattern and value are mutually exclusive
Pattern may only be specified if there is one type Constraints must be unique by key
Fixed value may only be specified if there is one type Types must be unique by the combination of code and profile
Either a namereference or a fixed value (but not both) is permitted default value and meaningWhenMissing are mutually exclusive
. . . path Σ 1..1 string The path of the element (see the Detailed Descriptions) Path of the element in the heirarchy of elements
. . . representation Σ 0..* code How this element is represented in instances xmlAttr | xmlText | typeAttr | cdaText | xhtml
PropertyRepresentation ( ( Required )
. . . name Σ 0..1 string Name for this particular element definition (reference target) Name for this particular element definition (reference target)
. . . label Σ 0..1 string Name for element to display with or prompt for element Name for element to display with or prompt for element
. . . code Σ 0..* Coding Defining code Defining code
LOINC Codes ( LOINC Codes ( Example )
. . . slicing Σ I 0..1 Element This element is sliced - slices follow This element is sliced - slices follow
If there are no discriminators, there must be a definition If there are no discriminators, there must be a definition
. . . . discriminator Σ 0..* string Element values that used to distinguish the slices Element values that are used to distinguish the slices
. . . . description Σ I 0..1 string Text description of how slicing works (or not) Text description of how slicing works (or not)
. . . . ordered Σ 0..1 boolean If elements must be in same order as slices If elements must be in same order as slices
. . . . rules Σ 1..1 code closed | open | openAtEnd closed | open | openAtEnd
SlicingRules ( ( Required )
. . . short Σ 0..1 string Concise definition for xml presentation Concise definition for xml presentation
. . . definition Σ 0..1 markdown Full formal definition as narrative text Full formal definition as narrative text
. . . comments Σ 0..1 markdown Comments about the use of this element Comments about the use of this element
. . . requirements Σ 0..1 markdown Why is this needed? Why this resource has been created
. . . alias Σ 0..* string Other names Other names
. . . min Σ I 0..1 integer Minimum Cardinality Minimum Cardinality
. . . max Σ I 0..1 string Maximum Cardinality (a number or *) Maximum Cardinality (a number or *)
Max SHALL be a number or "*" Max SHALL be a number or "*"
. . . base Σ 0..1 Element Base definition information for tools Base definition information for tools
. . . . path Σ 1..1 string Path that identifies the base element Path that identifies the base element
. . . . min Σ 1..1 integer Min cardinality of the base element Min cardinality of the base element
. . . . max Σ 1..1 string Max cardinality of the base element 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 Data type and Profile for this element
Aggregation may only be specified if one of the allowed types for the element is a resource Aggregation may only be specified if one of the allowed types for the element is a resource
. . . . code Σ 1..1 code Name of Data type or Resource Name of Data type or Resource
FHIRDefinedType ( Required ( Extensible )
. . . . profile Σ 0..1 uri Profile (StructureDefinition) to apply (or IG)
. . . . targetProfile Σ 0..* 0..1 uri Profile (StructureDefinition) to apply (or IG) Profile (StructureDefinition) to apply to reference target (or IG)
. . . . aggregation Σ I 0..* code contained | referenced | bundled - how aggregated contained | referenced | bundled - how aggregated
AggregationMode ( ( Required )
. . nameReference . . versioning Σ I 0..1 string code To another element constraint (by element.name) either | independent | specific
ReferenceVersionRules ( Required )
. . . defaultValue[x] Σ I 0..1 * Specified value it missing from instance Specified value if missing from instance
. . . meaningWhenMissing Σ I 0..1 markdown Implicit meaning when this element is missing Implicit meaning when this element is missing
. . . fixed[x] Σ I 0..1 * Value must be exactly this Value must be exactly this
. . . pattern[x] Σ I 0..1 * Value must have at least these property values Value must have at least these property values
. . . example[x] Σ 0..1 * Example value: [as defined for type] Example value (as defined for type)
. . . minValue[x] Σ 0..1 Minimum Allowed Value (for some types)
.... minValueDate * date
. . . . minValueDateTime Minimum Allowed Value (for some types) dateTime
. maxValue[x] . . . 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 Maximum Allowed Value (for some types) dateTime
. . . . maxValueInstant instant
.... maxValueTime time
.... maxValueDecimal decimal
.... maxValueInteger integer
.... maxValuePositiveInt positiveInt
.... maxValueUnsignedInt unsignedInt
.... maxValueQuantity Quantity
. . . maxLength Σ 0..1 integer Max length for strings Max length for strings
. . . condition Σ 0..* id Reference to invariant about presence Reference to invariant about presence
. . . constraint Σ 0..* Element Condition that must evaluate to true Condition that must evaluate to true
. . . . key Σ I 1..1 id Target of 'condition' reference above Target of 'condition' reference above
. . . . requirements Σ 0..1 string Why this constraint necessary or appropriate Why this constraint is necessary or appropriate
. . . . severity Σ 1..1 code error | warning error | warning
ConstraintSeverity ( ( Required )
. . . . human Σ 1..1 string Human description of constraint Human description of constraint
. . . . expression Σ 0..1 string FluentPath expression of constraint
. . . . xpath Σ 1..1 string XPath expression of constraint XPath expression of constraint
. . . mustSupport Σ 0..1 boolean If the element must supported If the element must supported
. . . isModifier Σ 0..1 boolean If this modifies the meaning of other elements If this modifies the meaning of other elements
. . . isSummary Σ 0..1 boolean Include when _summary = true? Include when _summary = true?
. . . binding Σ I 0..1 Element ValueSet details if this is coded ValueSet details if this is coded
provide either a reference or a description (or both) provide either a reference or a description (or both)
. . . . strength Σ 1..1 code required | extensible | preferred | example required | extensible | preferred | example
BindingStrength ( ( Required )
. . . . description Σ I 0..1 string Human explanation of the value set Human explanation of the value set
. . . . valueSet[x] Σ I 0..1 Source of value set Source of value set
URI SHALL start with http:// or https:// URI SHALL start with http:// or https:// urn:
. . . . . valueSetUri uri
. . . . valueSetReference . valueSetReference Reference ( ValueSet )
. . . mapping Σ 0..* Element Map element to another set of definitions Map element to another set of definitions
. . . . identity Σ 1..1 id Reference to mapping declaration Reference to mapping declaration
. . . . language Σ 0..1 code Computable language of mapping Computable language of mapping
MimeType MimeType ( ( Required )
. . . . map Σ 1..1 string Details of the mapping Details of the mapping

Documentation for this format doco Documentation for this format

UML Diagram UML Diagram ( Legend )

Element Extensions - as described for all elements: additional information that is not part of the basic definition of the resource / type Extensions - as described for all elements: additional information that is not part of the basic definition of the resource / type extension : : Extension 0..* 0..* ElementDefinition The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension path : : string [1..1] [1..1] Codes that define how this element is represented in instances, when the deviation varies from the normal case Codes that define how this element is represented in instances, when the deviation varies from the normal case representation : : code [0..*] « [0..*] « How a property is represented on the wire. (Strength=Required) How a property is represented on the wire. (Strength=Required) PropertyRepresentation ! » ! » The name of this element definition (to refer to it from other element definitions using ElementDefinition.nameReference). This is a unique name referring to a specific set of constraints applied to this element. One use of this is to provide a name to different slices of the same element The name of this element definition. 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 name : : string [0..1] [0..1] The text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form 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] [0..1] A code that provides the meaning for the element according to a particular terminology A code that provides the meaning for the element according to a particular terminology code : : Coding [0..*] « [0..*] « Codes that indicate the meaning of a data element. (Strength=Example) Codes that indicate the meaning of a data element. (Strength=Example) LOINC ?? » LOINC ?? » A concise description of what this element means (e.g. for use in autogenerated summaries) A concise description of what this element means (e.g. for use in autogenerated summaries) short : : string [0..1] [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 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 definition : : markdown [0..1] [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 Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc comments : : markdown [0..1] [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 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] [0..1] Identifies additional names by which this element might also be known Identifies additional names by which this element might also be known alias : : string [0..*] [0..*] The minimum number of times this element SHALL appear in the instance The minimum number of times this element SHALL appear in the instance min : : integer [0..1] [0..1] The maximum number of times this element is permitted to appear in the instance The maximum number of times this element is permitted to appear in the instance max : : string [0..1] [0..1] Identifies the name of a slice defined elsewhere in the profile whose constraints should be applied to the current element Identifies the identity of an element defined elsewhere in the profile whose content rules should be applied to the current element nameReference : string [0..1] 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') 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] [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' The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing' meaningWhenMissing : : markdown [0..1] [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 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] [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.) 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] [0..1] A sample value for this element demonstrating the type of information that would typically be captured A sample value for this element demonstrating the type of information that would typically be captured example[x] : : * [0..1] [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 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 [0..1] | 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 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 [0..1] | 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 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] [0..1] A reference to an invariant that may make additional statements about the cardinality or value in the instance A reference to an invariant that may make additional statements about the cardinality or value in the instance condition : : id [0..*] [0..*] If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. If false, the element may be ignored and not supported If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. If false, the element may be ignored and not supported mustSupport : : boolean [0..1] [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 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] [0..1] Whether the element should be included if a client requests a search with the parameter _summary=true Whether the element should be included if a client requests a search with the parameter _summary=true isSummary : : boolean [0..1] [0..1] Slicing 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 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 : : string [0..*] [0..*] 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 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] [0..1] If the matching elements have to occur in the same order as defined in the profile If the matching elements have to occur in the same order as defined in the profile ordered : : boolean [0..1] [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 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] « [1..1] « How slices are interpreted when evaluating an instance. (Strength=Required) How slices are interpreted when evaluating an instance. (Strength=Required) SlicingRules ! » ! » 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 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] [1..1] Minimum cardinality of the base element identified by the path Minimum cardinality of the base element identified by the path min : : integer [1..1] [1..1] Maximum cardinality of the base element identified by the path Maximum cardinality of the base element identified by the path max : : string [1..1] [1..1] TypeRef Name of Data type or Resource that is a(or the) type used for this element Name of Data type or Resource that is a(or the) type used for this element code : : code [1..1] « [1..1] « Either a resource or a data type. (Strength=Required) Either a resource or a data type, including logical model types (Strength=Extensible) FHIRDefinedType ! » + » Identifies a profile structure or implementation Guide that SHALL hold for resources or datatypes referenced as the type of this element. Can be a local reference - to another structure in this profile, or a reference to a structure in another profile. When more than one profile is specified, the content must conform to all of them. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide Identifies a profile structure or implementation Guide that SHALL hold for the datatype this element refers to. Can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition in another profile. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide profile : : uri [0..*] [0..1] Identifies a profile structure or implementation Guide that SHALL hold for the target of the reference this element refers to. Can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition in another profile. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide targetProfile : uri [0..1] 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 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..*] « [0..*] « How resource references can be aggregated. (Strength=Required) How resource references can be aggregated. (Strength=Required) AggregationMode ! » ! » Whether this reference needs to be version specific or version independent, or whetehr either can be used versioning : code [0..1] « Whether a reference needs to be version specific or version independent, or whetehr either can be used (Strength=Required) ReferenceVersionRules ! » Constraint Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality 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] [1..1] Description of why this constraint is necessary or appropriate Description of why this constraint is necessary or appropriate requirements : : string [0..1] [0..1] Identifies the impact constraint violation has on the conformance of the instance Identifies the impact constraint violation has on the conformance of the instance severity : : code [1..1] « [1..1] « SHALL applications comply with this constraint? (Strength=Required) 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 Text that can be used to describe the constraint in messages identifying that the constraint has been violated human : : string [1..1] [1..1] An XPath A [FluentPath](http://hl7.org/fluentpath) expression of constraint that can be executed to see if this constraint is met expression of constraint that can be executed to see if this constraint is met : string [0..1] An XPath expression of constraint that can be executed to see if this constraint is met xpath : : string [1..1] [1..1] Binding 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 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] « [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required) Indication of the degree of conformance expectations associated with a binding. (Strength=Required) BindingStrength ! » ! » Describes the intended use of this particular set of codes Describes the intended use of this particular set of codes description : : string [0..1] [0..1] Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used Points 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] : : Type [0..1] « [0..1] « uri | Reference ( ValueSet ) » ) » Mapping An internal reference to the definition of a mapping An internal reference to the definition of a mapping identity : : id [1..1] [1..1] Identifies the computable language in which mapping.map is expressed Identifies the computable language in which mapping.map is expressed language : : code [0..1] « [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required) The mime type of an attachment. Any valid mime type is allowed. (Strength=Required) MimeType ! » ! » Expresses what part of the target specification corresponds to this element Expresses what part of the target specification corresponds to this element map : : string [1..1] [1..1] 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) 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 unncessary for tools to trace the deviation of the element through the derived and related profiles. This information is only provided where the element definition represents a constraint on another element definition, and must be present if there is a base element definition 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 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 base [0..1] The data type or resource that the value of this element is permitted to be The data type or resource that the value of this element is permitted to be type [0..*] Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance 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) Binds to a value set if this element is coded (code, Coding, CodeableConcept) binding [0..1] Identifies a concept from an external specification that roughly corresponds to this element Identifies a concept from an external specification that roughly corresponds to this element mapping [0..*]

XML Template XML Template <

<[name] xmlns="http://hl7.org/fhir"> doco

 <!-- from Element: extension -->
 <
 <
 <
 <
 <</code>
 <
  <
  <
  <
  <

 <path value="[string]"/><!-- 1..1 Path of the element in the heirarchy of elements -->
 <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <name value="[string]"/><!-- 0..1 Name for this particular element definition (reference target) -->
 <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element -->
 <code><!-- 0..* Coding Defining code --></code>
 <slicing>  <!-- 0..1 This element is sliced - slices follow -->
  <discriminator value="[string]"/><!-- 0..* Element values that are used to distinguish the slices -->
  <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 xml presentation -->
 <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text -->
 <comments 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="[integer]"/><!-- ?? 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="[integer]"/><!-- 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="[code]"/><!-- 1..1 Name of Data type or Resource -->
  <profile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply (or IG) -->
  <targetProfile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply to reference target (or IG) -->
  <aggregation value="[code]"/><!-- ?? 0..* contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- 0..1 either | independent | specific -->

 </type>
 <
 <</defaultValue[x]>
 <
 <</fixed[x]>
 <</pattern[x]>
 <</example[x]>
 <</minValue[x]>
 <</maxValue[x]>
 <
 <
 <
  <
  <
  <
  <
  <

 <defaultValue[x]><!-- ?? 0..1 * Specified value if missing from instance --></defaultValue[x]>
 <meaningWhenMissing value="[markdown]"/><!-- ?? 0..1 Implicit meaning when this element is missing -->
 <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[x]><!-- 0..1 * Example value (as defined for type) --></example[x]>
 <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 FluentPath expression of constraint -->
  <xpath value="[string]"/><!-- 1..1 XPath expression of constraint -->

 </constraint>
 <
 <
 <
 <
  <
  <
  <</valueSet[x]>

 <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported -->
 <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements -->
 <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? -->
 <binding>  <!-- ?? 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- ?? 0..1 Human explanation of the value set -->
  <valueSet[x]><!-- ?? 0..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]>

 </binding>
 <
  <
  <
  <

 <mapping>  <!-- 0..* Map element to another set of definitions -->
  <identity value="[id]"/><!-- 1..1 Reference to mapping declaration -->
  <language value="[code]"/><!-- 0..1 Computable language of mapping  -->
  <map value="[string]"/><!-- 1..1 Details of the mapping -->

 </mapping>
</[name]>

JSON Template JSON Template  {


{doco

  // from Element: extension
  "
  "
  "
  "
  "
  "
    "
    "
    "
    "

  "path" : "<string>", // R!  Path of the element in the heirarchy of elements
  "representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml
  "name" : "<string>", // Name for this particular element definition (reference target)
  "label" : "<string>", // Name for element to display with or prompt for element
  "code" : [{ Coding }], // Defining code
  "slicing" : { // This element is sliced - slices follow
    "discriminator" : ["<string>"], // Element values that are used to distinguish the slices
    "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 xml presentation
  "definition" : "<markdown>", // Full formal definition as narrative text
  "comments" : "<markdown>", // Comments about the use of this element
  "requirements" : "<markdown>", // Why this resource has been created
  "alias" : ["<string>"], // Other names
  "min" : <integer>, // 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" : <integer>, // 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" : "<code>", // R!  Name of Data type or Resource
    "profile" : "<uri>", // Profile (StructureDefinition) to apply (or IG)
    "targetProfile" : "<uri>", // Profile (StructureDefinition) to apply to reference target (or IG)
    "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
    "versioning" : "<code>" // either | independent | specific

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

  // defaultValue[x]: Specified value if missing from instance. One of these 23:
  "defaultValueInteger" : <integer>,
  "defaultValueDecimal" : <decimal>,
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDate" : "<date>",
  "defaultValueInstant" : "<instant>",
  "defaultValueString" : "<string>",
  "defaultValueUri" : "<uri>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCode" : "<code>",
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueCoding" : { Coding },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueAttachment" : { Attachment },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValuePeriod" : { Period },
  "defaultValueRatio" : { Ratio },
  "defaultValueHumanName" : { HumanName },
  "defaultValueAddress" : { Address },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueSchedule" : { Schedule },
  "defaultValueReference" : { Reference },
  "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing

  // fixed[x]: Value must be exactly this. One of these 23:
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },

  "fixedInteger" : <integer>,
  "fixedDecimal" : <decimal>,
  "fixedDateTime" : "<dateTime>",
  "fixedDate" : "<date>",
  "fixedInstant" : "<instant>",
  "fixedString" : "<string>",
  "fixedUri" : "<uri>",
  "fixedBoolean" : <boolean>,
  "fixedCode" : "<code>",
  "fixedBase64Binary" : "<base64Binary>",
  "fixedCoding" : { Coding },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedAttachment" : { Attachment },
  "fixedIdentifier" : { Identifier },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedPeriod" : { Period },
  "fixedRatio" : { Ratio },
  "fixedHumanName" : { HumanName },
  "fixedAddress" : { Address },
  "fixedContactPoint" : { ContactPoint },
  "fixedSchedule" : { Schedule },
  "fixedReference" : { Reference },

  // pattern[x]: Value must have at least these property values. One of these 23:
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  "
  "
  "
    "
    "
    "
    "
    "

  "patternInteger" : <integer>,
  "patternDecimal" : <decimal>,
  "patternDateTime" : "<dateTime>",
  "patternDate" : "<date>",
  "patternInstant" : "<instant>",
  "patternString" : "<string>",
  "patternUri" : "<uri>",
  "patternBoolean" : <boolean>,
  "patternCode" : "<code>",
  "patternBase64Binary" : "<base64Binary>",
  "patternCoding" : { Coding },
  "patternCodeableConcept" : { CodeableConcept },
  "patternAttachment" : { Attachment },
  "patternIdentifier" : { Identifier },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternPeriod" : { Period },
  "patternRatio" : { Ratio },
  "patternHumanName" : { HumanName },
  "patternAddress" : { Address },
  "patternContactPoint" : { ContactPoint },
  "patternSchedule" : { Schedule },
  "patternReference" : { Reference },
  // example[x]: Example value (as defined for type). One of these 23:

  "exampleInteger" : <integer>,
  "exampleDecimal" : <decimal>,
  "exampleDateTime" : "<dateTime>",
  "exampleDate" : "<date>",
  "exampleInstant" : "<instant>",
  "exampleString" : "<string>",
  "exampleUri" : "<uri>",
  "exampleBoolean" : <boolean>,
  "exampleCode" : "<code>",
  "exampleBase64Binary" : "<base64Binary>",
  "exampleCoding" : { Coding },
  "exampleCodeableConcept" : { CodeableConcept },
  "exampleAttachment" : { Attachment },
  "exampleIdentifier" : { Identifier },
  "exampleQuantity" : { Quantity },
  "exampleRange" : { Range },
  "examplePeriod" : { Period },
  "exampleRatio" : { Ratio },
  "exampleHumanName" : { HumanName },
  "exampleAddress" : { Address },
  "exampleContactPoint" : { ContactPoint },
  "exampleSchedule" : { Schedule },
  "exampleReference" : { Reference },
  // minValue[x]: Minimum Allowed Value (for some types). One of these 9:

  "minValueDate" : "<date>",
  "minValueDateTime" : "<dateTime>",
  "minValueInstant" : "<instant>",
  "minValueTime" : "<time>",
  "minValueDecimal" : <decimal>,
  "minValueInteger" : <integer>,
  "minValuePositiveInt" : "<positiveInt>",
  "minValueUnsignedInt" : "<unsignedInt>",
  "minValueQuantity" : { Quantity },
  // maxValue[x]: Maximum Allowed Value (for some types). One of these 9:

  "maxValueDate" : "<date>",
  "maxValueDateTime" : "<dateTime>",
  "maxValueInstant" : "<instant>",
  "maxValueTime" : "<time>",
  "maxValueDecimal" : <decimal>,
  "maxValueInteger" : <integer>,
  "maxValuePositiveInt" : "<positiveInt>",
  "maxValueUnsignedInt" : "<unsignedInt>",
  "maxValueQuantity" : { Quantity },
  "maxLength" : <integer>, // Max length for strings
  "condition" : ["<id>"], // Reference to invariant about presence
  "constraint" : [{ // Condition that must evaluate to true
    "key" : "<id>", // C? R!  Target of 'condition' reference above
    "requirements" : "<string>", // Why this constraint is necessary or appropriate
    "severity" : "<code>", // R!  error | warning
    "human" : "<string>", // R!  Human description of constraint
    "expression" : "<string>", // FluentPath expression of constraint
    "xpath" : "<string>" // R!  XPath expression of constraint

  }],
  "
  "
  "
  "
    "
    "

  "mustSupport" : <boolean>, // If the element must supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isSummary" : <boolean>, // Include when _summary = true?
  "binding" : { // C? ValueSet details if this is coded
    "strength" : "<code>", // R!  required | extensible | preferred | example
    "description" : "<string>", // C? Human explanation of the value set

    // valueSet[x]: Source of value set. One of these 2:
    ">"
    " }

    "valueSetUri" : "<uri>"
    "valueSetReference" : { Reference(ValueSet) }

  },
  "
    "
    "
    "

  "mapping" : [{ // Map element to another set of definitions
    "identity" : "<id>", // R!  Reference to mapping declaration
    "language" : "<code>", // Computable language of mapping 
    "map" : "<string>" // R!  Details of the mapping

  }]
}

Turtle Template



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

[
 # from Element: Element.extension
  fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the heirarchy of elements
  fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml
  fhir:ElementDefinition.name [ string ]; # 0..1 Name for this particular element definition (reference target)
  fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element
  fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Defining code
  fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow
    fhir:ElementDefinition.slicing.discriminator [ string ], ... ; # 0..* Element values that are used to distinguish the slices
    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 xml presentation
  fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text
  fhir:ElementDefinition.comments [ 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 [ integer ]; # 0..1 Minimum Cardinality
  fhir:ElementDefinition.max [ string ]; # 0..1 Maximum Cardinality (a number or *)
  fhir:ElementDefinition.base [ # 0..1 Base definition information for tools
    fhir:ElementDefinition.base.path [ string ]; # 1..1 Path that identifies the base element
    fhir:ElementDefinition.base.min [ integer ]; # 1..1 Min cardinality of the base element
    fhir:ElementDefinition.base.max [ string ]; # 1..1 Max cardinality of the base element
  ];
  fhir:ElementDefinition.contentReference [ uri ]; # 0..1 Reference to definition of content for the element
  fhir:ElementDefinition.type [ # 0..* Data type and Profile for this element
    fhir:ElementDefinition.type.code [ code ]; # 1..1 Name of Data type or Resource
    fhir:ElementDefinition.type.profile [ uri ]; # 0..1 Profile (StructureDefinition) to apply (or IG)
    fhir:ElementDefinition.type.targetProfile [ uri ]; # 0..1 Profile (StructureDefinition) to apply to reference target (or IG)
    fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated
    fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific
  ], ...;
  # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 38
    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCode [ code ]
    fhir:ElementDefinition.defaultValueDate [ date ]
    fhir:ElementDefinition.defaultValueDateTime [ dateTime ]
    fhir:ElementDefinition.defaultValueDecimal [ decimal ]
    fhir:ElementDefinition.defaultValueId [ id ]
    fhir:ElementDefinition.defaultValueInstant [ instant ]
    fhir:ElementDefinition.defaultValueInteger [ integer ]
    fhir:ElementDefinition.defaultValueMarkdown [ markdown ]
    fhir:ElementDefinition.defaultValueOid [ oid ]
    fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.defaultValueString [ string ]
    fhir:ElementDefinition.defaultValueTime [ time ]
    fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.defaultValueUri [ uri ]
    fhir:ElementDefinition.defaultValueAddress [ Address ]
    fhir:ElementDefinition.defaultValueAge [ Age ]
    fhir:ElementDefinition.defaultValueAnnotation [ Annotation ]
    fhir:ElementDefinition.defaultValueAttachment [ Attachment ]
    fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.defaultValueCoding [ Coding ]
    fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ]
    fhir:ElementDefinition.defaultValueCount [ Count ]
    fhir:ElementDefinition.defaultValueDistance [ Distance ]
    fhir:ElementDefinition.defaultValueDuration [ Duration ]
    fhir:ElementDefinition.defaultValueHumanName [ HumanName ]
    fhir:ElementDefinition.defaultValueIdentifier [ Identifier ]
    fhir:ElementDefinition.defaultValueMoney [ Money ]
    fhir:ElementDefinition.defaultValuePeriod [ Period ]
    fhir:ElementDefinition.defaultValueQuantity [ Quantity ]
    fhir:ElementDefinition.defaultValueRange [ Range ]
    fhir:ElementDefinition.defaultValueRatio [ Ratio ]
    fhir:ElementDefinition.defaultValueReference [ Reference ]
    fhir:ElementDefinition.defaultValueSampledData [ SampledData ]
    fhir:ElementDefinition.defaultValueSignature [ Signature ]
    fhir:ElementDefinition.defaultValueTiming [ Timing ]
    fhir:ElementDefinition.defaultValueMeta [ Meta ]
  fhir:ElementDefinition.meaningWhenMissing [ markdown ]; # 0..1 Implicit meaning when this element is missing
  # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 38
    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCode [ code ]
    fhir:ElementDefinition.fixedDate [ date ]
    fhir:ElementDefinition.fixedDateTime [ dateTime ]
    fhir:ElementDefinition.fixedDecimal [ decimal ]
    fhir:ElementDefinition.fixedId [ id ]
    fhir:ElementDefinition.fixedInstant [ instant ]
    fhir:ElementDefinition.fixedInteger [ integer ]
    fhir:ElementDefinition.fixedMarkdown [ markdown ]
    fhir:ElementDefinition.fixedOid [ oid ]
    fhir:ElementDefinition.fixedPositiveInt [ positiveInt ]
    fhir:ElementDefinition.fixedString [ string ]
    fhir:ElementDefinition.fixedTime [ time ]
    fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.fixedUri [ uri ]
    fhir:ElementDefinition.fixedAddress [ Address ]
    fhir:ElementDefinition.fixedAge [ Age ]
    fhir:ElementDefinition.fixedAnnotation [ Annotation ]
    fhir:ElementDefinition.fixedAttachment [ Attachment ]
    fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.fixedCoding [ Coding ]
    fhir:ElementDefinition.fixedContactPoint [ ContactPoint ]
    fhir:ElementDefinition.fixedCount [ Count ]
    fhir:ElementDefinition.fixedDistance [ Distance ]
    fhir:ElementDefinition.fixedDuration [ Duration ]
    fhir:ElementDefinition.fixedHumanName [ HumanName ]
    fhir:ElementDefinition.fixedIdentifier [ Identifier ]
    fhir:ElementDefinition.fixedMoney [ Money ]
    fhir:ElementDefinition.fixedPeriod [ Period ]
    fhir:ElementDefinition.fixedQuantity [ Quantity ]
    fhir:ElementDefinition.fixedRange [ Range ]
    fhir:ElementDefinition.fixedRatio [ Ratio ]
    fhir:ElementDefinition.fixedReference [ Reference ]
    fhir:ElementDefinition.fixedSampledData [ SampledData ]
    fhir:ElementDefinition.fixedSignature [ Signature ]
    fhir:ElementDefinition.fixedTiming [ Timing ]
    fhir:ElementDefinition.fixedMeta [ Meta ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 38
    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCode [ code ]
    fhir:ElementDefinition.patternDate [ date ]
    fhir:ElementDefinition.patternDateTime [ dateTime ]
    fhir:ElementDefinition.patternDecimal [ decimal ]
    fhir:ElementDefinition.patternId [ id ]
    fhir:ElementDefinition.patternInstant [ instant ]
    fhir:ElementDefinition.patternInteger [ integer ]
    fhir:ElementDefinition.patternMarkdown [ markdown ]
    fhir:ElementDefinition.patternOid [ oid ]
    fhir:ElementDefinition.patternPositiveInt [ positiveInt ]
    fhir:ElementDefinition.patternString [ string ]
    fhir:ElementDefinition.patternTime [ time ]
    fhir:ElementDefinition.patternUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.patternUri [ uri ]
    fhir:ElementDefinition.patternAddress [ Address ]
    fhir:ElementDefinition.patternAge [ Age ]
    fhir:ElementDefinition.patternAnnotation [ Annotation ]
    fhir:ElementDefinition.patternAttachment [ Attachment ]
    fhir:ElementDefinition.patternCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.patternCoding [ Coding ]
    fhir:ElementDefinition.patternContactPoint [ ContactPoint ]
    fhir:ElementDefinition.patternCount [ Count ]
    fhir:ElementDefinition.patternDistance [ Distance ]
    fhir:ElementDefinition.patternDuration [ Duration ]
    fhir:ElementDefinition.patternHumanName [ HumanName ]
    fhir:ElementDefinition.patternIdentifier [ Identifier ]
    fhir:ElementDefinition.patternMoney [ Money ]
    fhir:ElementDefinition.patternPeriod [ Period ]
    fhir:ElementDefinition.patternQuantity [ Quantity ]
    fhir:ElementDefinition.patternRange [ Range ]
    fhir:ElementDefinition.patternRatio [ Ratio ]
    fhir:ElementDefinition.patternReference [ Reference ]
    fhir:ElementDefinition.patternSampledData [ SampledData ]
    fhir:ElementDefinition.patternSignature [ Signature ]
    fhir:ElementDefinition.patternTiming [ Timing ]
    fhir:ElementDefinition.patternMeta [ Meta ]
  # ElementDefinition.example[x] : 0..1 Example value (as defined for type). One of these 38
    fhir:ElementDefinition.exampleBase64Binary [ base64Binary ]
    fhir:ElementDefinition.exampleBoolean [ boolean ]
    fhir:ElementDefinition.exampleCode [ code ]
    fhir:ElementDefinition.exampleDate [ date ]
    fhir:ElementDefinition.exampleDateTime [ dateTime ]
    fhir:ElementDefinition.exampleDecimal [ decimal ]
    fhir:ElementDefinition.exampleId [ id ]
    fhir:ElementDefinition.exampleInstant [ instant ]
    fhir:ElementDefinition.exampleInteger [ integer ]
    fhir:ElementDefinition.exampleMarkdown [ markdown ]
    fhir:ElementDefinition.exampleOid [ oid ]
    fhir:ElementDefinition.examplePositiveInt [ positiveInt ]
    fhir:ElementDefinition.exampleString [ string ]
    fhir:ElementDefinition.exampleTime [ time ]
    fhir:ElementDefinition.exampleUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.exampleUri [ uri ]
    fhir:ElementDefinition.exampleAddress [ Address ]
    fhir:ElementDefinition.exampleAge [ Age ]
    fhir:ElementDefinition.exampleAnnotation [ Annotation ]
    fhir:ElementDefinition.exampleAttachment [ Attachment ]
    fhir:ElementDefinition.exampleCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.exampleCoding [ Coding ]
    fhir:ElementDefinition.exampleContactPoint [ ContactPoint ]
    fhir:ElementDefinition.exampleCount [ Count ]
    fhir:ElementDefinition.exampleDistance [ Distance ]
    fhir:ElementDefinition.exampleDuration [ Duration ]
    fhir:ElementDefinition.exampleHumanName [ HumanName ]
    fhir:ElementDefinition.exampleIdentifier [ Identifier ]
    fhir:ElementDefinition.exampleMoney [ Money ]
    fhir:ElementDefinition.examplePeriod [ Period ]
    fhir:ElementDefinition.exampleQuantity [ Quantity ]
    fhir:ElementDefinition.exampleRange [ Range ]
    fhir:ElementDefinition.exampleRatio [ Ratio ]
    fhir:ElementDefinition.exampleReference [ Reference ]
    fhir:ElementDefinition.exampleSampledData [ SampledData ]
    fhir:ElementDefinition.exampleSignature [ Signature ]
    fhir:ElementDefinition.exampleTiming [ Timing ]
    fhir:ElementDefinition.exampleMeta [ Meta ]
  # ElementDefinition.minValue[x] : 0..1 Minimum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.minValueDate [ date ]
    fhir:ElementDefinition.minValueDateTime [ dateTime ]
    fhir:ElementDefinition.minValueInstant [ instant ]
    fhir:ElementDefinition.minValueTime [ time ]
    fhir:ElementDefinition.minValueDecimal [ decimal ]
    fhir:ElementDefinition.minValueInteger [ integer ]
    fhir:ElementDefinition.minValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.minValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.minValueQuantity [ Quantity ]
  # ElementDefinition.maxValue[x] : 0..1 Maximum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.maxValueDate [ date ]
    fhir:ElementDefinition.maxValueDateTime [ dateTime ]
    fhir:ElementDefinition.maxValueInstant [ instant ]
    fhir:ElementDefinition.maxValueTime [ time ]
    fhir:ElementDefinition.maxValueDecimal [ decimal ]
    fhir:ElementDefinition.maxValueInteger [ integer ]
    fhir:ElementDefinition.maxValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.maxValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.maxValueQuantity [ Quantity ]
  fhir:ElementDefinition.maxLength [ integer ]; # 0..1 Max length for strings
  fhir:ElementDefinition.condition [ id ], ... ; # 0..* Reference to invariant about presence
  fhir:ElementDefinition.constraint [ # 0..* Condition that must evaluate to true
    fhir:ElementDefinition.constraint.key [ id ]; # 1..1 Target of 'condition' reference above
    fhir:ElementDefinition.constraint.requirements [ string ]; # 0..1 Why this constraint is necessary or appropriate
    fhir:ElementDefinition.constraint.severity [ code ]; # 1..1 error | warning
    fhir:ElementDefinition.constraint.human [ string ]; # 1..1 Human description of constraint
    fhir:ElementDefinition.constraint.expression [ string ]; # 0..1 FluentPath expression of constraint
    fhir:ElementDefinition.constraint.xpath [ string ]; # 1..1 XPath expression of constraint
  ], ...;
  fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must supported
  fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements
  fhir:ElementDefinition.isSummary [ boolean ]; # 0..1 Include when _summary = true?
  fhir:ElementDefinition.binding [ # 0..1 ValueSet details if this is coded
    fhir:ElementDefinition.binding.strength [ code ]; # 1..1 required | extensible | preferred | example
    fhir:ElementDefinition.binding.description [ string ]; # 0..1 Human explanation of the value set
    # ElementDefinition.binding.valueSet[x] : 0..1 Source of value set. One of these 2
      fhir:ElementDefinition.binding.valueSetUri [ uri ]
      fhir:ElementDefinition.binding.valueSetReference [ Reference(ValueSet) ]
  ];
  fhir:ElementDefinition.mapping [ # 0..* Map element to another set of definitions
    fhir:ElementDefinition.mapping.identity [ id ]; # 1..1 Reference to mapping declaration
    fhir:ElementDefinition.mapping.language [ code ]; # 0..1 Computable language of mapping
    fhir:ElementDefinition.mapping.map [ string ]; # 1..1 Details of the mapping
  ], ...;
]

Changes since DSTU2


ElementDefinition
ElementDefinition.representation Change codes from {xmlAttr} to {xmlAttr|xmlText|typeAttr|cdaText|xhtml}
ElementDefinition.contentReference Renamed from nameReference to contentReference
Type changed from string to uri
ElementDefinition.type.code Change binding strength from required to extensible
ElementDefinition.type.profile Max Cardinality changed from * to 1
ElementDefinition.type.targetProfile added
ElementDefinition.type.versioning added
ElementDefinition.defaultValue[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.fixed[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.pattern[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.example[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.minValue[x] Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.maxValue[x] Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.constraint.expression added

See the Full Difference for further information

Structure

*
Name Flags Card. Type Description & Constraints Description & Constraints doco
. . ElementDefinition Σ I Element Definition of an element in a resource or extension Definition of an element in a resource or extension
Types must be unique by the combination of code and profile Min <= Max
Constraints must be unique by key if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
Binding can only be present for coded elements, string, and uri Pattern may only be specified if there is one type
Pattern and value are mutually exclusive Fixed value may only be specified if there is one type
default value and meaningWhenMissing are mutually exclusive Binding can only be present for coded elements, string, and uri
Min <= Max Pattern and value are mutually exclusive
Pattern may only be specified if there is one type Constraints must be unique by key
Fixed value may only be specified if there is one type Types must be unique by the combination of code and profile
Either a namereference or a fixed value (but not both) is permitted default value and meaningWhenMissing are mutually exclusive
. . . path Σ 1..1 string The path of the element (see the Detailed Descriptions) Path of the element in the heirarchy of elements
. . . representation Σ 0..* code How this element is represented in instances xmlAttr | xmlText | typeAttr | cdaText | xhtml
PropertyRepresentation ( ( Required )
. . . name Σ 0..1 string Name for this particular element definition (reference target) Name for this particular element definition (reference target)
. . . label Σ 0..1 string Name for element to display with or prompt for element Name for element to display with or prompt for element
. . . code Σ 0..* Coding Defining code Defining code
LOINC Codes ( LOINC Codes ( Example )
. . . slicing Σ I 0..1 Element This element is sliced - slices follow This element is sliced - slices follow
If there are no discriminators, there must be a definition If there are no discriminators, there must be a definition
. . . . discriminator Σ 0..* string Element values that used to distinguish the slices Element values that are used to distinguish the slices
. . . . description Σ I 0..1 string Text description of how slicing works (or not) Text description of how slicing works (or not)
. . . . ordered Σ 0..1 boolean If elements must be in same order as slices If elements must be in same order as slices
. . . . rules Σ 1..1 code closed | open | openAtEnd closed | open | openAtEnd
SlicingRules ( ( Required )
. . . short Σ 0..1 string Concise definition for xml presentation Concise definition for xml presentation
. . . definition Σ 0..1 markdown Full formal definition as narrative text Full formal definition as narrative text
. . . comments Σ 0..1 markdown Comments about the use of this element Comments about the use of this element
. . . requirements Σ 0..1 markdown Why is this needed? Why this resource has been created
. . . alias Σ 0..* string Other names Other names
. . . min Σ I 0..1 integer Minimum Cardinality Minimum Cardinality
. . . max Σ I 0..1 string Maximum Cardinality (a number or *) Maximum Cardinality (a number or *)
Max SHALL be a number or "*" Max SHALL be a number or "*"
. . . base Σ 0..1 Element Base definition information for tools Base definition information for tools
. . . . path Σ 1..1 string Path that identifies the base element Path that identifies the base element
. . . . min Σ 1..1 integer Min cardinality of the base element Min cardinality of the base element
. . . . max Σ 1..1 string Max cardinality of the base element 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 Data type and Profile for this element
Aggregation may only be specified if one of the allowed types for the element is a resource Aggregation may only be specified if one of the allowed types for the element is a resource
. . . . code Σ 1..1 code Name of Data type or Resource Name of Data type or Resource
FHIRDefinedType ( Required ( Extensible )
. . . . profile Σ 0..1 uri Profile (StructureDefinition) to apply (or IG)
. . . . targetProfile Σ 0..* 0..1 uri Profile (StructureDefinition) to apply (or IG) Profile (StructureDefinition) to apply to reference target (or IG)
. . . . aggregation Σ I 0..* code contained | referenced | bundled - how aggregated contained | referenced | bundled - how aggregated
AggregationMode ( ( Required )
. . nameReference . . versioning Σ I 0..1 string code To another element constraint (by element.name) either | independent | specific
ReferenceVersionRules ( Required )
. . . defaultValue[x] Σ I 0..1 * Specified value it missing from instance Specified value if missing from instance
. . . meaningWhenMissing Σ I 0..1 markdown Implicit meaning when this element is missing Implicit meaning when this element is missing
. . . fixed[x] Σ I 0..1 * Value must be exactly this Value must be exactly this
. . . pattern[x] Σ I 0..1 * Value must have at least these property values Value must have at least these property values
. . . example[x] Σ 0..1 * Example value: [as defined for type] Example value (as defined for type)
. . . minValue[x] Σ 0..1 Minimum Allowed Value (for some types)
. . . . minValueDate date
. . . . minValueDateTime Minimum Allowed Value (for some types) dateTime
. maxValue[x] . . . 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 Maximum Allowed Value (for some types) dateTime
. . . . maxValueInstant instant
.... maxValueTime time
.... maxValueDecimal decimal
.... maxValueInteger integer
.... maxValuePositiveInt positiveInt
.... maxValueUnsignedInt unsignedInt
.... maxValueQuantity Quantity
. . . maxLength Σ 0..1 integer Max length for strings Max length for strings
. . . condition Σ 0..* id Reference to invariant about presence Reference to invariant about presence
. . . constraint Σ 0..* Element Condition that must evaluate to true Condition that must evaluate to true
. . . . key Σ I 1..1 id Target of 'condition' reference above Target of 'condition' reference above
. . . . requirements Σ 0..1 string Why this constraint necessary or appropriate Why this constraint is necessary or appropriate
. . . . severity Σ 1..1 code error | warning error | warning
ConstraintSeverity ( ( Required )
. . . . human Σ 1..1 string Human description of constraint Human description of constraint
. . . . expression Σ 0..1 string FluentPath expression of constraint
. . . . xpath Σ 1..1 string XPath expression of constraint XPath expression of constraint
. . . mustSupport Σ 0..1 boolean If the element must supported If the element must supported
. . . isModifier Σ 0..1 boolean If this modifies the meaning of other elements If this modifies the meaning of other elements
. . . isSummary Σ 0..1 boolean Include when _summary = true? Include when _summary = true?
. . . binding Σ I 0..1 Element ValueSet details if this is coded ValueSet details if this is coded
provide either a reference or a description (or both) provide either a reference or a description (or both)
. . . . strength Σ 1..1 code required | extensible | preferred | example required | extensible | preferred | example
BindingStrength ( ( Required )
. . . . description Σ I 0..1 string Human explanation of the value set Human explanation of the value set
. . . . valueSet[x] Σ I 0..1 Source of value set Source of value set
URI SHALL start with http:// or https:// URI SHALL start with http:// or https:// urn:
. . . . . valueSetUri uri
. . . . valueSetReference . valueSetReference Reference ( ValueSet )
. . . mapping Σ 0..* Element Map element to another set of definitions Map element to another set of definitions
. . . . identity Σ 1..1 id Reference to mapping declaration Reference to mapping declaration
. . . . language Σ 0..1 code Computable language of mapping Computable language of mapping
MimeType MimeType ( ( Required )
. . . . map Σ 1..1 string Details of the mapping Details of the mapping

Documentation for this format doco Documentation for this format

UML Diagram UML Diagram ( Legend )

Element Extensions - as described for all elements: additional information that is not part of the basic definition of the resource / type Extensions - as described for all elements: additional information that is not part of the basic definition of the resource / type extension : : Extension 0..* 0..* ElementDefinition The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension The path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extension path : : string [1..1] [1..1] Codes that define how this element is represented in instances, when the deviation varies from the normal case Codes that define how this element is represented in instances, when the deviation varies from the normal case representation : : code [0..*] « [0..*] « How a property is represented on the wire. (Strength=Required) How a property is represented on the wire. (Strength=Required) PropertyRepresentation ! » ! » The name of this element definition (to refer to it from other element definitions using ElementDefinition.nameReference). This is a unique name referring to a specific set of constraints applied to this element. One use of this is to provide a name to different slices of the same element The name of this element definition. 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 name : : string [0..1] [0..1] The text to display beside the element indicating its meaning or to use to prompt for the element in a user display or form 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] [0..1] A code that provides the meaning for the element according to a particular terminology A code that provides the meaning for the element according to a particular terminology code : : Coding [0..*] « [0..*] « Codes that indicate the meaning of a data element. (Strength=Example) Codes that indicate the meaning of a data element. (Strength=Example) LOINC ?? » LOINC ?? » A concise description of what this element means (e.g. for use in autogenerated summaries) A concise description of what this element means (e.g. for use in autogenerated summaries) short : : string [0..1] [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 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 definition : : markdown [0..1] [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 Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc comments : : markdown [0..1] [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 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] [0..1] Identifies additional names by which this element might also be known Identifies additional names by which this element might also be known alias : : string [0..*] [0..*] The minimum number of times this element SHALL appear in the instance The minimum number of times this element SHALL appear in the instance min : : integer [0..1] [0..1] The maximum number of times this element is permitted to appear in the instance The maximum number of times this element is permitted to appear in the instance max : : string [0..1] [0..1] Identifies the name of a slice defined elsewhere in the profile whose constraints should be applied to the current element Identifies the identity of an element defined elsewhere in the profile whose content rules should be applied to the current element nameReference : string [0..1] 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') 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] [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' The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing' meaningWhenMissing : : markdown [0..1] [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 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] [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.) 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] [0..1] A sample value for this element demonstrating the type of information that would typically be captured A sample value for this element demonstrating the type of information that would typically be captured example[x] : : * [0..1] [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 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 [0..1] | 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 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 [0..1] | 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 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] [0..1] A reference to an invariant that may make additional statements about the cardinality or value in the instance A reference to an invariant that may make additional statements about the cardinality or value in the instance condition : : id [0..*] [0..*] If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. If false, the element may be ignored and not supported If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. If false, the element may be ignored and not supported mustSupport : : boolean [0..1] [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 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] [0..1] Whether the element should be included if a client requests a search with the parameter _summary=true Whether the element should be included if a client requests a search with the parameter _summary=true isSummary : : boolean [0..1] [0..1] Slicing 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 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 : : string [0..*] [0..*] 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 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] [0..1] If the matching elements have to occur in the same order as defined in the profile If the matching elements have to occur in the same order as defined in the profile ordered : : boolean [0..1] [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 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] « [1..1] « How slices are interpreted when evaluating an instance. (Strength=Required) How slices are interpreted when evaluating an instance. (Strength=Required) SlicingRules ! » ! » 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 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] [1..1] Minimum cardinality of the base element identified by the path Minimum cardinality of the base element identified by the path min : : integer [1..1] [1..1] Maximum cardinality of the base element identified by the path Maximum cardinality of the base element identified by the path max : : string [1..1] [1..1] TypeRef Name of Data type or Resource that is a(or the) type used for this element Name of Data type or Resource that is a(or the) type used for this element code : : code [1..1] « [1..1] « Either a resource or a data type. (Strength=Required) Either a resource or a data type, including logical model types (Strength=Extensible) FHIRDefinedType ! » + » Identifies a profile structure or implementation Guide that SHALL hold for resources or datatypes referenced as the type of this element. Can be a local reference - to another structure in this profile, or a reference to a structure in another profile. When more than one profile is specified, the content must conform to all of them. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide Identifies a profile structure or implementation Guide that SHALL hold for the datatype this element refers to. Can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition in another profile. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide profile : : uri [0..*] [0..1] Identifies a profile structure or implementation Guide that SHALL hold for the target of the reference this element refers to. Can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition in another profile. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide targetProfile : uri [0..1] 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 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..*] « [0..*] « How resource references can be aggregated. (Strength=Required) How resource references can be aggregated. (Strength=Required) AggregationMode ! » ! » Whether this reference needs to be version specific or version independent, or whetehr either can be used versioning : code [0..1] « Whether a reference needs to be version specific or version independent, or whetehr either can be used (Strength=Required) ReferenceVersionRules ! » Constraint Allows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinality 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] [1..1] Description of why this constraint is necessary or appropriate Description of why this constraint is necessary or appropriate requirements : : string [0..1] [0..1] Identifies the impact constraint violation has on the conformance of the instance Identifies the impact constraint violation has on the conformance of the instance severity : : code [1..1] « [1..1] « SHALL applications comply with this constraint? (Strength=Required) 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 Text that can be used to describe the constraint in messages identifying that the constraint has been violated human : : string [1..1] [1..1] An XPath A [FluentPath](http://hl7.org/fluentpath) expression of constraint that can be executed to see if this constraint is met expression of constraint that can be executed to see if this constraint is met : string [0..1] An XPath expression of constraint that can be executed to see if this constraint is met xpath : : string [1..1] [1..1] Binding 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 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] « [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required) Indication of the degree of conformance expectations associated with a binding. (Strength=Required) BindingStrength ! » ! » Describes the intended use of this particular set of codes Describes the intended use of this particular set of codes description : : string [0..1] [0..1] Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used Points 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] : : Type [0..1] « [0..1] « uri | Reference ( ValueSet ) » ) » Mapping An internal reference to the definition of a mapping An internal reference to the definition of a mapping identity : : id [1..1] [1..1] Identifies the computable language in which mapping.map is expressed Identifies the computable language in which mapping.map is expressed language : : code [0..1] « [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required) The mime type of an attachment. Any valid mime type is allowed. (Strength=Required) MimeType ! » ! » Expresses what part of the target specification corresponds to this element Expresses what part of the target specification corresponds to this element map : : string [1..1] [1..1] 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) 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 unncessary for tools to trace the deviation of the element through the derived and related profiles. This information is only provided where the element definition represents a constraint on another element definition, and must be present if there is a base element definition 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 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 base [0..1] The data type or resource that the value of this element is permitted to be The data type or resource that the value of this element is permitted to be type [0..*] Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instance 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) Binds to a value set if this element is coded (code, Coding, CodeableConcept) binding [0..1] Identifies a concept from an external specification that roughly corresponds to this element Identifies a concept from an external specification that roughly corresponds to this element mapping [0..*]

XML Template XML Template <

<[name] xmlns="http://hl7.org/fhir"> doco

 <!-- from Element: extension -->
 <
 <
 <
 <
 <</code>
 <
  <
  <
  <
  <

 <path value="[string]"/><!-- 1..1 Path of the element in the heirarchy of elements -->
 <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <name value="[string]"/><!-- 0..1 Name for this particular element definition (reference target) -->
 <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element -->
 <code><!-- 0..* Coding Defining code --></code>
 <slicing>  <!-- 0..1 This element is sliced - slices follow -->
  <discriminator value="[string]"/><!-- 0..* Element values that are used to distinguish the slices -->
  <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 xml presentation -->
 <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text -->
 <comments 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="[integer]"/><!-- ?? 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="[integer]"/><!-- 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="[code]"/><!-- 1..1 Name of Data type or Resource -->
  <profile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply (or IG) -->
  <targetProfile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply to reference target (or IG) -->
  <aggregation value="[code]"/><!-- ?? 0..* contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- 0..1 either | independent | specific -->

 </type>
 <
 <</defaultValue[x]>
 <
 <</fixed[x]>
 <</pattern[x]>
 <</example[x]>
 <</minValue[x]>
 <</maxValue[x]>
 <
 <
 <
  <
  <
  <
  <
  <

 <defaultValue[x]><!-- ?? 0..1 * Specified value if missing from instance --></defaultValue[x]>
 <meaningWhenMissing value="[markdown]"/><!-- ?? 0..1 Implicit meaning when this element is missing -->
 <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[x]><!-- 0..1 * Example value (as defined for type) --></example[x]>
 <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 FluentPath expression of constraint -->
  <xpath value="[string]"/><!-- 1..1 XPath expression of constraint -->

 </constraint>
 <
 <
 <
 <
  <
  <
  <</valueSet[x]>

 <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported -->
 <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements -->
 <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? -->
 <binding>  <!-- ?? 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- ?? 0..1 Human explanation of the value set -->
  <valueSet[x]><!-- ?? 0..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]>

 </binding>
 <
  <
  <
  <

 <mapping>  <!-- 0..* Map element to another set of definitions -->
  <identity value="[id]"/><!-- 1..1 Reference to mapping declaration -->
  <language value="[code]"/><!-- 0..1 Computable language of mapping  -->
  <map value="[string]"/><!-- 1..1 Details of the mapping -->

 </mapping>
</[name]>

JSON Template JSON Template {

{doco

  // from Element: extension
  "
  "
  "
  "
  "
  "
    "
    "
    "
    "

  "path" : "<string>", // R!  Path of the element in the heirarchy of elements
  "representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml
  "name" : "<string>", // Name for this particular element definition (reference target)
  "label" : "<string>", // Name for element to display with or prompt for element
  "code" : [{ Coding }], // Defining code
  "slicing" : { // This element is sliced - slices follow
    "discriminator" : ["<string>"], // Element values that are used to distinguish the slices
    "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 xml presentation
  "definition" : "<markdown>", // Full formal definition as narrative text
  "comments" : "<markdown>", // Comments about the use of this element
  "requirements" : "<markdown>", // Why this resource has been created
  "alias" : ["<string>"], // Other names
  "min" : <integer>, // 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" : <integer>, // 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" : "<code>", // R!  Name of Data type or Resource
    "profile" : "<uri>", // Profile (StructureDefinition) to apply (or IG)
    "targetProfile" : "<uri>", // Profile (StructureDefinition) to apply to reference target (or IG)
    "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
    "versioning" : "<code>" // either | independent | specific

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

  // defaultValue[x]: Specified value if missing from instance. One of these 23:
  "defaultValueInteger" : <integer>,
  "defaultValueDecimal" : <decimal>,
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDate" : "<date>",
  "defaultValueInstant" : "<instant>",
  "defaultValueString" : "<string>",
  "defaultValueUri" : "<uri>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCode" : "<code>",
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueCoding" : { Coding },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueAttachment" : { Attachment },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValuePeriod" : { Period },
  "defaultValueRatio" : { Ratio },
  "defaultValueHumanName" : { HumanName },
  "defaultValueAddress" : { Address },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueSchedule" : { Schedule },
  "defaultValueReference" : { Reference },
  "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing

  // fixed[x]: Value must be exactly this. One of these 23:
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },

  "fixedInteger" : <integer>,
  "fixedDecimal" : <decimal>,
  "fixedDateTime" : "<dateTime>",
  "fixedDate" : "<date>",
  "fixedInstant" : "<instant>",
  "fixedString" : "<string>",
  "fixedUri" : "<uri>",
  "fixedBoolean" : <boolean>,
  "fixedCode" : "<code>",
  "fixedBase64Binary" : "<base64Binary>",
  "fixedCoding" : { Coding },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedAttachment" : { Attachment },
  "fixedIdentifier" : { Identifier },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedPeriod" : { Period },
  "fixedRatio" : { Ratio },
  "fixedHumanName" : { HumanName },
  "fixedAddress" : { Address },
  "fixedContactPoint" : { ContactPoint },
  "fixedSchedule" : { Schedule },
  "fixedReference" : { Reference },

  // pattern[x]: Value must have at least these property values. One of these 23:
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  
  ">,
  ">,
  ">",
  ">",
  ">",
  ">",
  ">",
  ">,
  ">",
  ">",
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  " },
  "
  "
  "
    "
    "
    "
    "
    "

  "patternInteger" : <integer>,
  "patternDecimal" : <decimal>,
  "patternDateTime" : "<dateTime>",
  "patternDate" : "<date>",
  "patternInstant" : "<instant>",
  "patternString" : "<string>",
  "patternUri" : "<uri>",
  "patternBoolean" : <boolean>,
  "patternCode" : "<code>",
  "patternBase64Binary" : "<base64Binary>",
  "patternCoding" : { Coding },
  "patternCodeableConcept" : { CodeableConcept },
  "patternAttachment" : { Attachment },
  "patternIdentifier" : { Identifier },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternPeriod" : { Period },
  "patternRatio" : { Ratio },
  "patternHumanName" : { HumanName },
  "patternAddress" : { Address },
  "patternContactPoint" : { ContactPoint },
  "patternSchedule" : { Schedule },
  "patternReference" : { Reference },
  // example[x]: Example value (as defined for type). One of these 23:

  "exampleInteger" : <integer>,
  "exampleDecimal" : <decimal>,
  "exampleDateTime" : "<dateTime>",
  "exampleDate" : "<date>",
  "exampleInstant" : "<instant>",
  "exampleString" : "<string>",
  "exampleUri" : "<uri>",
  "exampleBoolean" : <boolean>,
  "exampleCode" : "<code>",
  "exampleBase64Binary" : "<base64Binary>",
  "exampleCoding" : { Coding },
  "exampleCodeableConcept" : { CodeableConcept },
  "exampleAttachment" : { Attachment },
  "exampleIdentifier" : { Identifier },
  "exampleQuantity" : { Quantity },
  "exampleRange" : { Range },
  "examplePeriod" : { Period },
  "exampleRatio" : { Ratio },
  "exampleHumanName" : { HumanName },
  "exampleAddress" : { Address },
  "exampleContactPoint" : { ContactPoint },
  "exampleSchedule" : { Schedule },
  "exampleReference" : { Reference },
  // minValue[x]: Minimum Allowed Value (for some types). One of these 9:

  "minValueDate" : "<date>",
  "minValueDateTime" : "<dateTime>",
  "minValueInstant" : "<instant>",
  "minValueTime" : "<time>",
  "minValueDecimal" : <decimal>,
  "minValueInteger" : <integer>,
  "minValuePositiveInt" : "<positiveInt>",
  "minValueUnsignedInt" : "<unsignedInt>",
  "minValueQuantity" : { Quantity },
  // maxValue[x]: Maximum Allowed Value (for some types). One of these 9:

  "maxValueDate" : "<date>",
  "maxValueDateTime" : "<dateTime>",
  "maxValueInstant" : "<instant>",
  "maxValueTime" : "<time>",
  "maxValueDecimal" : <decimal>,
  "maxValueInteger" : <integer>,
  "maxValuePositiveInt" : "<positiveInt>",
  "maxValueUnsignedInt" : "<unsignedInt>",
  "maxValueQuantity" : { Quantity },
  "maxLength" : <integer>, // Max length for strings
  "condition" : ["<id>"], // Reference to invariant about presence
  "constraint" : [{ // Condition that must evaluate to true
    "key" : "<id>", // C? R!  Target of 'condition' reference above
    "requirements" : "<string>", // Why this constraint is necessary or appropriate
    "severity" : "<code>", // R!  error | warning
    "human" : "<string>", // R!  Human description of constraint
    "expression" : "<string>", // FluentPath expression of constraint
    "xpath" : "<string>" // R!  XPath expression of constraint

  }],
  "
  "
  "
  "
    "
    "

  "mustSupport" : <boolean>, // If the element must supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isSummary" : <boolean>, // Include when _summary = true?
  "binding" : { // C? ValueSet details if this is coded
    "strength" : "<code>", // R!  required | extensible | preferred | example
    "description" : "<string>", // C? Human explanation of the value set

    // valueSet[x]: Source of value set. One of these 2:
    ">"
    " }

    "valueSetUri" : "<uri>"
    "valueSetReference" : { Reference(ValueSet) }

  },
  "
    "
    "
    "

  "mapping" : [{ // Map element to another set of definitions
    "identity" : "<id>", // R!  Reference to mapping declaration
    "language" : "<code>", // Computable language of mapping 
    "map" : "<string>" // R!  Details of the mapping

  }]
}

Turtle Template


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

[
 # from Element: Element.extension
  fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the heirarchy of elements
  fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml
  fhir:ElementDefinition.name [ string ]; # 0..1 Name for this particular element definition (reference target)
  fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element
  fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Defining code
  fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow
    fhir:ElementDefinition.slicing.discriminator [ string ], ... ; # 0..* Element values that are used to distinguish the slices
    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 xml presentation
  fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text
  fhir:ElementDefinition.comments [ 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 [ integer ]; # 0..1 Minimum Cardinality
  fhir:ElementDefinition.max [ string ]; # 0..1 Maximum Cardinality (a number or *)
  fhir:ElementDefinition.base [ # 0..1 Base definition information for tools
    fhir:ElementDefinition.base.path [ string ]; # 1..1 Path that identifies the base element
    fhir:ElementDefinition.base.min [ integer ]; # 1..1 Min cardinality of the base element
    fhir:ElementDefinition.base.max [ string ]; # 1..1 Max cardinality of the base element
  ];
  fhir:ElementDefinition.contentReference [ uri ]; # 0..1 Reference to definition of content for the element
  fhir:ElementDefinition.type [ # 0..* Data type and Profile for this element
    fhir:ElementDefinition.type.code [ code ]; # 1..1 Name of Data type or Resource
    fhir:ElementDefinition.type.profile [ uri ]; # 0..1 Profile (StructureDefinition) to apply (or IG)
    fhir:ElementDefinition.type.targetProfile [ uri ]; # 0..1 Profile (StructureDefinition) to apply to reference target (or IG)
    fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated
    fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific
  ], ...;
  # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 38
    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCode [ code ]
    fhir:ElementDefinition.defaultValueDate [ date ]
    fhir:ElementDefinition.defaultValueDateTime [ dateTime ]
    fhir:ElementDefinition.defaultValueDecimal [ decimal ]
    fhir:ElementDefinition.defaultValueId [ id ]
    fhir:ElementDefinition.defaultValueInstant [ instant ]
    fhir:ElementDefinition.defaultValueInteger [ integer ]
    fhir:ElementDefinition.defaultValueMarkdown [ markdown ]
    fhir:ElementDefinition.defaultValueOid [ oid ]
    fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.defaultValueString [ string ]
    fhir:ElementDefinition.defaultValueTime [ time ]
    fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.defaultValueUri [ uri ]
    fhir:ElementDefinition.defaultValueAddress [ Address ]
    fhir:ElementDefinition.defaultValueAge [ Age ]
    fhir:ElementDefinition.defaultValueAnnotation [ Annotation ]
    fhir:ElementDefinition.defaultValueAttachment [ Attachment ]
    fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.defaultValueCoding [ Coding ]
    fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ]
    fhir:ElementDefinition.defaultValueCount [ Count ]
    fhir:ElementDefinition.defaultValueDistance [ Distance ]
    fhir:ElementDefinition.defaultValueDuration [ Duration ]
    fhir:ElementDefinition.defaultValueHumanName [ HumanName ]
    fhir:ElementDefinition.defaultValueIdentifier [ Identifier ]
    fhir:ElementDefinition.defaultValueMoney [ Money ]
    fhir:ElementDefinition.defaultValuePeriod [ Period ]
    fhir:ElementDefinition.defaultValueQuantity [ Quantity ]
    fhir:ElementDefinition.defaultValueRange [ Range ]
    fhir:ElementDefinition.defaultValueRatio [ Ratio ]
    fhir:ElementDefinition.defaultValueReference [ Reference ]
    fhir:ElementDefinition.defaultValueSampledData [ SampledData ]
    fhir:ElementDefinition.defaultValueSignature [ Signature ]
    fhir:ElementDefinition.defaultValueTiming [ Timing ]
    fhir:ElementDefinition.defaultValueMeta [ Meta ]
  fhir:ElementDefinition.meaningWhenMissing [ markdown ]; # 0..1 Implicit meaning when this element is missing
  # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 38
    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCode [ code ]
    fhir:ElementDefinition.fixedDate [ date ]
    fhir:ElementDefinition.fixedDateTime [ dateTime ]
    fhir:ElementDefinition.fixedDecimal [ decimal ]
    fhir:ElementDefinition.fixedId [ id ]
    fhir:ElementDefinition.fixedInstant [ instant ]
    fhir:ElementDefinition.fixedInteger [ integer ]
    fhir:ElementDefinition.fixedMarkdown [ markdown ]
    fhir:ElementDefinition.fixedOid [ oid ]
    fhir:ElementDefinition.fixedPositiveInt [ positiveInt ]
    fhir:ElementDefinition.fixedString [ string ]
    fhir:ElementDefinition.fixedTime [ time ]
    fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.fixedUri [ uri ]
    fhir:ElementDefinition.fixedAddress [ Address ]
    fhir:ElementDefinition.fixedAge [ Age ]
    fhir:ElementDefinition.fixedAnnotation [ Annotation ]
    fhir:ElementDefinition.fixedAttachment [ Attachment ]
    fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.fixedCoding [ Coding ]
    fhir:ElementDefinition.fixedContactPoint [ ContactPoint ]
    fhir:ElementDefinition.fixedCount [ Count ]
    fhir:ElementDefinition.fixedDistance [ Distance ]
    fhir:ElementDefinition.fixedDuration [ Duration ]
    fhir:ElementDefinition.fixedHumanName [ HumanName ]
    fhir:ElementDefinition.fixedIdentifier [ Identifier ]
    fhir:ElementDefinition.fixedMoney [ Money ]
    fhir:ElementDefinition.fixedPeriod [ Period ]
    fhir:ElementDefinition.fixedQuantity [ Quantity ]
    fhir:ElementDefinition.fixedRange [ Range ]
    fhir:ElementDefinition.fixedRatio [ Ratio ]
    fhir:ElementDefinition.fixedReference [ Reference ]
    fhir:ElementDefinition.fixedSampledData [ SampledData ]
    fhir:ElementDefinition.fixedSignature [ Signature ]
    fhir:ElementDefinition.fixedTiming [ Timing ]
    fhir:ElementDefinition.fixedMeta [ Meta ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 38
    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCode [ code ]
    fhir:ElementDefinition.patternDate [ date ]
    fhir:ElementDefinition.patternDateTime [ dateTime ]
    fhir:ElementDefinition.patternDecimal [ decimal ]
    fhir:ElementDefinition.patternId [ id ]
    fhir:ElementDefinition.patternInstant [ instant ]
    fhir:ElementDefinition.patternInteger [ integer ]
    fhir:ElementDefinition.patternMarkdown [ markdown ]
    fhir:ElementDefinition.patternOid [ oid ]
    fhir:ElementDefinition.patternPositiveInt [ positiveInt ]
    fhir:ElementDefinition.patternString [ string ]
    fhir:ElementDefinition.patternTime [ time ]
    fhir:ElementDefinition.patternUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.patternUri [ uri ]
    fhir:ElementDefinition.patternAddress [ Address ]
    fhir:ElementDefinition.patternAge [ Age ]
    fhir:ElementDefinition.patternAnnotation [ Annotation ]
    fhir:ElementDefinition.patternAttachment [ Attachment ]
    fhir:ElementDefinition.patternCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.patternCoding [ Coding ]
    fhir:ElementDefinition.patternContactPoint [ ContactPoint ]
    fhir:ElementDefinition.patternCount [ Count ]
    fhir:ElementDefinition.patternDistance [ Distance ]
    fhir:ElementDefinition.patternDuration [ Duration ]
    fhir:ElementDefinition.patternHumanName [ HumanName ]
    fhir:ElementDefinition.patternIdentifier [ Identifier ]
    fhir:ElementDefinition.patternMoney [ Money ]
    fhir:ElementDefinition.patternPeriod [ Period ]
    fhir:ElementDefinition.patternQuantity [ Quantity ]
    fhir:ElementDefinition.patternRange [ Range ]
    fhir:ElementDefinition.patternRatio [ Ratio ]
    fhir:ElementDefinition.patternReference [ Reference ]
    fhir:ElementDefinition.patternSampledData [ SampledData ]
    fhir:ElementDefinition.patternSignature [ Signature ]
    fhir:ElementDefinition.patternTiming [ Timing ]
    fhir:ElementDefinition.patternMeta [ Meta ]
  # ElementDefinition.example[x] : 0..1 Example value (as defined for type). One of these 38
    fhir:ElementDefinition.exampleBase64Binary [ base64Binary ]
    fhir:ElementDefinition.exampleBoolean [ boolean ]
    fhir:ElementDefinition.exampleCode [ code ]
    fhir:ElementDefinition.exampleDate [ date ]
    fhir:ElementDefinition.exampleDateTime [ dateTime ]
    fhir:ElementDefinition.exampleDecimal [ decimal ]
    fhir:ElementDefinition.exampleId [ id ]
    fhir:ElementDefinition.exampleInstant [ instant ]
    fhir:ElementDefinition.exampleInteger [ integer ]
    fhir:ElementDefinition.exampleMarkdown [ markdown ]
    fhir:ElementDefinition.exampleOid [ oid ]
    fhir:ElementDefinition.examplePositiveInt [ positiveInt ]
    fhir:ElementDefinition.exampleString [ string ]
    fhir:ElementDefinition.exampleTime [ time ]
    fhir:ElementDefinition.exampleUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.exampleUri [ uri ]
    fhir:ElementDefinition.exampleAddress [ Address ]
    fhir:ElementDefinition.exampleAge [ Age ]
    fhir:ElementDefinition.exampleAnnotation [ Annotation ]
    fhir:ElementDefinition.exampleAttachment [ Attachment ]
    fhir:ElementDefinition.exampleCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.exampleCoding [ Coding ]
    fhir:ElementDefinition.exampleContactPoint [ ContactPoint ]
    fhir:ElementDefinition.exampleCount [ Count ]
    fhir:ElementDefinition.exampleDistance [ Distance ]
    fhir:ElementDefinition.exampleDuration [ Duration ]
    fhir:ElementDefinition.exampleHumanName [ HumanName ]
    fhir:ElementDefinition.exampleIdentifier [ Identifier ]
    fhir:ElementDefinition.exampleMoney [ Money ]
    fhir:ElementDefinition.examplePeriod [ Period ]
    fhir:ElementDefinition.exampleQuantity [ Quantity ]
    fhir:ElementDefinition.exampleRange [ Range ]
    fhir:ElementDefinition.exampleRatio [ Ratio ]
    fhir:ElementDefinition.exampleReference [ Reference ]
    fhir:ElementDefinition.exampleSampledData [ SampledData ]
    fhir:ElementDefinition.exampleSignature [ Signature ]
    fhir:ElementDefinition.exampleTiming [ Timing ]
    fhir:ElementDefinition.exampleMeta [ Meta ]
  # ElementDefinition.minValue[x] : 0..1 Minimum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.minValueDate [ date ]
    fhir:ElementDefinition.minValueDateTime [ dateTime ]
    fhir:ElementDefinition.minValueInstant [ instant ]
    fhir:ElementDefinition.minValueTime [ time ]
    fhir:ElementDefinition.minValueDecimal [ decimal ]
    fhir:ElementDefinition.minValueInteger [ integer ]
    fhir:ElementDefinition.minValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.minValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.minValueQuantity [ Quantity ]
  # ElementDefinition.maxValue[x] : 0..1 Maximum Allowed Value (for some types). One of these 9
    fhir:ElementDefinition.maxValueDate [ date ]
    fhir:ElementDefinition.maxValueDateTime [ dateTime ]
    fhir:ElementDefinition.maxValueInstant [ instant ]
    fhir:ElementDefinition.maxValueTime [ time ]
    fhir:ElementDefinition.maxValueDecimal [ decimal ]
    fhir:ElementDefinition.maxValueInteger [ integer ]
    fhir:ElementDefinition.maxValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.maxValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.maxValueQuantity [ Quantity ]
  fhir:ElementDefinition.maxLength [ integer ]; # 0..1 Max length for strings
  fhir:ElementDefinition.condition [ id ], ... ; # 0..* Reference to invariant about presence
  fhir:ElementDefinition.constraint [ # 0..* Condition that must evaluate to true
    fhir:ElementDefinition.constraint.key [ id ]; # 1..1 Target of 'condition' reference above
    fhir:ElementDefinition.constraint.requirements [ string ]; # 0..1 Why this constraint is necessary or appropriate
    fhir:ElementDefinition.constraint.severity [ code ]; # 1..1 error | warning
    fhir:ElementDefinition.constraint.human [ string ]; # 1..1 Human description of constraint
    fhir:ElementDefinition.constraint.expression [ string ]; # 0..1 FluentPath expression of constraint
    fhir:ElementDefinition.constraint.xpath [ string ]; # 1..1 XPath expression of constraint
  ], ...;
  fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must supported
  fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements
  fhir:ElementDefinition.isSummary [ boolean ]; # 0..1 Include when _summary = true?
  fhir:ElementDefinition.binding [ # 0..1 ValueSet details if this is coded
    fhir:ElementDefinition.binding.strength [ code ]; # 1..1 required | extensible | preferred | example
    fhir:ElementDefinition.binding.description [ string ]; # 0..1 Human explanation of the value set
    # ElementDefinition.binding.valueSet[x] : 0..1 Source of value set. One of these 2
      fhir:ElementDefinition.binding.valueSetUri [ uri ]
      fhir:ElementDefinition.binding.valueSetReference [ Reference(ValueSet) ]
  ];
  fhir:ElementDefinition.mapping [ # 0..* Map element to another set of definitions
    fhir:ElementDefinition.mapping.identity [ id ]; # 1..1 Reference to mapping declaration
    fhir:ElementDefinition.mapping.language [ code ]; # 0..1 Computable language of mapping
    fhir:ElementDefinition.mapping.map [ string ]; # 1..1 Details of the mapping
  ], ...;
]

Changes since DSTU2

ElementDefinition
ElementDefinition.representation Change codes from {xmlAttr} to {xmlAttr|xmlText|typeAttr|cdaText|xhtml}
ElementDefinition.contentReference Renamed from nameReference to contentReference
Type changed from string to uri
ElementDefinition.type.code Change binding strength from required to extensible
ElementDefinition.type.profile Max Cardinality changed from * to 1
ElementDefinition.type.targetProfile added
ElementDefinition.type.versioning added
ElementDefinition.defaultValue[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.fixed[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.pattern[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.example[x] Add Age, Add Count, Add Distance, Add Duration, Add Money
ElementDefinition.minValue[x] Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.maxValue[x] Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta
ElementDefinition.constraint.expression added

See the Full Difference for further information

Constraints

  • eld-1 : On ElementDefinition.slicing: If there are no discriminators, there must be a definition (xpath on f:ElementDefinition/f:slicing: (f:discriminator) or (f:description) : On ElementDefinition.slicing: If there are no discriminators, there must be a definition ( expression on ElementDefinition.slicing: discriminator.exists() or description.exists() )
  • eld-10 : On ElementDefinition.binding: provide either a reference or a description (or both) (xpath on f:ElementDefinition/f:binding: (exists(f:valueSetUri) or exists(f:valueSetReference)) or exists(f:description) : On ElementDefinition.binding: provide either a reference or a description (or both) ( expression on ElementDefinition.binding: valueSet.exists() or description.exists() )
  • eld-11 : Binding can only be present for coded elements, string, and uri (xpath: not(exists(f:binding)) or (count(f:type/f:code) = 0) or f:type/f:code/@value=('code','Coding','CodeableConcept','Quantity','Extension', 'string', 'uri') : Binding can only be present for coded elements, string, and uri ( expression : binding.empty() or type.code.empty() or type.select((code = 'code') or (code = 'Coding') or (code='CodeableConcept') or (code = 'Quantity') or (code = 'Extension') or (code = 'string') or (code = 'uri')).exists() )
  • eld-12 : On ElementDefinition.binding.valueSet[x]: URI SHALL start with http:// or https:// (xpath on f:ElementDefinition/f:binding/f:valueSet[x]: starts-with(string(@value), 'http:') or starts-with(string(@value), 'https:') : On ElementDefinition.binding.valueSet[x]: URI SHALL start with http:// or https:// urn: ( expression on ElementDefinition.binding.valueSet[x]: startsWith('http:') or startsWith('https') or startsWith('urn:') )
  • eld-13 : Types must be unique by the combination of code and profile (xpath: not(exists(for $type in f:type return $type/preceding-sibling::f:type[f:code/@value=$type/f:code/@value and f:profile/@value = $type/f:profile/@value])) : Types must be unique by the combination of code and profile ( expression : type.select(code&profile).isDistinct() )
  • eld-14 : Constraints must be unique by key (xpath: count(f:constraint) = count(distinct-values(f:constraint/f:key/@value)) : Constraints must be unique by key ( expression : constraint.select(key).isDistinct() )
  • eld-15 : default value and meaningWhenMissing are mutually exclusive (xpath: not(exists(f:*[starts-with(local-name(.), 'fixed')])) or not(exists(f:meaningWhenMissing)) : default value and meaningWhenMissing are mutually exclusive ( expression : defaultValue.empty() or meaningWhenMissing.empty() )
  • eld-2 : Min <= Max (xpath: not(exists(f:min)) or not(exists(f:max)) or (not(f:max/@value) and not(f:min/@value)) or (f:max/@value = '*') or (number(f:max/@value) >= f:min/@value) : Min <= Max ( expression : min.empty() or max.empty() or (max = '*') or (min <= max.toInteger()) )
  • eld-3 : On ElementDefinition.max: Max SHALL be a number or "*" (xpath on f:ElementDefinition/f:max: @value='*' or (normalize-space(@value)!='' and normalize-space(translate(@value, '0123456789',''))='') : On ElementDefinition.max: Max SHALL be a number or "*" ( expression on ElementDefinition.max: empty() or ($this = '*') or (toInteger() >= 0) )
  • eld-4 : On ElementDefinition.type: Aggregation may only be specified if one of the allowed types for the element is a resource (xpath on f:ElementDefinition/f:type: not(exists(f:aggregation)) or exists(f:code[@value = 'Reference']) : On ElementDefinition.type: Aggregation may only be specified if one of the allowed types for the element is a resource ( expression on ElementDefinition.type: aggregation.empty() or (code = 'Reference') )
  • eld-5 : Either a namereference or a fixed value (but not both) is permitted (xpath: not(exists(f:nameReference) and exists(f:*[starts-with(local-name(.), 'value')])) : if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding ( expression : contentReference.empty() or (type.empty() and defaultValue.empty() and fixed.empty() and pattern.empty() and example.empty() and minValue.empty() and maxValue.empty() and maxLength.empty() and binding.empty()) )
  • eld-6 : Fixed value may only be specified if there is one type (xpath: not(exists(f:*[starts-with(local-name(.), 'fixed')])) or (count(f:type)=1) : Fixed value may only be specified if there is one type ( expression : fixed.empty() or (type.count() <= 1) )
  • eld-7 : Pattern may only be specified if there is one type (xpath: not(exists(f:*[starts-with(local-name(.), 'pattern')])) or (count(f:type)=1) : Pattern may only be specified if there is one type ( expression : pattern.empty() or (type.count() <= 1) )
  • eld-8 : Pattern and value are mutually exclusive (xpath: not(exists(f:*[starts-with(local-name(.), 'pattern')])) or not(exists(f:*[starts-with(local-name(.), 'value')])) : Pattern and value are mutually exclusive ( expression : pattern.empty() or fixed.empty() )

 

2.25.0.2 Use of ElementDefinition.path

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

StructureDefinitions of type constraint (e.g. Resource and Data Type profiles) are not allowed to include ElementDefinitions with a new path not defined within the FHIR specification. However Logical Models and new custom resource definitions (see Custom Resource Policy ) are allowed to define new elements. When new Elements are defined, the following rules apply:

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

1.23.0.2 Interpretation of ElementDefinition in different contexts 2.25.0.3 Interpretation of ElementDefinition in different contexts The data type

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

ElementDefinition field ElementDefinition field DataElement Base definition, first element Type definition, first element Base definition, following elements Type definition, following elements Constraint Definition, first element Constraint Definition, first element Constraint Definition, following elements Constraint Definition, following elements
name prohibited prohibited prohibited prohibited optional, for profile re-use optional, for profile re-use
label optional optional optional recommended recommended
code optional optional optional optional optional
slicing prohibited prohibited prohibited prohibited optional
short/definition optional required required required required
requirements/
comments/alias
optional prohibited optional prohibited optional
base prohibited prohibited prohibited required required
type required required required optional optional
nameReference prohibited prohibited optional prohibited optional
min/max optional optional (irrelevant) required optional optional
defaultValue[x] optional prohibited optional prohibited optional
meaningWhenMissing optional prohibited optional prohibited optional
fixed[x] prohibited prohibited prohibited prohibited optional
pattern[x] optional prohibited prohibited prohibited optional
example[x] optional prohibited optional prohibited optional
minValue[x] optional prohibited prohibited prohibited optional
maxValue[x] optional prohibited prohibited prohibited optional
maxLength optional prohibited prohibited prohibited optional
mustSupport optional prohibited prohibited optional optional
isModifier prohibited prohibited optional prohibited optional
isSummary prohibited prohibited optional prohibited optional
binding optional prohibited optional prohibited optional constraint/mapping
constraint optional optional optional optional optional
condition optional prohibited optional prohibited optional
mapping optional optional optional optional Notes: Base definition: A StructureDefinition without a base element - e.g. a definition of a structure that doesn't constrain another structure Constraint definition: A StructureDefinition with a optional

Notes:

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

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

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

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

1.23.0.2.1 Rules about Slicing 2.25.0.3.1 Rules about Slicing Slicing is only allowed when constraining an existing structure

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

1.23.0.2.2 Rules about min and max 2.25.0.3.2 Rules about min and max In a

In a DataElement , , min and and max are always required. In a are always required.

In a StructureDefinition : :

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

1.23.0.2.3 Missing Elements 2.25.0.3.3 Missing Elements Most elements have a minimum cardinality of 0, which means that they may be missing from a resource when it is exchanged between systems. Generally, when an element is missing, all that an application processing the resource can say about the element is that the value is unknown - it may have a correct value, but it has not been provided for security or workflow reasons. On the other hand, it may not have a value at all. All the application can say is that the value is unknown. However, for some elements, this specification makes specific rules about what it means if the element is missing. For some elements, this takes the form of a default value, a value that should be assumed if on element is present. For example, here are some default values:

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

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

Most default values are mathematical / numerical non-operations e.g. false, 0 for addition or 1 for multiplication. Default values are rarely used because: The value must be known by all implementations When an element has a default value, it can never be unknown - e.g. it is implicitly mandatory The default value can never be changed. For other elements, the resource explicitly documents what the meaning of a missing element is, and the meaning is not represented by a default value. Some examples:
Element Default Value 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 other elements, the resource explicitly documents what the meaning of a missing element is, and the meaning is not represented by a default value. Some examples:

Like default values, and for the same reasons, assigning a meaning when an element is missing is something that is not done very often. Note that Profiles cannot change the default value or missing meaning of an element, since it can't be done in the base specification either. © HL7.org 2011+. FHIR DSTU2 (v1.0.2-7202) generated on Sat, Oct 24, 2015 07:44+1100. Links: Search
Element Meaning when missing Meaning when missing
Period.end If the end of the period is missing, it means that the period is ongoing 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 If there is no comparator, then there is no modification of the value
MedicationAdministration.wasNotGiven If this is missing, then the medication was administered 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 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 cannot change the default value or missing meaning of an element, since it can't be done in the base specification either.

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