This
page
is
part
of
the
FHIR
Specification
(v3.0.2:
STU
3).
(v3.5.0:
R4
Ballot
#2).
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
:
|
Normative Candidate Note: This page is candidate normative content for R4 in the Infrastructure Package . Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.
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
).
ElementDefinition is used in StructureDefinition
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
Σ I N |
|
Definition
of
an
element
in
a
resource
or
extension
+ Rule: Min <= Max + Rule: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding + + + Rule: Pattern and value are mutually exclusive + Rule: Binding can only be present for coded elements, string, and uri + + Rule: Constraints must be unique by key + + Rule: sliceName must be composed of proper tokens separated by + + Rule: Element names cannot include some special characters + Warning: Element names should be simple alphanumerics, or code generation tools may be broken + Rule: sliceIsConstraining can only appear if slicename is present Elements defined in Ancestors: id , extension , modifierExtension |
|
|
Σ | 1..1 | string | Path of the element in the hierarchy of elements |
|
Σ | 0..* | code |
xmlAttr
|
xmlText
|
typeAttr
|
cdaText
|
xhtml
PropertyRepresentation ( Required ) |
|
Σ | 0..1 | string | Name for this particular element (in a set of slices) |
|
Σ TU | 0..1 | boolean | If this slice definition constrains an inherited slice definition (or not) |
![]() ![]() | Σ | 0..1 | string | Name for element to display with or prompt for element |
|
Σ | 0..* | Coding |
Corresponding
codes
in
terminologies
LOINC Codes ( Example ) |
|
Σ I | 0..1 | Element |
This
element
is
sliced
-
slices
follow
+ Rule: If there are no discriminators, there must be a definition |
|
Σ | 0..* | Element |
Element
values
that
are
used
to
distinguish
the
slices
|
|
Σ | 1..1 | code |
value
|
exists
|
pattern
|
type
|
profile
DiscriminatorType ( Required ) |
|
Σ | 1..1 | string | Path to element value |
|
Σ I | 0..1 | string | Text description of how slicing works (or not) |
|
Σ | 0..1 | boolean | If elements must be in same order as slices |
|
Σ | 1..1 | code |
closed
|
open
|
openAtEnd
SlicingRules ( Required ) |
|
Σ | 0..1 | string | Concise definition for space-constrained presentation |
|
Σ | 0..1 | markdown | Full formal definition as narrative text |
|
Σ | 0..1 | markdown | Comments about the use of this element |
|
Σ | 0..1 | markdown | Why this resource has been created |
|
Σ | 0..* | string |
Other
names
|
|
Σ I | 0..1 | unsignedInt | Minimum Cardinality |
|
Σ I | 0..1 | string |
Maximum
Cardinality
(a
number
or
*)
+ Rule: Max SHALL be a number or |
|
Σ | 0..1 | Element | Base definition information for tools |
|
Σ | 1..1 | string | Path that identifies the base element |
|
Σ | 1..1 | unsignedInt | Min cardinality of the base element |
|
Σ | 1..1 | string | Max cardinality of the base element |
|
Σ I | 0..1 | uri | Reference to definition of content for the element |
|
Σ I | 0..* | Element |
Data
type
and
Profile
for
this
element
+ Rule: Aggregation may only be specified if one of the allowed types for the element is a + Rule: targetProfile is only allowed if the type is reference or canonical |
|
Σ | 1..1 | uri |
Data
type
or
Resource
(reference
to
definition)
FHIRDefinedType ( Extensible ) |
|
Σ |
|
|
|
|
Σ |
|
|
Profile
|
|
Σ I | 0..* | code |
contained
|
referenced
|
bundled
-
how
aggregated
AggregationMode ( Required ) |
|
Σ | 0..1 | code |
either
|
independent
|
specific
ReferenceVersionRules ( Required ) |
|
Σ I | 0..1 | * | Specified value if missing from instance |
|
Σ I | 0..1 | markdown | Implicit meaning when this element is missing |
|
Σ | 0..1 | string | What the order of the elements means |
|
Σ I | 0..1 | * | Value must be exactly this |
|
Σ I | 0..1 | * | Value must have at least these property values |
|
Σ | 0..* | Element |
Example
value
(as
defined
for
type)
|
|
Σ | 1..1 | string | Describes the purpose of this example |
|
Σ | 1..1 | * | Value of Example (one of allowed types) |
|
Σ | 0..1 | Minimum Allowed Value (for some types) | |
|
date | |||
|
dateTime | |||
|
instant | |||
|
time | |||
|
decimal | |||
|
integer | |||
|
positiveInt | |||
|
unsignedInt | |||
|
Quantity | |||
|
Σ | 0..1 | Maximum Allowed Value (for some types) | |
|
date | |||
|
dateTime | |||
|
instant | |||
|
time | |||
|
decimal | |||
|
integer | |||
|
positiveInt | |||
|
unsignedInt | |||
|
Quantity | |||
|
Σ | 0..1 | integer | Max length for strings |
|
Σ | 0..* | id |
Reference
to
invariant
about
presence
|
|
Σ I | 0..* | Element |
Condition
that
must
evaluate
to
true
+ Warning: Constraints should have an expression or else validators will not be able to enforce them |
|
Σ I | 1..1 | id | Target of 'condition' reference above |
|
Σ | 0..1 | string | Why this constraint is necessary or appropriate |
|
Σ | 1..1 | code |
error
|
warning
ConstraintSeverity ( Required ) |
|
Σ | 1..1 | string | Human description of constraint |
|
Σ |
|
string | FHIRPath expression of constraint |
|
Σ TU | 0..1 | string | XPath expression of constraint |
|
Σ | 0..1 |
|
Reference to original source of constraint |
|
Σ | 0..1 | boolean | If the element must be supported |
|
Σ | 0..1 | boolean | If this modifies the meaning of other elements |
|
Σ | 0..1 | string | Reason that this element is marked as a modifier |
![]() ![]() | Σ | 0..1 | boolean | Include when _summary = true? |
|
Σ I | 0..1 | Element |
ValueSet
details
if
this
is
coded
+ Rule: ValueSet |
|
Σ | 1..1 | code |
required
|
extensible
|
preferred
|
example
BindingStrength ( Required ) |
|
Σ
|
0..1 | string | Human explanation of the value set |
|
Σ I | 0..1 |
|
Source of value set |
|
Σ | 0..* | Element |
Map
element
to
another
set
of
definitions
|
|
Σ | 1..1 | id | Reference to mapping declaration |
|
Σ | 0..1 | code |
Computable
language
of
mapping
MimeType ( Required ) |
|
Σ | 1..1 | string | Details of the mapping |
|
Σ | 0..1 | string | Comments about the mapping or its use |
Documentation
for
this
format
|
||||
UML Diagram ( Legend )
XML Template
< <!-- from Element: --> < < < <<ElementDefinition xmlns="http://hl7.org/fhir"> <!-- from BackboneElement: extension, modifierExtension --> <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) --> <sliceIsConstraining value="[boolean]"/><!-- 0..1 If this slice definition constrains an inherited slice definition (or not) --> <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Corresponding codes in terminologies --></code> <slicing> <!-- 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><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profiles (StructureDefinition or IG) - one must apply --></profile> <targetProfile><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply --></targetProfile> <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]"/><!-- 0..1 FHIRPath expression of constraint --> <xpath value="[string]"/><!-- 0..1 XPath expression of constraint --> <source><!-- 0..1 canonical(StructureDefinition) Reference to original source of constraint --></source> </constraint>
< < <<mustSupport value="[boolean]"/><!-- 0..1 If the element must be supported --> <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements --> <isModifierReason value="[string]"/><!-- 0..1 Reason that this element is marked as a modifier --> <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? --> <binding> <!--0..1 ValueSet details if this is coded -->
< < <</valueSet[x]><strength value="[code]"/><!-- 1..1 required | extensible | preferred | example --> <description value="[string]"/><!-- 0..1 Human explanation of the value set --> <valueSet><!--0..1 canonical(ValueSet) Source of value set --></valueSet> </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]></ElementDefinition>
JSON Template
{
// from Element:
"
"
"
"
"
"
"
"
"
// from BackboneElement: extension, modifierExtension
"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)
"sliceIsConstraining" : <boolean>, // If this slice definition constrains an inherited slice definition (or not)
"label" : "<string>", // Name for element to display with or prompt for element
"code" : [{ Coding }], // Corresponding codes in terminologies
"slicing" : { // 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" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profiles (StructureDefinition or IG) - one must apply
"targetProfile" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
"aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
"versioning" : "<code>" // either | independent | specific
}],
">,
">,
">",
">",
">",
">",
">",
">,
">",
">",
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
"
"
">,
">,
">",
">",
">",
">",
">",
">,
">",
">",
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
">,
">,
">",
">",
">",
">",
">",
">,
">",
">",
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
"
"
">
">
">"
">"
">"
">"
">"
">
">"
">"
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
// defaultValue[x]: Specified value if missing from instance. One of these 49:
"defaultValueBase64Binary" : "<base64Binary>",
"defaultValueBoolean" : <boolean>,
"defaultValueCanonical" : "<canonical>",
"defaultValueCode" : "<code>",
"defaultValueDate" : "<date>",
"defaultValueDateTime" : "<dateTime>",
"defaultValueDecimal" : <decimal>,
"defaultValueId" : "<id>",
"defaultValueInstant" : "<instant>",
"defaultValueInteger" : <integer>,
"defaultValueMarkdown" : "<markdown>",
"defaultValueOid" : "<oid>",
"defaultValuePositiveInt" : "<positiveInt>",
"defaultValueString" : "<string>",
"defaultValueTime" : "<time>",
"defaultValueUnsignedInt" : "<unsignedInt>",
"defaultValueUri" : "<uri>",
"defaultValueUrl" : "<url>",
"defaultValueUuid" : "<uuid>",
"defaultValueAddress" : { Address },
"defaultValueAge" : { Age },
"defaultValueAnnotation" : { Annotation },
"defaultValueAttachment" : { Attachment },
"defaultValueCodeableConcept" : { CodeableConcept },
"defaultValueCoding" : { Coding },
"defaultValueContactPoint" : { ContactPoint },
"defaultValueCount" : { Count },
"defaultValueDistance" : { Distance },
"defaultValueDuration" : { Duration },
"defaultValueHumanName" : { HumanName },
"defaultValueIdentifier" : { Identifier },
"defaultValueMoney" : { Money },
"defaultValuePeriod" : { Period },
"defaultValueQuantity" : { Quantity },
"defaultValueRange" : { Range },
"defaultValueRatio" : { Ratio },
"defaultValueReference" : { Reference },
"defaultValueSampledData" : { SampledData },
"defaultValueSignature" : { Signature },
"defaultValueTiming" : { Timing },
"defaultValueParameterDefinition" : { ParameterDefinition },
"defaultValueDataRequirement" : { DataRequirement },
"defaultValueRelatedArtifact" : { RelatedArtifact },
"defaultValueContactDetail" : { ContactDetail },
"defaultValueContributor" : { Contributor },
"defaultValueTriggerDefinition" : { TriggerDefinition },
"defaultValueExpression" : { Expression },
"defaultValueUsageContext" : { UsageContext },
"defaultValueDosage" : { Dosage },
"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 49:
"fixedBase64Binary" : "<base64Binary>",
"fixedBoolean" : <boolean>,
"fixedCanonical" : "<canonical>",
"fixedCode" : "<code>",
"fixedDate" : "<date>",
"fixedDateTime" : "<dateTime>",
"fixedDecimal" : <decimal>,
"fixedId" : "<id>",
"fixedInstant" : "<instant>",
"fixedInteger" : <integer>,
"fixedMarkdown" : "<markdown>",
"fixedOid" : "<oid>",
"fixedPositiveInt" : "<positiveInt>",
"fixedString" : "<string>",
"fixedTime" : "<time>",
"fixedUnsignedInt" : "<unsignedInt>",
"fixedUri" : "<uri>",
"fixedUrl" : "<url>",
"fixedUuid" : "<uuid>",
"fixedAddress" : { Address },
"fixedAge" : { Age },
"fixedAnnotation" : { Annotation },
"fixedAttachment" : { Attachment },
"fixedCodeableConcept" : { CodeableConcept },
"fixedCoding" : { Coding },
"fixedContactPoint" : { ContactPoint },
"fixedCount" : { Count },
"fixedDistance" : { Distance },
"fixedDuration" : { Duration },
"fixedHumanName" : { HumanName },
"fixedIdentifier" : { Identifier },
"fixedMoney" : { Money },
"fixedPeriod" : { Period },
"fixedQuantity" : { Quantity },
"fixedRange" : { Range },
"fixedRatio" : { Ratio },
"fixedReference" : { Reference },
"fixedSampledData" : { SampledData },
"fixedSignature" : { Signature },
"fixedTiming" : { Timing },
"fixedParameterDefinition" : { ParameterDefinition },
"fixedDataRequirement" : { DataRequirement },
"fixedRelatedArtifact" : { RelatedArtifact },
"fixedContactDetail" : { ContactDetail },
"fixedContributor" : { Contributor },
"fixedTriggerDefinition" : { TriggerDefinition },
"fixedExpression" : { Expression },
"fixedUsageContext" : { UsageContext },
"fixedDosage" : { Dosage },
// pattern[x]: Value must have at least these property values. One of these 49:
"patternBase64Binary" : "<base64Binary>",
"patternBoolean" : <boolean>,
"patternCanonical" : "<canonical>",
"patternCode" : "<code>",
"patternDate" : "<date>",
"patternDateTime" : "<dateTime>",
"patternDecimal" : <decimal>,
"patternId" : "<id>",
"patternInstant" : "<instant>",
"patternInteger" : <integer>,
"patternMarkdown" : "<markdown>",
"patternOid" : "<oid>",
"patternPositiveInt" : "<positiveInt>",
"patternString" : "<string>",
"patternTime" : "<time>",
"patternUnsignedInt" : "<unsignedInt>",
"patternUri" : "<uri>",
"patternUrl" : "<url>",
"patternUuid" : "<uuid>",
"patternAddress" : { Address },
"patternAge" : { Age },
"patternAnnotation" : { Annotation },
"patternAttachment" : { Attachment },
"patternCodeableConcept" : { CodeableConcept },
"patternCoding" : { Coding },
"patternContactPoint" : { ContactPoint },
"patternCount" : { Count },
"patternDistance" : { Distance },
"patternDuration" : { Duration },
"patternHumanName" : { HumanName },
"patternIdentifier" : { Identifier },
"patternMoney" : { Money },
"patternPeriod" : { Period },
"patternQuantity" : { Quantity },
"patternRange" : { Range },
"patternRatio" : { Ratio },
"patternReference" : { Reference },
"patternSampledData" : { SampledData },
"patternSignature" : { Signature },
"patternTiming" : { Timing },
"patternParameterDefinition" : { ParameterDefinition },
"patternDataRequirement" : { DataRequirement },
"patternRelatedArtifact" : { RelatedArtifact },
"patternContactDetail" : { ContactDetail },
"patternContributor" : { Contributor },
"patternTriggerDefinition" : { TriggerDefinition },
"patternExpression" : { Expression },
"patternUsageContext" : { UsageContext },
"patternDosage" : { Dosage },
"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 49:
"valueBase64Binary" : "<base64Binary>"
"valueBoolean" : <boolean>
"valueCanonical" : "<canonical>"
"valueCode" : "<code>"
"valueDate" : "<date>"
"valueDateTime" : "<dateTime>"
"valueDecimal" : <decimal>
"valueId" : "<id>"
"valueInstant" : "<instant>"
"valueInteger" : <integer>
"valueMarkdown" : "<markdown>"
"valueOid" : "<oid>"
"valuePositiveInt" : "<positiveInt>"
"valueString" : "<string>"
"valueTime" : "<time>"
"valueUnsignedInt" : "<unsignedInt>"
"valueUri" : "<uri>"
"valueUrl" : "<url>"
"valueUuid" : "<uuid>"
"valueAddress" : { Address }
"valueAge" : { Age }
"valueAnnotation" : { Annotation }
"valueAttachment" : { Attachment }
"valueCodeableConcept" : { CodeableConcept }
"valueCoding" : { Coding }
"valueContactPoint" : { ContactPoint }
"valueCount" : { Count }
"valueDistance" : { Distance }
"valueDuration" : { Duration }
"valueHumanName" : { HumanName }
"valueIdentifier" : { Identifier }
"valueMoney" : { Money }
"valuePeriod" : { Period }
"valueQuantity" : { Quantity }
"valueRange" : { Range }
"valueRatio" : { Ratio }
"valueReference" : { Reference }
"valueSampledData" : { SampledData }
"valueSignature" : { Signature }
"valueTiming" : { Timing }
"valueParameterDefinition" : { ParameterDefinition }
"valueDataRequirement" : { DataRequirement }
"valueRelatedArtifact" : { RelatedArtifact }
"valueContactDetail" : { ContactDetail }
"valueContributor" : { Contributor }
"valueTriggerDefinition" : { TriggerDefinition }
"valueExpression" : { Expression }
"valueUsageContext" : { UsageContext }
"valueDosage" : { Dosage }
}],
// 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>", // FHIRPath expression of constraint
"xpath" : "<string>", // XPath expression of constraint
"source" : { canonical(StructureDefinition) } // Reference to original source of constraint
}],
"
"
"
"
"
"
">"
" }
"mustSupport" : <boolean>, // If the element must be supported
"isModifier" : <boolean>, // If this modifies the meaning of other elements
"isModifierReason" : "<string>", // Reason that this element is marked as a modifier
"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" : { canonical(ValueSet) } // C? Source of value set
},
"
"
"
"
"
"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:# from BackboneElement: Element.extension, BackboneElement.modifierextension 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.sliceIsConstraining [ boolean ]; # 0..1 If this slice definition constrains an inherited slice definition (or not) 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 | profilefhir: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 presentationfhir: fhir: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: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: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: fhir:fhir:ElementDefinition.type.profile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profiles (StructureDefinition or IG) - one must apply fhir:ElementDefinition.type.targetProfile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific ], ...;# . One of these 38# ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 49 fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ] fhir:ElementDefinition.defaultValueBoolean [ boolean ] fhir:ElementDefinition.defaultValueCanonical [ canonical ] 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.defaultValueUrl [ url ] fhir:ElementDefinition.defaultValueUuid [ uuid ] 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: ] fhir:fhir:ElementDefinition.defaultValueParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.defaultValueDataRequirement [ DataRequirement ] fhir:ElementDefinition.defaultValueRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.defaultValueContactDetail [ ContactDetail ] fhir:ElementDefinition.defaultValueContributor [ Contributor ] fhir:ElementDefinition.defaultValueTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.defaultValueExpression [ Expression ] fhir:ElementDefinition.defaultValueUsageContext [ UsageContext ] fhir:ElementDefinition.defaultValueDosage [ Dosage ] 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# . One of these 38# ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 49 fhir:ElementDefinition.fixedBase64Binary [ base64Binary ] fhir:ElementDefinition.fixedBoolean [ boolean ] fhir:ElementDefinition.fixedCanonical [ canonical ] 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.fixedUrl [ url ] fhir:ElementDefinition.fixedUuid [ uuid ] 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: ] # . One of these 38fhir:ElementDefinition.fixedParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.fixedDataRequirement [ DataRequirement ] fhir:ElementDefinition.fixedRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.fixedContactDetail [ ContactDetail ] fhir:ElementDefinition.fixedContributor [ Contributor ] fhir:ElementDefinition.fixedTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.fixedExpression [ Expression ] fhir:ElementDefinition.fixedUsageContext [ UsageContext ] fhir:ElementDefinition.fixedDosage [ Dosage ] # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 49 fhir:ElementDefinition.patternBase64Binary [ base64Binary ] fhir:ElementDefinition.patternBoolean [ boolean ] fhir:ElementDefinition.patternCanonical [ canonical ] 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.patternUrl [ url ] fhir:ElementDefinition.patternUuid [ uuid ] 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: ]fhir:ElementDefinition.patternParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.patternDataRequirement [ DataRequirement ] fhir:ElementDefinition.patternRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.patternContactDetail [ ContactDetail ] fhir:ElementDefinition.patternContributor [ Contributor ] fhir:ElementDefinition.patternTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.patternExpression [ Expression ] fhir:ElementDefinition.patternUsageContext [ UsageContext ] fhir:ElementDefinition.patternDosage [ Dosage ] fhir:ElementDefinition.example [ # 0..* Example value (as defined for type) fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example# . One of these 38# ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 49 fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ] fhir:ElementDefinition.example.valueBoolean [ boolean ] fhir:ElementDefinition.example.valueCanonical [ canonical ] 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.valueUrl [ url ] fhir:ElementDefinition.example.valueUuid [ uuid ] 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: ]fhir:ElementDefinition.example.valueParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.example.valueDataRequirement [ DataRequirement ] fhir:ElementDefinition.example.valueRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.example.valueContactDetail [ ContactDetail ] fhir:ElementDefinition.example.valueContributor [ Contributor ] fhir:ElementDefinition.example.valueTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.example.valueExpression [ Expression ] fhir:ElementDefinition.example.valueUsageContext [ UsageContext ] fhir:ElementDefinition.example.valueDosage [ Dosage ] ], ...; # 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 constraintfhir:fhir:ElementDefinition.constraint.expression [ string ]; # 0..1 FHIRPath expression of constraint fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraintfhir:fhir:ElementDefinition.constraint.source [ canonical(StructureDefinition) ]; # 0..1 Reference to original source of constraint ], ...;fhir:fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must be supported fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements fhir:ElementDefinition.isModifierReason [ string ]; # 0..1 Reason that this element is marked as a modifier 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# . One of these 2 fhir: ] fhir:) ]fhir:ElementDefinition.binding.valueSet [ canonical(ValueSet) ]; # 0..1 Source of value set ]; 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
Release
3
| ElementDefinition |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ElementDefinition.defaultValue[x] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
See the Full Difference for further information
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
Σ I N |
|
Definition
of
an
element
in
a
resource
or
extension
+ Rule: Min <= Max + Rule: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding + + + Rule: Pattern and value are mutually exclusive + Rule: Binding can only be present for coded elements, string, and uri + + Rule: Constraints must be unique by key + + Rule: sliceName must be composed of proper tokens separated by + + Rule: Element names cannot include some special characters + Warning: Element names should be simple alphanumerics, or code generation tools may be broken + Rule: sliceIsConstraining can only appear if slicename is present Elements defined in Ancestors: id , extension , modifierExtension |
|
|
Σ | 1..1 | string | Path of the element in the hierarchy of elements |
|
Σ | 0..* | code |
xmlAttr
|
xmlText
|
typeAttr
|
cdaText
|
xhtml
PropertyRepresentation ( Required ) |
|
Σ | 0..1 | string | Name for this particular element (in a set of slices) |
|
Σ TU | 0..1 | boolean | If this slice definition constrains an inherited slice definition (or not) |
![]() ![]() | Σ | 0..1 | string | Name for element to display with or prompt for element |
|
Σ | 0..* | Coding |
Corresponding
codes
in
terminologies
LOINC Codes ( Example ) |
|
Σ I | 0..1 | Element |
This
element
is
sliced
-
slices
follow
+ Rule: If there are no discriminators, there must be a definition |
|
Σ | 0..* | Element |
Element
values
that
are
used
to
distinguish
the
slices
|
|
Σ | 1..1 | code |
value
|
exists
|
pattern
|
type
|
profile
DiscriminatorType ( Required ) |
|
Σ | 1..1 | string | Path to element value |
|
Σ I | 0..1 | string | Text description of how slicing works (or not) |
|
Σ | 0..1 | boolean | If elements must be in same order as slices |
|
Σ | 1..1 | code |
closed
|
open
|
openAtEnd
SlicingRules ( Required ) |
|
Σ | 0..1 | string | Concise definition for space-constrained presentation |
|
Σ | 0..1 | markdown | Full formal definition as narrative text |
|
Σ | 0..1 | markdown | Comments about the use of this element |
|
Σ | 0..1 | markdown | Why this resource has been created |
|
Σ | 0..* | string |
Other
names
|
|
Σ I | 0..1 | unsignedInt | Minimum Cardinality |
|
Σ I | 0..1 | string |
Maximum
Cardinality
(a
number
or
*)
+ Rule: Max SHALL be a number or |
|
Σ | 0..1 | Element | Base definition information for tools |
|
Σ | 1..1 | string | Path that identifies the base element |
|
Σ | 1..1 | unsignedInt | Min cardinality of the base element |
|
Σ | 1..1 | string | Max cardinality of the base element |
|
Σ I | 0..1 | uri | Reference to definition of content for the element |
|
Σ I | 0..* | Element |
Data
type
and
Profile
for
this
element
+ Rule: Aggregation may only be specified if one of the allowed types for the element is a + Rule: targetProfile is only allowed if the type is reference or canonical |
|
Σ | 1..1 | uri |
Data
type
or
Resource
(reference
to
definition)
FHIRDefinedType ( Extensible ) |
|
Σ |
|
|
|
|
Σ |
|
|
Profile
|
|
Σ I | 0..* | code |
contained
|
referenced
|
bundled
-
how
aggregated
AggregationMode ( Required ) |
|
Σ | 0..1 | code |
either
|
independent
|
specific
ReferenceVersionRules ( Required ) |
|
Σ I | 0..1 | * | Specified value if missing from instance |
|
Σ I | 0..1 | markdown | Implicit meaning when this element is missing |
|
Σ | 0..1 | string | What the order of the elements means |
|
Σ I | 0..1 | * | Value must be exactly this |
|
Σ I | 0..1 | * | Value must have at least these property values |
|
Σ | 0..* | Element |
Example
value
(as
defined
for
type)
|
|
Σ | 1..1 | string | Describes the purpose of this example |
|
Σ | 1..1 | * | Value of Example (one of allowed types) |
|
Σ | 0..1 | Minimum Allowed Value (for some types) | |
|
date | |||
|
dateTime | |||
|
instant | |||
|
time | |||
|
decimal | |||
|
integer | |||
|
positiveInt | |||
|
unsignedInt | |||
|
Quantity | |||
|
Σ | 0..1 | Maximum Allowed Value (for some types) | |
|
date | |||
|
dateTime | |||
|
instant | |||
|
time | |||
|
decimal | |||
|
integer | |||
|
positiveInt | |||
|
unsignedInt | |||
|
Quantity | |||
|
Σ | 0..1 | integer | Max length for strings |
|
Σ | 0..* | id |
Reference
to
invariant
about
presence
|
|
Σ I | 0..* | Element |
Condition
that
must
evaluate
to
true
+ Warning: Constraints should have an expression or else validators will not be able to enforce them |
|
Σ I | 1..1 | id | Target of 'condition' reference above |
|
Σ | 0..1 | string | Why this constraint is necessary or appropriate |
|
Σ | 1..1 | code |
error
|
warning
ConstraintSeverity ( Required ) |
|
Σ | 1..1 | string | Human description of constraint |
|
Σ |
|
string | FHIRPath expression of constraint |
|
Σ TU | 0..1 | string | XPath expression of constraint |
|
Σ | 0..1 |
|
Reference to original source of constraint |
|
Σ | 0..1 | boolean | If the element must be supported |
|
Σ | 0..1 | boolean | If this modifies the meaning of other elements |
|
Σ | 0..1 | string | Reason that this element is marked as a modifier |
![]() ![]() | Σ | 0..1 | boolean | Include when _summary = true? |
|
Σ I | 0..1 | Element |
ValueSet
details
if
this
is
coded
+ Rule: ValueSet |
|
Σ | 1..1 | code |
required
|
extensible
|
preferred
|
example
BindingStrength ( Required ) |
|
Σ
|
0..1 | string | Human explanation of the value set |
|
Σ I | 0..1 |
|
Source of value set |
|
Σ | 0..* | Element |
Map
element
to
another
set
of
definitions
|
|
Σ | 1..1 | id | Reference to mapping declaration |
|
Σ | 0..1 | code |
Computable
language
of
mapping
MimeType ( Required ) |
|
Σ | 1..1 | string | Details of the mapping |
|
Σ | 0..1 | string | Comments about the mapping or its use |
Documentation
for
this
format
|
||||
XML Template
< <!-- from Element: --> < < < <<ElementDefinition xmlns="http://hl7.org/fhir"> <!-- from BackboneElement: extension, modifierExtension --> <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) --> <sliceIsConstraining value="[boolean]"/><!-- 0..1 If this slice definition constrains an inherited slice definition (or not) --> <label value="[string]"/><!-- 0..1 Name for element to display with or prompt for element --> <code><!-- 0..* Coding Corresponding codes in terminologies --></code> <slicing> <!-- 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><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profiles (StructureDefinition or IG) - one must apply --></profile> <targetProfile><!-- 0..* canonical(StructureDefinition|ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply --></targetProfile> <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]"/><!-- 0..1 FHIRPath expression of constraint --> <xpath value="[string]"/><!-- 0..1 XPath expression of constraint --> <source><!-- 0..1 canonical(StructureDefinition) Reference to original source of constraint --></source> </constraint>
< < <<mustSupport value="[boolean]"/><!-- 0..1 If the element must be supported --> <isModifier value="[boolean]"/><!-- 0..1 If this modifies the meaning of other elements --> <isModifierReason value="[string]"/><!-- 0..1 Reason that this element is marked as a modifier --> <isSummary value="[boolean]"/><!-- 0..1 Include when _summary = true? --> <binding> <!--0..1 ValueSet details if this is coded -->
< < <</valueSet[x]><strength value="[code]"/><!-- 1..1 required | extensible | preferred | example --> <description value="[string]"/><!-- 0..1 Human explanation of the value set --> <valueSet><!--0..1 canonical(ValueSet) Source of value set --></valueSet> </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]></ElementDefinition>
JSON Template
{
// from Element:
"
"
"
"
"
"
"
"
"
// from BackboneElement: extension, modifierExtension
"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)
"sliceIsConstraining" : <boolean>, // If this slice definition constrains an inherited slice definition (or not)
"label" : "<string>", // Name for element to display with or prompt for element
"code" : [{ Coding }], // Corresponding codes in terminologies
"slicing" : { // 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" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profiles (StructureDefinition or IG) - one must apply
"targetProfile" : [{ canonical(StructureDefinition|ImplementationGuide) }], // Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply
"aggregation" : ["<code>"], // C? contained | referenced | bundled - how aggregated
"versioning" : "<code>" // either | independent | specific
}],
">,
">,
">",
">",
">",
">",
">",
">,
">",
">",
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
"
"
">,
">,
">",
">",
">",
">",
">",
">,
">",
">",
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
">,
">,
">",
">",
">",
">",
">",
">,
">",
">",
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
" },
"
"
">
">
">"
">"
">"
">"
">"
">
">"
">"
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
" }
// defaultValue[x]: Specified value if missing from instance. One of these 49:
"defaultValueBase64Binary" : "<base64Binary>",
"defaultValueBoolean" : <boolean>,
"defaultValueCanonical" : "<canonical>",
"defaultValueCode" : "<code>",
"defaultValueDate" : "<date>",
"defaultValueDateTime" : "<dateTime>",
"defaultValueDecimal" : <decimal>,
"defaultValueId" : "<id>",
"defaultValueInstant" : "<instant>",
"defaultValueInteger" : <integer>,
"defaultValueMarkdown" : "<markdown>",
"defaultValueOid" : "<oid>",
"defaultValuePositiveInt" : "<positiveInt>",
"defaultValueString" : "<string>",
"defaultValueTime" : "<time>",
"defaultValueUnsignedInt" : "<unsignedInt>",
"defaultValueUri" : "<uri>",
"defaultValueUrl" : "<url>",
"defaultValueUuid" : "<uuid>",
"defaultValueAddress" : { Address },
"defaultValueAge" : { Age },
"defaultValueAnnotation" : { Annotation },
"defaultValueAttachment" : { Attachment },
"defaultValueCodeableConcept" : { CodeableConcept },
"defaultValueCoding" : { Coding },
"defaultValueContactPoint" : { ContactPoint },
"defaultValueCount" : { Count },
"defaultValueDistance" : { Distance },
"defaultValueDuration" : { Duration },
"defaultValueHumanName" : { HumanName },
"defaultValueIdentifier" : { Identifier },
"defaultValueMoney" : { Money },
"defaultValuePeriod" : { Period },
"defaultValueQuantity" : { Quantity },
"defaultValueRange" : { Range },
"defaultValueRatio" : { Ratio },
"defaultValueReference" : { Reference },
"defaultValueSampledData" : { SampledData },
"defaultValueSignature" : { Signature },
"defaultValueTiming" : { Timing },
"defaultValueParameterDefinition" : { ParameterDefinition },
"defaultValueDataRequirement" : { DataRequirement },
"defaultValueRelatedArtifact" : { RelatedArtifact },
"defaultValueContactDetail" : { ContactDetail },
"defaultValueContributor" : { Contributor },
"defaultValueTriggerDefinition" : { TriggerDefinition },
"defaultValueExpression" : { Expression },
"defaultValueUsageContext" : { UsageContext },
"defaultValueDosage" : { Dosage },
"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 49:
"fixedBase64Binary" : "<base64Binary>",
"fixedBoolean" : <boolean>,
"fixedCanonical" : "<canonical>",
"fixedCode" : "<code>",
"fixedDate" : "<date>",
"fixedDateTime" : "<dateTime>",
"fixedDecimal" : <decimal>,
"fixedId" : "<id>",
"fixedInstant" : "<instant>",
"fixedInteger" : <integer>,
"fixedMarkdown" : "<markdown>",
"fixedOid" : "<oid>",
"fixedPositiveInt" : "<positiveInt>",
"fixedString" : "<string>",
"fixedTime" : "<time>",
"fixedUnsignedInt" : "<unsignedInt>",
"fixedUri" : "<uri>",
"fixedUrl" : "<url>",
"fixedUuid" : "<uuid>",
"fixedAddress" : { Address },
"fixedAge" : { Age },
"fixedAnnotation" : { Annotation },
"fixedAttachment" : { Attachment },
"fixedCodeableConcept" : { CodeableConcept },
"fixedCoding" : { Coding },
"fixedContactPoint" : { ContactPoint },
"fixedCount" : { Count },
"fixedDistance" : { Distance },
"fixedDuration" : { Duration },
"fixedHumanName" : { HumanName },
"fixedIdentifier" : { Identifier },
"fixedMoney" : { Money },
"fixedPeriod" : { Period },
"fixedQuantity" : { Quantity },
"fixedRange" : { Range },
"fixedRatio" : { Ratio },
"fixedReference" : { Reference },
"fixedSampledData" : { SampledData },
"fixedSignature" : { Signature },
"fixedTiming" : { Timing },
"fixedParameterDefinition" : { ParameterDefinition },
"fixedDataRequirement" : { DataRequirement },
"fixedRelatedArtifact" : { RelatedArtifact },
"fixedContactDetail" : { ContactDetail },
"fixedContributor" : { Contributor },
"fixedTriggerDefinition" : { TriggerDefinition },
"fixedExpression" : { Expression },
"fixedUsageContext" : { UsageContext },
"fixedDosage" : { Dosage },
// pattern[x]: Value must have at least these property values. One of these 49:
"patternBase64Binary" : "<base64Binary>",
"patternBoolean" : <boolean>,
"patternCanonical" : "<canonical>",
"patternCode" : "<code>",
"patternDate" : "<date>",
"patternDateTime" : "<dateTime>",
"patternDecimal" : <decimal>,
"patternId" : "<id>",
"patternInstant" : "<instant>",
"patternInteger" : <integer>,
"patternMarkdown" : "<markdown>",
"patternOid" : "<oid>",
"patternPositiveInt" : "<positiveInt>",
"patternString" : "<string>",
"patternTime" : "<time>",
"patternUnsignedInt" : "<unsignedInt>",
"patternUri" : "<uri>",
"patternUrl" : "<url>",
"patternUuid" : "<uuid>",
"patternAddress" : { Address },
"patternAge" : { Age },
"patternAnnotation" : { Annotation },
"patternAttachment" : { Attachment },
"patternCodeableConcept" : { CodeableConcept },
"patternCoding" : { Coding },
"patternContactPoint" : { ContactPoint },
"patternCount" : { Count },
"patternDistance" : { Distance },
"patternDuration" : { Duration },
"patternHumanName" : { HumanName },
"patternIdentifier" : { Identifier },
"patternMoney" : { Money },
"patternPeriod" : { Period },
"patternQuantity" : { Quantity },
"patternRange" : { Range },
"patternRatio" : { Ratio },
"patternReference" : { Reference },
"patternSampledData" : { SampledData },
"patternSignature" : { Signature },
"patternTiming" : { Timing },
"patternParameterDefinition" : { ParameterDefinition },
"patternDataRequirement" : { DataRequirement },
"patternRelatedArtifact" : { RelatedArtifact },
"patternContactDetail" : { ContactDetail },
"patternContributor" : { Contributor },
"patternTriggerDefinition" : { TriggerDefinition },
"patternExpression" : { Expression },
"patternUsageContext" : { UsageContext },
"patternDosage" : { Dosage },
"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 49:
"valueBase64Binary" : "<base64Binary>"
"valueBoolean" : <boolean>
"valueCanonical" : "<canonical>"
"valueCode" : "<code>"
"valueDate" : "<date>"
"valueDateTime" : "<dateTime>"
"valueDecimal" : <decimal>
"valueId" : "<id>"
"valueInstant" : "<instant>"
"valueInteger" : <integer>
"valueMarkdown" : "<markdown>"
"valueOid" : "<oid>"
"valuePositiveInt" : "<positiveInt>"
"valueString" : "<string>"
"valueTime" : "<time>"
"valueUnsignedInt" : "<unsignedInt>"
"valueUri" : "<uri>"
"valueUrl" : "<url>"
"valueUuid" : "<uuid>"
"valueAddress" : { Address }
"valueAge" : { Age }
"valueAnnotation" : { Annotation }
"valueAttachment" : { Attachment }
"valueCodeableConcept" : { CodeableConcept }
"valueCoding" : { Coding }
"valueContactPoint" : { ContactPoint }
"valueCount" : { Count }
"valueDistance" : { Distance }
"valueDuration" : { Duration }
"valueHumanName" : { HumanName }
"valueIdentifier" : { Identifier }
"valueMoney" : { Money }
"valuePeriod" : { Period }
"valueQuantity" : { Quantity }
"valueRange" : { Range }
"valueRatio" : { Ratio }
"valueReference" : { Reference }
"valueSampledData" : { SampledData }
"valueSignature" : { Signature }
"valueTiming" : { Timing }
"valueParameterDefinition" : { ParameterDefinition }
"valueDataRequirement" : { DataRequirement }
"valueRelatedArtifact" : { RelatedArtifact }
"valueContactDetail" : { ContactDetail }
"valueContributor" : { Contributor }
"valueTriggerDefinition" : { TriggerDefinition }
"valueExpression" : { Expression }
"valueUsageContext" : { UsageContext }
"valueDosage" : { Dosage }
}],
// 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>", // FHIRPath expression of constraint
"xpath" : "<string>", // XPath expression of constraint
"source" : { canonical(StructureDefinition) } // Reference to original source of constraint
}],
"
"
"
"
"
"
">"
" }
"mustSupport" : <boolean>, // If the element must be supported
"isModifier" : <boolean>, // If this modifies the meaning of other elements
"isModifierReason" : "<string>", // Reason that this element is marked as a modifier
"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" : { canonical(ValueSet) } // C? Source of value set
},
"
"
"
"
"
"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:# from BackboneElement: Element.extension, BackboneElement.modifierextension 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.sliceIsConstraining [ boolean ]; # 0..1 If this slice definition constrains an inherited slice definition (or not) 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 | profilefhir: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 presentationfhir: fhir: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: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: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: fhir:fhir:ElementDefinition.type.profile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profiles (StructureDefinition or IG) - one must apply fhir:ElementDefinition.type.targetProfile [ canonical(StructureDefinition|ImplementationGuide) ], ... ; # 0..* Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply fhir:ElementDefinition.type.aggregation [ code ], ... ; # 0..* contained | referenced | bundled - how aggregated fhir:ElementDefinition.type.versioning [ code ]; # 0..1 either | independent | specific ], ...;# . One of these 38# ElementDefinition.defaultValue[x] : 0..1 Specified value if missing from instance. One of these 49 fhir:ElementDefinition.defaultValueBase64Binary [ base64Binary ] fhir:ElementDefinition.defaultValueBoolean [ boolean ] fhir:ElementDefinition.defaultValueCanonical [ canonical ] 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.defaultValueUrl [ url ] fhir:ElementDefinition.defaultValueUuid [ uuid ] 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: ] fhir:fhir:ElementDefinition.defaultValueParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.defaultValueDataRequirement [ DataRequirement ] fhir:ElementDefinition.defaultValueRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.defaultValueContactDetail [ ContactDetail ] fhir:ElementDefinition.defaultValueContributor [ Contributor ] fhir:ElementDefinition.defaultValueTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.defaultValueExpression [ Expression ] fhir:ElementDefinition.defaultValueUsageContext [ UsageContext ] fhir:ElementDefinition.defaultValueDosage [ Dosage ] 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# . One of these 38# ElementDefinition.fixed[x] : 0..1 Value must be exactly this. One of these 49 fhir:ElementDefinition.fixedBase64Binary [ base64Binary ] fhir:ElementDefinition.fixedBoolean [ boolean ] fhir:ElementDefinition.fixedCanonical [ canonical ] 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.fixedUrl [ url ] fhir:ElementDefinition.fixedUuid [ uuid ] 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: ] # . One of these 38fhir:ElementDefinition.fixedParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.fixedDataRequirement [ DataRequirement ] fhir:ElementDefinition.fixedRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.fixedContactDetail [ ContactDetail ] fhir:ElementDefinition.fixedContributor [ Contributor ] fhir:ElementDefinition.fixedTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.fixedExpression [ Expression ] fhir:ElementDefinition.fixedUsageContext [ UsageContext ] fhir:ElementDefinition.fixedDosage [ Dosage ] # ElementDefinition.pattern[x] : 0..1 Value must have at least these property values. One of these 49 fhir:ElementDefinition.patternBase64Binary [ base64Binary ] fhir:ElementDefinition.patternBoolean [ boolean ] fhir:ElementDefinition.patternCanonical [ canonical ] 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.patternUrl [ url ] fhir:ElementDefinition.patternUuid [ uuid ] 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: ]fhir:ElementDefinition.patternParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.patternDataRequirement [ DataRequirement ] fhir:ElementDefinition.patternRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.patternContactDetail [ ContactDetail ] fhir:ElementDefinition.patternContributor [ Contributor ] fhir:ElementDefinition.patternTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.patternExpression [ Expression ] fhir:ElementDefinition.patternUsageContext [ UsageContext ] fhir:ElementDefinition.patternDosage [ Dosage ] fhir:ElementDefinition.example [ # 0..* Example value (as defined for type) fhir:ElementDefinition.example.label [ string ]; # 1..1 Describes the purpose of this example# . One of these 38# ElementDefinition.example.value[x] : 1..1 Value of Example (one of allowed types). One of these 49 fhir:ElementDefinition.example.valueBase64Binary [ base64Binary ] fhir:ElementDefinition.example.valueBoolean [ boolean ] fhir:ElementDefinition.example.valueCanonical [ canonical ] 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.valueUrl [ url ] fhir:ElementDefinition.example.valueUuid [ uuid ] 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: ]fhir:ElementDefinition.example.valueParameterDefinition [ ParameterDefinition ] fhir:ElementDefinition.example.valueDataRequirement [ DataRequirement ] fhir:ElementDefinition.example.valueRelatedArtifact [ RelatedArtifact ] fhir:ElementDefinition.example.valueContactDetail [ ContactDetail ] fhir:ElementDefinition.example.valueContributor [ Contributor ] fhir:ElementDefinition.example.valueTriggerDefinition [ TriggerDefinition ] fhir:ElementDefinition.example.valueExpression [ Expression ] fhir:ElementDefinition.example.valueUsageContext [ UsageContext ] fhir:ElementDefinition.example.valueDosage [ Dosage ] ], ...; # 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 constraintfhir:fhir:ElementDefinition.constraint.expression [ string ]; # 0..1 FHIRPath expression of constraint fhir:ElementDefinition.constraint.xpath [ string ]; # 0..1 XPath expression of constraintfhir:fhir:ElementDefinition.constraint.source [ canonical(StructureDefinition) ]; # 0..1 Reference to original source of constraint ], ...;fhir:fhir:ElementDefinition.mustSupport [ boolean ]; # 0..1 If the element must be supported fhir:ElementDefinition.isModifier [ boolean ]; # 0..1 If this modifies the meaning of other elements fhir:ElementDefinition.isModifierReason [ string ]; # 0..1 Reason that this element is marked as a modifier 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# . One of these 2 fhir: ] fhir:) ]fhir:ElementDefinition.binding.valueSet [ canonical(ValueSet) ]; # 0..1 Source of value set ]; 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
Release
3
| ElementDefinition |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ElementDefinition.defaultValue[x] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
See the Full Difference for further information
Constraints
| id | Level | Location | Description | Expression |
|
eld-1
|
Rule | ElementDefinition.slicing |
If
there
are
no
discriminators,
there
must
be
a
definition
|
|
|
eld-2
|
Rule | (base) |
Min
<=
Max
|
|
|
eld-3
|
Rule | ElementDefinition.max |
Max
SHALL
be
a
number
or
|
|
|
eld-4
|
Rule | ElementDefinition.type |
Aggregation
may
only
be
specified
if
one
of
the
allowed
types
for
the
element
is
a
|
|
|
eld-5
|
Rule | (base) |
if
the
element
definition
has
a
contentReference,
it
cannot
have
type,
defaultValue,
fixed,
pattern,
example,
minValue,
maxValue,
maxLength,
or
binding
|
|
|
eld-6
|
Rule | (base) |
Fixed
value
may
only
be
specified
if
there
is
one
type
|
|
|
eld-7
|
Rule | (base) |
Pattern
may
only
be
specified
if
there
is
one
type
|
|
|
eld-8
|
Rule | (base) |
Pattern
and
value
are
mutually
exclusive
|
|
|
eld-11
|
Rule | (base) |
Binding
can
only
be
present
for
coded
elements,
string,
and
uri
|
|
|
eld-12
|
Rule | ElementDefinition.binding |
ValueSet
|
|
|
eld-13
|
Rule | (base) |
Types
must
be
unique
by
|
|
|
eld-14
|
Rule | (base) |
Constraints
must
be
unique
by
key
|
|
|
eld-15
|
Rule | (base) |
default
value
and
meaningWhenMissing
are
mutually
exclusive
|
|
|
eld-16
|
Rule | (base) |
sliceName
must
be
composed
of
proper
tokens
separated
by
|
|
| eld-17 | Rule | ElementDefinition.type | targetProfile is only allowed if the type is reference or canonical | (code='Reference' or code = 'canonical') or targetProfile.empty() |
| eld-18 | Rule | (base) | Must have a modifier reason if isModifier = true | isModifier implies isModifierReason.exists() |
| eld-19 | Rule | (base) | Element names cannot include some special characters | path.matches('[^\\s#\\/]+') |
| eld-20 | Warning | (base) | Element names should be simple alphanumerics, or code generation tools may be broken | path.matches('[A-Za-z][A-Za-z0-9]*(\\.[a-z][A-Za-z0-9]*)*') |
| eld-21 | Warning | ElementDefinition.constraint | Constraints should have an expression or else validators will not be able to enforce them | expression.exists() |
| eld-22 | Rule | (base) | sliceIsConstraining can only appear if slicename is present | sliceIsConstraining.exists() implies sliceName.exists() |
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).
path.
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
type
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
.
The
way
its
elements
are
to
be
used
and
interpreted
depends
on
the
context
where
ElementDefinition
used:
context:
| ElementDefinition field |
|
Type definition, following elements | Constraint Definition, first element | Constraint Definition, following elements |
| sliceName | prohibited | prohibited | prohibited |
|
| label | optional | optional |
|
recommended |
| code | optional | optional | optional | optional |
| slicing | prohibited | prohibited | prohibited |
|
| short/definition |
|
required | required ‡ | required ‡ |
|
requirements/
comments/alias |
|
optional | prohibited ‡ | optional ‡ |
| base |
differential: optional |
differential: optional |
required | required |
| type | required | required |
|
optional |
| nameReference | prohibited |
|
prohibited | optional |
| min/max |
optional
|
required | optional | optional † |
| defaultValue[x] |
|
optional | prohibited | optional † |
| meaningWhenMissing |
|
optional | prohibited | optional † |
| fixed[x] | prohibited | prohibited | prohibited |
|
| pattern[x] |
|
prohibited | prohibited | optional |
| example[x] |
|
optional | prohibited | optional |
| minValue[x] |
|
prohibited | prohibited | optional |
| maxValue[x] |
|
prohibited | prohibited | optional |
| maxLength |
|
prohibited | prohibited | optional |
| mustSupport |
|
prohibited | optional | optional |
| isModifier | prohibited |
|
prohibited | optional † |
| isSummary | prohibited |
|
prohibited | optional † |
| binding |
|
optional | prohibited | optional |
| constraint | optional | optional |
optional
|
optional ∆ |
| condition |
|
optional | prohibited | optional ∆ |
| mapping | optional | optional |
optional
|
optional ∆ |
Notes:
base
baseDefinition
element,
or
where
the
derivation
type
is
'specialization'
base
baseDefinition
element
and
a
derivation
of
'constraint'
-
e.g.
a
definition
of
a
structure
that
constrains
another
base
structure,
referring
to
the
differential
portion
The 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) |
|
(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
(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
entry
sliceName
@default
applies
to
all
entries
that
are
not
in
any
other
slice
slicing
information)
is
understood
to
be
the
set
of
constraints
slicing
must
be
present
min
min
value).
Elements
that
allow
a
choice
of
multiple
types
can
be
sliced
by
type.
This
is
to
specify
constrained.
In
principle,
there
are
two
different
types
of
constraints
for
different
types.
In
to
apply:
When constraining elements with multiple types, the following rules apply:
StructureDefinition.base
StructureDefinition.baseDefinition
:
min
and
max
are
always
required
StructureDefinition.differential
:
min
and
max
are
always
optional;
if
they
are
not
present,
they
default
to
the
StructureDefinition.snapshot
:
min
and
max
are
always
required
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
might
not
have
a
value
at
all.
All
the
application
can
say
is
that
the
value
is
unknown.
This also applies when the element is present, but has no value or child elements, and only has extensions instead.
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:
The
value
must
be
known
by
all
implementations
When
an
element
has
a
default
value,
it
can
never
be
unknown
-
e.g.
it
is
implicitly
mandatory
The
default
value
can
never
be
changed.
For
Constraints
on
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
structures
cannot
change
the
default
value
or
missing
meaning
of
an
element,
since
this
cannot
be
done
in
the
base
specification
either.
element.
Here
is
a
list
of
all
elements
with
a
default
value
or
a
missing
meaning:
This specification does not define any default values for resources or data types because:
Note that default values can be defined in Logical Models .