This page is part of the FHIR Specification (v1.6.0:
STU
3 Ballot 4). The current version which supercedes this version is
5.0.0
.
For
a
full
list
of
available
versions,
see
the
Directory
of
published
versions
. For a full list of available versions, see the
Directory of published versions
.
Page
versions:
. Page versions:
R5
R4B
R4
R3
R2
|
|
|
The definition of an element in a resource or 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
(
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
or
JSON
).
).
Structure
| Name | Flags | Card. | Type |
|
|---|---|---|---|---|
|
Σ I | Element |
|
|
|
Σ | 1..1 | string |
|
|
Σ | 0..* | code |
PropertyRepresentation |
|
Σ | 0..1 | string |
|
|
Σ | 0..1 | string |
|
|
Σ | 0..* | Coding |
|
|
Σ I | 0..1 | Element |
|
|
Σ | 0..* | string |
|
|
Σ I | 0..1 | string |
|
|
Σ | 0..1 | boolean |
|
|
Σ | 1..1 | code |
SlicingRules |
|
Σ | 0..1 | string |
|
|
Σ | 0..1 | markdown |
|
|
Σ | 0..1 | markdown |
|
|
Σ | 0..1 | markdown |
|
|
Σ | 0..* | string |
|
|
Σ I | 0..1 | integer |
|
|
Σ I | 0..1 | string |
|
|
Σ | 0..1 | Element |
|
|
Σ | 1..1 | string |
|
|
Σ | 1..1 | integer |
|
|
Σ | 1..1 | string |
|
| Σ I | 0..1 | uri | Reference to definition of content for the element |
|
Σ I | 0..* | Element |
|
|
Σ | 1..1 | code |
FHIRDefinedType |
|
Σ | 0..1 | uri | Profile (StructureDefinition) to apply (or IG) |
| Σ |
|
uri |
|
|
Σ I | 0..* | code |
AggregationMode |
|
Σ
|
0..1 |
|
ReferenceVersionRules ( Required ) |
|
Σ I | 0..1 | * |
|
|
Σ I | 0..1 | markdown |
|
|
Σ I | 0..1 | * |
|
|
Σ I | 0..1 | * |
|
|
Σ | 0..1 | * |
|
|
Σ | 0..1 | Minimum Allowed Value (for some types) | |
![]() ![]() ![]() |
|
|||
|
|
|||
| instant | |||
| time | |||
![]() ![]() ![]() | decimal | |||
| integer | |||
![]() ![]() ![]() | positiveInt | |||
![]() ![]() ![]() | unsignedInt | |||
![]() ![]() ![]() | Quantity | |||
![]() ![]() | Σ | 0..1 | Maximum Allowed Value (for some types) | |
| date | |||
|
|
|||
| instant | |||
![]() ![]() ![]() | time | |||
![]() ![]() ![]() | decimal | |||
![]() ![]() ![]() | integer | |||
![]() ![]() ![]() | positiveInt | |||
![]() ![]() ![]() | unsignedInt | |||
![]() ![]() ![]() | Quantity | |||
|
Σ | 0..1 | integer |
|
|
Σ | 0..* | id |
|
|
Σ | 0..* | Element |
|
|
Σ I | 1..1 | id |
|
|
Σ | 0..1 | string |
|
|
Σ | 1..1 | code |
ConstraintSeverity |
|
Σ | 1..1 | string |
|
| Σ | 0..1 | string | FluentPath expression of constraint |
|
Σ | 1..1 | string |
|
|
Σ | 0..1 | boolean |
|
|
Σ | 0..1 | boolean |
|
|
Σ | 0..1 | boolean |
|
|
Σ I | 0..1 | Element |
|
|
Σ | 1..1 | code |
BindingStrength |
|
Σ I | 0..1 | string |
|
|
Σ I | 0..1 |
|
|
|
uri | |||
|
Reference ( ValueSet ) | |||
|
Σ | 0..* | Element |
|
|
Σ | 1..1 | id |
|
|
Σ | 0..1 | code |
|
|
Σ | 1..1 | string |
|
Documentation for this format
|
||||
UML
Diagram
UML Diagram
(
Legend
)
XML
Template
XML Template
<
<[name] xmlns="http://hl7.org/fhir"><!-- from Element: extension -->
< < < < <</code> < < < < <<path value="[string]"/><!-- 1..1 Path of the element in the heirarchy of elements --> <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml --> <name value="[string]"/><!-- 0..1 Name for this particular element definition (reference target) --> <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Defining code --></code> <slicing> <!-- 0..1 This element is sliced - slices follow --> <discriminator value="[string]"/><!-- 0..* Element values that are used to distinguish the slices --> <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 xml presentation --> <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text --> <comments 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="[integer]"/><!--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="[integer]"/><!-- 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="[code]"/><!-- 1..1 Name of Data type or Resource --> <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]> < <</fixed[x]> <</pattern[x]> <</example[x]> <</minValue[x]> <</maxValue[x]> < < < < < < < <<defaultValue[x]><!--0..1 * Specified value if missing from instance --></defaultValue[x]> <meaningWhenMissing value="[markdown]"/><!--
0..1 Implicit meaning when this element is missing --> <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[x]><!-- 0..1 * Example value (as defined for type) --></example[x]> <minValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Minimum Allowed Value (for some types) --></minValue[x]> <maxValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Maximum Allowed Value (for some types) --></maxValue[x]> <maxLength value="[integer]"/><!-- 0..1 Max length for strings --> <condition value="[id]"/><!-- 0..* Reference to invariant about presence --> <constraint> <!-- 0..* Condition that must evaluate to true --> <key value="[id]"/><!--
1..1 Target of 'condition' reference above --> <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate --> <severity value="[code]"/><!-- 1..1 error | warning --> <human value="[string]"/><!-- 1..1 Human description of constraint --> <expression value="[string]"/><!-- 0..1 FluentPath expression of constraint --> <xpath value="[string]"/><!-- 1..1 XPath expression of constraint --> </constraint>
< < < < < < <</valueSet[x]><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 --> </mapping> </[name]>
JSON
Template
JSON Template
{
{
// from Element: extension
"
"
"
"
"
"
"
"
"
"
"path" : "<string>", // R! Path of the element in the heirarchy of elements
"representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml
"name" : "<string>", // Name for this particular element definition (reference target)
"label" : "<string>", // Name for element to display with or prompt for element
"code" : [{ Coding }], // Defining code
"slicing" : { // This element is sliced - slices follow
"discriminator" : ["<string>"], // Element values that are used to distinguish the slices
"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 xml presentation
"definition" : "<markdown>", // Full formal definition as narrative text
"comments" : "<markdown>", // Comments about the use of this element
"requirements" : "<markdown>", // Why this resource has been created
"alias" : ["<string>"], // Other names
"min" : <integer>, // 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" : <integer>, // 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" : "<code>", // R! Name of Data type or Resource
"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
// 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[x]: Example value (as defined for type). One of these 23:
"exampleInteger" : <integer>,
"exampleDecimal" : <decimal>,
"exampleDateTime" : "<dateTime>",
"exampleDate" : "<date>",
"exampleInstant" : "<instant>",
"exampleString" : "<string>",
"exampleUri" : "<uri>",
"exampleBoolean" : <boolean>,
"exampleCode" : "<code>",
"exampleBase64Binary" : "<base64Binary>",
"exampleCoding" : { Coding },
"exampleCodeableConcept" : { CodeableConcept },
"exampleAttachment" : { Attachment },
"exampleIdentifier" : { Identifier },
"exampleQuantity" : { Quantity },
"exampleRange" : { Range },
"examplePeriod" : { Period },
"exampleRatio" : { Ratio },
"exampleHumanName" : { HumanName },
"exampleAddress" : { Address },
"exampleContactPoint" : { ContactPoint },
"exampleSchedule" : { Schedule },
"exampleReference" : { 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>", // FluentPath expression of constraint
"xpath" : "<string>" // R! XPath expression 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>", // C? 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
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ # from Element: Element.extension fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the heirarchy of elements fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml fhir:ElementDefinition.name [ string ]; # 0..1 Name for this particular element definition (reference target) fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Defining code fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow fhir:ElementDefinition.slicing.discriminator [ string ], ... ; # 0..* Element values that are used to distinguish the slices 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 xml presentation fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text fhir:ElementDefinition.comments [ 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 [ integer ]; # 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 [ integer ]; # 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 [ code ]; # 1..1 Name of Data type or Resource 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 # 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 ] # ElementDefinition.example[x] : 0..1 Example value (as defined for type). One of these 38 fhir:ElementDefinition.exampleBase64Binary [ base64Binary ] fhir:ElementDefinition.exampleBoolean [ boolean ] fhir:ElementDefinition.exampleCode [ code ] fhir:ElementDefinition.exampleDate [ date ] fhir:ElementDefinition.exampleDateTime [ dateTime ] fhir:ElementDefinition.exampleDecimal [ decimal ] fhir:ElementDefinition.exampleId [ id ] fhir:ElementDefinition.exampleInstant [ instant ] fhir:ElementDefinition.exampleInteger [ integer ] fhir:ElementDefinition.exampleMarkdown [ markdown ] fhir:ElementDefinition.exampleOid [ oid ] fhir:ElementDefinition.examplePositiveInt [ positiveInt ] fhir:ElementDefinition.exampleString [ string ] fhir:ElementDefinition.exampleTime [ time ] fhir:ElementDefinition.exampleUnsignedInt [ unsignedInt ] fhir:ElementDefinition.exampleUri [ uri ] fhir:ElementDefinition.exampleAddress [ Address ] fhir:ElementDefinition.exampleAge [ Age ] fhir:ElementDefinition.exampleAnnotation [ Annotation ] fhir:ElementDefinition.exampleAttachment [ Attachment ] fhir:ElementDefinition.exampleCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.exampleCoding [ Coding ] fhir:ElementDefinition.exampleContactPoint [ ContactPoint ] fhir:ElementDefinition.exampleCount [ Count ] fhir:ElementDefinition.exampleDistance [ Distance ] fhir:ElementDefinition.exampleDuration [ Duration ] fhir:ElementDefinition.exampleHumanName [ HumanName ] fhir:ElementDefinition.exampleIdentifier [ Identifier ] fhir:ElementDefinition.exampleMoney [ Money ] fhir:ElementDefinition.examplePeriod [ Period ] fhir:ElementDefinition.exampleQuantity [ Quantity ] fhir:ElementDefinition.exampleRange [ Range ] fhir:ElementDefinition.exampleRatio [ Ratio ] fhir:ElementDefinition.exampleReference [ Reference ] fhir:ElementDefinition.exampleSampledData [ SampledData ] fhir:ElementDefinition.exampleSignature [ Signature ] fhir:ElementDefinition.exampleTiming [ Timing ] fhir:ElementDefinition.exampleMeta [ 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 ]; # 0..1 FluentPath expression of constraint fhir:ElementDefinition.constraint.xpath [ string ]; # 1..1 XPath expression 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 ], ...; ]
Changes since DSTU2
| ElementDefinition | |
| ElementDefinition.representation | Change codes from {xmlAttr} to {xmlAttr|xmlText|typeAttr|cdaText|xhtml} |
| ElementDefinition.contentReference | Renamed from nameReference to contentReference Type changed from string to uri |
| ElementDefinition.type.code | Change binding strength from required to extensible |
| ElementDefinition.type.profile | Max Cardinality changed from * to 1 |
| ElementDefinition.type.targetProfile | added |
| ElementDefinition.type.versioning | added |
| ElementDefinition.defaultValue[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.fixed[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.pattern[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.example[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.minValue[x] | Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta |
| ElementDefinition.maxValue[x] | Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta |
| ElementDefinition.constraint.expression | added |
See the Full Difference for further information
Structure
| Name | Flags | Card. | Type |
|
|---|---|---|---|---|
|
Σ I | Element |
|
|
|
Σ | 1..1 | string |
|
|
Σ | 0..* | code |
PropertyRepresentation |
|
Σ | 0..1 | string |
|
|
Σ | 0..1 | string |
|
|
Σ | 0..* | Coding |
|
|
Σ I | 0..1 | Element |
|
|
Σ | 0..* | string |
|
|
Σ I | 0..1 | string |
|
|
Σ | 0..1 | boolean |
|
|
Σ | 1..1 | code |
SlicingRules |
|
Σ | 0..1 | string |
|
|
Σ | 0..1 | markdown |
|
|
Σ | 0..1 | markdown |
|
|
Σ | 0..1 | markdown |
|
|
Σ | 0..* | string |
|
|
Σ I | 0..1 | integer |
|
|
Σ I | 0..1 | string |
|
|
Σ | 0..1 | Element |
|
|
Σ | 1..1 | string |
|
|
Σ | 1..1 | integer |
|
|
Σ | 1..1 | string |
|
| Σ I | 0..1 | uri | Reference to definition of content for the element |
|
Σ I | 0..* | Element |
|
|
Σ | 1..1 | code |
FHIRDefinedType |
|
Σ | 0..1 | uri | Profile (StructureDefinition) to apply (or IG) |
| Σ |
|
uri |
|
|
Σ I | 0..* | code |
AggregationMode |
|
Σ
|
0..1 |
|
ReferenceVersionRules ( Required ) |
|
Σ I | 0..1 | * |
|
|
Σ I | 0..1 | markdown |
|
|
Σ I | 0..1 | * |
|
|
Σ I | 0..1 | * |
|
|
Σ | 0..1 | * |
|
|
Σ | 0..1 | Minimum Allowed Value (for some types) | |
| date | |||
|
|
|||
| instant | |||
| time | |||
| decimal | |||
![]() ![]() ![]() | integer | |||
![]() ![]() ![]() | positiveInt | |||
![]() ![]() ![]() | unsignedInt | |||
![]() ![]() ![]() | Quantity | |||
![]() ![]() | Σ | 0..1 | Maximum Allowed Value (for some types) | |
![]() ![]() ![]() |
|
|||
|
|
|||
| instant | |||
![]() ![]() ![]() | time | |||
![]() ![]() ![]() | decimal | |||
![]() ![]() ![]() | integer | |||
![]() ![]() ![]() | positiveInt | |||
![]() ![]() ![]() | unsignedInt | |||
![]() ![]() ![]() | Quantity | |||
|
Σ | 0..1 | integer |
|
|
Σ | 0..* | id |
|
|
Σ | 0..* | Element |
|
|
Σ I | 1..1 | id |
|
|
Σ | 0..1 | string |
|
|
Σ | 1..1 | code |
ConstraintSeverity |
|
Σ | 1..1 | string |
|
| Σ | 0..1 | string | FluentPath expression of constraint |
|
Σ | 1..1 | string |
|
|
Σ | 0..1 | boolean |
|
|
Σ | 0..1 | boolean |
|
|
Σ | 0..1 | boolean |
|
|
Σ I | 0..1 | Element |
|
|
Σ | 1..1 | code |
BindingStrength |
|
Σ I | 0..1 | string |
|
|
Σ I | 0..1 |
|
|
|
uri | |||
|
Reference ( ValueSet ) | |||
|
Σ | 0..* | Element |
|
|
Σ | 1..1 | id |
|
|
Σ | 0..1 | code |
|
|
Σ | 1..1 | string |
|
Documentation for this format
|
||||
XML
Template
XML Template
<
<[name] xmlns="http://hl7.org/fhir"><!-- from Element: extension -->
< < < < <</code> < < < < <<path value="[string]"/><!-- 1..1 Path of the element in the heirarchy of elements --> <representation value="[code]"/><!-- 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml --> <name value="[string]"/><!-- 0..1 Name for this particular element definition (reference target) --> <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Defining code --></code> <slicing> <!-- 0..1 This element is sliced - slices follow --> <discriminator value="[string]"/><!-- 0..* Element values that are used to distinguish the slices --> <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 xml presentation --> <definition value="[markdown]"/><!-- 0..1 Full formal definition as narrative text --> <comments 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="[integer]"/><!--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="[integer]"/><!-- 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="[code]"/><!-- 1..1 Name of Data type or Resource --> <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]> < <</fixed[x]> <</pattern[x]> <</example[x]> <</minValue[x]> <</maxValue[x]> < < < < < < < <<defaultValue[x]><!--0..1 * Specified value if missing from instance --></defaultValue[x]> <meaningWhenMissing value="[markdown]"/><!--
0..1 Implicit meaning when this element is missing --> <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[x]><!-- 0..1 * Example value (as defined for type) --></example[x]> <minValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Minimum Allowed Value (for some types) --></minValue[x]> <maxValue[x]><!-- 0..1 date|dateTime|instant|time|decimal|integer|positiveInt| unsignedInt|Quantity Maximum Allowed Value (for some types) --></maxValue[x]> <maxLength value="[integer]"/><!-- 0..1 Max length for strings --> <condition value="[id]"/><!-- 0..* Reference to invariant about presence --> <constraint> <!-- 0..* Condition that must evaluate to true --> <key value="[id]"/><!--
1..1 Target of 'condition' reference above --> <requirements value="[string]"/><!-- 0..1 Why this constraint is necessary or appropriate --> <severity value="[code]"/><!-- 1..1 error | warning --> <human value="[string]"/><!-- 1..1 Human description of constraint --> <expression value="[string]"/><!-- 0..1 FluentPath expression of constraint --> <xpath value="[string]"/><!-- 1..1 XPath expression of constraint --> </constraint>
< < < < < < <</valueSet[x]><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 --> </mapping> </[name]>
JSON
Template
JSON Template
{
{
// from Element: extension
"
"
"
"
"
"
"
"
"
"
"path" : "<string>", // R! Path of the element in the heirarchy of elements
"representation" : ["<code>"], // xmlAttr | xmlText | typeAttr | cdaText | xhtml
"name" : "<string>", // Name for this particular element definition (reference target)
"label" : "<string>", // Name for element to display with or prompt for element
"code" : [{ Coding }], // Defining code
"slicing" : { // This element is sliced - slices follow
"discriminator" : ["<string>"], // Element values that are used to distinguish the slices
"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 xml presentation
"definition" : "<markdown>", // Full formal definition as narrative text
"comments" : "<markdown>", // Comments about the use of this element
"requirements" : "<markdown>", // Why this resource has been created
"alias" : ["<string>"], // Other names
"min" : <integer>, // 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" : <integer>, // 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" : "<code>", // R! Name of Data type or Resource
"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
// 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[x]: Example value (as defined for type). One of these 23:
"exampleInteger" : <integer>,
"exampleDecimal" : <decimal>,
"exampleDateTime" : "<dateTime>",
"exampleDate" : "<date>",
"exampleInstant" : "<instant>",
"exampleString" : "<string>",
"exampleUri" : "<uri>",
"exampleBoolean" : <boolean>,
"exampleCode" : "<code>",
"exampleBase64Binary" : "<base64Binary>",
"exampleCoding" : { Coding },
"exampleCodeableConcept" : { CodeableConcept },
"exampleAttachment" : { Attachment },
"exampleIdentifier" : { Identifier },
"exampleQuantity" : { Quantity },
"exampleRange" : { Range },
"examplePeriod" : { Period },
"exampleRatio" : { Ratio },
"exampleHumanName" : { HumanName },
"exampleAddress" : { Address },
"exampleContactPoint" : { ContactPoint },
"exampleSchedule" : { Schedule },
"exampleReference" : { 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>", // FluentPath expression of constraint
"xpath" : "<string>" // R! XPath expression 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>", // C? 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
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ # from Element: Element.extension fhir:ElementDefinition.path [ string ]; # 1..1 Path of the element in the heirarchy of elements fhir:ElementDefinition.representation [ code ], ... ; # 0..* xmlAttr | xmlText | typeAttr | cdaText | xhtml fhir:ElementDefinition.name [ string ]; # 0..1 Name for this particular element definition (reference target) fhir:ElementDefinition.label [ string ]; # 0..1 Name for element to display with or prompt for element fhir:ElementDefinition.code [ Coding ], ... ; # 0..* Defining code fhir:ElementDefinition.slicing [ # 0..1 This element is sliced - slices follow fhir:ElementDefinition.slicing.discriminator [ string ], ... ; # 0..* Element values that are used to distinguish the slices 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 xml presentation fhir:ElementDefinition.definition [ markdown ]; # 0..1 Full formal definition as narrative text fhir:ElementDefinition.comments [ 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 [ integer ]; # 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 [ integer ]; # 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 [ code ]; # 1..1 Name of Data type or Resource 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 # 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 ] # ElementDefinition.example[x] : 0..1 Example value (as defined for type). One of these 38 fhir:ElementDefinition.exampleBase64Binary [ base64Binary ] fhir:ElementDefinition.exampleBoolean [ boolean ] fhir:ElementDefinition.exampleCode [ code ] fhir:ElementDefinition.exampleDate [ date ] fhir:ElementDefinition.exampleDateTime [ dateTime ] fhir:ElementDefinition.exampleDecimal [ decimal ] fhir:ElementDefinition.exampleId [ id ] fhir:ElementDefinition.exampleInstant [ instant ] fhir:ElementDefinition.exampleInteger [ integer ] fhir:ElementDefinition.exampleMarkdown [ markdown ] fhir:ElementDefinition.exampleOid [ oid ] fhir:ElementDefinition.examplePositiveInt [ positiveInt ] fhir:ElementDefinition.exampleString [ string ] fhir:ElementDefinition.exampleTime [ time ] fhir:ElementDefinition.exampleUnsignedInt [ unsignedInt ] fhir:ElementDefinition.exampleUri [ uri ] fhir:ElementDefinition.exampleAddress [ Address ] fhir:ElementDefinition.exampleAge [ Age ] fhir:ElementDefinition.exampleAnnotation [ Annotation ] fhir:ElementDefinition.exampleAttachment [ Attachment ] fhir:ElementDefinition.exampleCodeableConcept [ CodeableConcept ] fhir:ElementDefinition.exampleCoding [ Coding ] fhir:ElementDefinition.exampleContactPoint [ ContactPoint ] fhir:ElementDefinition.exampleCount [ Count ] fhir:ElementDefinition.exampleDistance [ Distance ] fhir:ElementDefinition.exampleDuration [ Duration ] fhir:ElementDefinition.exampleHumanName [ HumanName ] fhir:ElementDefinition.exampleIdentifier [ Identifier ] fhir:ElementDefinition.exampleMoney [ Money ] fhir:ElementDefinition.examplePeriod [ Period ] fhir:ElementDefinition.exampleQuantity [ Quantity ] fhir:ElementDefinition.exampleRange [ Range ] fhir:ElementDefinition.exampleRatio [ Ratio ] fhir:ElementDefinition.exampleReference [ Reference ] fhir:ElementDefinition.exampleSampledData [ SampledData ] fhir:ElementDefinition.exampleSignature [ Signature ] fhir:ElementDefinition.exampleTiming [ Timing ] fhir:ElementDefinition.exampleMeta [ 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 ]; # 0..1 FluentPath expression of constraint fhir:ElementDefinition.constraint.xpath [ string ]; # 1..1 XPath expression 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 ], ...; ]
Changes since DSTU2
| ElementDefinition | |
| ElementDefinition.representation | Change codes from {xmlAttr} to {xmlAttr|xmlText|typeAttr|cdaText|xhtml} |
| ElementDefinition.contentReference | Renamed from nameReference to contentReference Type changed from string to uri |
| ElementDefinition.type.code | Change binding strength from required to extensible |
| ElementDefinition.type.profile | Max Cardinality changed from * to 1 |
| ElementDefinition.type.targetProfile | added |
| ElementDefinition.type.versioning | added |
| ElementDefinition.defaultValue[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.fixed[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.pattern[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.example[x] | Add Age, Add Count, Add Distance, Add Duration, Add Money |
| ElementDefinition.minValue[x] | Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta |
| ElementDefinition.maxValue[x] | Remove boolean, Remove base64Binary, Remove string, Remove uri, Remove code, Remove oid, Remove id, Remove markdown, Remove Annotation, Remove Attachment, Remove Identifier, Remove CodeableConcept, Remove Coding, Remove Range, Remove Period, Remove Ratio, Remove SampledData, Remove Signature, Remove HumanName, Remove Address, Remove ContactPoint, Remove Timing, Remove Reference, Remove Meta |
| ElementDefinition.constraint.expression | added |
See the Full Difference for further information
Constraints
on ElementDefinition.slicing:
discriminator.exists() or description.exists()
)
on ElementDefinition.binding:
valueSet.exists() or description.exists()
)
:
binding.empty() or type.code.empty() or type.select((code = 'code') or (code = 'Coding') or (code='CodeableConcept') or (code = 'Quantity') or (code = 'Extension') or (code = 'string') or (code = 'uri')).exists()
)
on ElementDefinition.binding.valueSet[x]:
startsWith('http:') or startsWith('https') or startsWith('urn:')
)
:
type.select(code&profile).isDistinct()
)
:
constraint.select(key).isDistinct()
)
:
defaultValue.empty() or meaningWhenMissing.empty()
)
:
min.empty() or max.empty() or (max = '*') or (min <= max.toInteger())
)
on ElementDefinition.max:
empty() or ($this = '*') or (toInteger() >= 0)
)
on ElementDefinition.type:
aggregation.empty() or (code = 'Reference')
)
:
contentReference.empty() or (type.empty() and defaultValue.empty() and fixed.empty() and pattern.empty() and example.empty() and minValue.empty() and maxValue.empty() and maxLength.empty() and binding.empty())
)
:
fixed.empty() or (type.count() <= 1)
)
:
pattern.empty() or (type.count() <= 1)
)
:
pattern.empty() or fixed.empty()
)
The
path
element is the most important property of the element definition. It both names the element, and locates the element within a heirarchy of 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.
StructureDefinitions of type constraint (e.g. Resource and Data Type profiles) are not allowed to include ElementDefinitions with a new path not defined within the FHIR specification. However Logical Models and new custom resource definitions (see
Custom Resource Policy
) are allowed to define new elements. When new Elements are defined, the following rules apply:
The data type
ElementDefinition
is
used
both
in
is used both in
StructureDefinition
and
and
DataElement
,
and
within
those
resources,
the
way
its
elements
are
to
be
used
and
interpreted
depend
on
the
context
where
, and within those resources, the way its elements are to be used and interpreted depend on the context where
ElementDefinition
used:
used:
|
| DataElement |
|
|
|
|
| name | prohibited | prohibited | prohibited |
prohibited
| optional, for profile re-use |
| 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
base
The use of Path and type depends more deeply on the context where the ElementDefinition is used:
| Context |
|
|
|
| Data Element | Any token | Any token (distinct in the DataElement) | Any type |
|
Base definition of a data type (example: Quantity | Name of the type | Path inside the datatype |
Element
|
|
A constrained data type (example: Money | Name of the base type | Path inside the datatype | Name of the base type |
|
Base definition of a resource (example: Patient | 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 |
Extension
|
Extension.value[x]
or
Extension.extension
|
Extension
|
|
A defined Extension (example: Extension |
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.
slicing
can
only
be
used
on
the
first
repeat
of
an
element,
this
element
is
considered
the
slicing
entry
The
first
entry
(the
one
having
the
can only be used on the first repeat of an element, this element is considered the slicing entry
slicing
slicing
must
be
present
must be present
min
and
and
max
govern
the
number
of
total
occurrences
of
the
sliced
element
including
the
number
of
occurrences
in
the
open
portion
of
the
slice.
An
element
with
a
cardinality
of
0..1
and
a
choice
of
multiple
types
can
be
sliced
by
type.
This
is
in
order
to
specify
different
constraints
for
different
types.
In
this
case,
the
discriminator
SHALL
be
"@type"
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 and
max
are always required. are
always
required.
In
a
In a
StructureDefinition
:
:
StructureDefinition.base
StructureDefinition.differential
StructureDefinition.snapshot
Most 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 on element is present. For example, here are some default values:
| Element |
|
| 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 what the meaning of a missing element is, and the meaning is not represented by a default value. Some examples:
| Element |
|
| Period.end |
|
| Quantity.comparator |
|
| MedicationAdministration.wasNotGiven |
|
| Substance.instance |
|
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 it can't be done in the base specification either.
Here is a list of all elements with a default value or a missing meaning: