R6 Ballot (2nd Draft)

Publish-box (todo)

StructureDefinition: elementdefinition-de

FHIR Infrastructure Work Group Maturity Level: 1Trial UseUse Context: Country: World

The canonical 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+0800 as a draft by HL7 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.

Summary

Prohibited: 10 elements

Extensions

This structure refers to these extensions:

This indicates the differences between this profile and the base ElementDefinition structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition 0..* ElementDefinition Definition of an element in a resource or extension
... Slices for extension Content/Rules for all slices
.... Question 0..* string Prompt for element phrased as question
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-question
.... AllowedUnits 0..1 CodeableConcept, canonical(ValueSet) Units to use for measured value
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits
Binding: UCUM Codes (required)
... representation 0..0
... slicing 0..0
... short 0..0
... contentReference 0..0
... type 0..* Element Data type and Profile for this element
.... profile 0..0
.... aggregation 0..0
... defaultValue[x] 0..1 base64Binary, boolean, canonical(), code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference(), Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference(), SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta Specified value if missing from instance
... meaningWhenMissing 0..1 markdown Implicit meaning when this element is missing
... fixed[x] 0..0
... pattern[x] 0..0
... isModifier 0..0
... isSummary 0..0

doco Documentation for this format

This provides the consolidated view (aka snapshot) of the profile after applying the changes in this profile to the base ElementDefinition structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition C 0..* ElementDefinition Definition of an element in a resource or extension
eld-2: Min <= Max
eld-5: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
eld-6: Fixed value may only be specified if there is one type
eld-7: Pattern may only be specified if there is one type
eld-8: Pattern and fixed are mutually exclusive
eld-11: Binding can only be present for coded elements, string, and uri if using FHIR-defined types
eld-13: Types must be unique by code
eld-14: Constraints must be unique by key
eld-15: default value and meaningWhenMissing are mutually exclusive
eld-16: sliceName must be composed of proper tokens separated by "/"
eld-18: Must have a modifier reason if isModifier = true
eld-19: Element path SHALL be expressed as a set of '.'-separated components with each component restricted to a maximum of 64 characters and with some limits on the allowed choice of characters
eld-20: The first component of the path should be UpperCamelCase. Additional components (following a '.') should be lowerCamelCase. If this syntax is not adhered to, code generation tools may be broken. Logical models may be less concerned about this implication.
eld-22: sliceIsConstraining can only appear if slicename is present
eld-24: pattern[x] should be used rather than fixed[x]
eld-25: Order has no meaning (and cannot be asserted to have meaning), so enforcing rules on order is improper
eld-27: Mappings SHOULD be unique by key
eld-28: Can't have valueAlternatives if mustHaveValue is true
... id 0..1 id Unique id for inter-element referencing
... Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... Question 0..* string Prompt for element phrased as question
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-question
.... AllowedUnits 0..1 CodeableConcept, canonical(ValueSet) Units to use for measured value
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits
Binding: UCUM Codes (required)
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... path C 1..1 string Path of the element in the hierarchy of elements
... sliceName C 0..1 string Name for this particular element (in a set of slices)
... sliceIsConstraining C 0..1 boolean If this slice definition constrains an inherited slice definition (or not)
... label 0..1 string Name for element to display with or prompt for element
... code 0..* Coding Corresponding codes in terminologies
Binding: Codes that indicate the meaning of a data element. (example): Codes that indicate the meaning of a data element.


... definition 0..1 markdown Full formal definition as narrative text
... comment 0..1 markdown Comments about the use of this element
... requirements 0..1 markdown Why this resource has been created
... alias 0..* string Other names
... min C 0..1 unsignedInt Minimum Cardinality
... max C 0..1 string Maximum Cardinality (a number or *)
eld-3: Max SHALL be a number or "*"
... base 0..1 Element Base definition information for tools
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... path 1..1 string Path that identifies the base element
.... min 1..1 unsignedInt Min cardinality of the base element
.... max 1..1 string Max cardinality of the base element
... type C 0..* Element Data type and Profile for this element
eld-4: Aggregation may only be specified if one of the allowed types for the element is a reference
eld-17: targetProfile is only allowed if the type is Reference or canonical
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... code C 1..1 uri Data type or Resource (reference to definition)
Binding: Element Definition Types (extensible): List of all Types for ElementDefinition.type.code.

