The pseudo-datatype ElementDefinition
is used both in StructureDefinition
and ExtensionDefinition
, and even within those resources, the way its elements are to be used and interpreted depend on the context where ElementDefinition
used.
short
,formal
,comments
,requirements
,synonym
can be used in any context to convey a change to the interpretation of the constrained element as compared to the base definition.condition
andconstraint
may be used in all contextsmapping
may be used in all contexts
path
is equal to the name of the type indicated in Structure.typerepresentation
may not be usedname
associates a nameslicing
may not be usedmin
andmax
may not be usedtype
is set to "Resource" for constraints on Resources, "Element" for constraints on data typesnameReference
may not be usedfixed
,pattern
indicate a value that an instance of a while complex type constrained by this structure must match. May be used instead of applying constraints to the nested elements of the datatype.example
example value for a complex type in an instance that complies to the structuremaxLength
may not be usedmustSupport
may not be usedisModifier
may not be usedisSummary
may not be usedbinding
may not be used
representation
may only be used on elements of a primitive type (and currently only on the "value" element of FHIR primitive types and "url" element of Extension)slicing
can only be used on the first repeat of an element, this element is considered the slicing entrymustSupport
may be used, but if it is not present it defaults to "false"isModifier
must be the same as the base definition for the datatype or ResourceisSummary
must be the same as the base definition for the datatype or Resource
The ElementDefinition
is understood to be the set of constraints to be used for the "open" slice, i.e. when the slice is open, this definition is used as a constraint on elements in the instance that are not part of a slice and belong to the open portion of the slice. Its use follows the "normal case", except:
representation
may not be usedname
may not be used?slicing
must be presentmin
andmax
are considered to govern the number of total occurrences of the sliced element including the number of occurrences in the open portion of the slice.isModifier
must be the same as the base definition for the datatype or ResourceisSummary
must be the same as the base definition for the datatype or Resource
path
is equal to ExtensionDefinition.namerepresentation
may not be usedname
may not be usedslicing
may be used to express constraints on the use of specific types when the element allows a choice of type (name ends in [x])min
,max
defines the allowed number of occurrences of this extension in an instance. Actual use in the target context of an extension may governed by slicing the (modifier)extension element of the target and must be compatible with this number. Note that having a min > 0 can only be guaranteed where such slicing rules are in place in the target.type
indicates the (choice of) types of the extension's valuenameReference
may not be usedmustSupport
may be used, but if it is not present it defaults to "false"isModifier
indicates whether the extension appears in the of element in the instance. If it is not present it defaults to "false"isSummary
indicates whether the extension will appear in a summary
path
is equal to ExtensionDefinition.namerepresentation
may not be usedname
may not be usedslicing
may not be usedmin
,max
defines the allowed number of occurrences of this extension in an instance. Actual use in the target context of an extension may governed by slicing the (modifier)extension element of the target and must be compatible with this number. Note that having a min > 0 can only be guaranteed where such slicing rules are in place in the target.type
is set toExtension
nameReference
may not be usedfixed
,pattern
may not be used. (Lloyd may describe a usecase)example
example value for the complex extension in an instancemaxLength
may not be usedmustSupport
may not be usedisModifier
indicates whether the extension appears in the of element in the instance. If it is not present it defaults to "false"isSummary
indicates whether the extension will appear in a summary (depends on modifierExtension?)binding
may not be used
representation
may not be usedslicing
may be used to express constraints on the use of specific types when the element allows a choice of type (name ends in [x])mustSupport
may be used, but if it is not present it defaults to "false"isModifier
may be used, but if it is not present it defaults to "false"