This page is part of the FHIR Specification (v3.0.2: STU 3). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2
FHIR Infrastructure Work Group | Maturity Level: 5 | Ballot Status: Trial Use |
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. The DataElement resource is a packaging wrapper around the ElementDefinition type. All the data elements defined in this specification are published as a collection of data elements (XML or JSON).
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ElementDefinition | ΣI | Element | Definition of an element in a resource or extension + Min <= Max + if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding + Pattern may only be specified if there is one type + Fixed value may only be specified if there is one type + Binding can only be present for coded elements, string, and uri + Pattern and value are mutually exclusive + Constraints must be unique by key + Types must be unique by the combination of code and profile + sliceName must be composed of proper tokens separated by "/" + default value and meaningWhenMissing are mutually exclusive Elements defined in Ancestors: id, extension | |
path | Σ | 1..1 | string | Path of the element in the hierarchy of elements |
representation | Σ | 0..* | code | xmlAttr | xmlText | typeAttr | cdaText | xhtml PropertyRepresentation (Required) |
sliceName | Σ | 0..1 | string | Name for this particular element (in a set of slices) |
label | Σ | 0..1 | string | Name for element to display with or prompt for element |
code | Σ | 0..* | Coding | Corresponding codes in terminologies LOINC Codes (Example) |
slicing | ΣI | 0..1 | Element | This element is sliced - slices follow + If there are no discriminators, there must be a definition |
discriminator | Σ | 0..* | Element | Element values that are used to distinguish the slices |
type | Σ | 1..1 | code | value | exists | pattern | type | profile DiscriminatorType (Required) |
path | Σ | 1..1 | string | Path to element value |
description | ΣI | 0..1 | string | Text description of how slicing works (or not) |
ordered | Σ | 0..1 | boolean | If elements must be in same order as slices |
rules | Σ | 1..1 | code | closed | open | openAtEnd SlicingRules (Required) |
short | Σ | 0..1 | string | Concise definition for space-constrained presentation |
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 | ΣI | 0..1 | unsignedInt | Minimum Cardinality |
max | ΣI | 0..1 | string | Maximum Cardinality (a number or *) + 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 | ΣI | 0..1 | uri | Reference to definition of content for the element |
type | ΣI | 0..* | Element | Data type and Profile for this element + Aggregation may only be specified if one of the allowed types for the element is a resource |
code | Σ | 1..1 | uri | Data type or Resource (reference to definition) FHIRDefinedType (Extensible) |
profile | Σ | 0..1 | uri | Profile (StructureDefinition) to apply (or IG) |
targetProfile | Σ | 0..1 | uri | Profile (StructureDefinition) to apply to reference target (or IG) |
aggregation | ΣI | 0..* | code | contained | referenced | bundled - how aggregated AggregationMode (Required) |
versioning | Σ | 0..1 | code | either | independent | specific ReferenceVersionRules (Required) |
defaultValue[x] | ΣI | 0..1 | * | Specified value if missing from instance |
meaningWhenMissing | ΣI | 0..1 | markdown | Implicit meaning when this element is missing |
orderMeaning | Σ | 0..1 | string | What the order of the elements means |
fixed[x] | ΣI | 0..1 | * | Value must be exactly this |
pattern[x] | ΣI | 0..1 | * | Value must have at least these property values |
example | Σ | 0..* | Element | Example value (as defined for type) |
label | Σ | 1..1 | string | Describes the purpose of this example |
value[x] | Σ | 1..1 | * | Value of Example (one of allowed types) |
minValue[x] | Σ | 0..1 | Minimum Allowed Value (for some types) | |
minValueDate | date | |||
minValueDateTime | dateTime | |||
minValueInstant | instant | |||
minValueTime | time | |||
minValueDecimal | decimal | |||
minValueInteger | integer | |||
minValuePositiveInt | positiveInt | |||
minValueUnsignedInt | unsignedInt | |||
minValueQuantity | Quantity | |||
maxValue[x] | Σ | 0..1 | Maximum Allowed Value (for some types) | |
maxValueDate | date | |||
maxValueDateTime | dateTime | |||
maxValueInstant | instant | |||
maxValueTime | time | |||
maxValueDecimal | decimal | |||
maxValueInteger | integer | |||
maxValuePositiveInt | positiveInt | |||
maxValueUnsignedInt | unsignedInt | |||
maxValueQuantity | Quantity | |||
maxLength | Σ | 0..1 | integer | Max length for strings |
condition | Σ | 0..* | id | Reference to invariant about presence |
constraint | Σ | 0..* | Element | Condition that must evaluate to true |
key | ΣI | 1..1 | id | Target of 'condition' reference above |
requirements | Σ | 0..1 | string | Why this constraint is necessary or appropriate |
severity | Σ | 1..1 | code | error | warning ConstraintSeverity (Required) |
human | Σ | 1..1 | string | Human description of constraint |
expression | Σ | 1..1 | string | FHIRPath expression of constraint |
xpath | Σ | 0..1 | string | XPath expression of constraint |
source | Σ | 0..1 | uri | Reference to original source of constraint |
mustSupport | Σ | 0..1 | boolean | If the element must supported |
isModifier | Σ | 0..1 | boolean | If this modifies the meaning of other elements |
isSummary | Σ | 0..1 | boolean | Include when _summary = true? |
binding | ΣI | 0..1 | Element | ValueSet details if this is coded + ValueSet as a URI SHALL start with http:// or https:// or urn: |
strength | Σ | 1..1 | code | required | extensible | preferred | example BindingStrength (Required) |
description | ΣI | 0..1 | string | Human explanation of the value set |
valueSet[x] | ΣI | 0..1 | Source of value set | |
valueSetUri | uri | |||
valueSetReference | Reference(ValueSet) | |||
mapping | Σ | 0..* | Element | Map element to another set of definitions |
identity | Σ | 1..1 | id | Reference to mapping declaration |
language | Σ | 0..1 | code | Computable language of mapping MimeType (Required) |
map | Σ | 1..1 | string | Details of the mapping |
comment | Σ | 0..1 | string | Comments about the mapping or its use |
Documentation for this format |
UML Diagram (Legend)
XML Template
<[name] xmlns="http://hl7.org/fhir"> <!-- from Element: extension --> <path value="[string]"/><!-- 1..1 Path of the element in the hierarchy of elements --> <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml --> <sliceName value="[string]"/><!-- 0..1 Name for this particular element (in a set of slices) --> <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Corresponding codes in terminologies --></code> <slicing> <!-- 0..1 This element is sliced - slices follow --> <discriminator> <!-- 0..* Element values that are used to distinguish the slices --> <type value="[code]"/><!-- 1..1 value | exists | pattern | type | profile --> <path value="[string]"/><!-- 1..1 Path to element value --> </discriminator> <description value="[string]"/><!-- 0..1 Text description of how slicing works (or not) --> <ordered value="[boolean]"/><!-- 0..1 If elements must be in same order as slices --> <rules value="[code]"/><!-- 1..1 closed | open | openAtEnd --> </slicing> <short value="[string]"/><!-- 0..1 Concise definition for space-constrained presentation --> <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text --> <comment value="[markdown]"/><!-- 0..1 Comments about the use of this element --> <requirements value="[markdown]"/><!-- 0..1 Why this resource has been created --> <alias value="[string]"/><!-- 0..* Other names --> <min value="[unsignedInt]"/><!-- 0..1 Minimum Cardinality --> <max value="[string]"/><!-- 0..1 Maximum Cardinality (a number or *) --> <base> <!-- 0..1 Base definition information for tools --> <path value="[string]"/><!-- 1..1 Path that identifies the base element --> <min value="[unsignedInt]"/><!-- 1..1 Min cardinality of the base element --> <max value="[string]"/><!-- 1..1 Max cardinality of the base element --> </base> <contentReference value="[uri]"/><!-- 0..1 Reference to definition of content for the element --> <type> <!-- 0..* Data type and Profile for this element --> <code value="[uri]"/><!-- 1..1 Data type or Resource (reference to definition) --> <profile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply (or IG) --> <targetProfile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply to reference target (or IG) --> <aggregation value="[code]"/><!-- 0..* contained | referenced | bundled - how aggregated --> <versioning value="[code]"/><!-- 0..1 either | independent | specific --> </type> <defaultValue[x]><!-- 0..1 * Specified value if missing from instance --></defaultValue[x]> <meaningWhenMissing value="[markdown]"/><!-- 0..1 Implicit meaning when this element is missing --> <orderMeaning value="[string]"/><!-- 0..1 What the order of the elements means --> <fixed[x]><!-- 0..1 * Value must be exactly this --></fixed[x]> <pattern[x]><!-- 0..1 * Value must have at least these property values --></pattern[x]> <example> <!-- 0..* Example value (as defined for type) --> <label value="[string]"/><!-- 1..1 Describes the purpose of this example --> <value[x]><!-- 1..1 * Value of Example (one of allowed types) --></value[x]> </example> <minValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Minimum Allowed Value (for some types) --></minValue[x]> <maxValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Maximum Allowed Value (for some types) --></maxValue[x]> <maxLength value="[integer]"/><!-- 0..1 Max length for strings --> <condition value="[id]"/><!-- 0..* Reference to invariant about presence --> <constraint> <!-- 0..* Condition that must evaluate to true --> <key value="[id]"/><!-- 1..1 Target of 'condition' reference above --> <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate --> <severity value="[code]"/><!-- 1..1 error | warning --> <human value="[string]"/><!-- 1..1 Human description of constraint --> <expression value="[string]"/><!-- 1..1 FHIRPath expression of constraint --> <xpath value="[string]"/><!-- 0..1 XPath expression of constraint --> <source value="[uri]"/><!-- 0..1 Reference to original source of constraint --> </constraint> <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported --> <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements --> <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? --> <binding> <!-- 0..1 ValueSet details if this is coded --> <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example --> <description value="[string]"/><!-- 0..1 Human explanation of the value set --> <valueSet[x]><!-- 0..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]> </binding> <mapping> <!-- 0..* Map element to another set of definitions --> <identity value="[id]"/><!-- 1..1 Reference to mapping declaration --> <language value="[code]"/><!-- 0..1 Computable language of mapping --> <map value="[string]"/><!-- 1..1 Details of the mapping --> <comment value="[string]"/><!-- 0..1 Comments about the mapping or its use --> </mapping> </[name]>
JSON Template
{ // from Element: extension "path" : "<string>", // R! Path of the element in the hierarchy of elements "representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml "sliceName" : "<string>", // Name for this particular element (in a set of slices) "label" : "<string>", // Name for element to display with or prompt for element "code" : [{ Coding }], // Corresponding codes in terminologies "slicing" : { // This element is sliced - slices follow "discriminator" : [{ // Element values that are used to distinguish the slices "type" : "<code>", // R! value | exists | pattern | type | profile "path" : "<string>" // R! Path to element value }], "description" : "<string>", // C? Text description of how slicing works (or not) "ordered" : <boolean>, // If elements must be in same order as slices "rules" : "<code>" // R! closed | open | openAtEnd }, "short" : "<string>", // Concise definition for space-constrained presentation "definition" : "<markdown>", // Full formal definition as narrative text "comment" : "<markdown>", // Comments about the use of this element "requirements" : "<markdown>", // Why this resource has been created "alias" : ["<string>"], // Other names "min" : "<unsignedInt>", // C? Minimum Cardinality "max" : "<string>", // C? Maximum Cardinality (a number or *) "base" : { // Base definition information for tools "path" : "<string>", // R! Path that identifies the base element "min" : "<unsignedInt>", // R! Min cardinality of the base element "max" : "<string>" // R! Max cardinality of the base element }, "contentReference" : "<uri>", // C? Reference to definition of content for the element "type" : [{ // C? Data type and Profile for this element "code" : "<uri>", // R! Data type or Resource (reference to definition) "profile" : "<uri>", // Profile (StructureDefinition) to apply (or IG) "targetProfile" : "<uri>", // Profile (StructureDefinition) to apply to reference target (or IG) "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated "versioning" : "<code>" // either | independent | specific }], // defaultValue[x]: Specified value if missing from instance. One of these 23: "defaultValueInteger" : <integer>, "defaultValueDecimal" : <decimal>, "defaultValueDateTime" : "<dateTime>", "defaultValueDate" : "<date>", "defaultValueInstant" : "<instant>", "defaultValueString" : "<string>", "defaultValueUri" : "<uri>", "defaultValueBoolean" : <boolean>, "defaultValueCode" : "<code>", "defaultValueBase64Binary" : "<base64Binary>", "defaultValueCoding" : { Coding }, "defaultValueCodeableConcept" : { CodeableConcept }, "defaultValueAttachment" : { Attachment }, "defaultValueIdentifier" : { Identifier }, "defaultValueQuantity" : { Quantity }, "defaultValueRange" : { Range }, "defaultValuePeriod" : { Period }, "defaultValueRatio" : { Ratio }, "defaultValueHumanName" : { HumanName }, "defaultValueAddress" : { Address }, "defaultValueContactPoint" : { ContactPoint }, "defaultValueSchedule" : { Schedule }, "defaultValueReference" : { Reference }, "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing "orderMeaning" : "<string>", // What the order of the elements means // fixed[x]: Value must be exactly this. One of these 23: "fixedInteger" : <integer>, "fixedDecimal" : <decimal>, "fixedDateTime" : "<dateTime>", "fixedDate" : "<date>", "fixedInstant" : "<instant>", "fixedString" : "<string>", "fixedUri" : "<uri>", "fixedBoolean" : <boolean>, "fixedCode" : "<code>", "fixedBase64Binary" : "<base64Binary>", "fixedCoding" : { Coding }, "fixedCodeableConcept" : { CodeableConcept }, "fixedAttachment" : { Attachment }, "fixedIdentifier" : { Identifier }, "fixedQuantity" : { Quantity }, "fixedRange" : { Range }, "fixedPeriod" : { Period }, "fixedRatio" : { Ratio }, "fixedHumanName" : { HumanName }, "fixedAddress" : { Address }, "fixedContactPoint" : { ContactPoint }, "fixedSchedule" : { Schedule }, "fixedReference" : { Reference }, // pattern[x]: Value must have at least these property values. One of these 23: "patternInteger" : <integer>, "patternDecimal" : <decimal>, "patternDateTime" : "<dateTime>", "patternDate" : "<date>", "patternInstant" : "<instant>", "patternString" : "<string>", "patternUri" : "<uri>", "patternBoolean" : <boolean>, "patternCode" : "<code>", "patternBase64Binary" : "<base64Binary>", "patternCoding" : { Coding }, "patternCodeableConcept" : { CodeableConcept }, "patternAttachment" : { Attachment }, "patternIdentifier" : { Identifier }, "patternQuantity" : { Quantity }, "patternRange" : { Range }, "patternPeriod" : { Period }, "patternRatio" : { Ratio }, "patternHumanName" : { HumanName }, "patternAddress" : { Address }, "patternContactPoint" : { ContactPoint }, "patternSchedule" : { Schedule }, "patternReference" : { Reference }, "example" : [{ // Example value (as defined for type) "label" : "<string>", // R! Describes the purpose of this example // value[x]: Value of Example (one of allowed types). One of these 23: "valueInteger" : <integer> "valueDecimal" : <decimal> "valueDateTime" : "<dateTime>" "valueDate" : "<date>" "valueInstant" : "<instant>" "valueString" : "<string>" "valueUri" : "<uri>" "valueBoolean" : <boolean> "valueCode" : "<code>" "valueBase64Binary" : "<base64Binary>" "valueCoding" : { Coding } "valueCodeableConcept" : { CodeableConcept } "valueAttachment" : { Attachment } "valueIdentifier" : { Identifier } "valueQuantity" : { Quantity } "valueRange" : { Range } "valuePeriod" : { Period } "valueRatio" : { Ratio } "valueHumanName" : { HumanName } "valueAddress" : { Address } "valueContactPoint" : { ContactPoint } "valueSchedule" : { Schedule } "valueReference" : { Reference } }], // minValue[x]: Minimum Allowed Value (for some types). One of these 9: "minValueDate" : "<date>", "minValueDateTime" : "<dateTime>", "minValueInstant" : "<instant>", "minValueTime" : "<time>", "minValueDecimal" : <decimal>, "minValueInteger" : <integer>, "minValuePositiveInt" : "<positiveInt>", "minValueUnsignedInt" : "<unsignedInt>", "minValueQuantity" : { Quantity }, // maxValue[x]: Maximum Allowed Value (for some types). One of these 9: "maxValueDate" : "<date>", "maxValueDateTime" : "<dateTime>", "maxValueInstant" : "<instant>", "maxValueTime" : "<time>", "maxValueDecimal" : <decimal>, "maxValueInteger" : <integer>, "maxValuePositiveInt" : "<positiveInt>", "maxValueUnsignedInt" : "<unsignedInt>", "maxValueQuantity" : { Quantity }, "maxLength" : <integer>, // Max length for strings "condition" : ["<id>"], // Reference to invariant about presence "constraint" : [{ // Condition that must evaluate to true "key" : "<id>", // C? R! Target of 'condition' reference above "requirements" : "<string>", // Why this constraint is necessary or appropriate "severity" : "<code>", // R! error | warning "human" : "<string>", // R! Human description of constraint "expression" : "<string>", // R! FHIRPath expression of constraint "xpath" : "<string>", // XPath expression of constraint "source" : "<uri>" // Reference to original source of constraint }], "mustSupport" : <boolean>, // If the element must supported "isModifier" : <boolean>, // If this modifies the meaning of other elements "isSummary" : <boolean>, // Include when _summary = true? "binding" : { // C? ValueSet details if this is coded "strength" : "<code>", // R! required | extensible | preferred | example "description" : "<string>", // Human explanation of the value set // valueSet[x]: Source of value set. One of these 2: "valueSetUri" : "<uri>" "valueSetReference" : { Reference(ValueSet) } }, "mapping" : [{ // Map element to another set of definitions "identity" : "<id>", // R! Reference to mapping declaration "language" : "<code>", // Computable language of mapping "map" : "<string>", // R! Details of the mapping "comment" : "<string>" // Comments about the mapping or its use }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ # from Element: Element.extension fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the hierarchy of elements fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml fhir:ElementDefinition.sliceName [ string ]; # 0..1 Name for this particular element (in a set of slices) fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Corresponding codes in terminologies fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow fhir:ElementDefinition.slicing.discriminator [ # 0..* Element values that are used to distinguish the slices fhir:ElementDefinition.slicing.discriminator.type [ code ]; # 1..1 value | exists | pattern | type | profile fhir:ElementDefinition.slicing.discriminator.path [ string ]; # 1..1 Path to element value ], ...; fhir:ElementDefinition.slicing.description [ string ]; # 0..1 Text description of how slicing works (or not) fhir:ElementDefinition.slicing.ordered [ boolean ]; # 0..1 If elements must be in same order as slices fhir:ElementDefinition.slicing.rules [ code ]; # 1..1 closed | open | openAtEnd ]; fhir:ElementDefinition.short [ string ]; # 0..1 Concise definition for space-constrained presentation fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text fhir:ElementDefinition.comment [ markdown ]; # 0..1 Comments about the use of this element fhir:ElementDefinition.requirements [ markdown ]; # 0..1 Why this resource has been created fhir:ElementDefinition.alias [ string ], ... ; # 0..* Other names fhir:ElementDefinition.min [ unsignedInt ]; # 0..1 Minimum Cardinality fhir:ElementDefinition.max [ string ]; # 0..1 Maximum Cardinality (a number or *) fhir:ElementDefinition.base [ # 0..1 Base definition information for tools fhir:ElementDefinition.base.path [ string ]; # 1..1 Path that identifies the base element fhir:ElementDefinition.base.min [ unsignedInt ]; # 1..1 Min cardinality of the base element fhir:ElementDefinition.base.max [ string ]; # 1..1 Max cardinality of the base element ]; fhir:ElementDefinition.contentReference [ uri ]; # 0..1 Reference to definition of content for the element fhir:ElementDefinition.type [ # 0..* Data type and Profile for this element fhir:ElementDefinition.type.code [ uri ]; # 1..1 Data type or Resource (reference to definition) fhir:ElementDefinition.type.profile [ uri ]; # 0..1 Profile (StructureDefinition) to apply (or IG) fhir:ElementDefinition.type.targetProfile [ uri ]; # 0..1 Profile (StructureDefinition) to apply to reference target (or IG) fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific ], ...; # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 38 fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ] fhir:ElementDefinition.defaultValueBoolean [ boolean ] fhir:ElementDefinition.defaultValueCode [ code ] fhir:ElementDefinition.defaultValueDate [ date ] fhir:ElementDefinition.defaultValueDateTime [ dateTime ] fhir:ElementDefinition.defaultValueDecimal [ decimal ] fhir:ElementDefinition.defaultValueId [ id ] fhir:ElementDefinition.defaultValueInstant [ instant ] fhir:ElementDefinition.defaultValueInteger [ integer ] fhir:ElementDefinition.defaultValueMarkdown [ markdown ] fhir:ElementDefinition.defaultValueOid [ oid ] fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ] fhir:ElementDefinition.defaultValueString [ string ] fhir:ElementDefinition.defaultValueTime [ time ] fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.defaultValueUri [ uri ] fhir:ElementDefinition.defaultValueAddress [ Address ] fhir:ElementDefinition.defaultValueAge [ Age ] fhir:ElementDefinition.defaultValueAnnotation [ Annotation ] fhir:ElementDefinition.defaultValueAttachment [ Attachment ] fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.defaultValueCoding [ Coding ] fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ] fhir:ElementDefinition.defaultValueCount [ Count ] fhir:ElementDefinition.defaultValueDistance [ Distance ] fhir:ElementDefinition.defaultValueDuration [ Duration ] fhir:ElementDefinition.defaultValueHumanName [ HumanName ] fhir:ElementDefinition.defaultValueIdentifier [ Identifier ] fhir:ElementDefinition.defaultValueMoney [ Money ] fhir:ElementDefinition.defaultValuePeriod [ Period ] fhir:ElementDefinition.defaultValueQuantity [ Quantity ] fhir:ElementDefinition.defaultValueRange [ Range ] fhir:ElementDefinition.defaultValueRatio [ Ratio ] fhir:ElementDefinition.defaultValueReference [ Reference ] fhir:ElementDefinition.defaultValueSampledData [ SampledData ] fhir:ElementDefinition.defaultValueSignature [ Signature ] fhir:ElementDefinition.defaultValueTiming [ Timing ] fhir:ElementDefinition.defaultValueMeta [ Meta ] fhir:ElementDefinition.meaningWhenMissing [ markdown ]; # 0..1 Implicit meaning when this element is missing fhir:ElementDefinition.orderMeaning [ string ]; # 0..1 What the order of the elements means # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 38 fhir:ElementDefinition.fixedBase64Binary [ base64Binary ] fhir:ElementDefinition.fixedBoolean [ boolean ] fhir:ElementDefinition.fixedCode [ code ] fhir:ElementDefinition.fixedDate [ date ] fhir:ElementDefinition.fixedDateTime [ dateTime ] fhir:ElementDefinition.fixedDecimal [ decimal ] fhir:ElementDefinition.fixedId [ id ] fhir:ElementDefinition.fixedInstant [ instant ] fhir:ElementDefinition.fixedInteger [ integer ] fhir:ElementDefinition.fixedMarkdown [ markdown ] fhir:ElementDefinition.fixedOid [ oid ] fhir:ElementDefinition.fixedPositiveInt [ positiveInt ] fhir:ElementDefinition.fixedString [ string ] fhir:ElementDefinition.fixedTime [ time ] fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ] fhir:ElementDefinition.fixedUri [ uri ] fhir:ElementDefinition.fixedAddress [ Address ] fhir:ElementDefinition.fixedAge [ Age ] fhir:ElementDefinition.fixedAnnotation [ Annotation ] fhir:ElementDefinition.fixedAttachment [ Attachment ] fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.fixedCoding [ Coding ] fhir:ElementDefinition.fixedContactPoint [ ContactPoint ] fhir:ElementDefinition.fixedCount [ Count ] fhir:ElementDefinition.fixedDistance [ Distance ] fhir:ElementDefinition.fixedDuration [ Duration ] fhir:ElementDefinition.fixedHumanName [ HumanName ] fhir:ElementDefinition.fixedIdentifier [ Identifier ] fhir:ElementDefinition.fixedMoney [ Money ] fhir:ElementDefinition.fixedPeriod [ Period ] fhir:ElementDefinition.fixedQuantity [ Quantity ] fhir:ElementDefinition.fixedRange [ Range ] fhir:ElementDefinition.fixedRatio [ Ratio ] fhir:ElementDefinition.fixedReference [ Reference ] fhir:ElementDefinition.fixedSampledData [ SampledData ] fhir:ElementDefinition.fixedSignature [ Signature ] fhir:ElementDefinition.fixedTiming [ Timing ] fhir:ElementDefinition.fixedMeta [ Meta ] # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 38 fhir:ElementDefinition.patternBase64Binary [ base64Binary ] fhir:ElementDefinition.patternBoolean [ boolean ] fhir:ElementDefinition.patternCode [ code ] fhir:ElementDefinition.patternDate [ date ] fhir:ElementDefinition.patternDateTime [ dateTime ] fhir:ElementDefinition.patternDecimal [ decimal ] fhir:ElementDefinition.patternId [ id ] fhir:ElementDefinition.patternInstant [ instant ] fhir:ElementDefinition.patternInteger [ integer ] fhir:ElementDefinition.patternMarkdown [ markdown ] fhir:ElementDefinition.patternOid [ oid ] fhir:ElementDefinition.patternPositiveInt [ positiveInt ] fhir:ElementDefinition.patternString [ string ] fhir:ElementDefinition.patternTime [ time ] fhir:ElementDefinition.patternUnsignedInt [ unsignedInt ] fhir:ElementDefinition.patternUri [ uri ] fhir:ElementDefinition.patternAddress [ Address ] fhir:ElementDefinition.patternAge [ Age ] fhir:ElementDefinition.patternAnnotation [ Annotation ] fhir:ElementDefinition.patternAttachment [ Attachment ] fhir:ElementDefinition.patternCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.patternCoding [ Coding ] fhir:ElementDefinition.patternContactPoint [ ContactPoint ] fhir:ElementDefinition.patternCount [ Count ] fhir:ElementDefinition.patternDistance [ Distance ] fhir:ElementDefinition.patternDuration [ Duration ] fhir:ElementDefinition.patternHumanName [ HumanName ] fhir:ElementDefinition.patternIdentifier [ Identifier ] fhir:ElementDefinition.patternMoney [ Money ] fhir:ElementDefinition.patternPeriod [ Period ] fhir:ElementDefinition.patternQuantity [ Quantity ] fhir:ElementDefinition.patternRange [ Range ] fhir:ElementDefinition.patternRatio [ Ratio ] fhir:ElementDefinition.patternReference [ Reference ] fhir:ElementDefinition.patternSampledData [ SampledData ] fhir:ElementDefinition.patternSignature [ Signature ] fhir:ElementDefinition.patternTiming [ Timing ] fhir:ElementDefinition.patternMeta [ Meta ] fhir:ElementDefinition.example [ # 0..* Example value (as defined for type) fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example # ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 38 fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ] fhir:ElementDefinition.example.valueBoolean [ boolean ] fhir:ElementDefinition.example.valueCode [ code ] fhir:ElementDefinition.example.valueDate [ date ] fhir:ElementDefinition.example.valueDateTime [ dateTime ] fhir:ElementDefinition.example.valueDecimal [ decimal ] fhir:ElementDefinition.example.valueId [ id ] fhir:ElementDefinition.example.valueInstant [ instant ] fhir:ElementDefinition.example.valueInteger [ integer ] fhir:ElementDefinition.example.valueMarkdown [ markdown ] fhir:ElementDefinition.example.valueOid [ oid ] fhir:ElementDefinition.example.valuePositiveInt [ positiveInt ] fhir:ElementDefinition.example.valueString [ string ] fhir:ElementDefinition.example.valueTime [ time ] fhir:ElementDefinition.example.valueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.example.valueUri [ uri ] fhir:ElementDefinition.example.valueAddress [ Address ] fhir:ElementDefinition.example.valueAge [ Age ] fhir:ElementDefinition.example.valueAnnotation [ Annotation ] fhir:ElementDefinition.example.valueAttachment [ Attachment ] fhir:ElementDefinition.example.valueCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.example.valueCoding [ Coding ] fhir:ElementDefinition.example.valueContactPoint [ ContactPoint ] fhir:ElementDefinition.example.valueCount [ Count ] fhir:ElementDefinition.example.valueDistance [ Distance ] fhir:ElementDefinition.example.valueDuration [ Duration ] fhir:ElementDefinition.example.valueHumanName [ HumanName ] fhir:ElementDefinition.example.valueIdentifier [ Identifier ] fhir:ElementDefinition.example.valueMoney [ Money ] fhir:ElementDefinition.example.valuePeriod [ Period ] fhir:ElementDefinition.example.valueQuantity [ Quantity ] fhir:ElementDefinition.example.valueRange [ Range ] fhir:ElementDefinition.example.valueRatio [ Ratio ] fhir:ElementDefinition.example.valueReference [ Reference ] fhir:ElementDefinition.example.valueSampledData [ SampledData ] fhir:ElementDefinition.example.valueSignature [ Signature ] fhir:ElementDefinition.example.valueTiming [ Timing ] fhir:ElementDefinition.example.valueMeta [ Meta ] ], ...; # ElementDefinition.minValue[x] : 0..1 Minimum Allowed Value (for some types). One of these 9 fhir:ElementDefinition.minValueDate [ date ] fhir:ElementDefinition.minValueDateTime [ dateTime ] fhir:ElementDefinition.minValueInstant [ instant ] fhir:ElementDefinition.minValueTime [ time ] fhir:ElementDefinition.minValueDecimal [ decimal ] fhir:ElementDefinition.minValueInteger [ integer ] fhir:ElementDefinition.minValuePositiveInt [ positiveInt ] fhir:ElementDefinition.minValueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.minValueQuantity [ Quantity ] # ElementDefinition.maxValue[x] : 0..1 Maximum Allowed Value (for some types). One of these 9 fhir:ElementDefinition.maxValueDate [ date ] fhir:ElementDefinition.maxValueDateTime [ dateTime ] fhir:ElementDefinition.maxValueInstant [ instant ] fhir:ElementDefinition.maxValueTime [ time ] fhir:ElementDefinition.maxValueDecimal [ decimal ] fhir:ElementDefinition.maxValueInteger [ integer ] fhir:ElementDefinition.maxValuePositiveInt [ positiveInt ] fhir:ElementDefinition.maxValueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.maxValueQuantity [ Quantity ] fhir:ElementDefinition.maxLength [ integer ]; # 0..1 Max length for strings fhir:ElementDefinition.condition [ id ], ... ; # 0..* Reference to invariant about presence fhir:ElementDefinition.constraint [ # 0..* Condition that must evaluate to true fhir:ElementDefinition.constraint.key [ id ]; # 1..1 Target of 'condition' reference above fhir:ElementDefinition.constraint.requirements [ string ]; # 0..1 Why this constraint is necessary or appropriate fhir:ElementDefinition.constraint.severity [ code ]; # 1..1 error | warning fhir:ElementDefinition.constraint.human [ string ]; # 1..1 Human description of constraint fhir:ElementDefinition.constraint.expression [ string ]; # 1..1 FHIRPath expression of constraint fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraint fhir:ElementDefinition.constraint.source [ uri ]; # 0..1 Reference to original source of constraint ], ...; fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must supported fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements fhir:ElementDefinition.isSummary [ boolean ]; # 0..1 Include when _summary = true? fhir:ElementDefinition.binding [ # 0..1 ValueSet details if this is coded fhir:ElementDefinition.binding.strength [ code ]; # 1..1 required | extensible | preferred | example fhir:ElementDefinition.binding.description [ string ]; # 0..1 Human explanation of the value set # ElementDefinition.binding.valueSet[x] : 0..1 Source of value set. One of these 2 fhir:ElementDefinition.binding.valueSetUri [ uri ] fhir:ElementDefinition.binding.valueSetReference [ Reference(ValueSet) ] ]; fhir:ElementDefinition.mapping [ # 0..* Map element to another set of definitions fhir:ElementDefinition.mapping.identity [ id ]; # 1..1 Reference to mapping declaration fhir:ElementDefinition.mapping.language [ code ]; # 0..1 Computable language of mapping fhir:ElementDefinition.mapping.map [ string ]; # 1..1 Details of the mapping fhir:ElementDefinition.mapping.comment [ string ]; # 0..1 Comments about the mapping or its use ], ...; ]
Changes since DSTU2
ElementDefinition | |
ElementDefinition.representation |
|
ElementDefinition.sliceName |
|
ElementDefinition.slicing.discriminator |
|
ElementDefinition.slicing.discriminator.type |
|
ElementDefinition.slicing.discriminator.path |
|
ElementDefinition.comment |
|
ElementDefinition.min |
|
ElementDefinition.base.min |
|
ElementDefinition.contentReference |
|
ElementDefinition.type.code |
|
ElementDefinition.type.profile |
|
ElementDefinition.type.targetProfile |
|
ElementDefinition.type.versioning |
|
ElementDefinition.defaultValue[x] |
|
ElementDefinition.orderMeaning |
|
ElementDefinition.fixed[x] |
|
ElementDefinition.pattern[x] |
|
ElementDefinition.example |
|
ElementDefinition.example.label |
|
ElementDefinition.example.value[x] |
|
ElementDefinition.minValue[x] |
|
ElementDefinition.maxValue[x] |
|
ElementDefinition.constraint.expression |
|
ElementDefinition.constraint.xpath |
|
ElementDefinition.constraint.source |
|
ElementDefinition.mapping.comment |
|
See the Full Difference for further information
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ElementDefinition | ΣI | Element | Definition of an element in a resource or extension + Min <= Max + if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding + Pattern may only be specified if there is one type + Fixed value may only be specified if there is one type + Binding can only be present for coded elements, string, and uri + Pattern and value are mutually exclusive + Constraints must be unique by key + Types must be unique by the combination of code and profile + sliceName must be composed of proper tokens separated by "/" + default value and meaningWhenMissing are mutually exclusive Elements defined in Ancestors: id, extension | |
path | Σ | 1..1 | string | Path of the element in the hierarchy of elements |
representation | Σ | 0..* | code | xmlAttr | xmlText | typeAttr | cdaText | xhtml PropertyRepresentation (Required) |
sliceName | Σ | 0..1 | string | Name for this particular element (in a set of slices) |
label | Σ | 0..1 | string | Name for element to display with or prompt for element |
code | Σ | 0..* | Coding | Corresponding codes in terminologies LOINC Codes (Example) |
slicing | ΣI | 0..1 | Element | This element is sliced - slices follow + If there are no discriminators, there must be a definition |
discriminator | Σ | 0..* | Element | Element values that are used to distinguish the slices |
type | Σ | 1..1 | code | value | exists | pattern | type | profile DiscriminatorType (Required) |
path | Σ | 1..1 | string | Path to element value |
description | ΣI | 0..1 | string | Text description of how slicing works (or not) |
ordered | Σ | 0..1 | boolean | If elements must be in same order as slices |
rules | Σ | 1..1 | code | closed | open | openAtEnd SlicingRules (Required) |
short | Σ | 0..1 | string | Concise definition for space-constrained presentation |
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 | ΣI | 0..1 | unsignedInt | Minimum Cardinality |
max | ΣI | 0..1 | string | Maximum Cardinality (a number or *) + 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 | ΣI | 0..1 | uri | Reference to definition of content for the element |
type | ΣI | 0..* | Element | Data type and Profile for this element + Aggregation may only be specified if one of the allowed types for the element is a resource |
code | Σ | 1..1 | uri | Data type or Resource (reference to definition) FHIRDefinedType (Extensible) |
profile | Σ | 0..1 | uri | Profile (StructureDefinition) to apply (or IG) |
targetProfile | Σ | 0..1 | uri | Profile (StructureDefinition) to apply to reference target (or IG) |
aggregation | ΣI | 0..* | code | contained | referenced | bundled - how aggregated AggregationMode (Required) |
versioning | Σ | 0..1 | code | either | independent | specific ReferenceVersionRules (Required) |
defaultValue[x] | ΣI | 0..1 | * | Specified value if missing from instance |
meaningWhenMissing | ΣI | 0..1 | markdown | Implicit meaning when this element is missing |
orderMeaning | Σ | 0..1 | string | What the order of the elements means |
fixed[x] | ΣI | 0..1 | * | Value must be exactly this |
pattern[x] | ΣI | 0..1 | * | Value must have at least these property values |
example | Σ | 0..* | Element | Example value (as defined for type) |
label | Σ | 1..1 | string | Describes the purpose of this example |
value[x] | Σ | 1..1 | * | Value of Example (one of allowed types) |
minValue[x] | Σ | 0..1 | Minimum Allowed Value (for some types) | |
minValueDate | date | |||
minValueDateTime | dateTime | |||
minValueInstant | instant | |||
minValueTime | time | |||
minValueDecimal | decimal | |||
minValueInteger | integer | |||
minValuePositiveInt | positiveInt | |||
minValueUnsignedInt | unsignedInt | |||
minValueQuantity | Quantity | |||
maxValue[x] | Σ | 0..1 | Maximum Allowed Value (for some types) | |
maxValueDate | date | |||
maxValueDateTime | dateTime | |||
maxValueInstant | instant | |||
maxValueTime | time | |||
maxValueDecimal | decimal | |||
maxValueInteger | integer | |||
maxValuePositiveInt | positiveInt | |||
maxValueUnsignedInt | unsignedInt | |||
maxValueQuantity | Quantity | |||
maxLength | Σ | 0..1 | integer | Max length for strings |
condition | Σ | 0..* | id | Reference to invariant about presence |
constraint | Σ | 0..* | Element | Condition that must evaluate to true |
key | ΣI | 1..1 | id | Target of 'condition' reference above |
requirements | Σ | 0..1 | string | Why this constraint is necessary or appropriate |
severity | Σ | 1..1 | code | error | warning ConstraintSeverity (Required) |
human | Σ | 1..1 | string | Human description of constraint |
expression | Σ | 1..1 | string | FHIRPath expression of constraint |
xpath | Σ | 0..1 | string | XPath expression of constraint |
source | Σ | 0..1 | uri | Reference to original source of constraint |
mustSupport | Σ | 0..1 | boolean | If the element must supported |
isModifier | Σ | 0..1 | boolean | If this modifies the meaning of other elements |
isSummary | Σ | 0..1 | boolean | Include when _summary = true? |
binding | ΣI | 0..1 | Element | ValueSet details if this is coded + ValueSet as a URI SHALL start with http:// or https:// or urn: |
strength | Σ | 1..1 | code | required | extensible | preferred | example BindingStrength (Required) |
description | ΣI | 0..1 | string | Human explanation of the value set |
valueSet[x] | ΣI | 0..1 | Source of value set | |
valueSetUri | uri | |||
valueSetReference | Reference(ValueSet) | |||
mapping | Σ | 0..* | Element | Map element to another set of definitions |
identity | Σ | 1..1 | id | Reference to mapping declaration |
language | Σ | 0..1 | code | Computable language of mapping MimeType (Required) |
map | Σ | 1..1 | string | Details of the mapping |
comment | Σ | 0..1 | string | Comments about the mapping or its use |
Documentation for this format |
XML Template
<[name] xmlns="http://hl7.org/fhir"> <!-- from Element: extension --> <path value="[string]"/><!-- 1..1 Path of the element in the hierarchy of elements --> <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml --> <sliceName value="[string]"/><!-- 0..1 Name for this particular element (in a set of slices) --> <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Corresponding codes in terminologies --></code> <slicing> <!-- 0..1 This element is sliced - slices follow --> <discriminator> <!-- 0..* Element values that are used to distinguish the slices --> <type value="[code]"/><!-- 1..1 value | exists | pattern | type | profile --> <path value="[string]"/><!-- 1..1 Path to element value --> </discriminator> <description value="[string]"/><!-- 0..1 Text description of how slicing works (or not) --> <ordered value="[boolean]"/><!-- 0..1 If elements must be in same order as slices --> <rules value="[code]"/><!-- 1..1 closed | open | openAtEnd --> </slicing> <short value="[string]"/><!-- 0..1 Concise definition for space-constrained presentation --> <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text --> <comment value="[markdown]"/><!-- 0..1 Comments about the use of this element --> <requirements value="[markdown]"/><!-- 0..1 Why this resource has been created --> <alias value="[string]"/><!-- 0..* Other names --> <min value="[unsignedInt]"/><!-- 0..1 Minimum Cardinality --> <max value="[string]"/><!-- 0..1 Maximum Cardinality (a number or *) --> <base> <!-- 0..1 Base definition information for tools --> <path value="[string]"/><!-- 1..1 Path that identifies the base element --> <min value="[unsignedInt]"/><!-- 1..1 Min cardinality of the base element --> <max value="[string]"/><!-- 1..1 Max cardinality of the base element --> </base> <contentReference value="[uri]"/><!-- 0..1 Reference to definition of content for the element --> <type> <!-- 0..* Data type and Profile for this element --> <code value="[uri]"/><!-- 1..1 Data type or Resource (reference to definition) --> <profile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply (or IG) --> <targetProfile value="[uri]"/><!-- 0..1 Profile (StructureDefinition) to apply to reference target (or IG) --> <aggregation value="[code]"/><!-- 0..* contained | referenced | bundled - how aggregated --> <versioning value="[code]"/><!-- 0..1 either | independent | specific --> </type> <defaultValue[x]><!-- 0..1 * Specified value if missing from instance --></defaultValue[x]> <meaningWhenMissing value="[markdown]"/><!-- 0..1 Implicit meaning when this element is missing --> <orderMeaning value="[string]"/><!-- 0..1 What the order of the elements means --> <fixed[x]><!-- 0..1 * Value must be exactly this --></fixed[x]> <pattern[x]><!-- 0..1 * Value must have at least these property values --></pattern[x]> <example> <!-- 0..* Example value (as defined for type) --> <label value="[string]"/><!-- 1..1 Describes the purpose of this example --> <value[x]><!-- 1..1 * Value of Example (one of allowed types) --></value[x]> </example> <minValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Minimum Allowed Value (for some types) --></minValue[x]> <maxValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Maximum Allowed Value (for some types) --></maxValue[x]> <maxLength value="[integer]"/><!-- 0..1 Max length for strings --> <condition value="[id]"/><!-- 0..* Reference to invariant about presence --> <constraint> <!-- 0..* Condition that must evaluate to true --> <key value="[id]"/><!-- 1..1 Target of 'condition' reference above --> <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate --> <severity value="[code]"/><!-- 1..1 error | warning --> <human value="[string]"/><!-- 1..1 Human description of constraint --> <expression value="[string]"/><!-- 1..1 FHIRPath expression of constraint --> <xpath value="[string]"/><!-- 0..1 XPath expression of constraint --> <source value="[uri]"/><!-- 0..1 Reference to original source of constraint --> </constraint> <mustSupport value="[boolean]"/><!-- 0..1 If the element must supported --> <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements --> <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? --> <binding> <!-- 0..1 ValueSet details if this is coded --> <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example --> <description value="[string]"/><!-- 0..1 Human explanation of the value set --> <valueSet[x]><!-- 0..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]> </binding> <mapping> <!-- 0..* Map element to another set of definitions --> <identity value="[id]"/><!-- 1..1 Reference to mapping declaration --> <language value="[code]"/><!-- 0..1 Computable language of mapping --> <map value="[string]"/><!-- 1..1 Details of the mapping --> <comment value="[string]"/><!-- 0..1 Comments about the mapping or its use --> </mapping> </[name]>
JSON Template
{ // from Element: extension "path" : "<string>", // R! Path of the element in the hierarchy of elements "representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml "sliceName" : "<string>", // Name for this particular element (in a set of slices) "label" : "<string>", // Name for element to display with or prompt for element "code" : [{ Coding }], // Corresponding codes in terminologies "slicing" : { // This element is sliced - slices follow "discriminator" : [{ // Element values that are used to distinguish the slices "type" : "<code>", // R! value | exists | pattern | type | profile "path" : "<string>" // R! Path to element value }], "description" : "<string>", // C? Text description of how slicing works (or not) "ordered" : <boolean>, // If elements must be in same order as slices "rules" : "<code>" // R! closed | open | openAtEnd }, "short" : "<string>", // Concise definition for space-constrained presentation "definition" : "<markdown>", // Full formal definition as narrative text "comment" : "<markdown>", // Comments about the use of this element "requirements" : "<markdown>", // Why this resource has been created "alias" : ["<string>"], // Other names "min" : "<unsignedInt>", // C? Minimum Cardinality "max" : "<string>", // C? Maximum Cardinality (a number or *) "base" : { // Base definition information for tools "path" : "<string>", // R! Path that identifies the base element "min" : "<unsignedInt>", // R! Min cardinality of the base element "max" : "<string>" // R! Max cardinality of the base element }, "contentReference" : "<uri>", // C? Reference to definition of content for the element "type" : [{ // C? Data type and Profile for this element "code" : "<uri>", // R! Data type or Resource (reference to definition) "profile" : "<uri>", // Profile (StructureDefinition) to apply (or IG) "targetProfile" : "<uri>", // Profile (StructureDefinition) to apply to reference target (or IG) "aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated "versioning" : "<code>" // either | independent | specific }], // defaultValue[x]: Specified value if missing from instance. One of these 23: "defaultValueInteger" : <integer>, "defaultValueDecimal" : <decimal>, "defaultValueDateTime" : "<dateTime>", "defaultValueDate" : "<date>", "defaultValueInstant" : "<instant>", "defaultValueString" : "<string>", "defaultValueUri" : "<uri>", "defaultValueBoolean" : <boolean>, "defaultValueCode" : "<code>", "defaultValueBase64Binary" : "<base64Binary>", "defaultValueCoding" : { Coding }, "defaultValueCodeableConcept" : { CodeableConcept }, "defaultValueAttachment" : { Attachment }, "defaultValueIdentifier" : { Identifier }, "defaultValueQuantity" : { Quantity }, "defaultValueRange" : { Range }, "defaultValuePeriod" : { Period }, "defaultValueRatio" : { Ratio }, "defaultValueHumanName" : { HumanName }, "defaultValueAddress" : { Address }, "defaultValueContactPoint" : { ContactPoint }, "defaultValueSchedule" : { Schedule }, "defaultValueReference" : { Reference }, "meaningWhenMissing" : "<markdown>", // C? Implicit meaning when this element is missing "orderMeaning" : "<string>", // What the order of the elements means // fixed[x]: Value must be exactly this. One of these 23: "fixedInteger" : <integer>, "fixedDecimal" : <decimal>, "fixedDateTime" : "<dateTime>", "fixedDate" : "<date>", "fixedInstant" : "<instant>", "fixedString" : "<string>", "fixedUri" : "<uri>", "fixedBoolean" : <boolean>, "fixedCode" : "<code>", "fixedBase64Binary" : "<base64Binary>", "fixedCoding" : { Coding }, "fixedCodeableConcept" : { CodeableConcept }, "fixedAttachment" : { Attachment }, "fixedIdentifier" : { Identifier }, "fixedQuantity" : { Quantity }, "fixedRange" : { Range }, "fixedPeriod" : { Period }, "fixedRatio" : { Ratio }, "fixedHumanName" : { HumanName }, "fixedAddress" : { Address }, "fixedContactPoint" : { ContactPoint }, "fixedSchedule" : { Schedule }, "fixedReference" : { Reference }, // pattern[x]: Value must have at least these property values. One of these 23: "patternInteger" : <integer>, "patternDecimal" : <decimal>, "patternDateTime" : "<dateTime>", "patternDate" : "<date>", "patternInstant" : "<instant>", "patternString" : "<string>", "patternUri" : "<uri>", "patternBoolean" : <boolean>, "patternCode" : "<code>", "patternBase64Binary" : "<base64Binary>", "patternCoding" : { Coding }, "patternCodeableConcept" : { CodeableConcept }, "patternAttachment" : { Attachment }, "patternIdentifier" : { Identifier }, "patternQuantity" : { Quantity }, "patternRange" : { Range }, "patternPeriod" : { Period }, "patternRatio" : { Ratio }, "patternHumanName" : { HumanName }, "patternAddress" : { Address }, "patternContactPoint" : { ContactPoint }, "patternSchedule" : { Schedule }, "patternReference" : { Reference }, "example" : [{ // Example value (as defined for type) "label" : "<string>", // R! Describes the purpose of this example // value[x]: Value of Example (one of allowed types). One of these 23: "valueInteger" : <integer> "valueDecimal" : <decimal> "valueDateTime" : "<dateTime>" "valueDate" : "<date>" "valueInstant" : "<instant>" "valueString" : "<string>" "valueUri" : "<uri>" "valueBoolean" : <boolean> "valueCode" : "<code>" "valueBase64Binary" : "<base64Binary>" "valueCoding" : { Coding } "valueCodeableConcept" : { CodeableConcept } "valueAttachment" : { Attachment } "valueIdentifier" : { Identifier } "valueQuantity" : { Quantity } "valueRange" : { Range } "valuePeriod" : { Period } "valueRatio" : { Ratio } "valueHumanName" : { HumanName } "valueAddress" : { Address } "valueContactPoint" : { ContactPoint } "valueSchedule" : { Schedule } "valueReference" : { Reference } }], // minValue[x]: Minimum Allowed Value (for some types). One of these 9: "minValueDate" : "<date>", "minValueDateTime" : "<dateTime>", "minValueInstant" : "<instant>", "minValueTime" : "<time>", "minValueDecimal" : <decimal>, "minValueInteger" : <integer>, "minValuePositiveInt" : "<positiveInt>", "minValueUnsignedInt" : "<unsignedInt>", "minValueQuantity" : { Quantity }, // maxValue[x]: Maximum Allowed Value (for some types). One of these 9: "maxValueDate" : "<date>", "maxValueDateTime" : "<dateTime>", "maxValueInstant" : "<instant>", "maxValueTime" : "<time>", "maxValueDecimal" : <decimal>, "maxValueInteger" : <integer>, "maxValuePositiveInt" : "<positiveInt>", "maxValueUnsignedInt" : "<unsignedInt>", "maxValueQuantity" : { Quantity }, "maxLength" : <integer>, // Max length for strings "condition" : ["<id>"], // Reference to invariant about presence "constraint" : [{ // Condition that must evaluate to true "key" : "<id>", // C? R! Target of 'condition' reference above "requirements" : "<string>", // Why this constraint is necessary or appropriate "severity" : "<code>", // R! error | warning "human" : "<string>", // R! Human description of constraint "expression" : "<string>", // R! FHIRPath expression of constraint "xpath" : "<string>", // XPath expression of constraint "source" : "<uri>" // Reference to original source of constraint }], "mustSupport" : <boolean>, // If the element must supported "isModifier" : <boolean>, // If this modifies the meaning of other elements "isSummary" : <boolean>, // Include when _summary = true? "binding" : { // C? ValueSet details if this is coded "strength" : "<code>", // R! required | extensible | preferred | example "description" : "<string>", // Human explanation of the value set // valueSet[x]: Source of value set. One of these 2: "valueSetUri" : "<uri>" "valueSetReference" : { Reference(ValueSet) } }, "mapping" : [{ // Map element to another set of definitions "identity" : "<id>", // R! Reference to mapping declaration "language" : "<code>", // Computable language of mapping "map" : "<string>", // R! Details of the mapping "comment" : "<string>" // Comments about the mapping or its use }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ # from Element: Element.extension fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the hierarchy of elements fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml fhir:ElementDefinition.sliceName [ string ]; # 0..1 Name for this particular element (in a set of slices) fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Corresponding codes in terminologies fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow fhir:ElementDefinition.slicing.discriminator [ # 0..* Element values that are used to distinguish the slices fhir:ElementDefinition.slicing.discriminator.type [ code ]; # 1..1 value | exists | pattern | type | profile fhir:ElementDefinition.slicing.discriminator.path [ string ]; # 1..1 Path to element value ], ...; fhir:ElementDefinition.slicing.description [ string ]; # 0..1 Text description of how slicing works (or not) fhir:ElementDefinition.slicing.ordered [ boolean ]; # 0..1 If elements must be in same order as slices fhir:ElementDefinition.slicing.rules [ code ]; # 1..1 closed | open | openAtEnd ]; fhir:ElementDefinition.short [ string ]; # 0..1 Concise definition for space-constrained presentation fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text fhir:ElementDefinition.comment [ markdown ]; # 0..1 Comments about the use of this element fhir:ElementDefinition.requirements [ markdown ]; # 0..1 Why this resource has been created fhir:ElementDefinition.alias [ string ], ... ; # 0..* Other names fhir:ElementDefinition.min [ unsignedInt ]; # 0..1 Minimum Cardinality fhir:ElementDefinition.max [ string ]; # 0..1 Maximum Cardinality (a number or *) fhir:ElementDefinition.base [ # 0..1 Base definition information for tools fhir:ElementDefinition.base.path [ string ]; # 1..1 Path that identifies the base element fhir:ElementDefinition.base.min [ unsignedInt ]; # 1..1 Min cardinality of the base element fhir:ElementDefinition.base.max [ string ]; # 1..1 Max cardinality of the base element ]; fhir:ElementDefinition.contentReference [ uri ]; # 0..1 Reference to definition of content for the element fhir:ElementDefinition.type [ # 0..* Data type and Profile for this element fhir:ElementDefinition.type.code [ uri ]; # 1..1 Data type or Resource (reference to definition) fhir:ElementDefinition.type.profile [ uri ]; # 0..1 Profile (StructureDefinition) to apply (or IG) fhir:ElementDefinition.type.targetProfile [ uri ]; # 0..1 Profile (StructureDefinition) to apply to reference target (or IG) fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific ], ...; # ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 38 fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ] fhir:ElementDefinition.defaultValueBoolean [ boolean ] fhir:ElementDefinition.defaultValueCode [ code ] fhir:ElementDefinition.defaultValueDate [ date ] fhir:ElementDefinition.defaultValueDateTime [ dateTime ] fhir:ElementDefinition.defaultValueDecimal [ decimal ] fhir:ElementDefinition.defaultValueId [ id ] fhir:ElementDefinition.defaultValueInstant [ instant ] fhir:ElementDefinition.defaultValueInteger [ integer ] fhir:ElementDefinition.defaultValueMarkdown [ markdown ] fhir:ElementDefinition.defaultValueOid [ oid ] fhir:ElementDefinition.defaultValuePositiveInt [ positiveInt ] fhir:ElementDefinition.defaultValueString [ string ] fhir:ElementDefinition.defaultValueTime [ time ] fhir:ElementDefinition.defaultValueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.defaultValueUri [ uri ] fhir:ElementDefinition.defaultValueAddress [ Address ] fhir:ElementDefinition.defaultValueAge [ Age ] fhir:ElementDefinition.defaultValueAnnotation [ Annotation ] fhir:ElementDefinition.defaultValueAttachment [ Attachment ] fhir:ElementDefinition.defaultValueCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.defaultValueCoding [ Coding ] fhir:ElementDefinition.defaultValueContactPoint [ ContactPoint ] fhir:ElementDefinition.defaultValueCount [ Count ] fhir:ElementDefinition.defaultValueDistance [ Distance ] fhir:ElementDefinition.defaultValueDuration [ Duration ] fhir:ElementDefinition.defaultValueHumanName [ HumanName ] fhir:ElementDefinition.defaultValueIdentifier [ Identifier ] fhir:ElementDefinition.defaultValueMoney [ Money ] fhir:ElementDefinition.defaultValuePeriod [ Period ] fhir:ElementDefinition.defaultValueQuantity [ Quantity ] fhir:ElementDefinition.defaultValueRange [ Range ] fhir:ElementDefinition.defaultValueRatio [ Ratio ] fhir:ElementDefinition.defaultValueReference [ Reference ] fhir:ElementDefinition.defaultValueSampledData [ SampledData ] fhir:ElementDefinition.defaultValueSignature [ Signature ] fhir:ElementDefinition.defaultValueTiming [ Timing ] fhir:ElementDefinition.defaultValueMeta [ Meta ] fhir:ElementDefinition.meaningWhenMissing [ markdown ]; # 0..1 Implicit meaning when this element is missing fhir:ElementDefinition.orderMeaning [ string ]; # 0..1 What the order of the elements means # ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 38 fhir:ElementDefinition.fixedBase64Binary [ base64Binary ] fhir:ElementDefinition.fixedBoolean [ boolean ] fhir:ElementDefinition.fixedCode [ code ] fhir:ElementDefinition.fixedDate [ date ] fhir:ElementDefinition.fixedDateTime [ dateTime ] fhir:ElementDefinition.fixedDecimal [ decimal ] fhir:ElementDefinition.fixedId [ id ] fhir:ElementDefinition.fixedInstant [ instant ] fhir:ElementDefinition.fixedInteger [ integer ] fhir:ElementDefinition.fixedMarkdown [ markdown ] fhir:ElementDefinition.fixedOid [ oid ] fhir:ElementDefinition.fixedPositiveInt [ positiveInt ] fhir:ElementDefinition.fixedString [ string ] fhir:ElementDefinition.fixedTime [ time ] fhir:ElementDefinition.fixedUnsignedInt [ unsignedInt ] fhir:ElementDefinition.fixedUri [ uri ] fhir:ElementDefinition.fixedAddress [ Address ] fhir:ElementDefinition.fixedAge [ Age ] fhir:ElementDefinition.fixedAnnotation [ Annotation ] fhir:ElementDefinition.fixedAttachment [ Attachment ] fhir:ElementDefinition.fixedCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.fixedCoding [ Coding ] fhir:ElementDefinition.fixedContactPoint [ ContactPoint ] fhir:ElementDefinition.fixedCount [ Count ] fhir:ElementDefinition.fixedDistance [ Distance ] fhir:ElementDefinition.fixedDuration [ Duration ] fhir:ElementDefinition.fixedHumanName [ HumanName ] fhir:ElementDefinition.fixedIdentifier [ Identifier ] fhir:ElementDefinition.fixedMoney [ Money ] fhir:ElementDefinition.fixedPeriod [ Period ] fhir:ElementDefinition.fixedQuantity [ Quantity ] fhir:ElementDefinition.fixedRange [ Range ] fhir:ElementDefinition.fixedRatio [ Ratio ] fhir:ElementDefinition.fixedReference [ Reference ] fhir:ElementDefinition.fixedSampledData [ SampledData ] fhir:ElementDefinition.fixedSignature [ Signature ] fhir:ElementDefinition.fixedTiming [ Timing ] fhir:ElementDefinition.fixedMeta [ Meta ] # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 38 fhir:ElementDefinition.patternBase64Binary [ base64Binary ] fhir:ElementDefinition.patternBoolean [ boolean ] fhir:ElementDefinition.patternCode [ code ] fhir:ElementDefinition.patternDate [ date ] fhir:ElementDefinition.patternDateTime [ dateTime ] fhir:ElementDefinition.patternDecimal [ decimal ] fhir:ElementDefinition.patternId [ id ] fhir:ElementDefinition.patternInstant [ instant ] fhir:ElementDefinition.patternInteger [ integer ] fhir:ElementDefinition.patternMarkdown [ markdown ] fhir:ElementDefinition.patternOid [ oid ] fhir:ElementDefinition.patternPositiveInt [ positiveInt ] fhir:ElementDefinition.patternString [ string ] fhir:ElementDefinition.patternTime [ time ] fhir:ElementDefinition.patternUnsignedInt [ unsignedInt ] fhir:ElementDefinition.patternUri [ uri ] fhir:ElementDefinition.patternAddress [ Address ] fhir:ElementDefinition.patternAge [ Age ] fhir:ElementDefinition.patternAnnotation [ Annotation ] fhir:ElementDefinition.patternAttachment [ Attachment ] fhir:ElementDefinition.patternCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.patternCoding [ Coding ] fhir:ElementDefinition.patternContactPoint [ ContactPoint ] fhir:ElementDefinition.patternCount [ Count ] fhir:ElementDefinition.patternDistance [ Distance ] fhir:ElementDefinition.patternDuration [ Duration ] fhir:ElementDefinition.patternHumanName [ HumanName ] fhir:ElementDefinition.patternIdentifier [ Identifier ] fhir:ElementDefinition.patternMoney [ Money ] fhir:ElementDefinition.patternPeriod [ Period ] fhir:ElementDefinition.patternQuantity [ Quantity ] fhir:ElementDefinition.patternRange [ Range ] fhir:ElementDefinition.patternRatio [ Ratio ] fhir:ElementDefinition.patternReference [ Reference ] fhir:ElementDefinition.patternSampledData [ SampledData ] fhir:ElementDefinition.patternSignature [ Signature ] fhir:ElementDefinition.patternTiming [ Timing ] fhir:ElementDefinition.patternMeta [ Meta ] fhir:ElementDefinition.example [ # 0..* Example value (as defined for type) fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example # ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 38 fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ] fhir:ElementDefinition.example.valueBoolean [ boolean ] fhir:ElementDefinition.example.valueCode [ code ] fhir:ElementDefinition.example.valueDate [ date ] fhir:ElementDefinition.example.valueDateTime [ dateTime ] fhir:ElementDefinition.example.valueDecimal [ decimal ] fhir:ElementDefinition.example.valueId [ id ] fhir:ElementDefinition.example.valueInstant [ instant ] fhir:ElementDefinition.example.valueInteger [ integer ] fhir:ElementDefinition.example.valueMarkdown [ markdown ] fhir:ElementDefinition.example.valueOid [ oid ] fhir:ElementDefinition.example.valuePositiveInt [ positiveInt ] fhir:ElementDefinition.example.valueString [ string ] fhir:ElementDefinition.example.valueTime [ time ] fhir:ElementDefinition.example.valueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.example.valueUri [ uri ] fhir:ElementDefinition.example.valueAddress [ Address ] fhir:ElementDefinition.example.valueAge [ Age ] fhir:ElementDefinition.example.valueAnnotation [ Annotation ] fhir:ElementDefinition.example.valueAttachment [ Attachment ] fhir:ElementDefinition.example.valueCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.example.valueCoding [ Coding ] fhir:ElementDefinition.example.valueContactPoint [ ContactPoint ] fhir:ElementDefinition.example.valueCount [ Count ] fhir:ElementDefinition.example.valueDistance [ Distance ] fhir:ElementDefinition.example.valueDuration [ Duration ] fhir:ElementDefinition.example.valueHumanName [ HumanName ] fhir:ElementDefinition.example.valueIdentifier [ Identifier ] fhir:ElementDefinition.example.valueMoney [ Money ] fhir:ElementDefinition.example.valuePeriod [ Period ] fhir:ElementDefinition.example.valueQuantity [ Quantity ] fhir:ElementDefinition.example.valueRange [ Range ] fhir:ElementDefinition.example.valueRatio [ Ratio ] fhir:ElementDefinition.example.valueReference [ Reference ] fhir:ElementDefinition.example.valueSampledData [ SampledData ] fhir:ElementDefinition.example.valueSignature [ Signature ] fhir:ElementDefinition.example.valueTiming [ Timing ] fhir:ElementDefinition.example.valueMeta [ Meta ] ], ...; # ElementDefinition.minValue[x] : 0..1 Minimum Allowed Value (for some types). One of these 9 fhir:ElementDefinition.minValueDate [ date ] fhir:ElementDefinition.minValueDateTime [ dateTime ] fhir:ElementDefinition.minValueInstant [ instant ] fhir:ElementDefinition.minValueTime [ time ] fhir:ElementDefinition.minValueDecimal [ decimal ] fhir:ElementDefinition.minValueInteger [ integer ] fhir:ElementDefinition.minValuePositiveInt [ positiveInt ] fhir:ElementDefinition.minValueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.minValueQuantity [ Quantity ] # ElementDefinition.maxValue[x] : 0..1 Maximum Allowed Value (for some types). One of these 9 fhir:ElementDefinition.maxValueDate [ date ] fhir:ElementDefinition.maxValueDateTime [ dateTime ] fhir:ElementDefinition.maxValueInstant [ instant ] fhir:ElementDefinition.maxValueTime [ time ] fhir:ElementDefinition.maxValueDecimal [ decimal ] fhir:ElementDefinition.maxValueInteger [ integer ] fhir:ElementDefinition.maxValuePositiveInt [ positiveInt ] fhir:ElementDefinition.maxValueUnsignedInt [ unsignedInt ] fhir:ElementDefinition.maxValueQuantity [ Quantity ] fhir:ElementDefinition.maxLength [ integer ]; # 0..1 Max length for strings fhir:ElementDefinition.condition [ id ], ... ; # 0..* Reference to invariant about presence fhir:ElementDefinition.constraint [ # 0..* Condition that must evaluate to true fhir:ElementDefinition.constraint.key [ id ]; # 1..1 Target of 'condition' reference above fhir:ElementDefinition.constraint.requirements [ string ]; # 0..1 Why this constraint is necessary or appropriate fhir:ElementDefinition.constraint.severity [ code ]; # 1..1 error | warning fhir:ElementDefinition.constraint.human [ string ]; # 1..1 Human description of constraint fhir:ElementDefinition.constraint.expression [ string ]; # 1..1 FHIRPath expression of constraint fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraint fhir:ElementDefinition.constraint.source [ uri ]; # 0..1 Reference to original source of constraint ], ...; fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must supported fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements fhir:ElementDefinition.isSummary [ boolean ]; # 0..1 Include when _summary = true? fhir:ElementDefinition.binding [ # 0..1 ValueSet details if this is coded fhir:ElementDefinition.binding.strength [ code ]; # 1..1 required | extensible | preferred | example fhir:ElementDefinition.binding.description [ string ]; # 0..1 Human explanation of the value set # ElementDefinition.binding.valueSet[x] : 0..1 Source of value set. One of these 2 fhir:ElementDefinition.binding.valueSetUri [ uri ] fhir:ElementDefinition.binding.valueSetReference [ Reference(ValueSet) ] ]; fhir:ElementDefinition.mapping [ # 0..* Map element to another set of definitions fhir:ElementDefinition.mapping.identity [ id ]; # 1..1 Reference to mapping declaration fhir:ElementDefinition.mapping.language [ code ]; # 0..1 Computable language of mapping fhir:ElementDefinition.mapping.map [ string ]; # 1..1 Details of the mapping fhir:ElementDefinition.mapping.comment [ string ]; # 0..1 Comments about the mapping or its use ], ...; ]
Changes since DSTU2
ElementDefinition | |
ElementDefinition.representation |
|
ElementDefinition.sliceName |
|
ElementDefinition.slicing.discriminator |
|
ElementDefinition.slicing.discriminator.type |
|
ElementDefinition.slicing.discriminator.path |
|
ElementDefinition.comment |
|
ElementDefinition.min |
|
ElementDefinition.base.min |
|
ElementDefinition.contentReference |
|
ElementDefinition.type.code |
|
ElementDefinition.type.profile |
|
ElementDefinition.type.targetProfile |
|
ElementDefinition.type.versioning |
|
ElementDefinition.defaultValue[x] |
|
ElementDefinition.orderMeaning |
|
ElementDefinition.fixed[x] |
|
ElementDefinition.pattern[x] |
|
ElementDefinition.example |
|
ElementDefinition.example.label |
|
ElementDefinition.example.value[x] |
|
ElementDefinition.minValue[x] |
|
ElementDefinition.maxValue[x] |
|
ElementDefinition.constraint.expression |
|
ElementDefinition.constraint.xpath |
|
ElementDefinition.constraint.source |
|
ElementDefinition.mapping.comment |
|
See the Full Difference for further information
Constraints
The path
element is the most important property of the element definition. It both names the element, and locates the element
within a hierarchy defined within a particular context. Within the FHIR specification, there is only one original
definition for each path (that is, an element definition with no base element). This is the master definition to which all the
other definitions with the same path must conform.
All elements defined within the FHIR specification itself are defined within a StructureDefinition that defines a resource, or a datatype. This defines the identity of the element and provides the context in which the meaning of the element is understood. When Elements are defined, the following rules apply:
Elements may be defined in:
resource
, complex-type
or primitive-type
,
where derivation = specialization
. These are either Resources or Data types
defined in the specification, or in custom resource definitions (see Custom Resource Policy )logical
StructureDefinitions with derivation = constraint
(i.e. Resource and Data Type profiles) are not allowed to define or include ElementDefinitions with a path not defined within the
base resource definition from which they derive (e.g. in the FHIR specification).
In addition to the path, every ElementDefinition SHALL have a populated id, and the id
SHALL
have a unique value populated by following this algorithm:
pathpart:slicename/reslicename
Note that in a profile with no slices, this id will match the path exactly and entirely.
id
values constructed in this fashion are unique, and persistent, and may
be used as the target of external references into the definition, where necessary.
The data type ElementDefinition
is used both in StructureDefinition and DataElement, and within those resources, the way its elements are to be used and interpreted depends on the context where ElementDefinition
used:
ElementDefinition field | DataElement | Type definition, first element | Type definition, following elements | Constraint Definition, first element | Constraint Definition, following elements |
sliceName | prohibited | prohibited | prohibited | prohibited | required for slices, else prohibited |
label | optional | optional | optional | recommended | recommended |
code | optional | optional | optional | optional | optional |
slicing | prohibited | prohibited | prohibited | prohibited | optional |
short/definition | optional | required | required | required‡ | required‡ |
requirements/ comments/alias | optional | prohibited | optional | prohibited‡ | optional‡ |
base | prohibited | prohibited | prohibited | required | required |
type | required | required | required | optional | optional |
nameReference | prohibited | prohibited | optional | prohibited | optional |
min/max | optional | optional (irrelevant) | required | optional | optional† |
defaultValue[x] | optional | prohibited | optional | prohibited | optional† |
meaningWhenMissing | optional | prohibited | optional | prohibited | optional† |
fixed[x] | prohibited | prohibited | prohibited | prohibited | optional |
pattern[x] | optional | prohibited | prohibited | prohibited | optional |
example[x] | optional | prohibited | optional | prohibited | optional |
minValue[x] | optional | prohibited | prohibited | prohibited | optional |
maxValue[x] | optional | prohibited | prohibited | prohibited | optional |
maxLength | optional | prohibited | prohibited | prohibited | optional |
mustSupport | optional | prohibited | prohibited | optional | optional |
isModifier | prohibited | prohibited | optional | prohibited | optional† |
isSummary | prohibited | prohibited | optional | prohibited | optional† |
binding | optional | prohibited | optional | prohibited | optional |
constraint | optional | optional | optional | optional∆ | optional∆ |
condition | optional | prohibited | optional | prohibited | optional∆ |
mapping | optional | optional | optional | optional∆ | optional∆ |
Notes:
base
element, or where the derivation type is 'specialization'base
element and a derivation of 'constraint' - e.g. a definition of a structure that constrains another base structure, referring to the differential portionThe use of Path and type depends more deeply on the context where the ElementDefinition is used:
Context | path (1st element) | path (following elements) | type (1st element) |
Data Element | Any token | Any token (distinct in the DataElement) | Any type |
Base definition of a data type (example: Quantity - XML, JSON) |
Name of the type | Path inside the datatype | Element |
A constrained data type (example: Money - XML, JSON) |
Name of the base type | Path inside the datatype | Name of the base type |
Base definition of a resource (example: Patient - XML, JSON) |
The name of the resource | Path inside the resource | DomainResource or sometimes Resource |
Constraint on a resource (example: DAF Patient - XML, JSON) |
The name of the resource | Path inside the resource (including into the data types) | The name of the resource |
Base Extension (a standard data type) (example: Extension - XML, JSON) |
Extension | Extension.value[x] or Extension.extension | Extension |
A defined Extension (example: Extension - XML, JSON) |
Extension | Extension.value[x] or Extension.extension (for complex extensions) | Extension |
There are additional notes about the use of ElementDefinition
when defining Extensions on the Defining Extensions page.
For a description of slicing, see Slicing
slicing
can only be used on the first repeat of an element, this element is considered to be the slicing entrysliceName
slicing
information) is understood to be the set of constraints to be used for the "open" slice, i.e., when the slice is open, this definition is used as a constraint on elements in the instance that are not part of a slice and belong to the open portion of the slice. Its use follows the "normal case", except:
slicing
must be presentmin
and max
govern the number of total occurrences of the sliced element including the number of occurrences in the open portion of the slice.
In a DataElement, min
and max
are always required.
In a StructureDefinition:
StructureDefinition.base
: min and max are always requiredStructureDefinition.differential
: min and max are always optional; if they are not present, they default to the base min and maxStructureDefinition.snapshot
: min and max are always requiredMost elements have a minimum cardinality of 0, which means that they may be missing from a resource when it is exchanged between systems. Generally, when an element is missing, all that an application processing the resource can say about the element is that the value is unknown - it may have a correct value, but it has not been provided for security or workflow reasons. On the other hand, it may not have a value at all. All the application can say is that the value is unknown.
However, for some elements, this specification makes specific rules about what it means if the element is missing. For some elements, this takes the form of a default value, a value that should be assumed if an element is present. For example, here are some default values:
Element | Default Value |
ElementDefinition.mustSupport | false |
SampledData.factor | 1 |
ValueSet.codeSystem.concept.abstract | false |
List.entry.deleted | false |
Most default values are mathematical / numerical non-operations e.g. false, 0 for addition or 1 for multiplication. Default values are rarely used because:
For other elements, the resource explicitly documents the meaning of a missing element, and that meaning is not represented by a default value. Some examples:
Element | Meaning when missing |
Period.end | If the end of the period is missing, it means that the period is ongoing |
Quantity.comparator | If there is no comparator, then there is no modification of the value |
MedicationAdministration.wasNotGiven | If this is missing, then the medication was administered |
Substance.instance | If this element is not present, then the substance resource describes a kind of substance |
Like default values, and for the same reasons, assigning a meaning when an element is missing is something that is not done very often. Note that Profiles cannot change the default value or missing meaning of an element, since this cannot be done in the base specification either.
Here is a list of all elements with a default value or a missing meaning: