Release 4

This page is part of the FHIR Specification (v4.0.1: R4 - Mixed Normative and STU) in it's permanent home (it will always be available at this URL). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

2.30.0 Element Definition

FHIR Infrastructure Work Group Maturity Level: Normative Standards Status: Normative
This page has been approved as part of an ANSI standard. See the Infrastructure Package for further details.

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

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

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

ElementDefinition is used in StructureDefinition

Structure

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

doco Documentation for this format

UML Diagram (Legend)

BackboneElement📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025extension : Extension 0..*📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025modifierExtension : Extension 0..*ElementDefinition📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025path : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025representation : code [0..*] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025PropertyRepresentation! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025sliceName : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025sliceIsConstraining : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025label : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025code : Coding [0..*] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025LOINCCodes?? »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025short : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025definition : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025comment : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025requirements : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025alias : string [0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025min : unsignedInt [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025max : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025contentReference : uri [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025defaultValue[x] : * [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025meaningWhenMissing : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025orderMeaning : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025fixed[x] : * [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025pattern[x] : * [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025minValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025maxValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025maxLength : integer [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025condition : id [0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025mustSupport : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025isModifier : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025isModifierReason : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025isSummary : boolean [0..1]Slicing📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025description : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025ordered : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025rules : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025SlicingRules! »Discriminator📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025type : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025DiscriminatorType! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025path : string [1..1]Base📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025path : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025min : unsignedInt [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025max : string [1..1]TypeRef📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025code : uri [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025FHIRDefinedType+ »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025profile : canonical [0..*] « StructureDefinition|ImplementationGuide »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025targetProfile : canonical [0..*] « StructureDefinition| ImplementationGuide »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025aggregation : code [0..*] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025AggregationMode! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025versioning : code [0..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025ReferenceVersionRules! »Example📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025label : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025value[x] : * [1..1]Constraint📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025key : id [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025requirements : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025severity : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025ConstraintSeverity! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025human : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025expression : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025xpath : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025source : canonical [0..1] « StructureDefinition »ElementDefinitionBinding📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025strength : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025BindingStrength! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025description : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025valueSet : canonical [0..1] « ValueSet »Mapping📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025identity : id [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025language : code [0..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025Mime Types! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025map : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025comment : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025discriminator[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025slicing[0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025base[0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025type[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025example[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025constraint[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025binding[0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025mapping[0..*]

XML Template

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

JSON Template

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

Turtle Template

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

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

Changes since Release 3

ElementDefinition
ElementDefinition.representation
  • Change value set from http://hl7.org/fhir/ValueSet/property-representation to http://hl7.org/fhir/ValueSet/property-representation|4.0.1
ElementDefinition.sliceIsConstraining
  • Added Element
ElementDefinition.slicing.discriminator.type
  • Change value set from http://hl7.org/fhir/ValueSet/discriminator-type to http://hl7.org/fhir/ValueSet/discriminator-type|4.0.1
ElementDefinition.slicing.ordered
  • Default Value "false" removed
ElementDefinition.slicing.rules
  • Change value set from http://hl7.org/fhir/ValueSet/resource-slicing-rules to http://hl7.org/fhir/ValueSet/resource-slicing-rules|4.0.1
ElementDefinition.type.profile
  • Max Cardinality changed from 1 to *
  • Type changed from uri to canonical(StructureDefinition | ImplementationGuide)
ElementDefinition.type.targetProfile
  • Max Cardinality changed from 1 to *
  • Type changed from uri to canonical(StructureDefinition | ImplementationGuide)
ElementDefinition.type.aggregation
  • Change value set from http://hl7.org/fhir/ValueSet/resource-aggregation-mode to http://hl7.org/fhir/ValueSet/resource-aggregation-mode|4.0.1
ElementDefinition.type.versioning
  • Change value set from http://hl7.org/fhir/ValueSet/reference-version-rules to http://hl7.org/fhir/ValueSet/reference-version-rules|4.0.1
  • Default Value "either" removed
ElementDefinition.defaultValue[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.fixed[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.pattern[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.example.value[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.constraint.severity
  • Change value set from http://hl7.org/fhir/ValueSet/constraint-severity to http://hl7.org/fhir/ValueSet/constraint-severity|4.0.1
ElementDefinition.constraint.expression
  • Min Cardinality changed from 1 to 0
ElementDefinition.constraint.source
  • Type changed from uri to canonical(StructureDefinition)
ElementDefinition.mustSupport
  • Default Value "false" removed
ElementDefinition.isModifier
  • Default Value "false" removed
ElementDefinition.isModifierReason
  • Added Element
ElementDefinition.isSummary
  • Default Value "false" removed
ElementDefinition.binding.strength
  • Change value set from http://hl7.org/fhir/ValueSet/binding-strength to http://hl7.org/fhir/ValueSet/binding-strength|4.0.1
ElementDefinition.binding.valueSet
  • Renamed from valueSet[x] to valueSet
  • Add Type canonical(ValueSet)
  • Remove Types uri, Reference(ValueSet)
ElementDefinition.mapping.language
  • Change value set from http://hl7.org/fhir/ValueSet/mimetypes to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1

See the Full Difference for further information

Structure

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

doco Documentation for this format

UML Diagram (Legend)

BackboneElement📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025extension : Extension 0..*📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025modifierExtension : Extension 0..*ElementDefinition📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025path : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025representation : code [0..*] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025PropertyRepresentation! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025sliceName : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025sliceIsConstraining : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025label : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025code : Coding [0..*] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025LOINCCodes?? »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025short : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025definition : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025comment : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025requirements : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025alias : string [0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025min : unsignedInt [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025max : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025contentReference : uri [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025defaultValue[x] : * [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025meaningWhenMissing : markdown [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025orderMeaning : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025fixed[x] : * [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025pattern[x] : * [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025minValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025maxValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025maxLength : integer [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025condition : id [0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025mustSupport : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025isModifier : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025isModifierReason : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025isSummary : boolean [0..1]Slicing📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025description : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025ordered : boolean [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025rules : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025SlicingRules! »Discriminator📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025type : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025DiscriminatorType! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025path : string [1..1]Base📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025path : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025min : unsignedInt [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025max : string [1..1]TypeRef📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025code : uri [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025FHIRDefinedType+ »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025profile : canonical [0..*] « StructureDefinition|ImplementationGuide »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025targetProfile : canonical [0..*] « StructureDefinition| ImplementationGuide »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025aggregation : code [0..*] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025AggregationMode! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025versioning : code [0..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025ReferenceVersionRules! »Example📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025label : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025value[x] : * [1..1]Constraint📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025key : id [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025requirements : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025severity : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025ConstraintSeverity! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025human : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025expression : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025xpath : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025source : canonical [0..1] « StructureDefinition »ElementDefinitionBinding📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025strength : code [1..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025BindingStrength! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025description : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025valueSet : canonical [0..1] « ValueSet »Mapping📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025identity : id [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025language : code [0..1] « 📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025Mime Types! »📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025map : string [1..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025comment : string [0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025discriminator[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025slicing[0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025base[0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025type[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025example[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025constraint[0..*]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025binding[0..1]📢 แจ้งเตือน: fhir/R/elementdefinition.html - Kapook Update 2025mapping[0..*]

XML Template

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

JSON Template

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

Turtle Template

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

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

Changes since Release 3

ElementDefinition
ElementDefinition.representation
  • Change value set from http://hl7.org/fhir/ValueSet/property-representation to http://hl7.org/fhir/ValueSet/property-representation|4.0.1
ElementDefinition.sliceIsConstraining
  • Added Element
ElementDefinition.slicing.discriminator.type
  • Change value set from http://hl7.org/fhir/ValueSet/discriminator-type to http://hl7.org/fhir/ValueSet/discriminator-type|4.0.1
ElementDefinition.slicing.ordered
  • Default Value "false" removed
ElementDefinition.slicing.rules
  • Change value set from http://hl7.org/fhir/ValueSet/resource-slicing-rules to http://hl7.org/fhir/ValueSet/resource-slicing-rules|4.0.1
ElementDefinition.type.profile
  • Max Cardinality changed from 1 to *
  • Type changed from uri to canonical(StructureDefinition | ImplementationGuide)
ElementDefinition.type.targetProfile
  • Max Cardinality changed from 1 to *
  • Type changed from uri to canonical(StructureDefinition | ImplementationGuide)
ElementDefinition.type.aggregation
  • Change value set from http://hl7.org/fhir/ValueSet/resource-aggregation-mode to http://hl7.org/fhir/ValueSet/resource-aggregation-mode|4.0.1
ElementDefinition.type.versioning
  • Change value set from http://hl7.org/fhir/ValueSet/reference-version-rules to http://hl7.org/fhir/ValueSet/reference-version-rules|4.0.1
  • Default Value "either" removed
ElementDefinition.defaultValue[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.fixed[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.pattern[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.example.value[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
ElementDefinition.constraint.severity
  • Change value set from http://hl7.org/fhir/ValueSet/constraint-severity to http://hl7.org/fhir/ValueSet/constraint-severity|4.0.1
ElementDefinition.constraint.expression
  • Min Cardinality changed from 1 to 0
ElementDefinition.constraint.source
  • Type changed from uri to canonical(StructureDefinition)
ElementDefinition.mustSupport
  • Default Value "false" removed
ElementDefinition.isModifier
  • Default Value "false" removed
ElementDefinition.isModifierReason
  • Added Element
ElementDefinition.isSummary
  • Default Value "false" removed
ElementDefinition.binding.strength
  • Change value set from http://hl7.org/fhir/ValueSet/binding-strength to http://hl7.org/fhir/ValueSet/binding-strength|4.0.1
ElementDefinition.binding.valueSet
  • Renamed from valueSet[x] to valueSet
  • Add Type canonical(ValueSet)
  • Remove Types uri, Reference(ValueSet)
ElementDefinition.mapping.language
  • Change value set from http://hl7.org/fhir/ValueSet/mimetypes to http://hl7.org/fhir/ValueSet/mimetypes|4.0.1

See the Full Difference for further information

Constraints

idLevelLocationDescriptionExpression
eld-1Rule ElementDefinition.slicingIf there are no discriminators, there must be a definitiondiscriminator.exists() or description.exists()
eld-2Rule (base)Min <= Maxmin.empty() or max.empty() or (max = '*') or iif(max != '*', min <= max.toInteger())
eld-3Rule ElementDefinition.maxMax SHALL be a number or "*"empty() or ($this = '*') or (toInteger() >= 0)
eld-4Rule ElementDefinition.typeAggregation may only be specified if one of the allowed types for the element is a referenceaggregation.empty() or (code = 'Reference') or (code = 'canonical')
eld-5Rule (base)if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or bindingcontentReference.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-6Rule (base)Fixed value may only be specified if there is one typefixed.empty() or (type.count() <= 1)
eld-7Rule (base)Pattern may only be specified if there is one typepattern.empty() or (type.count() <= 1)
eld-8Rule (base)Pattern and fixed are mutually exclusivepattern.empty() or fixed.empty()
eld-11Rule (base)Binding can only be present for coded elements, string, and uribinding.empty() or type.code.empty() or type.select((code = 'code') or (code = 'Coding') or (code='CodeableConcept') or (code = 'Quantity') or (code = 'string') or (code = 'uri')).exists()
eld-12Rule ElementDefinition.bindingValueSet SHALL start with http:// or https:// or urn:valueSet.exists() implies (valueSet.startsWith('http:') or valueSet.startsWith('https') or valueSet.startsWith('urn:'))
eld-13Rule (base)Types must be unique by codetype.select(code).isDistinct()
eld-14Rule (base)Constraints must be unique by keyconstraint.select(key).isDistinct()
eld-15Rule (base)default value and meaningWhenMissing are mutually exclusivedefaultValue.empty() or meaningWhenMissing.empty()
eld-16Rule (base)sliceName must be composed of proper tokens separated by "/"sliceName.empty() or sliceName.matches('^[a-zA-Z0-9\\/\\-_\\[\\]\\@]+$')
eld-17Rule ElementDefinition.typetargetProfile is only allowed if the type is Reference or canonical(code='Reference' or code = 'canonical') or targetProfile.empty()
eld-18Rule (base)Must have a modifier reason if isModifier = true(isModifier.exists() and isModifier) implies isModifierReason.exists()
eld-19Rule (base)Element names cannot include some special characterspath.matches('[^\\s\\.,:;\\\'"\\/|?!@#$%&*()\\[\\]{}]{1,64}(\\.[^\\s\\.,:;\\\'"\\/|?!@#$%&*()\\[\\]{}]{1,64}(\\[x\\])?(\\:[^\\s\\.]+)?)*')
eld-20Warning (base)Element names should be simple alphanumerics with a max of 64 characters, or code generation tools may be brokenpath.matches('[A-Za-z][A-Za-z0-9]*(\\.[a-z][A-Za-z0-9]*(\\[x])?)*')
eld-21Warning ElementDefinition.constraintConstraints should have an expression or else validators will not be able to enforce themexpression.exists()
eld-22Rule (base)sliceIsConstraining can only appear if slicename is presentsliceIsConstraining.exists() implies sliceName.exists()

 

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

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

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

Elements may be defined in:

  • StructureDefinitions of kind = resource, complex-type or primitive-type, where derivation = specialization. These are either Resources or Data Types defined in the specification
  • StructureDefinitions of kind = logical
  • Data Elements

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

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

  • The id will be constructed as a dot separated string, each part corresponding to a token in the path
  • For each token in the path, use the syntax pathpart:slicename/reslicename
  • For type choice elements, the id reflects the type slice. e.g. For path = Patient.deceasedBoolean, the id is Patient.deceased[x]:deceasedBoolean

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

The data type ElementDefinition is used in StructureDefinition. The way its elements are to be used and interpreted depends on the context:

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

Notes:

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

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

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

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

For a description of slicing, see Slicing

  • Slicing is only allowed when constraining an existing structure
  • slicing can only be used on the first repetition of an element. This first element that declares slicing is considered to be the slicing entry
  • All elements following the first repeat that containing a slicing SHALL have a sliceName
  • The special slice name @default applies to all entries that are not in any other slice
  • The first entry (the one having the slicing information) is understood to be the set of constraints that apply to all slices and entries, whether they have a defined slice or not It's use follows the "normal case", except:
    • slicing must be present
    • min governs the number of total occurrences of the sliced element including the number of occurrences in the open portion of the slice (individual slices may have a different min value).

Elements that allow a choice of multiple types can be constrained. In principle, there are two different types of constraints to apply:

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

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

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

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

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

However, for some elements, this specification makes specific rules about what it means if the element is missing. Constraints on other structures cannot change the missing meaning of an element. Here is a list of all elements with a default value or a missing meaning:

This specification does not define any default values for resources or data types 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
  • The presence of a default value interacts with minimum cardinality and the :missing search token in ways that create confusion for implementations

Note that default values can be defined in Logical Models.