FHIR Application Feature Framework Implementation Guide
1.0.0 - STU 1

FHIR Application Feature Framework Implementation Guide - Local Development build (v1.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

## Extension: Feature - Detailed Descriptions

Page standards status: Trial-use | Maturity Level: 2

Definitions for the feature extension.

- Key Elements Table
- Differential Elements Table
- Snapshot Elements Table

Guidance on how to interpret the contents of this table can be foundhere

0. Extension
Definition | This extension documents the features of a system using code/value pairs Optional Extension Element - found in all resources.
Short | ExtensionOptional Extensions Element
Control | 0..*
Is Modifier | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
2. Extension.extension
Definition | An Extension May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Short | ExtensionAdditional content defined by implementations
Comments | There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
Control | 20..*
Type | Extension
Is Modifier | false
Summary | false
Alternate Names | extensions, user content
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
Slicing | This element introduces a set of slices on `Extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
4. Extension.extension:definition
Slice Name | definition
Definition | An Extension
Short | ExtensionAdditional content defined by implementations
Control | 10..1*
Type | Extension
Is Modifier | false
Must Support | true
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
6. Extension.extension:definition.extension
Definition | An Extension May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Short | ExtensionAdditional content defined by implementations
Comments | There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
Control | 0..0*
Type | Extension
Is Modifier | false
Summary | false
Alternate Names | extensions, user content
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
Slicing | This element introduces a set of slices on `Extension.extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
8. Extension.extension:definition.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `definition`
10. Extension.extension:definition.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | Value of extension
Control | 10..1 This element is affected by the following invariants: ext-1
Type | canonical(Feature Definition), date, Meta, Address, Attachment, integer, Count, DataRequirement, Dosage, uuid, Identifier, RatioRange, Coding, SampledData, id, positiveInt, Distance, Availability, integer64, Period, Duration, Range, RelatedArtifact, base64Binary, UsageContext, Timing, decimal, ExtendedContactDetail, CodeableConcept, ParameterDefinition, dateTime, code, string, oid, instant, ContactPoint, HumanName, Money, markdown, Ratio, Age, Reference, TriggerDefinition, Quantity, uri, url, Annotation, ContactDetail, boolean, Expression, CodeableReference, Signature, unsignedInt, time
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
12. Extension.extension:context
Slice Name | context
Definition | An Extension
Short | ExtensionAdditional content defined by implementations
Control | 0..*
Type | Extension
Is Modifier | false
Must Support | true
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
14. Extension.extension:context.extension
Definition | An Extension May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Short | ExtensionAdditional content defined by implementations
Comments | There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
Control | 0..0*
Type | Extension
Is Modifier | false
Summary | false
Alternate Names | extensions, user content
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
Slicing | This element introduces a set of slices on `Extension.extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
16. Extension.extension:context.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `context`
18. Extension.extension:context.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | The context(s) on which this feature can be defined. The context(s) declared in this extension must align with one or more of the contexts in the FeatureDefinition.Value of extension
Control | 10..1 This element is affected by the following invariants: ext-1
Type | string, date, Meta, Address, Attachment, integer, Count, DataRequirement, Dosage, uuid, Identifier, RatioRange, Coding, SampledData, id, positiveInt, Distance, Availability, integer64, Period, Duration, canonical, Range, RelatedArtifact, base64Binary, UsageContext, Timing, decimal, ExtendedContactDetail, CodeableConcept, ParameterDefinition, dateTime, code, oid, instant, ContactPoint, HumanName, Money, markdown, Ratio, Age, Reference, TriggerDefinition, Quantity, uri, url, Annotation, ContactDetail, boolean, Expression, CodeableReference, Signature, unsignedInt, time
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
20. Extension.extension:value
Slice Name | value
Definition | An Extension
Short | ExtensionAdditional content defined by implementations
Control | 10..1*
Type | Extension
Is Modifier | false
Must Support | true
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
22. Extension.extension:value.extension
Definition | An Extension May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
Short | ExtensionAdditional content defined by implementations
Comments | There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
Control | 0..0*
Type | Extension
Is Modifier | false
Summary | false
Alternate Names | extensions, user content
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count())) ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
Slicing | This element introduces a set of slices on `Extension.extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
24. Extension.extension:value.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `value`
26. Extension.extension:value.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | The value of the feature. Must align with the type and ValueSet (if a code type) in the FeatureDefinition.Value of extension
Control | 10..1 This element is affected by the following invariants: ext-1
Type | Choice of: base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference, SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
28. Extension.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `http://hl7.org/fhir/uv/application-feature/StructureDefinition/feature`
30. Extension.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | Value of extension
Control | 0..01 This element is affected by the following invariants: ext-1
Type | Choice of: base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference, SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))

Guidance on how to interpret the contents of this table can be foundhere

