This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions
FHIR Infrastructure Work Group | Maturity Level: Normative | Standards Status: Normative |
Types Framework Cross Reference: Base Types | Datatypes | Resources | Patterns
The definition of an element in a resource or an extension. The definition includes:
The ElementDefinition type is the core of the FHIR metadata layer, and is closely (conceptually) aligned to ISO 11179. All the data elements defined in this specification are published as a collection of data elements (XML or JSON).
ElementDefinition is used in StructureDefinition
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ElementDefinition | ΣN | Element | Definition of an element in a resource or extension + Rule: Min <= Max + Rule: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding + Rule: Fixed value may only be specified if there is one type + Rule: Pattern may only be specified if there is one type + Rule: Pattern and fixed are mutually exclusive + Rule: Binding can only be present for coded elements, string, and uri if using FHIR-defined types + Rule: Types must be unique by code + Rule: Constraints must be unique by key + Rule: default value and meaningWhenMissing are mutually exclusive + Rule: sliceName must be composed of proper tokens separated by "/" + Rule: Must have a modifier reason if isModifier = true + Rule: Element 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 + Warning: 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. + Rule: sliceIsConstraining can only appear if slicename is present + Guideline: pattern[x] should be used rather than fixed[x] + Warning: Order has no meaning (and cannot be asserted to have meaning), so enforcing rules on order is improper + Warning: Mappings SHOULD be unique by key + Rule: Can't have valueAlternatives if mustHaveValue is true Elements defined in Ancestors: id, extension, modifierExtension | |
path | ΣC | 1..1 | string | Path of the element in the hierarchy of elements |
representation | Σ | 0..* | code | xmlAttr | xmlText | typeAttr | cdaText | xhtml Binding: PropertyRepresentation (Required) |
sliceName | ΣC | 0..1 | string | Name for this particular element (in a set of slices) |
sliceIsConstraining | ΣCTU | 0..1 | boolean | If this slice definition constrains an inherited slice definition (or not) |
label | ΣT | 0..1 | string | Name for element to display with or prompt for element |
code | Σ | 0..* | Coding | Corresponding codes in terminologies Binding: ElementDefinitionCode (Example) |
slicing | ΣC | 0..1 | Element | This element is sliced - slices follow |
discriminator | Σ | 0..* | Element | Element values that are used to distinguish the slices |
type | Σ | 1..1 | code | value | exists | type | profile | position Binding: DiscriminatorType (Required) |
path | Σ | 1..1 | string | Path to element value |
description | ΣT | 0..1 | string | Text description of how slicing works (or not) |
ordered | ΣC | 0..1 | boolean | If elements must be in same order as slices |
rules | ΣC | 1..1 | code | closed | open | openAtEnd Binding: SlicingRules (Required) |
short | ΣT | 0..1 | string | Concise definition for space-constrained presentation |
definition | ΣT | 0..1 | markdown | Full formal definition as narrative text |
comment | ΣT | 0..1 | markdown | Comments about the use of this element |
requirements | ΣT | 0..1 | markdown | Why this resource has been created |
alias | ΣT | 0..* | string | Other names |
min | ΣC | 0..1 | unsignedInt | Minimum Cardinality |
max | ΣC | 0..1 | string | Maximum Cardinality (a number or *) + Rule: Max SHALL be a number or "*" |
base | Σ | 0..1 | Element | Base definition information for tools |
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 |
contentReference | ΣC | 0..1 | uri | Reference to definition of content for the element |
type | ΣC | 0..* | Element | Data type and Profile for this element + Rule: Aggregation may only be specified if one of the allowed types for the element is a reference + Rule: targetProfile is only allowed if the type is Reference or canonical |
code | ΣC | 1..1 | uri | Data type or Resource (reference to definition) Binding: Element Definition Types (Extensible) |
profile | Σ | 0..* | canonical(StructureDefinition | ImplementationGuide) | Profiles (StructureDefinition or IG) - one must apply |
targetProfile | ΣC | 0..* | canonical(StructureDefinition | ImplementationGuide) | Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply |
aggregation | ΣC | 0..* | code | contained | referenced | bundled - how aggregated Binding: AggregationMode (Required) |
versioning | Σ | 0..1 | code | either | independent | specific Binding: ReferenceVersionRules (Required) |
defaultValue[x] | ΣC | 0..1 | * | Specified value if missing from instance |
meaningWhenMissing | ΣTC | 0..1 | markdown | Implicit meaning when this element is missing |
orderMeaning | ΣC | 0..1 | string | What the order of the elements means |
fixed[x] | ΣC | 0..1 | * | Value must be exactly this |
pattern[x] | ΣC | 0..1 | * | Value must have at least these property values |
example | ΣC | 0..* | Element | Example value (as defined for type) |
label | ΣT | 1..1 | string | Describes the purpose of this example |
value[x] | Σ | 1..1 | * | Value of Example (one of allowed types) |
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 + Warning: Constraints should have an expression or else validators will not be able to enforce them + Rule: Errors cannot be suppressed |
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) |
suppress | ΣCTU | 0..1 | boolean | Suppress warning or hint in profile |
human | ΣT | 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 | ΣCTU | 0..1 | boolean | For primitives, that a value must be present - not replaced by an extension |
valueAlternatives | ΣCTU | 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) |
isModifier | ΣC | 0..1 | boolean | If this modifies the meaning of other elements |
isModifierReason | ΣC | 0..1 | string | Reason that this element is marked as a modifier |
isSummary | Σ | 0..1 | boolean | Include when _summary = true? |
binding | ΣC | 0..1 | Element | ValueSet details if this is coded + Rule: ValueSet SHALL start with http:// or https:// or urn: or # + Rule: binding SHALL have either description or valueSet |
strength | Σ | 1..1 | code | required | extensible | preferred | example Binding: BindingStrength (Required) |
description | ΣTC | 0..1 | markdown | Intended use of codes in the bound value set |
valueSet | ΣC | 0..1 | canonical(ValueSet) | Source of value set |
additional | ΣTU | 0..* | Element | Additional Bindings - more rules about the binding |
purpose | Σ | 1..1 | code | maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component Binding: Additional Binding Purpose ValueSet (Required) |
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 |
identity | ΣC | 1..1 | id | Reference to mapping declaration |
language | Σ | 0..1 | code | Computable language of mapping Binding: Mime Types (Required) |
map | Σ | 1..1 | string | Details of the mapping |
comment | Σ | 0..1 | markdown | Comments about the mapping or its use |
Documentation for this format |
UML Diagram (Legend)
XML Template
<ElementDefinition xmlns="http://hl7.org/fhir"> <!-- from Element: extension --> <path value="[string]"/><!-- I 1..1 Path of the element in the hierarchy of elements --> <representation value="[code]"/><!-- 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]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Corresponding codes in terminologies --></code> <slicing> <!-- I 0..1 This element is sliced - slices follow --> <discriminator> <!-- 0..* Element values that are used to distinguish the slices --> <type value="[code]"/><!-- 1..1 value | exists | type | profile | position --> <path value="[string]"/><!-- 1..1 Path to element value --> </discriminator> <description value="[string]"/><!-- 0..1 Text description of how slicing works (or not) --> <ordered value="[boolean]"/><!-- I 0..1 If elements must be in same order as slices --> <rules value="[code]"/><!-- I 1..1 closed | open | openAtEnd --> </slicing> <short value="[string]"/><!-- 0..1 Concise definition for space-constrained presentation --> <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text --> <comment value="[markdown]"/><!-- 0..1 Comments about the use of this element --> <requirements value="[markdown]"/><!-- 0..1 Why this resource has been created --> <alias value="[string]"/><!-- 0..* Other names --> <min value="[unsignedInt]"/><!-- I 0..1 Minimum Cardinality --> <max value="[string]"/><!-- I 0..1 Maximum Cardinality (a number or *) --> <base> <!-- 0..1 Base definition information for tools --> <path value="[string]"/><!-- 1..1 Path that identifies the base element --> <min value="[unsignedInt]"/><!-- 1..1 Min cardinality of the base element --> <max value="[string]"/><!-- 1..1 Max cardinality of the base element --> </base> <contentReference value="[uri]"/><!-- I 0..1 Reference to definition of content for the element --> <type> <!-- I 0..* Data type and Profile for this element --> <code value="[uri]"/><!-- I 1..1 Data type or Resource (reference to definition) --> <profile><!-- 0..* canonical(ImplementationGuide|StructureDefinition) Profiles (StructureDefinition or IG) - one must apply --></profile> <targetProfile><!-- I 0..* canonical(ImplementationGuide|StructureDefinition) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply --></targetProfile> <aggregation value="[code]"/><!-- I 0..* contained | referenced | bundled - how aggregated --> <versioning value="[code]"/><!-- 0..1 either | independent | specific --> </type> <defaultValue[x]><!-- I 0..1 * 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..1 * Value must be exactly this --></fixed[x]> <pattern[x]><!-- I 0..1 * Value must have at least these property values --></pattern[x]> <example> <!-- I 0..* Example value (as defined for type) --> <label value="[string]"/><!-- 1..1 Describes the purpose of this example --> <value[x]><!-- 1..1 * Value of Example (one of allowed types) --></value[x]> </example> <minValue[x]><!-- 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]"/><!-- 0..* Reference to invariant about presence --> <constraint> <!-- I 0..* Condition that must evaluate to true --> <key value="[id]"/><!-- I 1..1 Target of 'condition' reference above --> <requirements value="[markdown]"/><!-- 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]"/><!-- 1..1 Human description of constraint --> <expression value="[string]"/><!-- I 0..1 FHIRPath expression of constraint --> <source><!-- 0..1 canonical(StructureDefinition) Reference to original source of constraint --></source> </constraint> <mustHaveValue value="[boolean]"/><!-- I 0..1 For primitives, that a value must be present - not replaced by an extension --> <valueAlternatives><!-- I 0..* canonical(StructureDefinition) Extensions that are allowed to replace a primitive value --></valueAlternatives> <mustSupport value="[boolean]"/><!-- 0..1 If the element must be supported (discouraged - see obligations) --> <isModifier value="[boolean]"/><!-- I 0..1 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]"/><!-- 0..1 Include when _summary = true? --> <binding> <!-- I 0..1 ValueSet details if this is coded --> <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example --> <description value="[markdown]"/><!-- I 0..1 Intended use of codes in the bound value set --> <valueSet><!-- I 0..1 canonical(ValueSet) Source of value set --></valueSet> <additional> <!-- 0..* Additional Bindings - more rules about the binding --> <purpose value="[code]"/><!-- 1..1 maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component --> <valueSet><!-- 1..1 canonical(ValueSet) The value set for the additional binding --></valueSet> <documentation value="[markdown]"/><!-- 0..1 Documentation of the purpose of use of the binding --> <shortDoco value="[string]"/><!-- 0..1 Concise documentation - for summary tables --> <usage><!-- 0..* UsageContext Qualifies the usage - jurisdiction, gender, workflow status etc. --></usage> <any value="[boolean]"/><!-- 0..1 Whether binding can applies to all repeats, or just one --> </additional> </binding> <mapping> <!-- I 0..* Map element to another set of definitions --> <identity value="[id]"/><!-- I 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="[markdown]"/><!-- 0..1 Comments about the mapping or its use --> </mapping> </ElementDefinition>
JSON Template
{ // from Element: extension "path" : "<string>", // I R! Path of the element in the hierarchy of elements "representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml "sliceName" : "<string>", // I Name for this particular element (in a set of slices) "sliceIsConstraining" : <boolean>, // I If this slice definition constrains an inherited slice definition (or not) "label" : "<string>", // Name for element to display with or prompt for element "code" : [{ Coding }], // Corresponding codes in terminologies "slicing" : { // I This element is sliced - slices follow "discriminator" : [{ // Element values that are used to distinguish the slices "type" : "<code>", // R! value | exists | type | profile | position "path" : "<string>" // R! Path to element value }], "description" : "<string>", // Text description of how slicing works (or not) "ordered" : <boolean>, // I If elements must be in same order as slices "rules" : "<code>" // I R! closed | open | openAtEnd }, "short" : "<string>", // Concise definition for space-constrained presentation "definition" : "<markdown>", // Full formal definition as narrative text "comment" : "<markdown>", // Comments about the use of this element "requirements" : "<markdown>", // Why this resource has been created "alias" : ["<string>"], // Other names "min" : "<unsignedInt>", // I Minimum Cardinality "max" : "<string>", // I Maximum Cardinality (a number or *) "base" : { // Base definition information for tools "path" : "<string>", // R! Path that identifies the base element "min" : "<unsignedInt>", // R! Min cardinality of the base element "max" : "<string>" // R! Max cardinality of the base element }, "contentReference" : "<uri>", // I Reference to definition of content for the element "type" : [{ // I Data type and Profile for this element "code" : "<uri>", // I R! Data type or Resource (reference to definition) "profile" : ["<canonical(StructureDefinition|ImplementationGuide)>"], // Profiles (StructureDefinition or IG) - one must apply "targetProfile" : ["<canonical(StructureDefinition|ImplementationGuide)>"], // I Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply "aggregation" : ["<code>"], // I contained | referenced | bundled - how aggregated "versioning" : "<code>" // either | independent | specific }], // defaultValue[x]: Specified value if missing from instance. One of these 54: "defaultValueBase64Binary" : "<base64Binary>", "defaultValueBoolean" : <boolean>, "defaultValueCanonical" : "<canonical>", "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 }, "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" : "<markdown>", // I Implicit meaning when this element is missing "orderMeaning" : "<string>", // I What the order of the elements means // fixed[x]: Value must be exactly this. One of these 54: "fixedBase64Binary" : "<base64Binary>", "fixedBoolean" : <boolean>, "fixedCanonical" : "<canonical>", "fixedCode" : "<code>", "fixedDate" : "<date>", "fixedDateTime" : "<dateTime>", "fixedDecimal" : <decimal>, "fixedId" : "<id>", "fixedInstant" : "<instant>", "fixedInteger" : <integer>, "fixedInteger64" : "<integer64>", "fixedMarkdown" : "<markdown>", "fixedOid" : "<oid>", "fixedPositiveInt" : "<positiveInt>", "fixedString" : "<string>", "fixedTime" : "<time>", "fixedUnsignedInt" : "<unsignedInt>", "fixedUri" : "<uri>", "fixedUrl" : "<url>", "fixedUuid" : "<uuid>", "fixedAddress" : { Address }, "fixedAge" : { Age }, "fixedAnnotation" : { Annotation }, "fixedAttachment" : { Attachment }, "fixedCodeableConcept" : { CodeableConcept }, "fixedCodeableReference" : { CodeableReference }, "fixedCoding" : { Coding }, "fixedContactPoint" : { ContactPoint }, "fixedCount" : { Count }, "fixedDistance" : { Distance }, "fixedDuration" : { Duration }, "fixedHumanName" : { HumanName }, "fixedIdentifier" : { Identifier }, "fixedMoney" : { Money }, "fixedPeriod" : { Period }, "fixedQuantity" : { Quantity }, "fixedRange" : { Range }, "fixedRatio" : { Ratio }, "fixedRatioRange" : { RatioRange }, "fixedReference" : { Reference }, "fixedSampledData" : { SampledData }, "fixedSignature" : { Signature }, "fixedTiming" : { Timing }, "fixedContactDetail" : { ContactDetail }, "fixedDataRequirement" : { DataRequirement }, "fixedExpression" : { Expression }, "fixedParameterDefinition" : { ParameterDefinition }, "fixedRelatedArtifact" : { RelatedArtifact }, "fixedTriggerDefinition" : { TriggerDefinition }, "fixedUsageContext" : { UsageContext }, "fixedAvailability" : { Availability }, "fixedExtendedContactDetail" : { ExtendedContactDetail }, "fixedDosage" : { Dosage }, "fixedMeta" : { Meta }, // pattern[x]: Value must have at least these property values. One of these 54: "patternBase64Binary" : "<base64Binary>", "patternBoolean" : <boolean>, "patternCanonical" : "<canonical>", "patternCode" : "<code>", "patternDate" : "<date>", "patternDateTime" : "<dateTime>", "patternDecimal" : <decimal>, "patternId" : "<id>", "patternInstant" : "<instant>", "patternInteger" : <integer>, "patternInteger64" : "<integer64>", "patternMarkdown" : "<markdown>", "patternOid" : "<oid>", "patternPositiveInt" : "<positiveInt>", "patternString" : "<string>", "patternTime" : "<time>", "patternUnsignedInt" : "<unsignedInt>", "patternUri" : "<uri>", "patternUrl" : "<url>", "patternUuid" : "<uuid>", "patternAddress" : { Address }, "patternAge" : { Age }, "patternAnnotation" : { Annotation }, "patternAttachment" : { Attachment }, "patternCodeableConcept" : { CodeableConcept }, "patternCodeableReference" : { CodeableReference }, "patternCoding" : { Coding }, "patternContactPoint" : { ContactPoint }, "patternCount" : { Count }, "patternDistance" : { Distance }, "patternDuration" : { Duration }, "patternHumanName" : { HumanName }, "patternIdentifier" : { Identifier }, "patternMoney" : { Money }, "patternPeriod" : { Period }, "patternQuantity" : { Quantity }, "patternRange" : { Range }, "patternRatio" : { Ratio }, "patternRatioRange" : { RatioRange }, "patternReference" : { Reference }, "patternSampledData" : { SampledData }, "patternSignature" : { Signature }, "patternTiming" : { Timing }, "patternContactDetail" : { ContactDetail }, "patternDataRequirement" : { DataRequirement }, "patternExpression" : { Expression }, "patternParameterDefinition" : { ParameterDefinition }, "patternRelatedArtifact" : { RelatedArtifact }, "patternTriggerDefinition" : { TriggerDefinition }, "patternUsageContext" : { UsageContext }, "patternAvailability" : { Availability }, "patternExtendedContactDetail" : { ExtendedContactDetail }, "patternDosage" : { Dosage }, "patternMeta" : { Meta }, "example" : [{ // I Example value (as defined for type) "label" : "<string>", // R! Describes the purpose of this example // value[x]: Value of Example (one of allowed types). One of these 54: "valueBase64Binary" : "<base64Binary>" "valueBoolean" : <boolean>, "valueCanonical" : "<canonical>", "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 }, "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]: Minimum Allowed Value (for some types). One of these 10: "minValueDate" : "<date>", "minValueDateTime" : "<dateTime>", "minValueInstant" : "<instant>", "minValueTime" : "<time>", "minValueDecimal" : <decimal>, "minValueInteger" : <integer>, "minValueInteger64" : "<integer64>", "minValuePositiveInt" : "<positiveInt>", "minValueUnsignedInt" : "<unsignedInt>", "minValueQuantity" : { Quantity }, // maxValue[x]: Maximum Allowed Value (for some types). One of these 10: "maxValueDate" : "<date>", "maxValueDateTime" : "<dateTime>", "maxValueInstant" : "<instant>", "maxValueTime" : "<time>", "maxValueDecimal" : <decimal>, "maxValueInteger" : <integer>, "maxValueInteger64" : "<integer64>", "maxValuePositiveInt" : "<positiveInt>", "maxValueUnsignedInt" : "<unsignedInt>", "maxValueQuantity" : { Quantity }, "maxLength" : <integer>, // I Max length for string type data "condition" : ["<id>"], // Reference to invariant about presence "constraint" : [{ // I Condition that must evaluate to true "key" : "<id>", // I R! Target of 'condition' reference above "requirements" : "<markdown>", // Why this constraint is necessary or appropriate "severity" : "<code>", // I R! error | warning "suppress" : <boolean>, // I Suppress warning or hint in profile "human" : "<string>", // R! Human description of constraint "expression" : "<string>", // I FHIRPath expression of constraint "source" : "<canonical(StructureDefinition)>" // Reference to original source of constraint }], "mustHaveValue" : <boolean>, // I For primitives, that a value must be present - not replaced by an extension "valueAlternatives" : ["<canonical(StructureDefinition)>"], // I Extensions that are allowed to replace a primitive value "mustSupport" : <boolean>, // If the element must be supported (discouraged - see obligations) "isModifier" : <boolean>, // I If this modifies the meaning of other elements "isModifierReason" : "<string>", // I Reason that this element is marked as a modifier "isSummary" : <boolean>, // Include when _summary = true? "binding" : { // I ValueSet details if this is coded "strength" : "<code>", // R! required | extensible | preferred | example "description" : "<markdown>", // I Intended use of codes in the bound value set "valueSet" : "<canonical(ValueSet)>", // I Source of value set "additional" : [{ // Additional Bindings - more rules about the binding "purpose" : "<code>", // R! maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component "valueSet" : "<canonical(ValueSet)>", // R! The value set for the additional binding "documentation" : "<markdown>", // Documentation of the purpose of use of the binding "shortDoco" : "<string>", // Concise documentation - for summary tables "usage" : [{ UsageContext }], // Qualifies the usage - jurisdiction, gender, workflow status etc. "any" : <boolean> // Whether binding can applies to all repeats, or just one }] }, "mapping" : [{ // I Map element to another set of definitions "identity" : "<id>", // I R! Reference to mapping declaration "language" : "<code>", // Computable language of mapping "map" : "<string>", // R! Details of the mapping "comment" : "<markdown>" // Comments about the mapping or its use }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ # from Element: Element.extension fhir:path [ string ] ; # 1..1 I Path of the element in the hierarchy of elements fhir:representation ( [ code ] ... ) ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml fhir:sliceName [ string ] ; # 0..1 I Name for this particular element (in a set of slices) fhir:sliceIsConstraining [ boolean ] ; # 0..1 I If this slice definition constrains an inherited slice definition (or not) fhir:label [ string ] ; # 0..1 Name for element to display with or prompt for element fhir:code ( [ Coding ] ... ) ; # 0..* Corresponding codes in terminologies fhir:slicing [ # 0..1 I This element is sliced - slices follow fhir:discriminator ( [ # 0..* Element values that are used to distinguish the slices fhir:type [ code ] ; # 1..1 value | exists | type | profile | position fhir:path [ string ] ; # 1..1 Path to element value ] ... ) ; fhir:description [ string ] ; # 0..1 Text description of how slicing works (or not) fhir:ordered [ boolean ] ; # 0..1 I If elements must be in same order as slices fhir:rules [ code ] ; # 1..1 I closed | open | openAtEnd ] ; fhir:short [ string ] ; # 0..1 Concise definition for space-constrained presentation fhir:definition [ markdown ] ; # 0..1 Full formal definition as narrative text fhir:comment [ markdown ] ; # 0..1 Comments about the use of this element fhir:requirements [ markdown ] ; # 0..1 Why this resource has been created fhir:alias ( [ string ] ... ) ; # 0..* Other names fhir:min [ unsignedInt ] ; # 0..1 I Minimum Cardinality fhir:max [ string ] ; # 0..1 I Maximum Cardinality (a number or *) fhir:base [ # 0..1 Base definition information for tools fhir:path [ string ] ; # 1..1 Path that identifies the base element fhir:min [ unsignedInt ] ; # 1..1 Min cardinality of the base element fhir:max [ string ] ; # 1..1 Max cardinality of the base element ] ; fhir:contentReference [ uri ] ; # 0..1 I Reference to definition of content for the element fhir:type ( [ # 0..* I Data type and Profile for this element fhir:code [ uri ] ; # 1..1 I Data type or Resource (reference to definition) fhir:profile ( [ canonical(ImplementationGuide|StructureDefinition) ] ... ) ; # 0..* Profiles (StructureDefinition or IG) - one must apply fhir:targetProfile ( [ canonical(ImplementationGuide|StructureDefinition) ] ... ) ; # 0..* I Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply fhir:aggregation ( [ code ] ... ) ; # 0..* I contained | referenced | bundled - how aggregated fhir:versioning [ code ] ; # 0..1 either | independent | specific ] ... ) ; # defaultValue[x] : 0..1 I Specified value if missing from instance. One of these 54 fhir:defaultValue [ a fhir:base64Binary ; base64Binary ] fhir:defaultValue [ a fhir:boolean ; boolean ] fhir:defaultValue [ a fhir:canonical ; canonical ] fhir:defaultValue [ a fhir:code ; code ] fhir:defaultValue [ a fhir:date ; date ] fhir:defaultValue [ a fhir:dateTime ; dateTime ] fhir:defaultValue [ a fhir:decimal ; decimal ] fhir:defaultValue [ a fhir:id ; id ] fhir:defaultValue [ a fhir:instant ; instant ] fhir:defaultValue [ a fhir:integer ; integer ] fhir:defaultValue [ a fhir:integer64 ; integer64 ] fhir:defaultValue [ a fhir:markdown ; markdown ] fhir:defaultValue [ a fhir:oid ; oid ] fhir:defaultValue [ a fhir:positiveInt ; positiveInt ] fhir:defaultValue [ a fhir:string ; string ] fhir:defaultValue [ a fhir:time ; time ] fhir:defaultValue [ a fhir:unsignedInt ; unsignedInt ] fhir:defaultValue [ a fhir:uri ; uri ] fhir:defaultValue [ a fhir:url ; url ] fhir:defaultValue [ a fhir:uuid ; uuid ] fhir:defaultValue [ a fhir:Address ; Address ] fhir:defaultValue [ a fhir:Age ; Age ] fhir:defaultValue [ a fhir:Annotation ; Annotation ] fhir:defaultValue [ a fhir:Attachment ; Attachment ] fhir:defaultValue [ a fhir:CodeableConcept ; CodeableConcept ] fhir:defaultValue [ a fhir:CodeableReference ; CodeableReference ] fhir:defaultValue [ a fhir:Coding ; Coding ] fhir:defaultValue [ a fhir:ContactPoint ; ContactPoint ] fhir:defaultValue [ a fhir:Count ; Count ] fhir:defaultValue [ a fhir:Distance ; Distance ] fhir:defaultValue [ a fhir:Duration ; Duration ] fhir:defaultValue [ a fhir:HumanName ; HumanName ] fhir:defaultValue [ a fhir:Identifier ; Identifier ] fhir:defaultValue [ a fhir:Money ; Money ] fhir:defaultValue [ a fhir:Period ; Period ] fhir:defaultValue [ a fhir:Quantity ; Quantity ] fhir:defaultValue [ a fhir:Range ; Range ] fhir:defaultValue [ a fhir:Ratio ; Ratio ] fhir:defaultValue [ a fhir:RatioRange ; RatioRange ] fhir:defaultValue [ a fhir:Reference ; Reference ] fhir:defaultValue [ a fhir:SampledData ; SampledData ] fhir:defaultValue [ a fhir:Signature ; Signature ] fhir:defaultValue [ a fhir:Timing ; Timing ] fhir:defaultValue [ a fhir:ContactDetail ; ContactDetail ] fhir:defaultValue [ a fhir:DataRequirement ; DataRequirement ] fhir:defaultValue [ a fhir:Expression ; Expression ] fhir:defaultValue [ a fhir:ParameterDefinition ; ParameterDefinition ] fhir:defaultValue [ a fhir:RelatedArtifact ; RelatedArtifact ] fhir:defaultValue [ a fhir:TriggerDefinition ; TriggerDefinition ] fhir:defaultValue [ a fhir:UsageContext ; UsageContext ] fhir:defaultValue [ a fhir:Availability ; Availability ] fhir:defaultValue [ a fhir:ExtendedContactDetail ; ExtendedContactDetail ] fhir:defaultValue [ a fhir:Dosage ; Dosage ] fhir:defaultValue [ a fhir:Meta ; Meta ] fhir:meaningWhenMissing [ markdown ] ; # 0..1 I Implicit meaning when this element is missing fhir:orderMeaning [ string ] ; # 0..1 I What the order of the elements means # fixed[x] : 0..1 I Value must be exactly this. One of these 54 fhir:fixed [ a fhir:base64Binary ; base64Binary ] fhir:fixed [ a fhir:boolean ; boolean ] fhir:fixed [ a fhir:canonical ; canonical ] fhir:fixed [ a fhir:code ; code ] fhir:fixed [ a fhir:date ; date ] fhir:fixed [ a fhir:dateTime ; dateTime ] fhir:fixed [ a fhir:decimal ; decimal ] fhir:fixed [ a fhir:id ; id ] fhir:fixed [ a fhir:instant ; instant ] fhir:fixed [ a fhir:integer ; integer ] fhir:fixed [ a fhir:integer64 ; integer64 ] fhir:fixed [ a fhir:markdown ; markdown ] fhir:fixed [ a fhir:oid ; oid ] fhir:fixed [ a fhir:positiveInt ; positiveInt ] fhir:fixed [ a fhir:string ; string ] fhir:fixed [ a fhir:time ; time ] fhir:fixed [ a fhir:unsignedInt ; unsignedInt ] fhir:fixed [ a fhir:uri ; uri ] fhir:fixed [ a fhir:url ; url ] fhir:fixed [ a fhir:uuid ; uuid ] fhir:fixed [ a fhir:Address ; Address ] fhir:fixed [ a fhir:Age ; Age ] fhir:fixed [ a fhir:Annotation ; Annotation ] fhir:fixed [ a fhir:Attachment ; Attachment ] fhir:fixed [ a fhir:CodeableConcept ; CodeableConcept ] fhir:fixed [ a fhir:CodeableReference ; CodeableReference ] fhir:fixed [ a fhir:Coding ; Coding ] fhir:fixed [ a fhir:ContactPoint ; ContactPoint ] fhir:fixed [ a fhir:Count ; Count ] fhir:fixed [ a fhir:Distance ; Distance ] fhir:fixed [ a fhir:Duration ; Duration ] fhir:fixed [ a fhir:HumanName ; HumanName ] fhir:fixed [ a fhir:Identifier ; Identifier ] fhir:fixed [ a fhir:Money ; Money ] fhir:fixed [ a fhir:Period ; Period ] fhir:fixed [ a fhir:Quantity ; Quantity ] fhir:fixed [ a fhir:Range ; Range ] fhir:fixed [ a fhir:Ratio ; Ratio ] fhir:fixed [ a fhir:RatioRange ; RatioRange ] fhir:fixed [ a fhir:Reference ; Reference ] fhir:fixed [ a fhir:SampledData ; SampledData ] fhir:fixed [ a fhir:Signature ; Signature ] fhir:fixed [ a fhir:Timing ; Timing ] fhir:fixed [ a fhir:ContactDetail ; ContactDetail ] fhir:fixed [ a fhir:DataRequirement ; DataRequirement ] fhir:fixed [ a fhir:Expression ; Expression ] fhir:fixed [ a fhir:ParameterDefinition ; ParameterDefinition ] fhir:fixed [ a fhir:RelatedArtifact ; RelatedArtifact ] fhir:fixed [ a fhir:TriggerDefinition ; TriggerDefinition ] fhir:fixed [ a fhir:UsageContext ; UsageContext ] fhir:fixed [ a fhir:Availability ; Availability ] fhir:fixed [ a fhir:ExtendedContactDetail ; ExtendedContactDetail ] fhir:fixed [ a fhir:Dosage ; Dosage ] fhir:fixed [ a fhir:Meta ; Meta ] # pattern[x] : 0..1 I Value must have at least these property values. One of these 54 fhir:pattern [ a fhir:base64Binary ; base64Binary ] fhir:pattern [ a fhir:boolean ; boolean ] fhir:pattern [ a fhir:canonical ; canonical ] fhir:pattern [ a fhir:code ; code ] fhir:pattern [ a fhir:date ; date ] fhir:pattern [ a fhir:dateTime ; dateTime ] fhir:pattern [ a fhir:decimal ; decimal ] fhir:pattern [ a fhir:id ; id ] fhir:pattern [ a fhir:instant ; instant ] fhir:pattern [ a fhir:integer ; integer ] fhir:pattern [ a fhir:integer64 ; integer64 ] fhir:pattern [ a fhir:markdown ; markdown ] fhir:pattern [ a fhir:oid ; oid ] fhir:pattern [ a fhir:positiveInt ; positiveInt ] fhir:pattern [ a fhir:string ; string ] fhir:pattern [ a fhir:time ; time ] fhir:pattern [ a fhir:unsignedInt ; unsignedInt ] fhir:pattern [ a fhir:uri ; uri ] fhir:pattern [ a fhir:url ; url ] fhir:pattern [ a fhir:uuid ; uuid ] fhir:pattern [ a fhir:Address ; Address ] fhir:pattern [ a fhir:Age ; Age ] fhir:pattern [ a fhir:Annotation ; Annotation ] fhir:pattern [ a fhir:Attachment ; Attachment ] fhir:pattern [ a fhir:CodeableConcept ; CodeableConcept ] fhir:pattern [ a fhir:CodeableReference ; CodeableReference ] fhir:pattern [ a fhir:Coding ; Coding ] fhir:pattern [ a fhir:ContactPoint ; ContactPoint ] fhir:pattern [ a fhir:Count ; Count ] fhir:pattern [ a fhir:Distance ; Distance ] fhir:pattern [ a fhir:Duration ; Duration ] fhir:pattern [ a fhir:HumanName ; HumanName ] fhir:pattern [ a fhir:Identifier ; Identifier ] fhir:pattern [ a fhir:Money ; Money ] fhir:pattern [ a fhir:Period ; Period ] fhir:pattern [ a fhir:Quantity ; Quantity ] fhir:pattern [ a fhir:Range ; Range ] fhir:pattern [ a fhir:Ratio ; Ratio ] fhir:pattern [ a fhir:RatioRange ; RatioRange ] fhir:pattern [ a fhir:Reference ; Reference ] fhir:pattern [ a fhir:SampledData ; SampledData ] fhir:pattern [ a fhir:Signature ; Signature ] fhir:pattern [ a fhir:Timing ; Timing ] fhir:pattern [ a fhir:ContactDetail ; ContactDetail ] fhir:pattern [ a fhir:DataRequirement ; DataRequirement ] fhir:pattern [ a fhir:Expression ; Expression ] fhir:pattern [ a fhir:ParameterDefinition ; ParameterDefinition ] fhir:pattern [ a fhir:RelatedArtifact ; RelatedArtifact ] fhir:pattern [ a fhir:TriggerDefinition ; TriggerDefinition ] fhir:pattern [ a fhir:UsageContext ; UsageContext ] fhir:pattern [ a fhir:Availability ; Availability ] fhir:pattern [ a fhir:ExtendedContactDetail ; ExtendedContactDetail ] fhir:pattern [ a fhir:Dosage ; Dosage ] fhir:pattern [ a fhir:Meta ; Meta ] fhir:example ( [ # 0..* I Example value (as defined for type) fhir:label [ string ] ; # 1..1 Describes the purpose of this example # value[x] : 1..1 Value of Example (one of allowed types). One of these 54 fhir:value [ a fhir:base64Binary ; base64Binary ] fhir:value [ a fhir:boolean ; boolean ] fhir:value [ a fhir:canonical ; canonical ] fhir:value [ a fhir:code ; code ] fhir:value [ a fhir:date ; date ] fhir:value [ a fhir:dateTime ; dateTime ] fhir:value [ a fhir:decimal ; decimal ] fhir:value [ a fhir:id ; id ] fhir:value [ a fhir:instant ; instant ] fhir:value [ a fhir:integer ; integer ] fhir:value [ a fhir:integer64 ; integer64 ] fhir:value [ a fhir:markdown ; markdown ] fhir:value [ a fhir:oid ; oid ] fhir:value [ a fhir:positiveInt ; positiveInt ] fhir:value [ a fhir:string ; string ] fhir:value [ a fhir:time ; time ] fhir:value [ a fhir:unsignedInt ; unsignedInt ] fhir:value [ a fhir:uri ; uri ] fhir:value [ a fhir:url ; url ] fhir:value [ a fhir:uuid ; uuid ] fhir:value [ a fhir:Address ; Address ] fhir:value [ a fhir:Age ; Age ] fhir:value [ a fhir:Annotation ; Annotation ] fhir:value [ a fhir:Attachment ; Attachment ] fhir:value [ a fhir:CodeableConcept ; CodeableConcept ] fhir:value [ a fhir:CodeableReference ; CodeableReference ] fhir:value [ a fhir:Coding ; Coding ] fhir:value [ a fhir:ContactPoint ; ContactPoint ] fhir:value [ a fhir:Count ; Count ] fhir:value [ a fhir:Distance ; Distance ] fhir:value [ a fhir:Duration ; Duration ] fhir:value [ a fhir:HumanName ; HumanName ] fhir:value [ a fhir:Identifier ; Identifier ] fhir:value [ a fhir:Money ; Money ] fhir:value [ a fhir:Period ; Period ] fhir:value [ a fhir:Quantity ; Quantity ] fhir:value [ a fhir:Range ; Range ] fhir:value [ a fhir:Ratio ; Ratio ] fhir:value [ a fhir:RatioRange ; RatioRange ] fhir:value [ a fhir:Reference ; Reference ] fhir:value [ a fhir:SampledData ; SampledData ] fhir:value [ a fhir:Signature ; Signature ] fhir:value [ a fhir:Timing ; Timing ] fhir:value [ a fhir:ContactDetail ; ContactDetail ] fhir:value [ a fhir:DataRequirement ; DataRequirement ] fhir:value [ a fhir:Expression ; Expression ] fhir:value [ a fhir:ParameterDefinition ; ParameterDefinition ] fhir:value [ a fhir:RelatedArtifact ; RelatedArtifact ] fhir:value [ a fhir:TriggerDefinition ; TriggerDefinition ] fhir:value [ a fhir:UsageContext ; UsageContext ] fhir:value [ a fhir:Availability ; Availability ] fhir:value [ a fhir:ExtendedContactDetail ; ExtendedContactDetail ] fhir:value [ a fhir:Dosage ; Dosage ] fhir:value [ a fhir:Meta ; Meta ] ] ... ) ; # minValue[x] : 0..1 I Minimum Allowed Value (for some types). One of these 10 fhir:minValue [ a fhir:date ; date ] fhir:minValue [ a fhir:dateTime ; dateTime ] fhir:minValue [ a fhir:instant ; instant ] fhir:minValue [ a fhir:time ; time ] fhir:minValue [ a fhir:decimal ; decimal ] fhir:minValue [ a fhir:integer ; integer ] fhir:minValue [ a fhir:integer64 ; integer64 ] fhir:minValue [ a fhir:positiveInt ; positiveInt ] fhir:minValue [ a fhir:unsignedInt ; unsignedInt ] fhir:minValue [ a fhir:Quantity ; Quantity ] # maxValue[x] : 0..1 I Maximum Allowed Value (for some types). One of these 10 fhir:maxValue [ a fhir:date ; date ] fhir:maxValue [ a fhir:dateTime ; dateTime ] fhir:maxValue [ a fhir:instant ; instant ] fhir:maxValue [ a fhir:time ; time ] fhir:maxValue [ a fhir:decimal ; decimal ] fhir:maxValue [ a fhir:integer ; integer ] fhir:maxValue [ a fhir:integer64 ; integer64 ] fhir:maxValue [ a fhir:positiveInt ; positiveInt ] fhir:maxValue [ a fhir:unsignedInt ; unsignedInt ] fhir:maxValue [ a fhir:Quantity ; Quantity ] fhir:maxLength [ integer ] ; # 0..1 I Max length for string type data fhir:condition ( [ id ] ... ) ; # 0..* Reference to invariant about presence fhir:constraint ( [ # 0..* I Condition that must evaluate to true fhir:key [ id ] ; # 1..1 I Target of 'condition' reference above fhir:requirements [ markdown ] ; # 0..1 Why this constraint is necessary or appropriate fhir:severity [ code ] ; # 1..1 I error | warning fhir:suppress [ boolean ] ; # 0..1 I Suppress warning or hint in profile fhir:human [ string ] ; # 1..1 Human description of constraint fhir:expression [ string ] ; # 0..1 I FHIRPath expression of constraint fhir:source [ canonical(StructureDefinition) ] ; # 0..1 Reference to original source of constraint ] ... ) ; fhir:mustHaveValue [ boolean ] ; # 0..1 I For primitives, that a value must be present - not replaced by an extension fhir:valueAlternatives ( [ canonical(StructureDefinition) ] ... ) ; # 0..* I Extensions that are allowed to replace a primitive value fhir:mustSupport [ boolean ] ; # 0..1 If the element must be supported (discouraged - see obligations) fhir:isModifier [ boolean ] ; # 0..1 I If this modifies the meaning of other elements fhir:isModifierReason [ string ] ; # 0..1 I Reason that this element is marked as a modifier fhir:isSummary [ boolean ] ; # 0..1 Include when _summary = true? fhir:binding [ # 0..1 I ValueSet details if this is coded fhir:strength [ code ] ; # 1..1 required | extensible | preferred | example fhir:description [ markdown ] ; # 0..1 I Intended use of codes in the bound value set fhir:valueSet [ canonical(ValueSet) ] ; # 0..1 I Source of value set fhir:additional ( [ # 0..* Additional Bindings - more rules about the binding fhir:purpose [ code ] ; # 1..1 maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component fhir:valueSet [ canonical(ValueSet) ] ; # 1..1 The value set for the additional binding fhir:documentation [ markdown ] ; # 0..1 Documentation of the purpose of use of the binding fhir:shortDoco [ string ] ; # 0..1 Concise documentation - for summary tables fhir:usage ( [ UsageContext ] ... ) ; # 0..* Qualifies the usage - jurisdiction, gender, workflow status etc. fhir:any [ boolean ] ; # 0..1 Whether binding can applies to all repeats, or just one ] ... ) ; ] ; fhir:mapping ( [ # 0..* I Map element to another set of definitions fhir:identity [ id ] ; # 1..1 I Reference to mapping declaration fhir:language [ code ] ; # 0..1 Computable language of mapping fhir:map [ string ] ; # 1..1 Details of the mapping fhir:comment [ markdown ] ; # 0..1 Comments about the mapping or its use ] ... ) ; ]
Changes since Release 3
Changes from both R4 and R4B
ElementDefinition | |
ElementDefinition.slicing.discriminator.type |
|
ElementDefinition.type.code |
|
ElementDefinition.defaultValue[x] |
|
ElementDefinition.fixed[x] |
|
ElementDefinition.pattern[x] |
|
ElementDefinition.example.value[x] |
|
ElementDefinition.minValue[x] |
|
ElementDefinition.maxValue[x] |
|
ElementDefinition.constraint.requirements |
|
ElementDefinition.constraint.suppress |
|
ElementDefinition.mustHaveValue |
|
ElementDefinition.valueAlternatives |
|
ElementDefinition.binding.description |
|
ElementDefinition.binding.additional |
|
ElementDefinition.binding.additional.purpose |
|
ElementDefinition.binding.additional.valueSet |
|
ElementDefinition.binding.additional.documentation |
|
ElementDefinition.binding.additional.shortDoco |
|
ElementDefinition.binding.additional.usage |
|
ElementDefinition.binding.additional.any |
|
ElementDefinition.mapping.comment |
|
ElementDefinition.constraint.xpath |
|
See the Full Difference for further information
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ElementDefinition | ΣN | Element | Definition of an element in a resource or extension + Rule: Min <= Max + Rule: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding + Rule: Fixed value may only be specified if there is one type + Rule: Pattern may only be specified if there is one type + Rule: Pattern and fixed are mutually exclusive + Rule: Binding can only be present for coded elements, string, and uri if using FHIR-defined types + Rule: Types must be unique by code + Rule: Constraints must be unique by key + Rule: default value and meaningWhenMissing are mutually exclusive + Rule: sliceName must be composed of proper tokens separated by "/" + Rule: Must have a modifier reason if isModifier = true + Rule: Element 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 + Warning: 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. + Rule: sliceIsConstraining can only appear if slicename is present + Guideline: pattern[x] should be used rather than fixed[x] + Warning: Order has no meaning (and cannot be asserted to have meaning), so enforcing rules on order is improper + Warning: Mappings SHOULD be unique by key + Rule: Can't have valueAlternatives if mustHaveValue is true Elements defined in Ancestors: id, extension, modifierExtension | |
path | ΣC | 1..1 | string | Path of the element in the hierarchy of elements |
representation | Σ | 0..* | code | xmlAttr | xmlText | typeAttr | cdaText | xhtml Binding: PropertyRepresentation (Required) |
sliceName | ΣC | 0..1 | string | Name for this particular element (in a set of slices) |
sliceIsConstraining | ΣCTU | 0..1 | boolean | If this slice definition constrains an inherited slice definition (or not) |
label | ΣT | 0..1 | string | Name for element to display with or prompt for element |
code | Σ | 0..* | Coding | Corresponding codes in terminologies Binding: ElementDefinitionCode (Example) |
slicing | ΣC | 0..1 | Element | This element is sliced - slices follow |
discriminator | Σ | 0..* | Element | Element values that are used to distinguish the slices |
type | Σ | 1..1 | code | value | exists | type | profile | position Binding: DiscriminatorType (Required) |
path | Σ | 1..1 | string | Path to element value |
description | ΣT | 0..1 | string | Text description of how slicing works (or not) |
ordered | ΣC | 0..1 | boolean | If elements must be in same order as slices |
rules | ΣC | 1..1 | code | closed | open | openAtEnd Binding: SlicingRules (Required) |
short | ΣT | 0..1 | string | Concise definition for space-constrained presentation |
definition | ΣT | 0..1 | markdown | Full formal definition as narrative text |
comment | ΣT | 0..1 | markdown | Comments about the use of this element |
requirements | ΣT | 0..1 | markdown | Why this resource has been created |
alias | ΣT | 0..* | string | Other names |
min | ΣC | 0..1 | unsignedInt | Minimum Cardinality |
max | ΣC | 0..1 | string | Maximum Cardinality (a number or *) + Rule: Max SHALL be a number or "*" |
base | Σ | 0..1 | Element | Base definition information for tools |
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 |
contentReference | ΣC | 0..1 | uri | Reference to definition of content for the element |
type | ΣC | 0..* | Element | Data type and Profile for this element + Rule: Aggregation may only be specified if one of the allowed types for the element is a reference + Rule: targetProfile is only allowed if the type is Reference or canonical |
code | ΣC | 1..1 | uri | Data type or Resource (reference to definition) Binding: Element Definition Types (Extensible) |
profile | Σ | 0..* | canonical(StructureDefinition | ImplementationGuide) | Profiles (StructureDefinition or IG) - one must apply |
targetProfile | ΣC | 0..* | canonical(StructureDefinition | ImplementationGuide) | Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply |
aggregation | ΣC | 0..* | code | contained | referenced | bundled - how aggregated Binding: AggregationMode (Required) |
versioning | Σ | 0..1 | code | either | independent | specific Binding: ReferenceVersionRules (Required) |
defaultValue[x] | ΣC | 0..1 | * | Specified value if missing from instance |
meaningWhenMissing | ΣTC | 0..1 | markdown | Implicit meaning when this element is missing |
orderMeaning | ΣC | 0..1 | string | What the order of the elements means |
fixed[x] | ΣC | 0..1 | * | Value must be exactly this |
pattern[x] | ΣC | 0..1 | * | Value must have at least these property values |
example | ΣC | 0..* | Element | Example value (as defined for type) |
label | ΣT | 1..1 | string | Describes the purpose of this example |
value[x] | Σ | 1..1 | * | Value of Example (one of allowed types) |
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 + Warning: Constraints should have an expression or else validators will not be able to enforce them + Rule: Errors cannot be suppressed |
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) |
suppress | ΣCTU | 0..1 | boolean | Suppress warning or hint in profile |
human | ΣT | 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 | ΣCTU | 0..1 | boolean | For primitives, that a value must be present - not replaced by an extension |
valueAlternatives | ΣCTU | 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) |
isModifier | ΣC | 0..1 | boolean | If this modifies the meaning of other elements |
isModifierReason | ΣC | 0..1 | string | Reason that this element is marked as a modifier |
isSummary | Σ | 0..1 | boolean | Include when _summary = true? |
binding | ΣC | 0..1 | Element | ValueSet details if this is coded + Rule: ValueSet SHALL start with http:// or https:// or urn: or # + Rule: binding SHALL have either description or valueSet |
strength | Σ | 1..1 | code | required | extensible | preferred | example Binding: BindingStrength (Required) |
description | ΣTC | 0..1 | markdown | Intended use of codes in the bound value set |
valueSet | ΣC | 0..1 | canonical(ValueSet) | Source of value set |
additional | ΣTU | 0..* | Element | Additional Bindings - more rules about the binding |
purpose | Σ | 1..1 | code | maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component Binding: Additional Binding Purpose ValueSet (Required) |
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 |
identity | ΣC | 1..1 | id | Reference to mapping declaration |
language | Σ | 0..1 | code | Computable language of mapping Binding: Mime Types (Required) |
map | Σ | 1..1 | string | Details of the mapping |
comment | Σ | 0..1 | markdown | Comments about the mapping or its use |
Documentation for this format |
XML Template
<ElementDefinition xmlns="http://hl7.org/fhir"> <!-- from Element: extension --> <path value="[string]"/><!-- I 1..1 Path of the element in the hierarchy of elements --> <representation value="[code]"/><!-- 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]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Corresponding codes in terminologies --></code> <slicing> <!-- I 0..1 This element is sliced - slices follow --> <discriminator> <!-- 0..* Element values that are used to distinguish the slices --> <type value="[code]"/><!-- 1..1 value | exists | type | profile | position --> <path value="[string]"/><!-- 1..1 Path to element value --> </discriminator> <description value="[string]"/><!-- 0..1 Text description of how slicing works (or not) --> <ordered value="[boolean]"/><!-- I 0..1 If elements must be in same order as slices --> <rules value="[code]"/><!-- I 1..1 closed | open | openAtEnd --> </slicing> <short value="[string]"/><!-- 0..1 Concise definition for space-constrained presentation --> <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text --> <comment value="[markdown]"/><!-- 0..1 Comments about the use of this element --> <requirements value="[markdown]"/><!-- 0..1 Why this resource has been created --> <alias value="[string]"/><!-- 0..* Other names --> <min value="[unsignedInt]"/><!-- I 0..1 Minimum Cardinality --> <max value="[string]"/><!-- I 0..1 Maximum Cardinality (a number or *) --> <base> <!-- 0..1 Base definition information for tools --> <path value="[string]"/><!-- 1..1 Path that identifies the base element --> <min value="[unsignedInt]"/><!-- 1..1 Min cardinality of the base element --> <max value="[string]"/><!-- 1..1 Max cardinality of the base element --> </base> <contentReference value="[uri]"/><!-- I 0..1 Reference to definition of content for the element --> <type> <!-- I 0..* Data type and Profile for this element --> <code value="[uri]"/><!-- I 1..1 Data type or Resource (reference to definition) --> <profile><!-- 0..* canonical(ImplementationGuide|StructureDefinition) Profiles (StructureDefinition or IG) - one must apply --></profile> <targetProfile><!-- I 0..* canonical(ImplementationGuide|StructureDefinition) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply --></targetProfile> <aggregation value="[code]"/><!-- I 0..* contained | referenced | bundled - how aggregated --> <versioning value="[code]"/><!-- 0..1 either | independent | specific --> </type> <defaultValue[x]><!-- I 0..1 * 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..1 * Value must be exactly this --></fixed[x]> <pattern[x]><!-- I 0..1 * Value must have at least these property values --></pattern[x]> <example> <!-- I 0..* Example value (as defined for type) --> <label value="[string]"/><!-- 1..1 Describes the purpose of this example --> <value[x]><!-- 1..1 * Value of Example (one of allowed types) --></value[x]> </example> <minValue[x]><!-- 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]"/><!-- 0..* Reference to invariant about presence --> <