Current Build

2.30.0 Element Definition

FHIR Infrastructure Work Group Maturity Level: Normative Standards Status: Normative

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 value 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, 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)

BackboneElementExtensions - as described for all elements: additional information that is not part of the basic definition of the resource / typeextension : Extension 0..*Modifier Extensions - as described for some elements: additional information that is not part of the basic definition of the resource / type that modifies the interpretation of the containing elementmodifierExtension : Extension 0..*ElementDefinitionThe path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extensionpath : string [1..1]Codes that define how this element is represented in instances, when the deviation varies from the normal caserepresentation : code [0..*] « How a property is represented when serialized. (Strength=Required)PropertyRepresentation! »The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same elementsliceName : string [0..1]If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceNamesliceIsConstraining : boolean [0..1]A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or formlabel : string [0..1]A code that has the same meaning as the element in a particular terminologycode : Coding [0..*] « Codes that indicate the meaning of a data element. (Strength=Example)LOINCCodes?? »A concise description of what this element means (e.g. for use in autogenerated summaries)short : string [0..1]Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition)definition : markdown [0..1]Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment)comment : markdown [0..1]This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this elementrequirements : markdown [0..1]Identifies additional names by which this element might also be knownalias : string [0..*]The minimum number of times this element SHALL appear in the instancemin : unsignedInt [0..1]The maximum number of times this element is permitted to appear in the instancemax : string [0..1]Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etccontentReference : uri [0..1]The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false')defaultValue[x] : * [0..1]The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing')meaningWhenMissing : markdown [0..1]If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaningorderMeaning : string [0..1]Specifies a value that SHALL be exactly the value for this element in the instance. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missingfixed[x] : * [0..1]Specifies a value that the value in the instance SHALL follow - that is, any value in the pattern must be found in the instance. Other additional values may be found too. This is effectively constraint by example. When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. When pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] array must (recursively) match at least one element from the instance array. When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 1. If primitive: it must match exactly the pattern value 2. If a complex object: it must match (recursively) the pattern value 3. If an array: it must match (recursively) the pattern valuepattern[x] : * [0..1]The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and QuantityminValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and QuantitymaxValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the elementmaxLength : integer [0..1]A reference to an invariant that may make additional statements about the cardinality or value in the instancecondition : id [0..*]If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementationmustSupport : boolean [0..1]If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular systemisModifier : boolean [0..1]Explains how that element affects the interpretation of the resource or element that contains itisModifierReason : string [0..1]Whether the element should be included if a client requests a search with the parameter _summary=trueisSummary : boolean [0..1]SlicingA human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiateddescription : string [0..1]If the matching elements have to occur in the same order as defined in the profileordered : boolean [0..1]Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the endrules : code [1..1] « How slices are interpreted when evaluating an instance. (Strength=Required)SlicingRules! »DiscriminatorHow the element value is interpreted when discrimination is evaluatedtype : code [1..1] « How an element value is interpreted when discrimination is evaluated. (Strength=Required)DiscriminatorType! »A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is basedpath : string [1..1]BaseThe Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.basepath : string [1..1]Minimum cardinality of the base element identified by the pathmin : unsignedInt [1..1]Maximum cardinality of the base element identified by the pathmax : string [1..1]TypeRefURL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical modelscode : uri [1..1] « Either a resource or a data type, including logical model types. (Strength=Extensible)FHIRDefinedType+ »Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guideprofile : canonical [0..*] « StructureDefinition|ImplementationGuide »Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guidetargetProfile : canonical [0..*] « StructureDefinition| ImplementationGuide »If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundleaggregation : code [0..*] « How resource references can be aggregated. (Strength=Required)AggregationMode! »Whether this reference needs to be version specific or version independent, or whether either can be usedversioning : code [0..1] « Whether a reference needs to be version specific or version independent, or whether either can be used. (Strength=Required)ReferenceVersionRules! »ExampleDescribes the purpose of this example amoung the set of exampleslabel : string [1..1]The actual value for the element, which must be one of the types allowed for this elementvalue[x] : * [1..1]ConstraintAllows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinalitykey : id [1..1]Description of why this constraint is necessary or appropriaterequirements : string [0..1]Identifies the impact constraint violation has on the conformance of the instanceseverity : code [1..1] « SHALL applications comply with this constraint? (Strength=Required)ConstraintSeverity! »Text that can be used to describe the constraint in messages identifying that the constraint has been violatedhuman : string [1..1]A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is metexpression : string [0..1]An XPath expression of constraint that can be executed to see if this constraint is metxpath : string [0..1]A reference to the original source of the constraint, for traceability purposessource : canonical [0..1] « StructureDefinition »ElementDefinitionBindingIndicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instancesstrength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required)BindingStrength! »Describes the intended use of this particular set of codesdescription : string [0..1]Refers to the value set that identifies the set of codes the binding refers tovalueSet : canonical [0..1] « ValueSet »MappingAn internal reference to the definition of a mappingidentity : id [1..1]Identifies the computable language in which mapping.map is expressedlanguage : code [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)Mime Types! »Expresses what part of the target specification corresponds to this elementmap : string [1..1]Comments that provide information about the mapping or its usecomment : string [0..1]Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slicesdiscriminator[0..*]Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set)slicing[0..1]Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be samebase[0..1]The data type or resource that the value of this element is permitted to betype[0..*]A sample value for this element demonstrating the type of information that would typically be found in the elementexample[0..*]Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instanceconstraint[0..*]Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri)binding[0..1]Identifies a concept from an external specification that roughly corresponds to this elementmapping[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 49:
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCanonical" : "<canonical>",
  "defaultValueCode" : "<code>",
  "defaultValueDate" : "<date>",
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDecimal" : <decimal>,
  "defaultValueId" : "<id>",
  "defaultValueInstant" : "<instant>",
  "defaultValueInteger" : <integer>,
  "defaultValueMarkdown" : "<markdown>",
  "defaultValueOid" : "<oid>",
  "defaultValuePositiveInt" : "<positiveInt>",
  "defaultValueString" : "<string>",
  "defaultValueTime" : "<time>",
  "defaultValueUnsignedInt" : "<unsignedInt>",
  "defaultValueUri" : "<uri>",
  "defaultValueUrl" : "<url>",
  "defaultValueUuid" : "<uuid>",
  "defaultValueAddress" : { Address },
  "defaultValueAge" : { Age },
  "defaultValueAnnotation" : { Annotation },
  "defaultValueAttachment" : { Attachment },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueCoding" : { Coding },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueCount" : { Count },
  "defaultValueDistance" : { Distance },
  "defaultValueDuration" : { Duration },
  "defaultValueHumanName" : { HumanName },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueMoney" : { Money },
  "defaultValuePeriod" : { Period },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValueRatio" : { Ratio },
  "defaultValueReference" : { Reference },
  "defaultValueSampledData" : { SampledData },
  "defaultValueSignature" : { Signature },
  "defaultValueTiming" : { Timing },
  "defaultValueContactDetail" : { ContactDetail },
  "defaultValueContributor" : { Contributor },
  "defaultValueDataRequirement" : { DataRequirement },
  "defaultValueExpression" : { Expression },
  "defaultValueParameterDefinition" : { ParameterDefinition },
  "defaultValueRelatedArtifact" : { RelatedArtifact },
  "defaultValueTriggerDefinition" : { TriggerDefinition },
  "defaultValueUsageContext" : { UsageContext },
  "defaultValueDosage" : { Dosage },
  "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing
  "orderMeaning" : "<string>", // What the order of the elements means
  // fixed[x]: Value must be exactly this. One of these 49:
  "fixedBase64Binary" : "<base64Binary>",
  "fixedBoolean" : <boolean>,
  "fixedCanonical" : "<canonical>",
  "fixedCode" : "<code>",
  "fixedDate" : "<date>",
  "fixedDateTime" : "<dateTime>",
  "fixedDecimal" : <decimal>,
  "fixedId" : "<id>",
  "fixedInstant" : "<instant>",
  "fixedInteger" : <integer>,
  "fixedMarkdown" : "<markdown>",
  "fixedOid" : "<oid>",
  "fixedPositiveInt" : "<positiveInt>",
  "fixedString" : "<string>",
  "fixedTime" : "<time>",
  "fixedUnsignedInt" : "<unsignedInt>",
  "fixedUri" : "<uri>",
  "fixedUrl" : "<url>",
  "fixedUuid" : "<uuid>",
  "fixedAddress" : { Address },
  "fixedAge" : { Age },
  "fixedAnnotation" : { Annotation },
  "fixedAttachment" : { Attachment },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedCoding" : { Coding },
  "fixedContactPoint" : { ContactPoint },
  "fixedCount" : { Count },
  "fixedDistance" : { Distance },
  "fixedDuration" : { Duration },
  "fixedHumanName" : { HumanName },
  "fixedIdentifier" : { Identifier },
  "fixedMoney" : { Money },
  "fixedPeriod" : { Period },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedRatio" : { Ratio },
  "fixedReference" : { Reference },
  "fixedSampledData" : { SampledData },
  "fixedSignature" : { Signature },
  "fixedTiming" : { Timing },
  "fixedContactDetail" : { ContactDetail },
  "fixedContributor" : { Contributor },
  "fixedDataRequirement" : { DataRequirement },
  "fixedExpression" : { Expression },
  "fixedParameterDefinition" : { ParameterDefinition },
  "fixedRelatedArtifact" : { RelatedArtifact },
  "fixedTriggerDefinition" : { TriggerDefinition },
  "fixedUsageContext" : { UsageContext },
  "fixedDosage" : { Dosage },
  // pattern[x]: Value must have at least these property values. One of these 49:
  "patternBase64Binary" : "<base64Binary>",
  "patternBoolean" : <boolean>,
  "patternCanonical" : "<canonical>",
  "patternCode" : "<code>",
  "patternDate" : "<date>",
  "patternDateTime" : "<dateTime>",
  "patternDecimal" : <decimal>,
  "patternId" : "<id>",
  "patternInstant" : "<instant>",
  "patternInteger" : <integer>,
  "patternMarkdown" : "<markdown>",
  "patternOid" : "<oid>",
  "patternPositiveInt" : "<positiveInt>",
  "patternString" : "<string>",
  "patternTime" : "<time>",
  "patternUnsignedInt" : "<unsignedInt>",
  "patternUri" : "<uri>",
  "patternUrl" : "<url>",
  "patternUuid" : "<uuid>",
  "patternAddress" : { Address },
  "patternAge" : { Age },
  "patternAnnotation" : { Annotation },
  "patternAttachment" : { Attachment },
  "patternCodeableConcept" : { CodeableConcept },
  "patternCoding" : { Coding },
  "patternContactPoint" : { ContactPoint },
  "patternCount" : { Count },
  "patternDistance" : { Distance },
  "patternDuration" : { Duration },
  "patternHumanName" : { HumanName },
  "patternIdentifier" : { Identifier },
  "patternMoney" : { Money },
  "patternPeriod" : { Period },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternRatio" : { Ratio },
  "patternReference" : { Reference },
  "patternSampledData" : { SampledData },
  "patternSignature" : { Signature },
  "patternTiming" : { Timing },
  "patternContactDetail" : { ContactDetail },
  "patternContributor" : { Contributor },
  "patternDataRequirement" : { DataRequirement },
  "patternExpression" : { Expression },
  "patternParameterDefinition" : { ParameterDefinition },
  "patternRelatedArtifact" : { RelatedArtifact },
  "patternTriggerDefinition" : { TriggerDefinition },
  "patternUsageContext" : { UsageContext },
  "patternDosage" : { Dosage },
  "example" : [{ // Example value (as defined for type)
    "label" : "<string>", // R!  Describes the purpose of this example
    // value[x]: Value of Example (one of allowed types). One of these 49:
    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>
    "valueCanonical" : "<canonical>"
    "valueCode" : "<code>"
    "valueDate" : "<date>"
    "valueDateTime" : "<dateTime>"
    "valueDecimal" : <decimal>
    "valueId" : "<id>"
    "valueInstant" : "<instant>"
    "valueInteger" : <integer>
    "valueMarkdown" : "<markdown>"
    "valueOid" : "<oid>"
    "valuePositiveInt" : "<positiveInt>"
    "valueString" : "<string>"
    "valueTime" : "<time>"
    "valueUnsignedInt" : "<unsignedInt>"
    "valueUri" : "<uri>"
    "valueUrl" : "<url>"
    "valueUuid" : "<uuid>"
    "valueAddress" : { Address }
    "valueAge" : { Age }
    "valueAnnotation" : { Annotation }
    "valueAttachment" : { Attachment }
    "valueCodeableConcept" : { CodeableConcept }
    "valueCoding" : { Coding }
    "valueContactPoint" : { ContactPoint }
    "valueCount" : { Count }
    "valueDistance" : { Distance }
    "valueDuration" : { Duration }
    "valueHumanName" : { HumanName }
    "valueIdentifier" : { Identifier }
    "valueMoney" : { Money }
    "valuePeriod" : { Period }
    "valueQuantity" : { Quantity }
    "valueRange" : { Range }
    "valueRatio" : { Ratio }
    "valueReference" : { Reference }
    "valueSampledData" : { SampledData }
    "valueSignature" : { Signature }
    "valueTiming" : { Timing }
    "valueContactDetail" : { ContactDetail }
    "valueContributor" : { Contributor }
    "valueDataRequirement" : { DataRequirement }
    "valueExpression" : { Expression }
    "valueParameterDefinition" : { ParameterDefinition }
    "valueRelatedArtifact" : { RelatedArtifact }
    "valueTriggerDefinition" : { TriggerDefinition }
    "valueUsageContext" : { UsageContext }
    "valueDosage" : { Dosage }
  }],
  // minValue[x]: Minimum Allowed Value (for some types). One of these 9:
  "minValueDate" : "<date>",
  "minValueDateTime" : "<dateTime>",
  "minValueInstant" : "<instant>",
  "minValueTime" : "<time>",
  "minValueDecimal" : <decimal>,
  "minValueInteger" : <integer>,
  "minValuePositiveInt" : "<positiveInt>",
  "minValueUnsignedInt" : "<unsignedInt>",
  "minValueQuantity" : { Quantity },
  // maxValue[x]: Maximum Allowed Value (for some types). One of these 9:
  "maxValueDate" : "<date>",
  "maxValueDateTime" : "<dateTime>",
  "maxValueInstant" : "<instant>",
  "maxValueTime" : "<time>",
  "maxValueDecimal" : <decimal>,
  "maxValueInteger" : <integer>,
  "maxValuePositiveInt" : "<positiveInt>",
  "maxValueUnsignedInt" : "<unsignedInt>",
  "maxValueQuantity" : { Quantity },
  "maxLength" : <integer>, // Max length for strings
  "condition" : ["<id>"], // Reference to invariant about presence
  "constraint" : [{ // Condition that must evaluate to true
    "key" : "<id>", // C? R!  Target of 'condition' reference above
    "requirements" : "<string>", // Why this constraint is necessary or appropriate
    "severity" : "<code>", // R!  error | warning
    "human" : "<string>", // R!  Human description of constraint
    "expression" : "<string>", // FHIRPath expression of constraint
    "xpath" : "<string>", // XPath expression of constraint
    "source" : { canonical(StructureDefinition) } // Reference to original source of constraint
  }],
  "mustSupport" : <boolean>, // If the element must be supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isModifierReason" : "<string>", // Reason that this element is marked as a modifier
  "isSummary" : <boolean>, // Include when _summary = true?
  "binding" : { // C? ValueSet details if this is coded
    "strength" : "<code>", // R!  required | extensible | preferred | example
    "description" : "<string>", // Human explanation of the value set
    "valueSet" : { canonical(ValueSet) } // C? Source of value set
  },
  "mapping" : [{ // Map element to another set of definitions
    "identity" : "<id>", // R!  Reference to mapping declaration
    "language" : "<code>", // Computable language of mapping
    "map" : "<string>", // R!  Details of the mapping
    "comment" : "<string>" // Comments about the mapping or its use
  }]
}