.... targetProfile C 0..* canonical(StructureDefinition | ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
.... versioning 0..1 code either | independent | specific
Binding: ReferenceVersionRules (required): Whether a reference needs to be version specific or version independent, or whether either can be used.

... defaultValue[x] C 0..1 Specified value if missing from instance
.... defaultValueBase64Binary base64Binary
.... defaultValueBoolean boolean
.... defaultValueCanonical canonical(Any)
.... defaultValueCode code
.... defaultValueDate date
.... defaultValueDateTime dateTime
.... defaultValueDecimal decimal
.... defaultValueId id
.... defaultValueInstant instant
.... defaultValueInteger integer
.... defaultValueInteger64 integer64
.... 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
.... defaultValueCodeableReference CodeableReference
.... defaultValueCoding Coding
.... defaultValueContactPoint ContactPoint
.... defaultValueCount Count
.... defaultValueDistance Distance
.... defaultValueDuration Duration
.... defaultValueHumanName HumanName
.... defaultValueIdentifier Identifier
.... defaultValueMoney Money
.... defaultValuePeriod Period
.... defaultValueQuantity Quantity
.... defaultValueRange Range
.... defaultValueRatio Ratio
.... defaultValueRatioRange RatioRange
.... defaultValueReference Reference(Any)
.... defaultValueSampledData SampledData
.... defaultValueSignature Signature
.... defaultValueTiming Timing
.... defaultValueContactDetail ContactDetail
.... defaultValueDataRequirement DataRequirement
.... defaultValueExpression Expression
.... defaultValueParameterDefinition ParameterDefinition
.... defaultValueRelatedArtifact RelatedArtifact
.... defaultValueTriggerDefinition TriggerDefinition
.... defaultValueUsageContext UsageContext
.... defaultValueAvailability Availability
.... defaultValueExtendedContactDetail ExtendedContactDetail
.... defaultValueDosage Dosage
.... defaultValueMeta Meta
... meaningWhenMissing C 0..1 markdown Implicit meaning when this element is missing
... orderMeaning C 0..1 string What the order of the elements means
... example C 0..* Element Example value (as defined for type)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... label 1..1 string Describes the purpose of this example
.... value[x] 1..1 Value of Example (one of allowed types)
..... valueBase64Binary base64Binary
..... valueBoolean boolean
..... valueCanonical canonical(Any)
..... valueCode code
..... valueDate date
..... valueDateTime dateTime
..... valueDecimal decimal
..... valueId id
..... valueInstant instant
..... valueInteger integer
..... valueInteger64 integer64
..... 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
..... valueCodeableReference CodeableReference
..... valueCoding Coding
..... valueContactPoint ContactPoint
..... valueCount Count
..... valueDistance Distance
..... valueDuration Duration
..... valueHumanName HumanName
..... valueIdentifier Identifier
..... valueMoney Money
..... valuePeriod Period
..... valueQuantity Quantity
..... valueRange Range
..... valueRatio Ratio
..... valueRatioRange RatioRange
..... valueReference Reference(Any)
..... valueSampledData SampledData
..... valueSignature Signature
..... valueTiming Timing
..... valueContactDetail ContactDetail
..... valueDataRequirement DataRequirement
..... valueExpression Expression
..... valueParameterDefinition ParameterDefinition
..... valueRelatedArtifact RelatedArtifact
..... valueTriggerDefinition TriggerDefinition
..... valueUsageContext UsageContext
..... valueAvailability Availability
..... valueExtendedContactDetail ExtendedContactDetail
..... valueDosage Dosage
..... valueMeta Meta
... minValue[x] C 0..1 Minimum Allowed Value (for some types)
.... minValueDate date
.... minValueDateTime dateTime
.... minValueInstant instant
.... minValueTime time
.... minValueDecimal decimal
.... minValueInteger integer
.... minValueInteger64 integer64
.... minValuePositiveInt positiveInt
.... minValueUnsignedInt unsignedInt
.... minValueQuantity Quantity
... maxValue[x] C 0..1 Maximum Allowed Value (for some types)
.... maxValueDate date
.... maxValueDateTime dateTime
.... maxValueInstant instant
.... maxValueTime time
.... maxValueDecimal decimal
.... maxValueInteger integer
.... maxValueInteger64 integer64
.... maxValuePositiveInt positiveInt
.... maxValueUnsignedInt unsignedInt
.... maxValueQuantity Quantity
... maxLength C 0..1 integer Max length for string type data
... condition 0..* id Reference to invariant about presence
... constraint C 0..* Element Condition that must evaluate to true
eld-21: Constraints should have an expression or else validators will not be able to enforce them
eld-26: Errors cannot be suppressed
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... key C 1..1 id Target of 'condition' reference above
.... requirements 0..1 markdown Why this constraint is necessary or appropriate
.... severity C 1..1 code error | warning
Binding: ConstraintSeverity (required): SHALL applications comply with this constraint?

.... suppress C 0..1 boolean Suppress warning or hint in profile
.... human 1..1 string Human description of constraint
.... expression C 0..1 string FHIRPath expression of constraint
.... source 0..1 canonical(StructureDefinition) Reference to original source of constraint
... mustHaveValue C 0..1 boolean For primitives, that a value must be present - not replaced by an extension
... valueAlternatives C 0..* canonical(StructureDefinition) Extensions that are allowed to replace a primitive value
... mustSupport 0..1 boolean If the element must be supported (discouraged - see obligations)
... isModifierReason C 0..1 string Reason that this element is marked as a modifier
... binding C 0..1 Element ValueSet details if this is coded
eld-12: ValueSet SHALL start with http:// or https:// or urn: or #
eld-23: binding SHALL have either description or valueSet
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... strength 1..1 code required | extensible | preferred | example
Binding: BindingStrength (required): Indication of the degree of conformance expectations associated with a binding.

.... description C 0..1 markdown Intended use of codes in the bound value set
.... valueSet C 0..1 canonical(ValueSet) Source of value set
.... additional 0..* Element Additional Bindings - more rules about the binding
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... purpose 1..1 code maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component
Binding: Additional Binding Purpose ValueSet (required): The use of an additional binding.

..... valueSet 1..1 canonical(ValueSet) The value set for the additional binding
..... documentation 0..1 markdown Documentation of the purpose of use of the binding
..... shortDoco 0..1 string Concise documentation - for summary tables
..... usage 0..* UsageContext Qualifies the usage - jurisdiction, gender, workflow status etc.
..... any 0..1 boolean Whether binding can applies to all repeats, or just one
... mapping C 0..* Element Map element to another set of definitions
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... identity C 1..1 id Reference to mapping declaration
.... language 0..1 code Computable language of mapping
Binding: Mime Types (required): BCP 13 (RFCs 2045, 2046, 2047, 4288, 4289 and 2049)

.... map 1..1 string Details of the mapping
.... comment 0..1 markdown Comments 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 -->
 <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
 <path value="[string]"/><!-- I 1..1 Path of the element in the hierarchy of elements -->
 <representation value="[code]"/><!-- I 0..0 xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <sliceName value="[string]"/><!-- I 0..1 Name for this particular element (in a set of slices) -->
 <sliceIsConstraining value="[boolean]"/><!-- I 0..1 
     If this slice definition constrains an inherited slice definition (or not) -->
 <label value="[string]"/><!-- I 0..1 Name for element to display with or prompt for element -->
 <code><!-- I 0..* Coding Corresponding codes in terminologies --></code>
 <slicing> I 0..0 Element  <!-- I 0..0 This element is sliced - slices follow -->
 </slicing>
 <short value="[string]"/><!-- I 0..0 Concise definition for space-constrained presentation -->
 <definition value="[markdown]"/><!-- I 0..1 Full formal definition as narrative text -->
 <comment value="[markdown]"/><!-- I 0..1 Comments about the use of this element -->
 <requirements value="[markdown]"/><!-- I 0..1 Why this resource has been created -->
 <alias value="[string]"/><!-- I 0..* Other names -->
 <min value="[unsignedInt]"/><!-- I 0..1 Minimum Cardinality -->
 <max value="[string]"/><!-- I 0..1 Maximum Cardinality (a number or *) -->
 <base> I 0..1 Element  <!-- I 0..1 Base definition information for tools -->
  <path value="[string]"/><!-- I 1..1 Path that identifies the base element -->
  <min value="[unsignedInt]"/><!-- I 1..1 Min cardinality of the base element -->
  <max value="[string]"/><!-- I 1..1 Max cardinality of the base element -->
 </base>
 <contentReference value="[uri]"/><!-- I 0..0 Reference to definition of content for the element -->
 <type> I 0..* Element  <!-- I 0..* Data type and Profile for this element -->
  <code value="[uri]"/><!-- I 1..1 Data type or Resource (reference to definition) -->
  <profile value="[canonical]"/><!-- I 0..0 Profiles (StructureDefinition or IG) - one must apply -->
  <targetProfile value="[canonical]"/><!-- I 0..* 
      Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply -->
  <aggregation value="[code]"/><!-- I 0..0 contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- I 0..1 either | independent | specific -->
 </type>
 <defaultValue[x]><!-- I 0..1 base64Binary|boolean|canonical|
   code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|
   positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|
   Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|
   Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|
   RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|
   DataRequirement|Expression|ParameterDefinition|RelatedArtifact|
   TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta 
     Specified value if missing from instance --></defaultValue[x]>
 <meaningWhenMissing value="[markdown]"/><!-- I 0..1 Implicit meaning when this element is missing -->
 <orderMeaning value="[string]"/><!-- I 0..1 What the order of the elements means -->
 <fixed[x]><!-- I 0..0 base64Binary|boolean|canonical|code|date|
   dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|
   time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|
   CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|
   HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|
   SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|
   ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|
   Availability|ExtendedContactDetail|Dosage|Meta 
     Value must be exactly this --></fixed[x]>
 <pattern[x]><!-- I 0..0 base64Binary|boolean|canonical|code|
   date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|
   string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|
   CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|
   HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|
   SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|
   ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|
   Availability|ExtendedContactDetail|Dosage|Meta 
     Value must have at least these property values --></pattern[x]>
 <example> I 0..* Element  <!-- I 0..* Example value (as defined for type) -->
  <label value="[string]"/><!-- I 1..1 Describes the purpose of this example -->
  <value[x]><!-- I 1..1 base64Binary|boolean|canonical|
    code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|
    positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|
    Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|
    Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|
    RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|
    DataRequirement|Expression|ParameterDefinition|RelatedArtifact|
    TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|
    Meta Value of Example (one of allowed types) --></value[x]>
 </example>
 <minValue[x]><!-- I 0..1 date|dateTime|instant|time|decimal|
   integer|integer64|positiveInt|unsignedInt|Quantity 
     Minimum Allowed Value (for some types) --></minValue[x]>
 <maxValue[x]><!-- I 0..1 date|dateTime|instant|time|decimal|
   integer|integer64|positiveInt|unsignedInt|Quantity 
     Maximum Allowed Value (for some types) --></maxValue[x]>
 <maxLength value="[integer]"/><!-- I 0..1 Max length for string type data -->
 <condition value="[id]"/><!-- I 0..* Reference to invariant about presence -->
 <constraint> I 0..* Element  <!-- I 0..* Condition that must evaluate to true -->
  <key value="[id]"/><!-- I 1..1 Target of 'condition' reference above -->
  <requirements value="[markdown]"/><!-- I 0..1 Why this constraint is necessary or appropriate -->
  <severity value="[code]"/><!-- I 1..1 error | warning -->
  <suppress value="[boolean]"/><!-- I 0..1 Suppress warning or hint in profile -->
  <human value="[string]"/><!-- I 1..1 Human description of constraint -->
  <expression value="[string]"/><!-- I 0..1 FHIRPath expression of constraint -->
  <source value="[canonical]"/><!-- I 0..1 Reference to original source of constraint -->
 </constraint>
 <mustHaveValue value="[boolean]"/><!-- I 0..1 
     For primitives, that a value must be present - not replaced by an extension -->
 <valueAlternatives value="[canonical]"/><!-- I 0..* Extensions that are allowed to replace a primitive value -->
 <mustSupport value="[boolean]"/><!-- I 0..1 If the element must be supported (discouraged - see obligations) -->
 <isModifier value="[boolean]"/><!-- I 0..0 If this modifies the meaning of other elements -->
 <isModifierReason value="[string]"/><!-- I 0..1 Reason that this element is marked as a modifier -->
 <isSummary value="[boolean]"/><!-- I 0..0 Include when _summary = true? -->
 <binding> I 0..1 Element  <!-- I 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- I 1..1 required | extensible | preferred | example -->
  <description value="[markdown]"/><!-- I 0..1 Intended use of codes in the bound value set -->
  <valueSet value="[canonical]"/><!-- I 0..1 Source of value set -->
  <additional> I 0..* Element  <!-- I 0..* Additional Bindings - more rules about the binding -->
   <purpose value="[code]"/><!-- I 1..1 maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component -->
   <valueSet value="[canonical]"/><!-- I 1..1 The value set for the additional binding -->
   <documentation value="[markdown]"/><!-- I 0..1 
       Documentation of the purpose of use of the binding -->
   <shortDoco value="[string]"/><!-- I 0..1 Concise documentation - for summary tables -->
   <usage><!-- I 0..* UsageContext 
       Qualifies the usage - jurisdiction, gender, workflow status etc. --></usage>
   <any value="[boolean]"/><!-- I 0..1 Whether binding can applies to all repeats, or just one -->
  </additional>
 </binding>
 <mapping> I 0..* Element  <!-- I 0..* Map element to another set of definitions -->
  <identity value="[id]"/><!-- I 1..1 Reference to mapping declaration -->
  <language value="[code]"/><!-- I 0..1 Computable language of mapping -->
  <map value="[string]"/><!-- I 1..1 Details of the mapping -->
  <comment value="[markdown]"/><!-- I 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 
      { // Prompt for element phrased as question // I
        // from Element: extension
      },
      { // Units to use for measured value // I
        // from Element: extension
      }
    ],
    "modifierExtension" : [{ Extension }], // IExtensions that cannot be ignored even if unrecognized
    "path" : "<string>", // I R! Path of the element in the hierarchy of elements
    "sliceName" : "<string>", // IName for this particular element (in a set of slices)
    "sliceIsConstraining" : <boolean>, // IIf this slice definition constrains an inherited slice definition (or not)
    "label" : "<string>", // IName for element to display with or prompt for element
    "code" : [{ Coding }], // ICorresponding codes in terminologies
    "definition" : "<markdown>", // IFull formal definition as narrative text
    "comment" : "<markdown>", // IComments about the use of this element
    "requirements" : "<markdown>", // IWhy this resource has been created
    "alias" : ["<string>"], // IOther names
    "min" : "<unsignedInt>", // IMinimum Cardinality
    "max" : "<string>", // IMaximum Cardinality (a number or *)
    "base" : { Element }, // IBase definition information for tools
    "type" : [{ Element }], // IData type and Profile for this element
  // value[x]: Specified value if missing from instance. One of these 54:
    "defaultValueBase64Binary" : "<base64Binary>", // ISpecified value if missing from instance
    "defaultValueBoolean" : <boolean>, // ISpecified value if missing from instance
    "defaultValueCanonical" : "<canonical>", // ISpecified value if missing from instance
    "defaultValueCode" : "<code>", // ISpecified value if missing from instance
    "defaultValueDate" : "<date>", // ISpecified value if missing from instance
    "defaultValueDateTime" : "<dateTime>", // ISpecified value if missing from instance
    "defaultValueDecimal" : <decimal>, // ISpecified value if missing from instance
    "defaultValueId" : "<id>", // ISpecified value if missing from instance
    "defaultValueInstant" : "<instant>", // ISpecified value if missing from instance
    "defaultValueInteger" : <integer>, // ISpecified value if missing from instance
    "defaultValueInteger64" : "<integer64>", // ISpecified value if missing from instance
    "defaultValueMarkdown" : "<markdown>", // ISpecified value if missing from instance
    "defaultValueOid" : "<oid>", // ISpecified value if missing from instance
    "defaultValuePositiveInt" : "<positiveInt>", // ISpecified value if missing from instance
    "defaultValueString" : "<string>", // ISpecified value if missing from instance
    "defaultValueTime" : "<time>", // ISpecified value if missing from instance
    "defaultValueUnsignedInt" : "<unsignedInt>", // ISpecified value if missing from instance
    "defaultValueUri" : "<uri>", // ISpecified value if missing from instance
    "defaultValueUrl" : "<url>", // ISpecified value if missing from instance
    "defaultValueUuid" : "<uuid>", // ISpecified value if missing from instance
    "defaultValueAddress" : { Address }, // ISpecified value if missing from instance
    "defaultValueAge" : { Age }, // ISpecified value if missing from instance
    "defaultValueAnnotation" : { Annotation }, // ISpecified value if missing from instance
    "defaultValueAttachment" : { Attachment }, // ISpecified value if missing from instance
    "defaultValueCodeableConcept" : { CodeableConcept }, // ISpecified value if missing from instance
    "defaultValueCodeableReference" : { CodeableReference }, // ISpecified value if missing from instance
    "defaultValueCoding" : { Coding }, // ISpecified value if missing from instance
    "defaultValueContactPoint" : { ContactPoint }, // ISpecified value if missing from instance
    "defaultValueCount" : { Count }, // ISpecified value if missing from instance
    "defaultValueDistance" : { Distance }, // ISpecified value if missing from instance
    "defaultValueDuration" : { Duration }, // ISpecified value if missing from instance
    "defaultValueHumanName" : { HumanName }, // ISpecified value if missing from instance
    "defaultValueIdentifier" : { Identifier }, // ISpecified value if missing from instance
    "defaultValueMoney" : { Money }, // ISpecified value if missing from instance
    "defaultValuePeriod" : { Period }, // ISpecified value if missing from instance
    "defaultValueQuantity" : { Quantity }, // ISpecified value if missing from instance
    "defaultValueRange" : { Range }, // ISpecified value if missing from instance
    "defaultValueRatio" : { Ratio }, // ISpecified value if missing from instance
    "defaultValueRatioRange" : { RatioRange }, // ISpecified value if missing from instance
    "defaultValueReference" : { Reference }, // ISpecified value if missing from instance
    "defaultValueSampledData" : { SampledData }, // ISpecified value if missing from instance
    "defaultValueSignature" : { Signature }, // ISpecified value if missing from instance
    "defaultValueTiming" : { Timing }, // ISpecified value if missing from instance
    "defaultValueContactDetail" : { ContactDetail }, // ISpecified value if missing from instance
    "defaultValueDataRequirement" : { DataRequirement }, // ISpecified value if missing from instance
    "defaultValueExpression" : { Expression }, // ISpecified value if missing from instance
    "defaultValueParameterDefinition" : { ParameterDefinition }, // ISpecified value if missing from instance
    "defaultValueRelatedArtifact" : { RelatedArtifact }, // ISpecified value if missing from instance
    "defaultValueTriggerDefinition" : { TriggerDefinition }, // ISpecified value if missing from instance
    "defaultValueUsageContext" : { UsageContext }, // ISpecified value if missing from instance
    "defaultValueAvailability" : { Availability }, // ISpecified value if missing from instance
    "defaultValueExtendedContactDetail" : { ExtendedContactDetail }, // ISpecified value if missing from instance
    "defaultValueDosage" : { Dosage }, // ISpecified value if missing from instance
    "defaultValueMeta" : { Meta }, // ISpecified value if missing from instance
    "meaningWhenMissing" : "<markdown>", // IImplicit meaning when this element is missing
    "orderMeaning" : "<string>", // IWhat the order of the elements means
  // value[x]: Value must be exactly this. One of these 54:
  // value[x]: Value must have at least these property values. One of these 54:
    "example" : [{ Element }], // IExample value (as defined for type)
  // value[x]: Minimum Allowed Value (for some types). One of these 10:
    "minValueDate" : "<date>", // IMinimum Allowed Value (for some types)
    "minValueDateTime" : "<dateTime>", // IMinimum Allowed Value (for some types)
    "minValueInstant" : "<instant>", // IMinimum Allowed Value (for some types)
    "minValueTime" : "<time>", // IMinimum Allowed Value (for some types)
    "minValueDecimal" : <decimal>, // IMinimum Allowed Value (for some types)
    "minValueInteger" : <integer>, // IMinimum Allowed Value (for some types)
    "minValueInteger64" : "<integer64>", // IMinimum Allowed Value (for some types)
    "minValuePositiveInt" : "<positiveInt>", // IMinimum Allowed Value (for some types)
    "minValueUnsignedInt" : "<unsignedInt>", // IMinimum Allowed Value (for some types)
    "minValueQuantity" : { Quantity }, // IMinimum Allowed Value (for some types)
  // value[x]: Maximum Allowed Value (for some types). One of these 10:
    "maxValueDate" : "<date>", // IMaximum Allowed Value (for some types)
    "maxValueDateTime" : "<dateTime>", // IMaximum Allowed Value (for some types)
    "maxValueInstant" : "<instant>", // IMaximum Allowed Value (for some types)
    "maxValueTime" : "<time>", // IMaximum Allowed Value (for some types)
    "maxValueDecimal" : <decimal>, // IMaximum Allowed Value (for some types)
    "maxValueInteger" : <integer>, // IMaximum Allowed Value (for some types)
    "maxValueInteger64" : "<integer64>", // IMaximum Allowed Value (for some types)
    "maxValuePositiveInt" : "<positiveInt>", // IMaximum Allowed Value (for some types)
    "maxValueUnsignedInt" : "<unsignedInt>", // IMaximum Allowed Value (for some types)
    "maxValueQuantity" : { Quantity }, // IMaximum Allowed Value (for some types)
    "maxLength" : <integer>, // IMax length for string type data
    "condition" : ["<id>"], // IReference to invariant about presence
    "constraint" : [{ Element }], // ICondition that must evaluate to true
    "mustHaveValue" : <boolean>, // IFor primitives, that a value must be present - not replaced by an extension
    "valueAlternatives" : ["<canonical>"], // IExtensions that are allowed to replace a primitive value
    "mustSupport" : <boolean>, // IIf the element must be supported (discouraged - see obligations)
    "isModifierReason" : "<string>", // IReason that this element is marked as a modifier
    "binding" : { Element }, // IValueSet details if this is coded
    "mapping" : [{ Element }], // IMap element to another set of definitions
  }