0. Extension
Definition | This extension documents the features of a system using code/value pairs
2. Extension.extension
Control | 2..?
4. Extension.extension:definition
Slice Name | definition
Control | 1..1
Must Support | true
6. Extension.extension:definition.extension
Control | 0..0
8. Extension.extension:definition.url
Fixed Value | `definition`
10. Extension.extension:definition.value[x]
Control | 1..?
Type | canonical(Feature Definition)
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
12. Extension.extension:context
Slice Name | context
Control | 0..*
Must Support | true
14. Extension.extension:context.extension
Control | 0..0
16. Extension.extension:context.url
Fixed Value | `context`
18. Extension.extension:context.value[x]
Short | The context(s) on which this feature can be defined. The context(s) declared in this extension must align with one or more of the contexts in the FeatureDefinition.
Control | 1..?
Type | string
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
20. Extension.extension:value
Slice Name | value
Control | 1..1
Must Support | true
22. Extension.extension:value.extension
Control | 0..0
24. Extension.extension:value.url
Fixed Value | `value`
26. Extension.extension:value.value[x]
Short | The value of the feature. Must align with the type and ValueSet (if a code type) in the FeatureDefinition.
Control | 1..?
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
28. Extension.url
Fixed Value | `http://hl7.org/fhir/uv/application-feature/StructureDefinition/feature`
30. Extension.value[x]
Control | 0..0

Guidance on how to interpret the contents of this table can be foundhere

0. Extension
Definition | This extension documents the features of a system using code/value pairs
Short | Extension
Control | 0..*
Is Modifier | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
2. Extension.id
Definition | Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Short | Unique id for inter-element referencing
Control | 0..1 This element is affected by the following invariants: ele-1
Type | id
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
4. Extension.extension
Definition | An Extension
Short | Extension
Control | 2..*
Type | Extension
Is Modifier | false
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
Slicing | This element introduces a set of slices on `Extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
6. Extension.extension:definition
Slice Name | definition
Definition | An Extension
Short | Extension
Control | 1..1
Type | Extension
Is Modifier | false
Must Support | true
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
8. Extension.extension:definition.id
Definition | Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Short | Unique id for inter-element referencing
Control | 0..1 This element is affected by the following invariants: ele-1
Type | id
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
10. Extension.extension:definition.extension
Definition | An Extension
Short | Extension
Control | 0..0
Type | Extension
Is Modifier | false
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
Slicing | This element introduces a set of slices on `Extension.extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
12. Extension.extension:definition.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `definition`
14. Extension.extension:definition.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | Value of extension
Control | 1..1 This element is affected by the following invariants: ext-1
Type | canonical(Feature Definition)
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`)
16. Extension.extension:context
Slice Name | context
Definition | An Extension
Short | Extension
Control | 0..*
Type | Extension
Is Modifier | false
Must Support | true
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
18. Extension.extension:context.id
Definition | Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Short | Unique id for inter-element referencing
Control | 0..1 This element is affected by the following invariants: ele-1
Type | id
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
20. Extension.extension:context.extension
Definition | An Extension
Short | Extension
Control | 0..0
Type | Extension
Is Modifier | false
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
Slicing | This element introduces a set of slices on `Extension.extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
22. Extension.extension:context.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `context`
24. Extension.extension:context.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | The context(s) on which this feature can be defined. The context(s) declared in this extension must align with one or more of the contexts in the FeatureDefinition.
Control | 1..1 This element is affected by the following invariants: ext-1
Type | string
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`)
26. Extension.extension:value
Slice Name | value
Definition | An Extension
Short | Extension
Control | 1..1
Type | Extension
Is Modifier | false
Must Support | true
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
28. Extension.extension:value.id
Definition | Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
Short | Unique id for inter-element referencing
Control | 0..1 This element is affected by the following invariants: ele-1
Type | id
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
30. Extension.extension:value.extension
Definition | An Extension
Short | Extension
Control | 0..0
Type | Extension
Is Modifier | false
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`) ext-1: Must have either extensions or value[x], not both (`extension.exists() != value.exists()`)
Slicing | This element introduces a set of slices on `Extension.extension.extension`. The slices areUnordered and Open, and can be differentiated using the following discriminators: value @ url
32. Extension.extension:value.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `value`
34. Extension.extension:value.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | The value of the feature. Must align with the type and ValueSet (if a code type) in the FeatureDefinition.
Control | 1..1 This element is affected by the following invariants: ext-1
Type | Choice of: base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference, SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta
[x] Note | SeeChoice of Data Typesfor further information about how to use [x]
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`)
36. Extension.url
Definition | Source of the definition for the extension code - a logical name or a URL.
Short | identifies the meaning of the extension
Comments | The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.
Control | 1..1
Type | uri
Is Modifier | false
XML Format | In the XML format, this property is represented as an attribute.
Summary | false
Fixed Value | `http://hl7.org/fhir/uv/application-feature/StructureDefinition/feature`
38. Extension.value[x]
Definition | Value of extension - must be one of a constrained set of the data types (see Extensibility for a list).
Short | Value of extension
Control | 0..0 This element is affected by the following invariants: ext-1
Type | Choice of: base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference, SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta
Is Modifier | false
Primitive Value | This primitive element may be present, or absent, or replaced by an extension
Summary | false
Invariants | ele-1: All FHIR elements must have a @value or children (`hasValue() or (children().count() > id.count())`)