Turtle Template

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

[
 # from 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 49
    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCanonical [ canonical ]
    fhir:ElementDefinition.defaultValueCode [ code ]
    fhir:ElementDefinition.defaultValueDate [ date ]
    fhir:ElementDefinition.defaultValueDateTime [ dateTime ]
    fhir:ElementDefinition.defaultValueDecimal [ decimal ]
    fhir:ElementDefinition.defaultValueId [ id ]
    fhir:ElementDefinition.defaultValueInstant [ instant ]
    fhir:ElementDefinition.defaultValueInteger [ integer ]
    fhir:ElementDefinition.defaultValueMarkdown [ markdown ]
    fhir:ElementDefinition.defaultValueOid [ oid ]
    fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.defaultValueString [ string ]
    fhir:ElementDefinition.defaultValueTime [ time ]
    fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.defaultValueUri [ uri ]
    fhir:ElementDefinition.defaultValueUrl [ url ]
    fhir:ElementDefinition.defaultValueUuid [ uuid ]
    fhir:ElementDefinition.defaultValueAddress [ Address ]
    fhir:ElementDefinition.defaultValueAge [ Age ]
    fhir:ElementDefinition.defaultValueAnnotation [ Annotation ]
    fhir:ElementDefinition.defaultValueAttachment [ Attachment ]
    fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.defaultValueCoding [ Coding ]
    fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ]
    fhir:ElementDefinition.defaultValueCount [ Count ]
    fhir:ElementDefinition.defaultValueDistance [ Distance ]
    fhir:ElementDefinition.defaultValueDuration [ Duration ]
    fhir:ElementDefinition.defaultValueHumanName [ HumanName ]
    fhir:ElementDefinition.defaultValueIdentifier [ Identifier ]
    fhir:ElementDefinition.defaultValueMoney [ Money ]
    fhir:ElementDefinition.defaultValuePeriod [ Period ]
    fhir:ElementDefinition.defaultValueQuantity [ Quantity ]
    fhir:ElementDefinition.defaultValueRange [ Range ]
    fhir:ElementDefinition.defaultValueRatio [ Ratio ]
    fhir:ElementDefinition.defaultValueReference [ Reference ]
    fhir:ElementDefinition.defaultValueSampledData [ SampledData ]
    fhir:ElementDefinition.defaultValueSignature [ Signature ]
    fhir:ElementDefinition.defaultValueTiming [ Timing ]
    fhir: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.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 49
    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCanonical [ canonical ]
    fhir:ElementDefinition.fixedCode [ code ]
    fhir:ElementDefinition.fixedDate [ date ]
    fhir:ElementDefinition.fixedDateTime [ dateTime ]
    fhir:ElementDefinition.fixedDecimal [ decimal ]
    fhir:ElementDefinition.fixedId [ id ]
    fhir:ElementDefinition.fixedInstant [ instant ]
    fhir:ElementDefinition.fixedInteger [ integer ]
    fhir:ElementDefinition.fixedMarkdown [ markdown ]
    fhir:ElementDefinition.fixedOid [ oid ]
    fhir:ElementDefinition.fixedPositiveInt [ positiveInt ]
    fhir:ElementDefinition.fixedString [ string ]
    fhir:ElementDefinition.fixedTime [ time ]
    fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.fixedUri [ uri ]
    fhir:ElementDefinition.fixedUrl [ url ]
    fhir:ElementDefinition.fixedUuid [ uuid ]
    fhir:ElementDefinition.fixedAddress [ Address ]
    fhir:ElementDefinition.fixedAge [ Age ]
    fhir:ElementDefinition.fixedAnnotation [ Annotation ]
    fhir:ElementDefinition.fixedAttachment [ Attachment ]
    fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.fixedCoding [ Coding ]
    fhir:ElementDefinition.fixedContactPoint [ ContactPoint ]
    fhir:ElementDefinition.fixedCount [ Count ]
    fhir:ElementDefinition.fixedDistance [ Distance ]
    fhir:ElementDefinition.fixedDuration [ Duration ]
    fhir:ElementDefinition.fixedHumanName [ HumanName ]
    fhir:ElementDefinition.fixedIdentifier [ Identifier ]
    fhir:ElementDefinition.fixedMoney [ Money ]
    fhir:ElementDefinition.fixedPeriod [ Period ]
    fhir:ElementDefinition.fixedQuantity [ Quantity ]
    fhir:ElementDefinition.fixedRange [ Range ]
    fhir:ElementDefinition.fixedRatio [ Ratio ]
    fhir:ElementDefinition.fixedReference [ Reference ]
    fhir:ElementDefinition.fixedSampledData [ SampledData ]
    fhir:ElementDefinition.fixedSignature [ Signature ]
    fhir:ElementDefinition.fixedTiming [ Timing ]
    fhir: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 ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 49
    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCanonical [ canonical ]
    fhir:ElementDefinition.patternCode [ code ]
    fhir:ElementDefinition.patternDate [ date ]
    fhir:ElementDefinition.patternDateTime [ dateTime ]
    fhir:ElementDefinition.patternDecimal [ decimal ]
    fhir:ElementDefinition.patternId [ id ]
    fhir:ElementDefinition.patternInstant [ instant ]
    fhir:ElementDefinition.patternInteger [ integer ]
    fhir:ElementDefinition.patternMarkdown [ markdown ]
    fhir:ElementDefinition.patternOid [ oid ]
    fhir:ElementDefinition.patternPositiveInt [ positiveInt ]
    fhir:ElementDefinition.patternString [ string ]
    fhir:ElementDefinition.patternTime [ time ]
    fhir:ElementDefinition.patternUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.patternUri [ uri ]
    fhir:ElementDefinition.patternUrl [ url ]
    fhir:ElementDefinition.patternUuid [ uuid ]
    fhir:ElementDefinition.patternAddress [ Address ]
    fhir:ElementDefinition.patternAge [ Age ]
    fhir:ElementDefinition.patternAnnotation [ Annotation ]
    fhir:ElementDefinition.patternAttachment [ Attachment ]
    fhir:ElementDefinition.patternCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.patternCoding [ Coding ]
    fhir:ElementDefinition.patternContactPoint [ ContactPoint ]
    fhir:ElementDefinition.patternCount [ Count ]
    fhir:ElementDefinition.patternDistance [ Distance ]
    fhir:ElementDefinition.patternDuration [ Duration ]
    fhir:ElementDefinition.patternHumanName [ HumanName ]
    fhir:ElementDefinition.patternIdentifier [ Identifier ]
    fhir:ElementDefinition.patternMoney [ Money ]
    fhir:ElementDefinition.patternPeriod [ Period ]
    fhir:ElementDefinition.patternQuantity [ Quantity ]
    fhir:ElementDefinition.patternRange [ Range ]
    fhir:ElementDefinition.patternRatio [ Ratio ]
    fhir:ElementDefinition.patternReference [ Reference ]
    fhir:ElementDefinition.patternSampledData [ SampledData ]
    fhir:ElementDefinition.patternSignature [ Signature ]
    fhir:ElementDefinition.patternTiming [ Timing ]
    fhir: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.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 49
      fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ]
      fhir:ElementDefinition.example.valueBoolean [ boolean ]
      fhir:ElementDefinition.example.valueCanonical [ canonical ]
      fhir:ElementDefinition.example.valueCode [ code ]
      fhir:ElementDefinition.example.valueDate [ date ]
      fhir:ElementDefinition.example.valueDateTime [ dateTime ]
      fhir:ElementDefinition.example.valueDecimal [ decimal ]
      fhir:ElementDefinition.example.valueId [ id ]
      fhir:ElementDefinition.example.valueInstant [ instant ]
      fhir:ElementDefinition.example.valueInteger [ integer ]
      fhir:ElementDefinition.example.valueMarkdown [ markdown ]
      fhir:ElementDefinition.example.valueOid [ oid ]
      fhir:ElementDefinition.example.valuePositiveInt [ positiveInt ]
      fhir:ElementDefinition.example.valueString [ string ]
      fhir:ElementDefinition.example.valueTime [ time ]
      fhir:ElementDefinition.example.valueUnsignedInt [ unsignedInt ]
      fhir:ElementDefinition.example.valueUri [ uri ]
      fhir:ElementDefinition.example.valueUrl [ url ]
      fhir:ElementDefinition.example.valueUuid [ uuid ]
      fhir:ElementDefinition.example.valueAddress [ Address ]
      fhir:ElementDefinition.example.valueAge [ Age ]
      fhir:ElementDefinition.example.valueAnnotation [ Annotation ]
      fhir:ElementDefinition.example.valueAttachment [ Attachment ]
      fhir:ElementDefinition.example.valueCodeableConcept [ CodeableConcept ]
      fhir:ElementDefinition.example.valueCoding [ Coding ]
      fhir:ElementDefinition.example.valueContactPoint [ ContactPoint ]
      fhir:ElementDefinition.example.valueCount [ Count ]
      fhir:ElementDefinition.example.valueDistance [ Distance ]
      fhir:ElementDefinition.example.valueDuration [ Duration ]
      fhir:ElementDefinition.example.valueHumanName [ HumanName ]
      fhir:ElementDefinition.example.valueIdentifier [ Identifier ]
      fhir:ElementDefinition.example.valueMoney [ Money ]
      fhir:ElementDefinition.example.valuePeriod [ Period ]
      fhir:ElementDefinition.example.valueQuantity [ Quantity ]
      fhir:ElementDefinition.example.valueRange [ Range ]
      fhir:ElementDefinition.example.valueRatio [ Ratio ]
      fhir:ElementDefinition.example.valueReference [ Reference ]
      fhir:ElementDefinition.example.valueSampledData [ SampledData ]
      fhir:ElementDefinition.example.valueSignature [ Signature ]
      fhir:ElementDefinition.example.valueTiming [ Timing ]
      fhir: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 ]
  ], ...;
  # 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.sliceIsConstraining
  • Added Element