This structure is derived from ElementDefinition.

Differential View

This indicates the differences between this profile and the base ElementDefinition structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition 0..* ElementDefinition Definition of an element in a resource or extension
... Slices for extension Content/Rules for all slices
.... Question 0..* string Prompt for element phrased as question
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-question
.... AllowedUnits 0..1 CodeableConcept, canonical(ValueSet) Units to use for measured value
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits
Binding: UCUM Codes (required)
... representation 0..0
... slicing 0..0
... short 0..0
... contentReference 0..0
... type 0..* Element Data type and Profile for this element
.... profile 0..0
.... aggregation 0..0
... defaultValue[x] 0..1 base64Binary, boolean, canonical(), code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference(), Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference(), SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta Specified value if missing from instance
... meaningWhenMissing 0..1 markdown Implicit meaning when this element is missing
... fixed[x] 0..0
... pattern[x] 0..0
... isModifier 0..0
... isSummary 0..0

doco Documentation for this format

Snapshot View

This provides the consolidated view (aka snapshot) of the profile after applying the changes in this profile to the base ElementDefinition structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementDefinition C 0..* ElementDefinition Definition of an element in a resource or extension
eld-2: Min <= Max
eld-5: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
eld-6: Fixed value may only be specified if there is one type
eld-7: Pattern may only be specified if there is one type
eld-8: Pattern and fixed are mutually exclusive
eld-11: Binding can only be present for coded elements, string, and uri if using FHIR-defined types
eld-13: Types must be unique by code
eld-14: Constraints must be unique by key
eld-15: default value and meaningWhenMissing are mutually exclusive
eld-16: sliceName must be composed of proper tokens separated by "/"
eld-18: Must have a modifier reason if isModifier = true
eld-19: Element path SHALL be expressed as a set of '.'-separated components with each component restricted to a maximum of 64 characters and with some limits on the allowed choice of characters
eld-20: The first component of the path should be UpperCamelCase. Additional components (following a '.') should be lowerCamelCase. If this syntax is not adhered to, code generation tools may be broken. Logical models may be less concerned about this implication.
eld-22: sliceIsConstraining can only appear if slicename is present
eld-24: pattern[x] should be used rather than fixed[x]
eld-25: Order has no meaning (and cannot be asserted to have meaning), so enforcing rules on order is improper
eld-27: Mappings SHOULD be unique by key
eld-28: Can't have valueAlternatives if mustHaveValue is true
... id 0..1 id Unique id for inter-element referencing
... Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... Question 0..* string Prompt for element phrased as question
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-question
.... AllowedUnits 0..1 CodeableConcept, canonical(ValueSet) Units to use for measured value
URL: http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits
Binding: UCUM Codes (required)
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... path C 1..1 string Path of the element in the hierarchy of elements
... sliceName C 0..1 string Name for this particular element (in a set of slices)
... sliceIsConstraining C 0..1 boolean If this slice definition constrains an inherited slice definition (or not)
... label 0..1 string Name for element to display with or prompt for element
... code 0..* Coding Corresponding codes in terminologies
Binding: Codes that indicate the meaning of a data element. (example): Codes that indicate the meaning of a data element.


