Name Flags Card. Type Description & Constraints doco
. . ElementDefinition N Element Definition of an element in a resource or extension
+ Rule: Min <= Max
+ Rule: if the element definition has a contentReference, it cannot have type, defaultValue, fixed, pattern, example, minValue, maxValue, maxLength, or binding
+ Rule: Fixed value may only be specified if there is one type
+ Rule: Pattern may only be specified if there is one type
+ Rule: Pattern and fixed are mutually exclusive
+ Rule: Binding can only be present for coded elements, string, and uri if using FHIR-defined types
+ Rule: Types must be unique by code
+ Rule: Constraints must be unique by key
+ Rule: default value and meaningWhenMissing are mutually exclusive
+ Rule: sliceName must be composed of proper tokens separated by "/"
+ Rule: Must have a modifier reason if isModifier = true
+ Rule: Element path SHALL be expressed as a set of '.'-separated components with each component restricted to a maximum of 64 characters and with some limits on the allowed choice of characters
+ Warning: The first component of the path should be UpperCamelCase. Additional components (following a '.') should be lowerCamelCase. If this syntax is not adhered to, code generation tools may be broken. Logical models may be less concerned about this implication.
+ Rule: sliceIsConstraining can only appear if slicename is present
+ Guideline: pattern[x] should be used rather than fixed[x]
+ Warning: Order has no meaning (and cannot be asserted to have meaning), so enforcing rules on order is improper
+ Warning: Mappings SHOULD be unique by key
+ Rule: Can't have valueAlternatives if mustHaveValue is true

Elements defined in Ancestors: id, extension, modifierExtension
. . . path C 1..1 string Path of the element in the hierarchy of elements
. . . representation 0..* code xmlAttr | xmlText | typeAttr | cdaText | xhtml
Binding: PropertyRepresentation ( Required)

. . . sliceName C 0..1 string Name for this particular element (in a set of slices)
. . . sliceIsConstraining C TU 0..1 boolean If this slice definition constrains an inherited slice definition (or not)
. . . label T 0..1 string Name for element to display with or prompt for element
. . . code 0..* Coding Corresponding codes in terminologies
Binding: ElementDefinitionCode ( Example)

. . . slicing C 0..1 Element This element is sliced - slices follow
. . . . discriminator 0..* Element Element values that are used to distinguish the slices

. . . . . type 1..1 code value | exists | type | profile | position
Binding: DiscriminatorType ( Required)
. . . . . path 1..1 string Path to element value
. . . . description T 0..1 string Text description of how slicing works (or not)
. . . . ordered C 0..1 boolean If elements must be in same order as slices
. . . . rules C 1..1 code closed | open | openAtEnd
Binding: SlicingRules ( Required)
. . . short T 0..1 string Concise definition for space-constrained presentation
. . . definition T 0..1 markdown Full formal definition as narrative text
. . . comment T 0..1 markdown Comments about the use of this element
. . . requirements T 0..1 markdown Why this resource has been created
. . . alias T 0..* string Other names

. . . min C 0..1 unsignedInt Minimum Cardinality
. . . max C 0..1 string Maximum Cardinality (a number or *)
+ Rule: Max SHALL be a number or "*"
. . . base 0..1 Element Base definition information for tools
. . . . path 1..1 string Path that identifies the base element
. . . . min 1..1 unsignedInt Min cardinality of the base element
. . . . max 1..1 string Max cardinality of the base element
. . . contentReference C 0..1 uri Reference to definition of content for the element
. . . type C 0..* Element Data type and Profile for this element
+ Rule: Aggregation may only be specified if one of the allowed types for the element is a reference
+ Rule: targetProfile is only allowed if the type is Reference or canonical

. . . . code C 1..1 uri Data type or Resource (reference to definition)
Binding: Element Definition Types ( Extensible)
. . . . profile 0..* canonical( StructureDefinition | ImplementationGuide) Profiles (StructureDefinition or IG) - one must apply

. . . . targetProfile C 0..* canonical( StructureDefinition | ImplementationGuide) Profile (StructureDefinition or IG) on the Reference/canonical target - one must apply

. . . . aggregation C 0..* code contained | referenced | bundled - how aggregated
Binding: AggregationMode ( Required)

