R4 Draft for Comment

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

StructureDefinition: elementdefinition-de

FHIR Infrastructure Work Group Maturity Level: 1InformativeUse Context: Any

The official URL for this profile is:

http://hl7.org/fhir/StructureDefinition/elementdefinition-de

Identifies how the ElementDefinition data type is used when it appears within a data element

This profile was published on Sat, Feb 28, 2015 00:00+1100 as a draft by Health Level Seven International (Orders and Observations).

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

This structure is derived from ElementDefinition.

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition I0..*Definition of an element in a resource or extension
... id 0..1stringxml:id (or equivalent in JSON)
... elementdefinition-question 0..*stringExtension
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-question
.... id 0..1stringxml:id (or equivalent in JSON)
.... url 1..1uri"http://hl7.org/fhir/StructureDefinition/elementdefinition-question"
.... valueString 0..1stringValue of extension
... elementdefinition-allowedUnits 0..1CodeableConcept, Reference(ValueSet)Extension
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits
Binding: UCUM Codes (required)
.... id 0..1stringxml:id (or equivalent in JSON)
.... url 1..1uri"http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits"
.... value[x] 1..1CodeableConcept, Reference(ValueSet)Value of extension
Binding: UCUM Codes (required)
... path Σ1..1stringPath of the element in the hierarchy of elements
... sliceName Σ0..1stringName for this particular element (in a set of slices)
... label Σ0..1stringName for element to display with or prompt for element
... code Σ0..*CodingCorresponding codes in terminologies
Binding: LOINC Codes (example)
... 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 *)
eld-3: Max SHALL be a number or "*"
... base ΣI0..1ElementBase definition information for tools
.... id 0..1stringxml:id (or equivalent in JSON)
.... path Σ1..1stringPath that identifies the base element
.... min Σ1..1unsignedIntMin cardinality of the base element
.... max Σ1..1stringMax cardinality of the base element
... type ΣI0..*ElementData type and Profile for this element
.... id 0..1stringxml:id (or equivalent in JSON)
.... code Σ1..1uriData type or Resource (reference to definition)
Binding: FHIRDefinedType (extensible)
.... targetProfile Σ0..1uriProfile (StructureDefinition or IG) that applies to the Reference target
.... versioning Σ0..1codeeither | independent | specific
Binding: ReferenceVersionRules (required)
... defaultValue[x] ΣI0..1base64Binary, boolean, code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, Address, Age, Annotation, Attachment, CodeableConcept, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, Reference(), SampledData, Signature, Timing, Dosage, ContactDetail, Contributor, DataRequirement, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, MetaSpecified value if missing from instance
... meaningWhenMissing ΣI0..1markdownImplicit meaning when this element is missing
... orderMeaning Σ0..1stringWhat the order of the elements means
... example ΣI0..*ElementExample value (as defined for type)
.... id 0..1stringxml:id (or equivalent in JSON)
.... label Σ1..1stringDescribes the purpose of this example
.... value[x] Σ1..1base64Binary, boolean, code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, Address, Age, Annotation, Attachment, CodeableConcept, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, Reference(), SampledData, Signature, Timing, Dosage, ContactDetail, Contributor, DataRequirement, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, MetaValue of Example (one of allowed types)
... minValue[x] Σ0..1date, dateTime, instant, time, decimal, integer, positiveInt, unsignedInt, QuantityMinimum Allowed Value (for some types)
... maxValue[x] Σ0..1date, dateTime, instant, time, decimal, integer, positiveInt, unsignedInt, QuantityMaximum Allowed Value (for some types)
... maxLength Σ0..1integerMax length for strings
... condition Σ0..*idReference to invariant about presence
... constraint ΣI0..*ElementCondition that must evaluate to true
.... id 0..1stringxml:id (or equivalent in JSON)
.... key ΣI1..1idTarget of 'condition' reference above
.... requirements Σ0..1stringWhy this constraint is necessary or appropriate
.... severity Σ1..1codeerror | warning
Binding: ConstraintSeverity (required)
.... human Σ1..1stringHuman description of constraint
.... expression Σ1..1stringFHIRPath expression of constraint
.... xpath Σ0..1stringXPath expression of constraint
.... source Σ0..1uriReference to original source of constraint
... mustSupport Σ0..1booleanIf the element must supported
... binding ΣI0..1ElementValueSet details if this is coded
eld-12: ValueSet as a URI SHALL start with http:// or https:// or urn:
.... id 0..1stringxml:id (or equivalent in JSON)
.... strength Σ1..1coderequired | extensible | preferred | example
Binding: BindingStrength (required)
.... description Σ0..1stringHuman explanation of the value set
.... valueSet[x] ΣI0..1uri, Reference(ValueSet)Source of value set
... mapping ΣI0..*ElementMap element to another set of definitions
.... id 0..1stringxml:id (or equivalent in JSON)
.... identity Σ1..1idReference to mapping declaration
.... language Σ0..1codeComputable language of mapping
Binding: IETF BCP-13 (required)
.... map Σ1..1stringDetails of the mapping
.... comment Σ0..1stringComments about the mapping or its use