... definition 0..1 markdown Full formal definition as narrative text
... comment 0..1 markdown Comments about the use of this element
... requirements 0..1 markdown Why this resource has been created
... alias 0..* string Other names
... min C 0..1 unsignedInt Minimum Cardinality
... max C 0..1 string Maximum Cardinality (a number or *)
eld-3: Max SHALL be a number or "*"
... base 0..1 Element Base definition information for tools
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... path 1..1 string Path that identifies the base element
.... min 1..1 unsignedInt Min cardinality of the base element
.... max 1..1 string Max cardinality of the base element
... type C 0..* Element Data type and Profile for this element
eld-4: Aggregation may only be specified if one of the allowed types for the element is a reference
eld-17: targetProfile is only allowed if the type is Reference or canonical
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... code C 1..1 uri Data type or Resource (reference to definition)
Binding: Element Definition Types (extensible): List of all Types for ElementDefinition.type.code.

.... targetProfile C 0..* canonical(StructureDefinition | ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
.... versioning 0..1 code either | independent | specific
Binding: ReferenceVersionRules (required): Whether a reference needs to be version specific or version independent, or whether either can be used.

... defaultValue[x] C 0..1 Specified value if missing from instance
.... defaultValueBase64Binary base64Binary
.... defaultValueBoolean boolean
.... defaultValueCanonical canonical(Any)
.... defaultValueCode code
.... defaultValueDate date
.... defaultValueDateTime dateTime
.... defaultValueDecimal decimal
.... defaultValueId id
.... defaultValueInstant instant
.... defaultValueInteger integer
.... defaultValueInteger64 integer64
.... 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
.... defaultValueCodeableReference CodeableReference
.... defaultValueCoding Coding
.... defaultValueContactPoint ContactPoint
.... defaultValueCount Count
.... defaultValueDistance Distance
.... defaultValueDuration Duration
.... defaultValueHumanName HumanName
.... defaultValueIdentifier Identifier
.... defaultValueMoney Money
.... defaultValuePeriod Period
.... defaultValueQuantity Quantity
.... defaultValueRange Range
.... defaultValueRatio Ratio
.... defaultValueRatioRange RatioRange
.... defaultValueReference Reference(Any)
.... defaultValueSampledData SampledData
.... defaultValueSignature Signature
.... defaultValueTiming Timing
.... defaultValueContactDetail ContactDetail
.... defaultValueDataRequirement DataRequirement
.... defaultValueExpression Expression
.... defaultValueParameterDefinition ParameterDefinition
.... defaultValueRelatedArtifact RelatedArtifact
.... defaultValueTriggerDefinition TriggerDefinition
.... defaultValueUsageContext UsageContext
.... defaultValueAvailability Availability
.... defaultValueExtendedContactDetail ExtendedContactDetail
.... defaultValueDosage Dosage
.... defaultValueMeta Meta
... meaningWhenMissing C 0..1 markdown Implicit meaning when this element is missing
... orderMeaning C 0..1 string What the order of the elements means
... example C 0..* Element Example value (as defined for type)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... label 1..1 string Describes the purpose of this example
.... value[x] 1..1 Value of Example (one of allowed types)
..... valueBase64Binary base64Binary
..... valueBoolean boolean
..... valueCanonical canonical(Any)
..... valueCode code
..... valueDate date
..... valueDateTime dateTime
..... valueDecimal decimal
..... valueId id
..... valueInstant instant
..... valueInteger integer
..... valueInteger64 integer64
..... 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
..... valueCodeableReference CodeableReference
..... valueCoding Coding
..... valueContactPoint ContactPoint
..... valueCount Count
..... valueDistance Distance
..... valueDuration Duration
..... valueHumanName HumanName
..... valueIdentifier Identifier
..... valueMoney Money
..... valuePeriod Period
..... valueQuantity Quantity
..... valueRange Range
..... valueRatio Ratio
..... valueRatioRange RatioRange
..... valueReference Reference(Any)
..... valueSampledData SampledData
..... valueSignature Signature
..... valueTiming Timing
..... valueContactDetail ContactDetail
..... valueDataRequirement DataRequirement
..... valueExpression Expression
..... valueParameterDefinition ParameterDefinition
..... valueRelatedArtifact RelatedArtifact
..... valueTriggerDefinition TriggerDefinition
..... valueUsageContext UsageContext
..... valueAvailability Availability
..... valueExtendedContactDetail ExtendedContactDetail
..... valueDosage Dosage
..... valueMeta Meta
... minValue[x] C 0..1 Minimum Allowed Value (for some types)
.... minValueDate date
.... minValueDateTime dateTime
.... minValueInstant instant
.... minValueTime time
.... minValueDecimal decimal
.... minValueInteger integer
.... minValueInteger64 integer64
.... minValuePositiveInt positiveInt
.... minValueUnsignedInt unsignedInt
.... minValueQuantity Quantity
... maxValue[x] C 0..1 Maximum Allowed Value (for some types)
.... maxValueDate date
.... maxValueDateTime dateTime
.... maxValueInstant instant
.... maxValueTime time
.... maxValueDecimal decimal
.... maxValueInteger integer
.... maxValueInteger64 integer64
.... maxValuePositiveInt positiveInt
.... maxValueUnsignedInt unsignedInt
.... maxValueQuantity Quantity
... maxLength C 0..1 integer Max length for string type data
... condition 0..* id Reference to invariant about presence
... constraint C 0..* Element Condition that must evaluate to true
eld-21: Constraints should have an expression or else validators will not be able to enforce them
eld-26: Errors cannot be suppressed
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... key C 1..1 id Target of 'condition' reference above
.... requirements 0..1 markdown Why this constraint is necessary or appropriate
.... severity C 1..1 code error | warning
Binding: ConstraintSeverity (required): SHALL applications comply with this constraint?

.... suppress C 0..1 boolean Suppress warning or hint in profile
.... human 1..1 string Human description of constraint
.... expression C 0..1 string FHIRPath expression of constraint
.... source 0..1 canonical(StructureDefinition) Reference to original source of constraint
... mustHaveValue C 0..1 boolean For primitives, that a value must be present - not replaced by an extension
... valueAlternatives C 0..* canonical(StructureDefinition) Extensions that are allowed to replace a primitive value
... mustSupport 0..1 boolean If the element must be supported (discouraged - see obligations)
... isModifierReason C 0..1 string Reason that this element is marked as a modifier
... binding C 0..1 Element ValueSet details if this is coded
eld-12: ValueSet SHALL start with http:// or https:// or urn: or #
eld-23: binding SHALL have either description or valueSet
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... strength 1..1 code required | extensible | preferred | example
Binding: BindingStrength (required): Indication of the degree of conformance expectations associated with a binding.

.... description C 0..1 markdown Intended use of codes in the bound value set
.... valueSet C 0..1 canonical(ValueSet) Source of value set
.... additional 0..* Element Additional Bindings - more rules about the binding
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... purpose 1..1 code maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component
Binding: Additional Binding Purpose ValueSet (required): The use of an additional binding.

..... valueSet 1..1 canonical(ValueSet) The value set for the additional binding
..... documentation 0..1 markdown Documentation of the purpose of use of the binding
..... shortDoco 0..1 string Concise documentation - for summary tables
..... usage 0..* UsageContext Qualifies the usage - jurisdiction, gender, workflow status etc.
..... any 0..1 boolean Whether binding can applies to all repeats, or just one
... mapping C 0..* Element Map element to another set of definitions
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... identity C 1..1 id Reference to mapping declaration
.... language 0..1 code Computable language of mapping
Binding: Mime Types (required): BCP 13 (RFCs 2045, 2046, 2047, 4288, 4289 and 2049)

.... map 1..1 string Details of the mapping
.... comment 0..1 markdown Comments 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 -->
 <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
 <path value="[string]"/><!-- I 1..1 Path of the element in the hierarchy of elements -->
 <representation value="[code]"/><!-- I 0..0 xmlAttr | xmlText | typeAttr | cdaText | xhtml -->
 <sliceName value="[string]"/><!-- I 0..1 Name for this particular element (in a set of slices) -->
 <sliceIsConstraining value="[boolean]"/><!-- I 0..1 
     If this slice definition constrains an inherited slice definition (or not) -->
 <label value="[string]"/><!-- I 0..1 Name for element to display with or prompt for element -->
 <code><!-- I 0..* Coding Corresponding codes in terminologies --></code>
 <slicing> I 0..0 Element  <!-- I 0..0 This element is sliced - slices follow -->
 </slicing>
 <short value="[string]"/><!-- I 0..0 Concise definition for space-constrained presentation -->
 <definition value="[markdown]"/><!-- I 0..1 Full formal definition as narrative text -->
 <comment value="[markdown]"/><!-- I 0..1 Comments about the use of this element -->
 <requirements value="[markdown]"/><!-- I 0..1 Why this resource has been created -->
 <alias value="[string]"/><!-- I 0..* Other names -->
 <min value="[unsignedInt]"/><!-- I 0..1 Minimum Cardinality -->
 <max value="[string]"/><!-- I 0..1 Maximum Cardinality (a number or *) -->
 <base> I 0..1 Element  <!-- I 0..1 Base definition information for tools -->
  <path value="[string]"/><!-- I 1..1 Path that identifies the base element -->
  <min value="[unsignedInt]"/><!-- I 1..1 Min cardinality of the base element -->
  <max value="[string]"/><!-- I 1..1 Max cardinality of the base element -->
 </base>
 <contentReference value="[uri]"/><!-- I 0..0 Reference to definition of content for the element -->
 <type> I 0..* Element  <!-- I 0..* Data type and Profile for this element -->
  <code value="[uri]"/><!-- I 1..1 Data type or Resource (reference to definition) -->
  <profile value="[canonical]"/><!-- I 0..0 Profiles (StructureDefinition or IG) - one must apply -->
  <targetProfile value="[canonical]"/><!-- I 0..* 
      Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply -->
  <aggregation value="[code]"/><!-- I 0..0 contained | referenced | bundled - how aggregated -->
  <versioning value="[code]"/><!-- I 0..1 either | independent | specific -->
 </type>
 <defaultValue[x]><!-- I 0..1 base64Binary|boolean|canonical|
   code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|
   positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|
   Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|
   Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|
   RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|
   DataRequirement|Expression|ParameterDefinition|RelatedArtifact|
   TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|Meta 
     Specified value if missing from instance --></defaultValue[x]>
 <meaningWhenMissing value="[markdown]"/><!-- I 0..1 Implicit meaning when this element is missing -->
 <orderMeaning value="[string]"/><!-- I 0..1 What the order of the elements means -->
 <fixed[x]><!-- I 0..0 base64Binary|boolean|canonical|code|date|
   dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|string|
   time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|
   CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|
   HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|
   SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|
   ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|
   Availability|ExtendedContactDetail|Dosage|Meta 
     Value must be exactly this --></fixed[x]>
 <pattern[x]><!-- I 0..0 base64Binary|boolean|canonical|code|
   date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|positiveInt|
   string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|Attachment|
   CodeableConcept|CodeableReference|Coding|ContactPoint|Count|Distance|Duration|
   HumanName|Identifier|Money|Period|Quantity|Range|Ratio|RatioRange|Reference|
   SampledData|Signature|Timing|ContactDetail|DataRequirement|Expression|
   ParameterDefinition|RelatedArtifact|TriggerDefinition|UsageContext|
   Availability|ExtendedContactDetail|Dosage|Meta 
     Value must have at least these property values --></pattern[x]>
 <example> I 0..* Element  <!-- I 0..* Example value (as defined for type) -->
  <label value="[string]"/><!-- I 1..1 Describes the purpose of this example -->
  <value[x]><!-- I 1..1 base64Binary|boolean|canonical|
    code|date|dateTime|decimal|id|instant|integer|integer64|markdown|oid|
    positiveInt|string|time|unsignedInt|uri|url|uuid|Address|Age|Annotation|
    Attachment|CodeableConcept|CodeableReference|Coding|ContactPoint|Count|
    Distance|Duration|HumanName|Identifier|Money|Period|Quantity|Range|Ratio|
    RatioRange|Reference|SampledData|Signature|Timing|ContactDetail|
    DataRequirement|Expression|ParameterDefinition|RelatedArtifact|
    TriggerDefinition|UsageContext|Availability|ExtendedContactDetail|Dosage|
    Meta Value of Example (one of allowed types) --></value[x]>
 </example>
 <minValue[x]><!-- I 0..1 date|dateTime|instant|time|decimal|
   integer|integer64|positiveInt|unsignedInt|Quantity 
     Minimum Allowed Value (for some types) --></minValue[x]>
 <maxValue[x]><!-- I 0..1 date|dateTime|instant|time|decimal|
   integer|integer64|positiveInt|unsignedInt|Quantity 
     Maximum Allowed Value (for some types) --></maxValue[x]>
 <maxLength value="[integer]"/><!-- I 0..1 Max length for string type data -->
 <condition value="[id]"/><!-- I 0..* Reference to invariant about presence -->
 <constraint> I 0..* Element  <!-- I 0..* Condition that must evaluate to true -->
  <key value="[id]"/><!-- I 1..1 Target of 'condition' reference above -->
  <requirements value="[markdown]"/><!-- I 0..1 Why this constraint is necessary or appropriate -->
  <severity value="[code]"/><!-- I 1..1 error | warning -->
  <suppress value="[boolean]"/><!-- I 0..1 Suppress warning or hint in profile -->
  <human value="[string]"/><!-- I 1..1 Human description of constraint -->
  <expression value="[string]"/><!-- I 0..1 FHIRPath expression of constraint -->
  <source value="[canonical]"/><!-- I 0..1 Reference to original source of constraint -->
 </constraint>
 <mustHaveValue value="[boolean]"/><!-- I 0..1 
     For primitives, that a value must be present - not replaced by an extension -->
 <valueAlternatives value="[canonical]"/><!-- I 0..* Extensions that are allowed to replace a primitive value -->
 <mustSupport value="[boolean]"/><!-- I 0..1 If the element must be supported (discouraged - see obligations) -->
 <isModifier value="[boolean]"/><!-- I 0..0 If this modifies the meaning of other elements -->
 <isModifierReason value="[string]"/><!-- I 0..1 Reason that this element is marked as a modifier -->
 <isSummary value="[boolean]"/><!-- I 0..0 Include when _summary = true? -->
 <binding> I 0..1 Element  <!-- I 0..1 ValueSet details if this is coded -->
  <strength value="[code]"/><!-- I 1..1 required | extensible | preferred | example -->
  <description value="[markdown]"/><!-- I 0..1 Intended use of codes in the bound value set -->
  <valueSet value="[canonical]"/><!-- I 0..1 Source of value set -->
  <additional> I 0..* Element  <!-- I 0..* Additional Bindings - more rules about the binding -->
   <purpose value="[code]"/><!-- I 1..1 maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component -->
   <valueSet value="[canonical]"/><!-- I 1..1 The value set for the additional binding -->
   <documentation value="[markdown]"/><!-- I 0..1 
       Documentation of the purpose of use of the binding -->
   <shortDoco value="[string]"/><!-- I 0..1 Concise documentation - for summary tables -->
   <usage><!-- I 0..* UsageContext 
       Qualifies the usage - jurisdiction, gender, workflow status etc. --></usage>
   <any value="[boolean]"/><!-- I 0..1 Whether binding can applies to all repeats, or just one -->
  </additional>
 </binding>
 <mapping> I 0..* Element  <!-- I 0..* Map element to another set of definitions -->
  <identity value="[id]"/><!-- I 1..1 Reference to mapping declaration -->
  <language value="[code]"/><!-- I 0..1 Computable language of mapping -->
  <map value="[string]"/><!-- I 1..1 Details of the mapping -->
  <comment value="[markdown]"/><!-- I 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 
      { // Prompt for element phrased as question // I
        // from Element: extension
      },
      { // Units to use for measured value // I
        // from Element: extension
      }
    ],
    "modifierExtension" : [{ Extension }], // IExtensions that cannot be ignored even if unrecognized
    "path" : "<string>", // I R! Path of the element in the hierarchy of elements
    "sliceName" : "<string>", // IName for this particular element (in a set of slices)
    "sliceIsConstraining" : <boolean>, // IIf this slice definition constrains an inherited slice definition (or not)
    "label" : "<string>", // IName for element to display with or prompt for element
    "code" : [{ Coding }], // ICorresponding codes in terminologies
    "definition" : "<markdown>", // IFull formal definition as narrative text
    "comment" : "<markdown>", // IComments about the use of this element
    "requirements" : "<markdown>", // IWhy this resource has been created
    "alias" : ["<string>"], // IOther names
    "min" : "<unsignedInt>", // IMinimum Cardinality
    "max" : "<string>", // IMaximum Cardinality (a number or *)
    "base" : { Element }, // IBase definition information for tools
    "type" : [{ Element }], // IData type and Profile for this element
  // value[x]: Specified value if missing from instance. One of these 54:
    "defaultValueBase64Binary" : "<base64Binary>", // ISpecified value if missing from instance
    "defaultValueBoolean" : <boolean>, // ISpecified value if missing from instance
    "defaultValueCanonical" : "<canonical>", // ISpecified value if missing from instance
    "defaultValueCode" : "<code>", // ISpecified value if missing from instance
    "defaultValueDate" : "<date>", // ISpecified value if missing from instance
    "defaultValueDateTime" : "<dateTime>", // ISpecified value if missing from instance
    "defaultValueDecimal" : <decimal>, // ISpecified value if missing from instance
    "defaultValueId" : "<id>", // ISpecified value if missing from instance
    "defaultValueInstant" : "<instant>", // ISpecified value if missing from instance
    "defaultValueInteger" : <integer>, // ISpecified value if missing from instance
    "defaultValueInteger64" : "<integer64>", // ISpecified value if missing from instance
    "defaultValueMarkdown" : "<markdown>", // ISpecified value if missing from instance
    "defaultValueOid" : "<oid>", // ISpecified value if missing from instance
    "defaultValuePositiveInt" : "<positiveInt>", // ISpecified value if missing from instance
    "defaultValueString" : "<string>", // ISpecified value if missing from instance
    "defaultValueTime" : "<time>", // ISpecified value if missing from instance
    "defaultValueUnsignedInt" : "<unsignedInt>", // ISpecified value if missing from instance
    "defaultValueUri" : "<uri>", // ISpecified value if missing from instance
    "defaultValueUrl" : "<url>", // ISpecified value if missing from instance
    "defaultValueUuid" : "<uuid>", // ISpecified value if missing from instance
    "defaultValueAddress" : { Address }, // ISpecified value if missing from instance
    "defaultValueAge" : { Age }, // ISpecified value if missing from instance
    "defaultValueAnnotation" : { Annotation }, // ISpecified value if missing from instance
    "defaultValueAttachment" : { Attachment }, // ISpecified value if missing from instance
    "defaultValueCodeableConcept" : { CodeableConcept }, // ISpecified value if missing from instance
    "defaultValueCodeableReference" : { CodeableReference }, // ISpecified value if missing from instance
    "defaultValueCoding" : { Coding }, // ISpecified value if missing from instance
    "defaultValueContactPoint" : { ContactPoint }, // ISpecified value if missing from instance
    "defaultValueCount" : { Count }, // ISpecified value if missing from instance
    "defaultValueDistance" : { Distance }, // ISpecified value if missing from instance
    "defaultValueDuration" : { Duration }, // ISpecified value if missing from instance
    "defaultValueHumanName" : { HumanName }, // ISpecified value if missing from instance
    "defaultValueIdentifier" : { Identifier }, // ISpecified value if missing from instance
    "defaultValueMoney" : { Money }, // ISpecified value if missing from instance
    "defaultValuePeriod" : { Period }, // ISpecified value if missing from instance
    "defaultValueQuantity" : { Quantity }, // ISpecified value if missing from instance
    "defaultValueRange" : { Range }, // ISpecified value if missing from instance
    "defaultValueRatio" : { Ratio }, // ISpecified value if missing from instance
    "defaultValueRatioRange" : { RatioRange }, // ISpecified value if missing from instance
    "defaultValueReference" : { Reference }, // ISpecified value if missing from instance
    "defaultValueSampledData" : { SampledData }, // ISpecified value if missing from instance
    "defaultValueSignature" : { Signature }, // ISpecified value if missing from instance
    "defaultValueTiming" : { Timing }, // ISpecified value if missing from instance
    "defaultValueContactDetail" : { ContactDetail }, // ISpecified value if missing from instance
    "defaultValueDataRequirement" : { DataRequirement }, // ISpecified value if missing from instance
    "defaultValueExpression" : { Expression }, // ISpecified value if missing from instance
    "defaultValueParameterDefinition" : { ParameterDefinition }, // ISpecified value if missing from instance
    "defaultValueRelatedArtifact" : { RelatedArtifact }, // ISpecified value if missing from instance
    "defaultValueTriggerDefinition" : { TriggerDefinition }, // ISpecified value if missing from instance
    "defaultValueUsageContext" : { UsageContext }, // ISpecified value if missing from instance
    "defaultValueAvailability" : { Availability }, // ISpecified value if missing from instance
    "defaultValueExtendedContactDetail" : { ExtendedContactDetail }, // ISpecified value if missing from instance
    "defaultValueDosage" : { Dosage }, // ISpecified value if missing from instance
    "defaultValueMeta" : { Meta }, // ISpecified value if missing from instance
    "meaningWhenMissing" : "<markdown>", // IImplicit meaning when this element is missing
    "orderMeaning" : "<string>", // IWhat the order of the elements means
  // value[x]: Value must be exactly this. One of these 54:
  // value[x]: Value must have at least these property values. One of these 54:
    "example" : [{ Element }], // IExample value (as defined for type)
  // value[x]: Minimum Allowed Value (for some types). One of these 10:
    "minValueDate" : "<date>", // IMinimum Allowed Value (for some types)
    "minValueDateTime" : "<dateTime>", // IMinimum Allowed Value (for some types)
    "minValueInstant" : "<instant>", // IMinimum Allowed Value (for some types)
    "minValueTime" : "<time>", // IMinimum Allowed Value (for some types)
    "minValueDecimal" : <decimal>, // IMinimum Allowed Value (for some types)
    "minValueInteger" : <integer>, // IMinimum Allowed Value (for some types)
    "minValueInteger64" : "<integer64>", // IMinimum Allowed Value (for some types)
    "minValuePositiveInt" : "<positiveInt>", // IMinimum Allowed Value (for some types)
    "minValueUnsignedInt" : "<unsignedInt>", // IMinimum Allowed Value (for some types)
    "minValueQuantity" : { Quantity }, // IMinimum Allowed Value (for some types)
  // value[x]: Maximum Allowed Value (for some types). One of these 10:
    "maxValueDate" : "<date>", // IMaximum Allowed Value (for some types)
    "maxValueDateTime" : "<dateTime>", // IMaximum Allowed Value (for some types)
    "maxValueInstant" : "<instant>", // IMaximum Allowed Value (for some types)
    "maxValueTime" : "<time>", // IMaximum Allowed Value (for some types)
    "maxValueDecimal" : <decimal>, // IMaximum Allowed Value (for some types)
    "maxValueInteger" : <integer>, // IMaximum Allowed Value (for some types)
    "maxValueInteger64" : "<integer64>", // IMaximum Allowed Value (for some types)
    "maxValuePositiveInt" : "<positiveInt>", // IMaximum Allowed Value (for some types)
    "maxValueUnsignedInt" : "<unsignedInt>", // IMaximum Allowed Value (for some types)
    "maxValueQuantity" : { Quantity }, // IMaximum Allowed Value (for some types)
    "maxLength" : <integer>, // IMax length for string type data
    "condition" : ["<id>"], // IReference to invariant about presence
    "constraint" : [{ Element }], // ICondition that must evaluate to true
    "mustHaveValue" : <boolean>, // IFor primitives, that a value must be present - not replaced by an extension
    "valueAlternatives" : ["<canonical>"], // IExtensions that are allowed to replace a primitive value
    "mustSupport" : <boolean>, // IIf the element must be supported (discouraged - see obligations)
    "isModifierReason" : "<string>", // IReason that this element is marked as a modifier
    "binding" : { Element }, // IValueSet details if this is coded
    "mapping" : [{ Element }], // IMap element to another set of definitions
  }

 

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

Terminology Bindings

PathNameConformanceValueSet
ElementDefinition.code?extexamplehttp://loinc.org/vs
ElementDefinition.slicing.discriminator.typeDiscriminatorTyperequiredDiscriminatorType
ElementDefinition.slicing.rulesSlicingRulesrequiredSlicingRules
ElementDefinition.type.codeElement Definition TypesextensibleElement Definition Types
ElementDefinition.type.versioningReferenceVersionRulesrequiredReferenceVersionRules
ElementDefinition.constraint.severityConstraintSeverityrequiredConstraintSeverity
ElementDefinition.binding.strengthBindingStrengthrequiredBindingStrength
ElementDefinition.binding.additional.purposeAdditional Binding Purpose ValueSetrequiredAdditional Binding Purpose ValueSet
ElementDefinition.mapping.languageMime TypesrequiredMime Types
. .