. . . . versioning 0..1 code either | independent | specific
Binding: ReferenceVersionRules ( Required)
. . . defaultValue[x] C 0..1 * Specified value if missing from instance
. . . meaningWhenMissing T C 0..1 markdown Implicit meaning when this element is missing
. . . orderMeaning C 0..1 string What the order of the elements means
. . . fixed[x] C 0..1 * Value must be exactly this
. . . pattern[x] C 0..1 * Value must have at least these property values
. . . example C 0..* Element Example value (as defined for type)

. . . . label T 1..1 string Describes the purpose of this example
. . . . value[x] 1..1 * Value of Example (one of allowed types)
. . . minValue[x] C 0..1 Minimum Allowed Value (for some types)
. . . . minValueDate date
. . . . minValueDateTime dateTime
. . . . minValueInstant instant
. . . . minValueTime time
. . . . minValueDecimal decimal
. . . . minValueInteger integer
. . . . minValueInteger64 integer64
. . . . minValuePositiveInt positiveInt
. . . . minValueUnsignedInt unsignedInt
. . . . minValueQuantity Quantity
. . . maxValue[x] C 0..1 Maximum Allowed Value (for some types)
. . . . maxValueDate date
. . . . maxValueDateTime dateTime
. . . . maxValueInstant instant
. . . . maxValueTime time
. . . . maxValueDecimal decimal
. . . . maxValueInteger integer
. . . . maxValueInteger64 integer64
. . . . maxValuePositiveInt positiveInt
. . . . maxValueUnsignedInt unsignedInt
. . . . maxValueQuantity Quantity
. . . maxLength C 0..1 integer Max length for string type data
. . . condition 0..* id Reference to invariant about presence

. . . constraint C 0..* Element Condition that must evaluate to true
+ Warning: Constraints should have an expression or else validators will not be able to enforce them
+ Rule: Errors cannot be suppressed

. . . . key C 1..1 id Target of 'condition' reference above
. . . . requirements 0..1 markdown Why this constraint is necessary or appropriate
. . . . severity C 1..1 code error | warning
Binding: ConstraintSeverity ( Required)
. . . . suppress C TU 0..1 boolean Suppress warning or hint in profile
. . . . human T 1..1 string Human description of constraint
. . . . expression C 0..1 string FHIRPath expression of constraint
. . . . source 0..1 canonical( StructureDefinition) Reference to original source of constraint
. . . mustHaveValue C TU 0..1 boolean For primitives, that a value must be present - not replaced by an extension
. . . valueAlternatives C TU 0..* canonical( StructureDefinition) Extensions that are allowed to replace a primitive value

. . . mustSupport 0..1 boolean If the element must be supported (discouraged - see obligations)
. . . isModifier C 0..1 boolean If this modifies the meaning of other elements
. . . isModifierReason C 0..1 string Reason that this element is marked as a modifier
. . . isSummary 0..1 boolean Include when _summary = true?
. . . binding C 0..1 Element ValueSet details if this is coded
+ Rule: ValueSet SHALL start with http:// or https:// or urn: or #
+ Rule: binding SHALL have either description or valueSet
. . . . strength 1..1 code required | extensible | preferred | example
Binding: BindingStrength ( Required)
. . . . description T C 0..1 markdown Intended use of codes in the bound value set
. . . . valueSet C 0..1 canonical( ValueSet) Source of value set
. . . . additional TU 0..* Element Additional Bindings - more rules about the binding

. . . . . purpose 1..1 code maximum | minimum | required | extensible | candidate | current | preferred | ui | starter | component
Binding: Additional Binding Purpose ValueSet ( Required)
. . . . . valueSet 1..1 canonical( ValueSet) The value set for the additional binding
. . . . . documentation 0..1 markdown Documentation of the purpose of use of the binding
. . . . . shortDoco 0..1 string Concise documentation - for summary tables
. . . . . usage 0..* UsageContext Qualifies the usage - jurisdiction, gender, workflow status etc.

. . . . . any 0..1 boolean Whether binding can applies to all repeats, or just one
. . . mapping C 0..* Element Map element to another set of definitions

. . . . identity C 1..1 id Reference to mapping declaration
. . . . language 0..1 code Computable language of mapping
Binding: Mime Types ( Required)
. . . . map 1..1 string Details of the mapping
. . . . comment 0..1 markdown Comments about the mapping or its use

doco Documentation for this format