doco Documentation for this format
<!-- DataElement constraint on ElementDefinition data type -->doco

<ElementDefinition xmlns="http://hl7.org/fhir"
>
  <!-- from Element: extension -->
 <path value="[string]"/><!-- 1..1 Path of the element in the hierarchy of elements -->
 <representation value="[code]"/><!-- 0..0 xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <sliceName value="[string]"/><!-- 0..1 Name for this particular element (in a set of slices) -->
 <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element -->
 <code><!-- 0..* Coding Corresponding codes in terminologies --></code>
 <slicing> ?? 0..0 Element  <!-- ?? 0..0 This element is sliced - slices follow -->
 </slicing>
 <short value="[string]"/><!-- 0..0 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 Element  <!-- ?? 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..0 Reference to definition of content for the element -->
 <type> ?? 0..* Element  <!-- ?? 0..* Data type and Profile for this element -->
  <code value="[uri]"/><!-- 1..1 Data type or Resource (reference to definition) -->
  <profile value="[uri]"/><!-- 0..0 Profile (StructureDefinition or IG) that applies -->
  <targetProfile value="[uri]"/><!-- 0..1 
      Profile (StructureDefinition or IG) that applies to the Reference target -->
  <aggregation value="[code]"/><!-- 0..0 contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- 0..1 either | independent | specific -->
 </type>
 <defaultValue[x]><!-- 0..1 base64Binary|boolean|code|date|
   dateTime|decimal|id|instant|integer|markdown|oid|positiveInt|string|time|
   unsignedInt|uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|
   ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|
   Quantity|Range|Ratio|Reference|SampledData|Signature|Timing|Dosage|
   ContactDetail|Contributor|DataRequirement|ParameterDefinition|RelatedArtifact|
   TriggerDefinition|UsageContext|Meta 
     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..0 base64Binary|boolean|code|date|dateTime|
   decimal|id|instant|integer|markdown|oid|positiveInt|string|time|unsignedInt|
   uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|ContactPoint|
   Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|
   Ratio|Reference|SampledData|Signature|Timing|Dosage|ContactDetail|Contributor|
   DataRequirement|ParameterDefinition|RelatedArtifact|TriggerDefinition|
   UsageContext|Meta Value must be exactly this --></fixed[x]>
 <pattern[x]><!-- 0..0 base64Binary|boolean|code|date|dateTime|
   decimal|id|instant|integer|markdown|oid|positiveInt|string|time|unsignedInt|
   uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|ContactPoint|
   Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|
   Ratio|Reference|SampledData|Signature|Timing|Dosage|ContactDetail|Contributor|
   DataRequirement|ParameterDefinition|RelatedArtifact|TriggerDefinition|
   UsageContext|Meta Value must have at least these property values --></pattern[x]>
 <example> ?? 0..* Element  <!-- ?? 0..* Example value (as defined for type) -->
  <label value="[string]"/><!-- 1..1 Describes the purpose of this example -->
  <value[x]><!-- 1..1 base64Binary|boolean|code|date|
    dateTime|decimal|id|instant|integer|markdown|oid|positiveInt|string|time|
    unsignedInt|uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|
    ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|
    Quantity|Range|Ratio|Reference|SampledData|Signature|Timing|Dosage|
    ContactDetail|Contributor|DataRequirement|ParameterDefinition|
    RelatedArtifact|TriggerDefinition|UsageContext|Meta 
      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..* Element  <!-- ?? 0..* Condition that must evaluate to true -->
  <key value="[id]"/><!-- 1..1 Target of 'condition' reference above -->
  <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate -->
  <severity value="[code]"/><!-- 1..1 error | warning -->
  <human value="[string]"/><!-- 1..1 Human description of constraint -->
  <expression value="[string]"/><!-- 1..1 FHIRPath expression of constraint -->
  <xpath value="[string]"/><!-- 0..1 XPath expression of constraint -->
  <source value="[uri]"/><!-- 0..1 Reference to original source of constraint -->
 </constraint>
 <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported -->
 <isModifier value="[boolean]"/><!-- 0..0 If this modifies the meaning of other elements -->
 <isSummary value="[boolean]"/><!-- 0..0 Include when _summary = true? -->
 <binding> ?? 0..1 Element  <!-- ?? 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- 0..1 Human explanation of the value set -->
  <valueSet[x]><!-- 0..1 uri|Reference(ValueSet) 
      Source of value set --></valueSet[x]>
 </binding>
 <mapping> ?? 0..* Element  <!-- ?? 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>
{ // DataElement constraint on ElementDefinition data type
  // from Element: extension
    "extension" : [ //  sliced by value:url  in the specified order, Open 
      { // Extension //
        // from Element: extension
        "extension" : [ //  sliced by value:url  in the specified order, Open ]
        "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-question", // R! 
        "valueString" : "<string>" //Value of extension
      },
      { // Extension //
        // from Element: extension
        "extension" : [ //  sliced by value:url  in the specified order, Open ]
        "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits", // R! 
// value[x]: Value of extension. One of these 2:
        "valueCodeableConcept" : { CodeableConcept } // R! Value of extension
        "valueReference" : { Reference(ValueSet) }, // R! Value of extension
      }
    ],
    "path" : "<string>", // R! Path of the element in the hierarchy of elements
    "sliceName" : "<string>", //Name for this particular element (in a set of slices)
    "label" : "<string>", //Name for element to display with or prompt for element
    "code" : [{ Coding }], //Corresponding codes in terminologies
    "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>", //Minimum Cardinality
    "max" : "<string>", // C?Maximum Cardinality (a number or *)
    "base" : { Element }, // C?Base definition information for tools
    "type" : [{ Element }], // C?Data type and Profile for this element
// value[x]: Specified value if missing from instance. One of these 46:
    "defaultValueBase64Binary" : "<base64Binary>", //Specified value if missing from instance
    "defaultValueBoolean" : <boolean>, //Specified value if missing from instance
    "defaultValueCode" : "<code>", //Specified value if missing from instance
    "defaultValueDate" : "<date>", //Specified value if missing from instance
    "defaultValueDateTime" : "<dateTime>", //Specified value if missing from instance
    "defaultValueDecimal" : <decimal>, //Specified value if missing from instance
    "defaultValueId" : "<id>", //Specified value if missing from instance
    "defaultValueInstant" : "<instant>", //Specified value if missing from instance
    "defaultValueInteger" : <integer>, //Specified value if missing from instance
    "defaultValueMarkdown" : "<markdown>", //Specified value if missing from instance
    "defaultValueOid" : "<oid>", //Specified value if missing from instance
    "defaultValuePositiveInt" : "<positiveInt>", //Specified value if missing from instance
    "defaultValueString" : "<string>", //Specified value if missing from instance
    "defaultValueTime" : "<time>", //Specified value if missing from instance
    "defaultValueUnsignedInt" : "<unsignedInt>", //Specified value if missing from instance
    "defaultValueUri" : "<uri>", //Specified value if missing from instance
    "defaultValueAddress" : { Address }, //Specified value if missing from instance
    "defaultValueAge" : { Age } //Specified value if missing from instance
    "defaultValueAnnotation" : { Annotation }, //Specified value if missing from instance
    "defaultValueAttachment" : { Attachment }, //Specified value if missing from instance
    "defaultValueCodeableConcept" : { CodeableConcept }, //Specified value if missing from instance
    "defaultValueCoding" : { Coding }, //Specified value if missing from instance
    "defaultValueContactPoint" : { ContactPoint }, //Specified value if missing from instance
    "defaultValueCount" : { Count }, //Specified value if missing from instance
    "defaultValueDistance" : { Distance }, //Specified value if missing from instance
    "defaultValueDuration" : { Duration }, //Specified value if missing from instance
    "defaultValueHumanName" : { HumanName }, //Specified value if missing from instance
    "defaultValueIdentifier" : { Identifier }, //Specified value if missing from instance
    "defaultValueMoney" : { Money }, //Specified value if missing from instance
    "defaultValuePeriod" : { Period }, //Specified value if missing from instance
    "defaultValueQuantity" : { Quantity }, //Specified value if missing from instance
    "defaultValueRange" : { Range }, //Specified value if missing from instance
    "defaultValueRatio" : { Ratio }, //Specified value if missing from instance
    "defaultValueReference" : { Reference }, //Specified value if missing from instance
    "defaultValueSampledData" : { SampledData }, //Specified value if missing from instance
    "defaultValueSignature" : { Signature }, //Specified value if missing from instance
    "defaultValueTiming" : { Timing }, //Specified value if missing from instance
    "defaultValueDosage" : { Dosage }, //Specified value if missing from instance
    "defaultValueContactDetail" : { ContactDetail }, //Specified value if missing from instance
    "defaultValueContributor" : { Contributor }, //Specified value if missing from instance
    "defaultValueDataRequirement" : { DataRequirement }, //Specified value if missing from instance
    "defaultValueParameterDefinition" : { ParameterDefinition }, //Specified value if missing from instance
    "defaultValueRelatedArtifact" : { RelatedArtifact }, //Specified value if missing from instance
    "defaultValueTriggerDefinition" : { TriggerDefinition }, //Specified value if missing from instance
    "defaultValueUsageContext" : { UsageContext }, //Specified value if missing from instance
    "defaultValueMeta" : { Meta }, //Specified value if missing from instance
    "meaningWhenMissing" : "<markdown>", //Implicit meaning when this element is missing
    "orderMeaning" : "<string>", //What the order of the elements means
// value[x]: Value must be exactly this. One of these 46:
// value[x]: Value must have at least these property values. One of these 46:
    "example" : [{ Element }], // C?Example value (as defined for type)
// value[x]: Minimum Allowed Value (for some types). One of these 9:
    "minValueDate" : "<date>", //Minimum Allowed Value (for some types)
    "minValueDateTime" : "<dateTime>", //Minimum Allowed Value (for some types)
    "minValueInstant" : "<instant>", //Minimum Allowed Value (for some types)
    "minValueTime" : "<time>", //Minimum Allowed Value (for some types)
    "minValueDecimal" : <decimal>, //Minimum Allowed Value (for some types)
    "minValueInteger" : <integer>, //Minimum Allowed Value (for some types)
    "minValuePositiveInt" : "<positiveInt>", //Minimum Allowed Value (for some types)
    "minValueUnsignedInt" : "<unsignedInt>", //Minimum Allowed Value (for some types)
    "minValueQuantity" : { Quantity }, //Minimum Allowed Value (for some types)
// value[x]: Maximum Allowed Value (for some types). One of these 9:
    "maxValueDate" : "<date>", //Maximum Allowed Value (for some types)
    "maxValueDateTime" : "<dateTime>", //Maximum Allowed Value (for some types)
    "maxValueInstant" : "<instant>", //Maximum Allowed Value (for some types)
    "maxValueTime" : "<time>", //Maximum Allowed Value (for some types)
    "maxValueDecimal" : <decimal>, //Maximum Allowed Value (for some types)
    "maxValueInteger" : <integer>, //Maximum Allowed Value (for some types)
    "maxValuePositiveInt" : "<positiveInt>", //Maximum Allowed Value (for some types)
    "maxValueUnsignedInt" : "<unsignedInt>", //Maximum Allowed Value (for some types)
    "maxValueQuantity" : { Quantity }, //Maximum Allowed Value (for some types)
    "maxLength" : <integer>, //Max length for strings
    "condition" : ["<id>"], //Reference to invariant about presence
    "constraint" : [{ Element }], // C?Condition that must evaluate to true
    "mustSupport" : <boolean>, //If the element must supported
    "binding" : { Element }, // C?ValueSet details if this is coded
    "mapping" : [{ Element }], // C?Map element to another set of definitions
  }

This structure is derived from ElementDefinition.

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition I0..*Definition of an element in a resource or extension
... id 0..1stringxml:id (or equivalent in JSON)
... elementdefinition-question 0..*stringExtension
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-question
.... id 0..1stringxml:id (or equivalent in JSON)
.... url 1..1uri"http://hl7.org/fhir/StructureDefinition/elementdefinition-question"
.... valueString 0..1stringValue of extension
... elementdefinition-allowedUnits 0..1CodeableConcept, Reference(ValueSet)Extension
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits
Binding: UCUM Codes (required)
.... id 0..1stringxml:id (or equivalent in JSON)
.... url 1..1uri"http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits"
.... value[x] 1..1CodeableConcept, Reference(ValueSet)Value of extension
Binding: UCUM Codes (required)
... path Σ1..1stringPath of the element in the hierarchy of elements
... sliceName Σ0..1stringName for this particular element (in a set of slices)
... label Σ0..1stringName for element to display with or prompt for element
... code Σ0..*CodingCorresponding codes in terminologies
Binding: LOINC Codes (example)
... 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 *)
eld-3: Max SHALL be a number or "*"
... base ΣI0..1ElementBase definition information for tools
.... id 0..1stringxml:id (or equivalent in JSON)
.... path Σ1..1stringPath that identifies the base element
.... min Σ1..1unsignedIntMin cardinality of the base element
.... max Σ1..1stringMax cardinality of the base element
... type ΣI0..*ElementData type and Profile for this element
.... id 0..1stringxml:id (or equivalent in JSON)
.... code Σ1..1uriData type or Resource (reference to definition)
Binding: FHIRDefinedType (extensible)
.... targetProfile Σ0..1uriProfile (StructureDefinition or IG) that applies to the Reference target
.... versioning Σ0..1codeeither | independent | specific
Binding: ReferenceVersionRules (required)
... defaultValue[x] ΣI0..1base64Binary, boolean, code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, Address, Age, Annotation, Attachment, CodeableConcept, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, Reference(), SampledData, Signature, Timing, Dosage, ContactDetail, Contributor, DataRequirement, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, MetaSpecified value if missing from instance
... meaningWhenMissing ΣI0..1markdownImplicit meaning when this element is missing
... orderMeaning Σ0..1stringWhat the order of the elements means
... example ΣI0..*ElementExample value (as defined for type)
.... id 0..1stringxml:id (or equivalent in JSON)
.... label Σ1..1stringDescribes the purpose of this example
.... value[x] Σ1..1base64Binary, boolean, code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, Address, Age, Annotation, Attachment, CodeableConcept, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, Reference(), SampledData, Signature, Timing, Dosage, ContactDetail, Contributor, DataRequirement, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, MetaValue of Example (one of allowed types)
... minValue[x] Σ0..1date, dateTime, instant, time, decimal, integer, positiveInt, unsignedInt, QuantityMinimum Allowed Value (for some types)
... maxValue[x] Σ0..1date, dateTime, instant, time, decimal, integer, positiveInt, unsignedInt, QuantityMaximum Allowed Value (for some types)
... maxLength Σ0..1integerMax length for strings
... condition Σ0..*idReference to invariant about presence
... constraint ΣI0..*ElementCondition that must evaluate to true
.... id 0..1stringxml:id (or equivalent in JSON)
.... key ΣI1..1idTarget of 'condition' reference above
.... requirements Σ0..1stringWhy this constraint is necessary or appropriate
.... severity Σ1..1codeerror | warning
Binding: ConstraintSeverity (required)
.... human Σ1..1stringHuman description of constraint
.... expression Σ1..1stringFHIRPath expression of constraint
.... xpath Σ0..1stringXPath expression of constraint
.... source Σ0..1uriReference to original source of constraint
... mustSupport Σ0..1booleanIf the element must supported
... binding ΣI0..1ElementValueSet details if this is coded
eld-12: ValueSet as a URI SHALL start with http:// or https:// or urn:
.... id 0..1stringxml:id (or equivalent in JSON)
.... strength Σ1..1coderequired | extensible | preferred | example
Binding: BindingStrength (required)
.... description Σ0..1stringHuman explanation of the value set
.... valueSet[x] ΣI0..1uri, Reference(ValueSet)Source of value set
... mapping ΣI0..*ElementMap element to another set of definitions
.... id 0..1stringxml:id (or equivalent in JSON)
.... identity Σ1..1idReference to mapping declaration
.... language Σ0..1codeComputable language of mapping
Binding: IETF BCP-13 (required)
.... map Σ1..1stringDetails of the mapping
.... comment Σ0..1stringComments about the mapping or its use

doco Documentation for this format

XML Template

<!-- DataElement constraint on ElementDefinition data type -->doco

<ElementDefinition xmlns="http://hl7.org/fhir"
>
  <!-- from Element: extension -->
 <path value="[string]"/><!-- 1..1 Path of the element in the hierarchy of elements -->
 <representation value="[code]"/><!-- 0..0 xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <sliceName value="[string]"/><!-- 0..1 Name for this particular element (in a set of slices) -->
 <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element -->
 <code><!-- 0..* Coding Corresponding codes in terminologies --></code>
 <slicing> ?? 0..0 Element  <!-- ?? 0..0 This element is sliced - slices follow -->
 </slicing>
 <short value="[string]"/><!-- 0..0 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 Element  <!-- ?? 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..0 Reference to definition of content for the element -->
 <type> ?? 0..* Element  <!-- ?? 0..* Data type and Profile for this element -->
  <code value="[uri]"/><!-- 1..1 Data type or Resource (reference to definition) -->
  <profile value="[uri]"/><!-- 0..0 Profile (StructureDefinition or IG) that applies -->
  <targetProfile value="[uri]"/><!-- 0..1 
      Profile (StructureDefinition or IG) that applies to the Reference target -->
  <aggregation value="[code]"/><!-- 0..0 contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- 0..1 either | independent | specific -->
 </type>
 <defaultValue[x]><!-- 0..1 base64Binary|boolean|code|date|
   dateTime|decimal|id|instant|integer|markdown|oid|positiveInt|string|time|
   unsignedInt|uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|
   ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|
   Quantity|Range|Ratio|Reference|SampledData|Signature|Timing|Dosage|
   ContactDetail|Contributor|DataRequirement|ParameterDefinition|RelatedArtifact|
   TriggerDefinition|UsageContext|Meta 
     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..0 base64Binary|boolean|code|date|dateTime|
   decimal|id|instant|integer|markdown|oid|positiveInt|string|time|unsignedInt|
   uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|ContactPoint|
   Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|
   Ratio|Reference|SampledData|Signature|Timing|Dosage|ContactDetail|Contributor|
   DataRequirement|ParameterDefinition|RelatedArtifact|TriggerDefinition|
   UsageContext|Meta Value must be exactly this --></fixed[x]>
 <pattern[x]><!-- 0..0 base64Binary|boolean|code|date|dateTime|
   decimal|id|instant|integer|markdown|oid|positiveInt|string|time|unsignedInt|
   uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|ContactPoint|
   Count|Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|
   Ratio|Reference|SampledData|Signature|Timing|Dosage|ContactDetail|Contributor|
   DataRequirement|ParameterDefinition|RelatedArtifact|TriggerDefinition|
   UsageContext|Meta Value must have at least these property values --></pattern[x]>
 <example> ?? 0..* Element  <!-- ?? 0..* Example value (as defined for type) -->
  <label value="[string]"/><!-- 1..1 Describes the purpose of this example -->
  <value[x]><!-- 1..1 base64Binary|boolean|code|date|
    dateTime|decimal|id|instant|integer|markdown|oid|positiveInt|string|time|
    unsignedInt|uri|Address|Age|Annotation|Attachment|CodeableConcept|Coding|
    ContactPoint|Count|Distance|Duration|HumanName|Identifier|Money|Period|
    Quantity|Range|Ratio|Reference|SampledData|Signature|Timing|Dosage|
    ContactDetail|Contributor|DataRequirement|ParameterDefinition|
    RelatedArtifact|TriggerDefinition|UsageContext|Meta 
      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..* Element  <!-- ?? 0..* Condition that must evaluate to true -->
  <key value="[id]"/><!-- 1..1 Target of 'condition' reference above -->
  <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate -->
  <severity value="[code]"/><!-- 1..1 error | warning -->
  <human value="[string]"/><!-- 1..1 Human description of constraint -->
  <expression value="[string]"/><!-- 1..1 FHIRPath expression of constraint -->
  <xpath value="[string]"/><!-- 0..1 XPath expression of constraint -->
  <source value="[uri]"/><!-- 0..1 Reference to original source of constraint -->
 </constraint>
 <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported -->
 <isModifier value="[boolean]"/><!-- 0..0 If this modifies the meaning of other elements -->
 <isSummary value="[boolean]"/><!-- 0..0 Include when _summary = true? -->
 <binding> ?? 0..1 Element  <!-- ?? 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
  <description value="[string]"/><!-- 0..1 Human explanation of the value set -->
  <valueSet[x]><!-- 0..1 uri|Reference(ValueSet) 
      Source of value set --></valueSet[x]>
 </binding>
 <mapping> ?? 0..* Element  <!-- ?? 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

{ // DataElement constraint on ElementDefinition data type
  // from Element: extension
    "extension" : [ //  sliced by value:url  in the specified order, Open 
      { // Extension //
        // from Element: extension
        "extension" : [ //  sliced by value:url  in the specified order, Open ]
        "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-question", // R! 
        "valueString" : "<string>" //Value of extension
      },
      { // Extension //
        // from Element: extension
        "extension" : [ //  sliced by value:url  in the specified order, Open ]
        "url" : "http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits", // R! 
// value[x]: Value of extension. One of these 2:
        "valueCodeableConcept" : { CodeableConcept } // R! Value of extension
        "valueReference" : { Reference(ValueSet) }, // R! Value of extension
      }
    ],
    "path" : "<string>", // R! Path of the element in the hierarchy of elements
    "sliceName" : "<string>", //Name for this particular element (in a set of slices)
    "label" : "<string>", //Name for element to display with or prompt for element
    "code" : [{ Coding }], //Corresponding codes in terminologies
    "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>", //Minimum Cardinality
    "max" : "<string>", // C?Maximum Cardinality (a number or *)
    "base" : { Element }, // C?Base definition information for tools
    "type" : [{ Element }], // C?Data type and Profile for this element
// value[x]: Specified value if missing from instance. One of these 46:
    "defaultValueBase64Binary" : "<base64Binary>", //Specified value if missing from instance
    "defaultValueBoolean" : <boolean>, //Specified value if missing from instance
    "defaultValueCode" : "<code>", //Specified value if missing from instance
    "defaultValueDate" : "<date>", //Specified value if missing from instance
    "defaultValueDateTime" : "<dateTime>", //Specified value if missing from instance
    "defaultValueDecimal" : <decimal>, //Specified value if missing from instance
    "defaultValueId" : "<id>", //Specified value if missing from instance
    "defaultValueInstant" : "<instant>", //Specified value if missing from instance
    "defaultValueInteger" : <integer>, //Specified value if missing from instance
    "defaultValueMarkdown" : "<markdown>", //Specified value if missing from instance
    "defaultValueOid" : "<oid>", //Specified value if missing from instance
    "defaultValuePositiveInt" : "<positiveInt>", //Specified value if missing from instance
    "defaultValueString" : "<string>", //Specified value if missing from instance
    "defaultValueTime" : "<time>", //Specified value if missing from instance
    "defaultValueUnsignedInt" : "<unsignedInt>", //Specified value if missing from instance
    "defaultValueUri" : "<uri>", //Specified value if missing from instance
    "defaultValueAddress" : { Address }, //Specified value if missing from instance
    "defaultValueAge" : { Age } //Specified value if missing from instance
    "defaultValueAnnotation" : { Annotation }, //Specified value if missing from instance
    "defaultValueAttachment" : { Attachment }, //Specified value if missing from instance
    "defaultValueCodeableConcept" : { CodeableConcept }, //Specified value if missing from instance
    "defaultValueCoding" : { Coding }, //Specified value if missing from instance
    "defaultValueContactPoint" : { ContactPoint }, //Specified value if missing from instance
    "defaultValueCount" : { Count }, //Specified value if missing from instance
    "defaultValueDistance" : { Distance }, //Specified value if missing from instance
    "defaultValueDuration" : { Duration }, //Specified value if missing from instance
    "defaultValueHumanName" : { HumanName }, //Specified value if missing from instance
    "defaultValueIdentifier" : { Identifier }, //Specified value if missing from instance
    "defaultValueMoney" : { Money }, //Specified value if missing from instance
    "defaultValuePeriod" : { Period }, //Specified value if missing from instance
    "defaultValueQuantity" : { Quantity }, //Specified value if missing from instance
    "defaultValueRange" : { Range }, //Specified value if missing from instance
    "defaultValueRatio" : { Ratio }, //Specified value if missing from instance
    "defaultValueReference" : { Reference }, //Specified value if missing from instance
    "defaultValueSampledData" : { SampledData }, //Specified value if missing from instance
    "defaultValueSignature" : { Signature }, //Specified value if missing from instance
    "defaultValueTiming" : { Timing }, //Specified value if missing from instance
    "defaultValueDosage" : { Dosage }, //Specified value if missing from instance
    "defaultValueContactDetail" : { ContactDetail }, //Specified value if missing from instance
    "defaultValueContributor" : { Contributor }, //Specified value if missing from instance
    "defaultValueDataRequirement" : { DataRequirement }, //Specified value if missing from instance
    "defaultValueParameterDefinition" : { ParameterDefinition }, //Specified value if missing from instance
    "defaultValueRelatedArtifact" : { RelatedArtifact }, //Specified value if missing from instance
    "defaultValueTriggerDefinition" : { TriggerDefinition }, //Specified value if missing from instance
    "defaultValueUsageContext" : { UsageContext }, //Specified value if missing from instance
    "defaultValueMeta" : { Meta }, //Specified value if missing from instance
    "meaningWhenMissing" : "<markdown>", //Implicit meaning when this element is missing
    "orderMeaning" : "<string>", //What the order of the elements means
// value[x]: Value must be exactly this. One of these 46:
// value[x]: Value must have at least these property values. One of these 46:
    "example" : [{ Element }], // C?Example value (as defined for type)
// value[x]: Minimum Allowed Value (for some types). One of these 9:
    "minValueDate" : "<date>", //Minimum Allowed Value (for some types)
    "minValueDateTime" : "<dateTime>", //Minimum Allowed Value (for some types)
    "minValueInstant" : "<instant>", //Minimum Allowed Value (for some types)
    "minValueTime" : "<time>", //Minimum Allowed Value (for some types)
    "minValueDecimal" : <decimal>, //Minimum Allowed Value (for some types)
    "minValueInteger" : <integer>, //Minimum Allowed Value (for some types)
    "minValuePositiveInt" : "<positiveInt>", //Minimum Allowed Value (for some types)
    "minValueUnsignedInt" : "<unsignedInt>", //Minimum Allowed Value (for some types)
    "minValueQuantity" : { Quantity }, //Minimum Allowed Value (for some types)
// value[x]: Maximum Allowed Value (for some types). One of these 9:
    "maxValueDate" : "<date>", //Maximum Allowed Value (for some types)
    "maxValueDateTime" : "<dateTime>", //Maximum Allowed Value (for some types)
    "maxValueInstant" : "<instant>", //Maximum Allowed Value (for some types)
    "maxValueTime" : "<time>", //Maximum Allowed Value (for some types)
    "maxValueDecimal" : <decimal>, //Maximum Allowed Value (for some types)
    "maxValueInteger" : <integer>, //Maximum Allowed Value (for some types)
    "maxValuePositiveInt" : "<positiveInt>", //Maximum Allowed Value (for some types)
    "maxValueUnsignedInt" : "<unsignedInt>", //Maximum Allowed Value (for some types)
    "maxValueQuantity" : { Quantity }, //Maximum Allowed Value (for some types)
    "maxLength" : <integer>, //Max length for strings
    "condition" : ["<id>"], //Reference to invariant about presence
    "constraint" : [{ Element }], // C?Condition that must evaluate to true
    "mustSupport" : <boolean>, //If the element must supported
    "binding" : { Element }, // C?ValueSet details if this is coded
    "mapping" : [{ Element }], // C?Map element to another set of definitions
  }

 

Alternate definitions: Master Definition (XML, JSON), Schematron

Terminology Bindings

PathNameConformanceValueSet
ElementDefinition.extension.value[x]UCUM CodesrequiredUCUM Codes
ElementDefinition.codeLOINC CodesexampleLOINC Codes
ElementDefinition.slicing.discriminator.typeDiscriminatorTyperequiredDiscriminatorType
ElementDefinition.slicing.rulesSlicingRulesrequiredSlicingRules
ElementDefinition.type.codeFHIRDefinedTypeextensibleFHIRDefinedType
ElementDefinition.type.versioningReferenceVersionRulesrequiredReferenceVersionRules
ElementDefinition.constraint.severityConstraintSeverityrequiredConstraintSeverity
ElementDefinition.binding.strengthBindingStrengthrequiredBindingStrength
ElementDefinition.mapping.language?extrequiredhttp://www.rfc-editor.org/bcp/bcp13.txt

Constraints

IdPathDetailsRequirements
eld-3ElementDefinition.maxMax SHALL be a number or "*"
Expression: empty() or ($this = '*') or (toInteger() >= 0)
eld-12ElementDefinition.bindingValueSet as a URI SHALL start with http:// or https:// or urn:
Expression: valueSet.is(uri).not() or valueSet.as(uri).startsWith('http:') or valueSet.as(uri).startsWith('https') or valueSet.as(uri).startsWith('urn:')
.