ElementDefinition.slicing.ordered
  • Default Value "false" removed
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.versioning
  • Default Value "either" removed
ElementDefinition.defaultValue[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
  • Remove Type Meta
ElementDefinition.fixed[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
  • Remove Type Meta
ElementDefinition.pattern[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
  • Remove Type Meta
ElementDefinition.example.value[x]
  • Add Types canonical, url, uuid, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage
  • Remove Type Meta
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.valueSet
  • Renamed from valueSet[x] to valueSet
  • Add Type canonical(ValueSet)
  • Remove Types uri, Reference(ValueSet)

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 value 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, 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)

BackboneElementExtensions - as described for all elements: additional information that is not part of the basic definition of the resource / typeextension : Extension 0..*Modifier Extensions - as described for some elements: additional information that is not part of the basic definition of the resource / type that modifies the interpretation of the containing elementmodifierExtension : Extension 0..*ElementDefinitionThe path identifies the element and is expressed as a "."-separated list of ancestor elements, beginning with the name of the resource or extensionpath : string [1..1]Codes that define how this element is represented in instances, when the deviation varies from the normal caserepresentation : code [0..*] « How a property is represented when serialized. (Strength=Required)PropertyRepresentation! »The name of this element definition slice, when slicing is working. The name must be a token with no dots or spaces. This is a unique name referring to a specific set of constraints applied to this element, used to provide a name to different slices of the same elementsliceName : string [0..1]If true, indicates that this slice definition is constraining a slice definition with the same name in an inherited profile. If false, the slice is not overriding any slice in an inherited profile. If missing, the slice might or might not be overriding a slice in an inherited profile, depending on the sliceNamesliceIsConstraining : boolean [0..1]A single preferred label which is the text to display beside the element indicating its meaning or to use to prompt for the element in a user display or formlabel : string [0..1]A code that has the same meaning as the element in a particular terminologycode : Coding [0..*] « Codes that indicate the meaning of a data element. (Strength=Example)LOINCCodes?? »A concise description of what this element means (e.g. for use in autogenerated summaries)short : string [0..1]Provides a complete explanation of the meaning of the data element for human readability. For the case of elements derived from existing elements (e.g. constraints), the definition SHALL be consistent with the base definition, but convey the meaning of the element in the particular context of use of the resource. (Note: The text you are reading is specified in ElementDefinition.definition)definition : markdown [0..1]Explanatory notes and implementation guidance about the data element, including notes about how to use the data properly, exceptions to proper use, etc. (Note: The text you are reading is specified in ElementDefinition.comment)comment : markdown [0..1]This element is for traceability of why the element was created and why the constraints exist as they do. This may be used to point to source materials or specifications that drove the structure of this elementrequirements : markdown [0..1]Identifies additional names by which this element might also be knownalias : string [0..*]The minimum number of times this element SHALL appear in the instancemin : unsignedInt [0..1]The maximum number of times this element is permitted to appear in the instancemax : string [0..1]Identifies an element defined elsewhere in the definition whose content rules should be applied to the current element. ContentReferences bring across all the rules that are in the ElementDefinition for the element, including definitions, cardinality constraints, bindings, invariants etccontentReference : uri [0..1]The value that should be used if there is no value stated in the instance (e.g. 'if not otherwise specified, the abstract is false')defaultValue[x] : * [0..1]The Implicit meaning that is to be understood when this element is missing (e.g. 'when this element is missing, the period is ongoing')meaningWhenMissing : markdown [0..1]If present, indicates that the order of the repeating element has meaning and describes what that meaning is. If absent, it means that the order of the element has no meaningorderMeaning : string [0..1]Specifies a value that SHALL be exactly the value for this element in the instance. For purposes of comparison, non-significant whitespace is ignored, and all values must be an exact match (case and accent sensitive). Missing elements/attributes must also be missingfixed[x] : * [0..1]Specifies a value that the value in the instance SHALL follow - that is, any value in the pattern must be found in the instance. Other additional values may be found too. This is effectively constraint by example. When pattern[x] is used to constrain a primitive, it means that the value provided in the pattern[x] must match the instance value exactly. When pattern[x] is used to constrain an array, it means that each element provided in the pattern[x] array must (recursively) match at least one element from the instance array. When pattern[x] is used to constrain a complex object, it means that each property in the pattern must be present in the complex object, and its value must recursively match -- i.e., 1. If primitive: it must match exactly the pattern value 2. If a complex object: it must match (recursively) the pattern value 3. If an array: it must match (recursively) the pattern valuepattern[x] : * [0..1]The minimum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and QuantityminValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »The maximum allowed value for the element. The value is inclusive. This is allowed for the types date, dateTime, instant, time, decimal, integer, and QuantitymaxValue[x] : Type [0..1] « date|dateTime|instant|time|decimal| integer|positiveInt|unsignedInt|Quantity »Indicates the maximum length in characters that is permitted to be present in conformant instances and which is expected to be supported by conformant consumers that support the elementmaxLength : integer [0..1]A reference to an invariant that may make additional statements about the cardinality or value in the instancecondition : id [0..*]If true, implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way. If false, the element may be ignored and not supported. If false, whether to populate or use the data element in any way is at the discretion of the implementationmustSupport : boolean [0..1]If true, the value of this element affects the interpretation of the element or resource that contains it, and the value of the element cannot be ignored. Typically, this is used for status, negation and qualification codes. The effect of this is that the element cannot be ignored by systems: they SHALL either recognize the element and process it, and/or a pre-determination has been made that it is not relevant to their particular systemisModifier : boolean [0..1]Explains how that element affects the interpretation of the resource or element that contains itisModifierReason : string [0..1]Whether the element should be included if a client requests a search with the parameter _summary=trueisSummary : boolean [0..1]SlicingA human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiateddescription : string [0..1]If the matching elements have to occur in the same order as defined in the profileordered : boolean [0..1]Whether additional slices are allowed or not. When the slices are ordered, profile authors can also say that additional slices are only allowed at the endrules : code [1..1] « How slices are interpreted when evaluating an instance. (Strength=Required)SlicingRules! »DiscriminatorHow the element value is interpreted when discrimination is evaluatedtype : code [1..1] « How an element value is interpreted when discrimination is evaluated. (Strength=Required)DiscriminatorType! »A FHIRPath expression, using [the simple subset of FHIRPath](fhirpath.html#simple), that is used to identify the element on which discrimination is basedpath : string [1..1]BaseThe Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.basepath : string [1..1]Minimum cardinality of the base element identified by the pathmin : unsignedInt [1..1]Maximum cardinality of the base element identified by the pathmax : string [1..1]TypeRefURL of Data type or Resource that is a(or the) type used for this element. References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical modelscode : uri [1..1] « Either a resource or a data type, including logical model types. (Strength=Extensible)FHIRDefinedType+ »Identifies a profile structure or implementation Guide that applies to the datatype this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the type SHALL conform to at least one profile defined in the implementation guideprofile : canonical [0..*] « StructureDefinition|ImplementationGuide »Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this element refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guidetargetProfile : canonical [0..*] « StructureDefinition| ImplementationGuide »If the type is a reference to another resource, how the resource is or can be aggregated - is it a contained resource, or a reference, and if the context is a bundle, is it included in the bundleaggregation : code [0..*] « How resource references can be aggregated. (Strength=Required)AggregationMode! »Whether this reference needs to be version specific or version independent, or whether either can be usedversioning : code [0..1] « Whether a reference needs to be version specific or version independent, or whether either can be used. (Strength=Required)ReferenceVersionRules! »ExampleDescribes the purpose of this example amoung the set of exampleslabel : string [1..1]The actual value for the element, which must be one of the types allowed for this elementvalue[x] : * [1..1]ConstraintAllows identification of which elements have their cardinalities impacted by the constraint. Will not be referenced for constraints that do not affect cardinalitykey : id [1..1]Description of why this constraint is necessary or appropriaterequirements : string [0..1]Identifies the impact constraint violation has on the conformance of the instanceseverity : code [1..1] « SHALL applications comply with this constraint? (Strength=Required)ConstraintSeverity! »Text that can be used to describe the constraint in messages identifying that the constraint has been violatedhuman : string [1..1]A [FHIRPath](fhirpath.html) expression of constraint that can be executed to see if this constraint is metexpression : string [0..1]An XPath expression of constraint that can be executed to see if this constraint is metxpath : string [0..1]A reference to the original source of the constraint, for traceability purposessource : canonical [0..1] « StructureDefinition »ElementDefinitionBindingIndicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instancesstrength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required)BindingStrength! »Describes the intended use of this particular set of codesdescription : string [0..1]Refers to the value set that identifies the set of codes the binding refers tovalueSet : canonical [0..1] « ValueSet »MappingAn internal reference to the definition of a mappingidentity : id [1..1]Identifies the computable language in which mapping.map is expressedlanguage : code [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)Mime Types! »Expresses what part of the target specification corresponds to this elementmap : string [1..1]Comments that provide information about the mapping or its usecomment : string [0..1]Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slicesdiscriminator[0..*]Indicates that the element is sliced into a set of alternative definitions (i.e. in a structure definition, there are multiple different constraints on a single element in the base resource). Slicing can be used in any resource that has cardinality ..* on the base resource, or any resource with a choice of types. The set of slices is any elements that come after this in the element sequence that have the same path, until a shorter path occurs (the shorter path terminates the set)slicing[0..1]Information about the base definition of the element, provided to make it unnecessary for tools to trace the deviation of the element through the derived and related profiles. When the element definition is not the original definition of an element - i.g. either in a constraint on another type, or for elements from a super type in a snap shot - then the information in provided in the element definition may be different to the base definition. On the original definition of the element, it will be samebase[0..1]The data type or resource that the value of this element is permitted to betype[0..*]A sample value for this element demonstrating the type of information that would typically be found in the elementexample[0..*]Formal constraints such as co-occurrence and other constraints that can be computationally evaluated within the context of the instanceconstraint[0..*]Binds to a value set if this element is coded (code, Coding, CodeableConcept, Quantity), or the data types (string, uri)binding[0..1]Identifies a concept from an external specification that roughly corresponds to this elementmapping[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 49:
  "defaultValueBase64Binary" : "<base64Binary>",
  "defaultValueBoolean" : <boolean>,
  "defaultValueCanonical" : "<canonical>",
  "defaultValueCode" : "<code>",
  "defaultValueDate" : "<date>",
  "defaultValueDateTime" : "<dateTime>",
  "defaultValueDecimal" : <decimal>,
  "defaultValueId" : "<id>",
  "defaultValueInstant" : "<instant>",
  "defaultValueInteger" : <integer>,
  "defaultValueMarkdown" : "<markdown>",
  "defaultValueOid" : "<oid>",
  "defaultValuePositiveInt" : "<positiveInt>",
  "defaultValueString" : "<string>",
  "defaultValueTime" : "<time>",
  "defaultValueUnsignedInt" : "<unsignedInt>",
  "defaultValueUri" : "<uri>",
  "defaultValueUrl" : "<url>",
  "defaultValueUuid" : "<uuid>",
  "defaultValueAddress" : { Address },
  "defaultValueAge" : { Age },
  "defaultValueAnnotation" : { Annotation },
  "defaultValueAttachment" : { Attachment },
  "defaultValueCodeableConcept" : { CodeableConcept },
  "defaultValueCoding" : { Coding },
  "defaultValueContactPoint" : { ContactPoint },
  "defaultValueCount" : { Count },
  "defaultValueDistance" : { Distance },
  "defaultValueDuration" : { Duration },
  "defaultValueHumanName" : { HumanName },
  "defaultValueIdentifier" : { Identifier },
  "defaultValueMoney" : { Money },
  "defaultValuePeriod" : { Period },
  "defaultValueQuantity" : { Quantity },
  "defaultValueRange" : { Range },
  "defaultValueRatio" : { Ratio },
  "defaultValueReference" : { Reference },
  "defaultValueSampledData" : { SampledData },
  "defaultValueSignature" : { Signature },
  "defaultValueTiming" : { Timing },
  "defaultValueContactDetail" : { ContactDetail },
  "defaultValueContributor" : { Contributor },
  "defaultValueDataRequirement" : { DataRequirement },
  "defaultValueExpression" : { Expression },
  "defaultValueParameterDefinition" : { ParameterDefinition },
  "defaultValueRelatedArtifact" : { RelatedArtifact },
  "defaultValueTriggerDefinition" : { TriggerDefinition },
  "defaultValueUsageContext" : { UsageContext },
  "defaultValueDosage" : { Dosage },
  "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing
  "orderMeaning" : "<string>", // What the order of the elements means
  // fixed[x]: Value must be exactly this. One of these 49:
  "fixedBase64Binary" : "<base64Binary>",
  "fixedBoolean" : <boolean>,
  "fixedCanonical" : "<canonical>",
  "fixedCode" : "<code>",
  "fixedDate" : "<date>",
  "fixedDateTime" : "<dateTime>",
  "fixedDecimal" : <decimal>,
  "fixedId" : "<id>",
  "fixedInstant" : "<instant>",
  "fixedInteger" : <integer>,
  "fixedMarkdown" : "<markdown>",
  "fixedOid" : "<oid>",
  "fixedPositiveInt" : "<positiveInt>",
  "fixedString" : "<string>",
  "fixedTime" : "<time>",
  "fixedUnsignedInt" : "<unsignedInt>",
  "fixedUri" : "<uri>",
  "fixedUrl" : "<url>",
  "fixedUuid" : "<uuid>",
  "fixedAddress" : { Address },
  "fixedAge" : { Age },
  "fixedAnnotation" : { Annotation },
  "fixedAttachment" : { Attachment },
  "fixedCodeableConcept" : { CodeableConcept },
  "fixedCoding" : { Coding },
  "fixedContactPoint" : { ContactPoint },
  "fixedCount" : { Count },
  "fixedDistance" : { Distance },
  "fixedDuration" : { Duration },
  "fixedHumanName" : { HumanName },
  "fixedIdentifier" : { Identifier },
  "fixedMoney" : { Money },
  "fixedPeriod" : { Period },
  "fixedQuantity" : { Quantity },
  "fixedRange" : { Range },
  "fixedRatio" : { Ratio },
  "fixedReference" : { Reference },
  "fixedSampledData" : { SampledData },
  "fixedSignature" : { Signature },
  "fixedTiming" : { Timing },
  "fixedContactDetail" : { ContactDetail },
  "fixedContributor" : { Contributor },
  "fixedDataRequirement" : { DataRequirement },
  "fixedExpression" : { Expression },
  "fixedParameterDefinition" : { ParameterDefinition },
  "fixedRelatedArtifact" : { RelatedArtifact },
  "fixedTriggerDefinition" : { TriggerDefinition },
  "fixedUsageContext" : { UsageContext },
  "fixedDosage" : { Dosage },
  // pattern[x]: Value must have at least these property values. One of these 49:
  "patternBase64Binary" : "<base64Binary>",
  "patternBoolean" : <boolean>,
  "patternCanonical" : "<canonical>",
  "patternCode" : "<code>",
  "patternDate" : "<date>",
  "patternDateTime" : "<dateTime>",
  "patternDecimal" : <decimal>,
  "patternId" : "<id>",
  "patternInstant" : "<instant>",
  "patternInteger" : <integer>,
  "patternMarkdown" : "<markdown>",
  "patternOid" : "<oid>",
  "patternPositiveInt" : "<positiveInt>",
  "patternString" : "<string>",
  "patternTime" : "<time>",
  "patternUnsignedInt" : "<unsignedInt>",
  "patternUri" : "<uri>",
  "patternUrl" : "<url>",
  "patternUuid" : "<uuid>",
  "patternAddress" : { Address },
  "patternAge" : { Age },
  "patternAnnotation" : { Annotation },
  "patternAttachment" : { Attachment },
  "patternCodeableConcept" : { CodeableConcept },
  "patternCoding" : { Coding },
  "patternContactPoint" : { ContactPoint },
  "patternCount" : { Count },
  "patternDistance" : { Distance },
  "patternDuration" : { Duration },
  "patternHumanName" : { HumanName },
  "patternIdentifier" : { Identifier },
  "patternMoney" : { Money },
  "patternPeriod" : { Period },
  "patternQuantity" : { Quantity },
  "patternRange" : { Range },
  "patternRatio" : { Ratio },
  "patternReference" : { Reference },
  "patternSampledData" : { SampledData },
  "patternSignature" : { Signature },
  "patternTiming" : { Timing },
  "patternContactDetail" : { ContactDetail },
  "patternContributor" : { Contributor },
  "patternDataRequirement" : { DataRequirement },
  "patternExpression" : { Expression },
  "patternParameterDefinition" : { ParameterDefinition },
  "patternRelatedArtifact" : { RelatedArtifact },
  "patternTriggerDefinition" : { TriggerDefinition },
  "patternUsageContext" : { UsageContext },
  "patternDosage" : { Dosage },
  "example" : [{ // Example value (as defined for type)
    "label" : "<string>", // R!  Describes the purpose of this example
    // value[x]: Value of Example (one of allowed types). One of these 49:
    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>
    "valueCanonical" : "<canonical>"
    "valueCode" : "<code>"
    "valueDate" : "<date>"
    "valueDateTime" : "<dateTime>"
    "valueDecimal" : <decimal>
    "valueId" : "<id>"
    "valueInstant" : "<instant>"
    "valueInteger" : <integer>
    "valueMarkdown" : "<markdown>"
    "valueOid" : "<oid>"
    "valuePositiveInt" : "<positiveInt>"
    "valueString" : "<string>"
    "valueTime" : "<time>"
    "valueUnsignedInt" : "<unsignedInt>"
    "valueUri" : "<uri>"
    "valueUrl" : "<url>"
    "valueUuid" : "<uuid>"
    "valueAddress" : { Address }
    "valueAge" : { Age }
    "valueAnnotation" : { Annotation }
    "valueAttachment" : { Attachment }
    "valueCodeableConcept" : { CodeableConcept }
    "valueCoding" : { Coding }
    "valueContactPoint" : { ContactPoint }
    "valueCount" : { Count }
    "valueDistance" : { Distance }
    "valueDuration" : { Duration }
    "valueHumanName" : { HumanName }
    "valueIdentifier" : { Identifier }
    "valueMoney" : { Money }
    "valuePeriod" : { Period }
    "valueQuantity" : { Quantity }
    "valueRange" : { Range }
    "valueRatio" : { Ratio }
    "valueReference" : { Reference }
    "valueSampledData" : { SampledData }
    "valueSignature" : { Signature }
    "valueTiming" : { Timing }
    "valueContactDetail" : { ContactDetail }
    "valueContributor" : { Contributor }
    "valueDataRequirement" : { DataRequirement }
    "valueExpression" : { Expression }
    "valueParameterDefinition" : { ParameterDefinition }
    "valueRelatedArtifact" : { RelatedArtifact }
    "valueTriggerDefinition" : { TriggerDefinition }
    "valueUsageContext" : { UsageContext }
    "valueDosage" : { Dosage }
  }],
  // minValue[x]: Minimum Allowed Value (for some types). One of these 9:
  "minValueDate" : "<date>",
  "minValueDateTime" : "<dateTime>",
  "minValueInstant" : "<instant>",
  "minValueTime" : "<time>",
  "minValueDecimal" : <decimal>,
  "minValueInteger" : <integer>,
  "minValuePositiveInt" : "<positiveInt>",
  "minValueUnsignedInt" : "<unsignedInt>",
  "minValueQuantity" : { Quantity },
  // maxValue[x]: Maximum Allowed Value (for some types). One of these 9:
  "maxValueDate" : "<date>",
  "maxValueDateTime" : "<dateTime>",
  "maxValueInstant" : "<instant>",
  "maxValueTime" : "<time>",
  "maxValueDecimal" : <decimal>,
  "maxValueInteger" : <integer>,
  "maxValuePositiveInt" : "<positiveInt>",
  "maxValueUnsignedInt" : "<unsignedInt>",
  "maxValueQuantity" : { Quantity },
  "maxLength" : <integer>, // Max length for strings
  "condition" : ["<id>"], // Reference to invariant about presence
  "constraint" : [{ // Condition that must evaluate to true
    "key" : "<id>", // C? R!  Target of 'condition' reference above
    "requirements" : "<string>", // Why this constraint is necessary or appropriate
    "severity" : "<code>", // R!  error | warning
    "human" : "<string>", // R!  Human description of constraint
    "expression" : "<string>", // FHIRPath expression of constraint
    "xpath" : "<string>", // XPath expression of constraint
    "source" : { canonical(StructureDefinition) } // Reference to original source of constraint
  }],
  "mustSupport" : <boolean>, // If the element must be supported
  "isModifier" : <boolean>, // If this modifies the meaning of other elements
  "isModifierReason" : "<string>", // Reason that this element is marked as a modifier
  "isSummary" : <boolean>, // Include when _summary = true?
  "binding" : { // C? ValueSet details if this is coded
    "strength" : "<code>", // R!  required | extensible | preferred | example
    "description" : "<string>", // Human explanation of the value set
    "valueSet" : { canonical(ValueSet) } // C? Source of value set
  },
  "mapping" : [{ // Map element to another set of definitions
    "identity" : "<id>", // R!  Reference to mapping declaration
    "language" : "<code>", // Computable language of mapping
    "map" : "<string>", // R!  Details of the mapping
    "comment" : "<string>" // Comments about the mapping or its use
  }]
}

Turtle Template

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

[
 # from 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 49
    fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ]
    fhir:ElementDefinition.defaultValueBoolean [ boolean ]
    fhir:ElementDefinition.defaultValueCanonical [ canonical ]
    fhir:ElementDefinition.defaultValueCode [ code ]
    fhir:ElementDefinition.defaultValueDate [ date ]
    fhir:ElementDefinition.defaultValueDateTime [ dateTime ]
    fhir:ElementDefinition.defaultValueDecimal [ decimal ]
    fhir:ElementDefinition.defaultValueId [ id ]
    fhir:ElementDefinition.defaultValueInstant [ instant ]
    fhir:ElementDefinition.defaultValueInteger [ integer ]
    fhir:ElementDefinition.defaultValueMarkdown [ markdown ]
    fhir:ElementDefinition.defaultValueOid [ oid ]
    fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ]
    fhir:ElementDefinition.defaultValueString [ string ]
    fhir:ElementDefinition.defaultValueTime [ time ]
    fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.defaultValueUri [ uri ]
    fhir:ElementDefinition.defaultValueUrl [ url ]
    fhir:ElementDefinition.defaultValueUuid [ uuid ]
    fhir:ElementDefinition.defaultValueAddress [ Address ]
    fhir:ElementDefinition.defaultValueAge [ Age ]
    fhir:ElementDefinition.defaultValueAnnotation [ Annotation ]
    fhir:ElementDefinition.defaultValueAttachment [ Attachment ]
    fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.defaultValueCoding [ Coding ]
    fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ]
    fhir:ElementDefinition.defaultValueCount [ Count ]
    fhir:ElementDefinition.defaultValueDistance [ Distance ]
    fhir:ElementDefinition.defaultValueDuration [ Duration ]
    fhir:ElementDefinition.defaultValueHumanName [ HumanName ]
    fhir:ElementDefinition.defaultValueIdentifier [ Identifier ]
    fhir:ElementDefinition.defaultValueMoney [ Money ]
    fhir:ElementDefinition.defaultValuePeriod [ Period ]
    fhir:ElementDefinition.defaultValueQuantity [ Quantity ]
    fhir:ElementDefinition.defaultValueRange [ Range ]
    fhir:ElementDefinition.defaultValueRatio [ Ratio ]
    fhir:ElementDefinition.defaultValueReference [ Reference ]
    fhir:ElementDefinition.defaultValueSampledData [ SampledData ]
    fhir:ElementDefinition.defaultValueSignature [ Signature ]
    fhir:ElementDefinition.defaultValueTiming [ Timing ]
    fhir: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.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 49
    fhir:ElementDefinition.fixedBase64Binary [ base64Binary ]
    fhir:ElementDefinition.fixedBoolean [ boolean ]
    fhir:ElementDefinition.fixedCanonical [ canonical ]
    fhir:ElementDefinition.fixedCode [ code ]
    fhir:ElementDefinition.fixedDate [ date ]
    fhir:ElementDefinition.fixedDateTime [ dateTime ]
    fhir:ElementDefinition.fixedDecimal [ decimal ]
    fhir:ElementDefinition.fixedId [ id ]
    fhir:ElementDefinition.fixedInstant [ instant ]
    fhir:ElementDefinition.fixedInteger [ integer ]
    fhir:ElementDefinition.fixedMarkdown [ markdown ]
    fhir:ElementDefinition.fixedOid [ oid ]
    fhir:ElementDefinition.fixedPositiveInt [ positiveInt ]
    fhir:ElementDefinition.fixedString [ string ]
    fhir:ElementDefinition.fixedTime [ time ]
    fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ]
    fhir:ElementDefinition.fixedUri [ uri ]
    fhir:ElementDefinition.fixedUrl [ url ]
    fhir:ElementDefinition.fixedUuid [ uuid ]
    fhir:ElementDefinition.fixedAddress [ Address ]
    fhir:ElementDefinition.fixedAge [ Age ]
    fhir:ElementDefinition.fixedAnnotation [ Annotation ]
    fhir:ElementDefinition.fixedAttachment [ Attachment ]
    fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ]
    fhir:ElementDefinition.fixedCoding [ Coding ]
    fhir:ElementDefinition.fixedContactPoint [ ContactPoint ]
    fhir:ElementDefinition.fixedCount [ Count ]
    fhir:ElementDefinition.fixedDistance [ Distance ]
    fhir:ElementDefinition.fixedDuration [ Duration ]
    fhir:ElementDefinition.fixedHumanName [ HumanName ]
    fhir:ElementDefinition.fixedIdentifier [ Identifier ]
    fhir:ElementDefinition.fixedMoney [ Money ]
    fhir:ElementDefinition.fixedPeriod [ Period ]
    fhir:ElementDefinition.fixedQuantity [ Quantity ]
    fhir:ElementDefinition.fixedRange [ Range ]
    fhir:ElementDefinition.fixedRatio [ Ratio ]
    fhir:ElementDefinition.fixedReference [ Reference ]
    fhir:ElementDefinition.fixedSampledData [ SampledData ]
    fhir:ElementDefinition.fixedSignature [ Signature ]
    fhir:ElementDefinition.fixedTiming [ Timing ]
    fhir: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 ]
  # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 49
    fhir:ElementDefinition.patternBase64Binary [ base64Binary ]
    fhir:ElementDefinition.patternBoolean [ boolean ]
    fhir:ElementDefinition.patternCanonical [ canonical ]
    fhir: