Obligation Discussion
0.5.1 - Working Draft to present the Concept Ideas and Background Details (FO)
Obligation Discussion, published by . This guide is not an authorized publication; it is the continuous build for version 0.5.1 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/frankoemig/obligation/ and changes regularly. See the Directory of published versions
| Official URL: http://obligation.oemig.de/fhir/StructureDefinition/new-obligation | Version: 0.1.0 | |||
| Draft as of 2026-03-26 | Computable Name: MyNewObligationExtension | |||
Modified Extension to handle the obligations as I would like to see it. Also allowing for my own codesystems - where necessary.
Context of Use
This extension may be used on the following element(s)
ElementDefinition
ElementDefinition.type
StructureDefinition
Usage info
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.
This structure is derived from Extension
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Extension | New Obligation Extension | |
![]() ![]() |
1..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 1..1 | Extension | Composite code describing the nature of the obligation |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "code" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: Proposed Obligation Codes VS (complete) (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "elementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | who is acting on behalf or for this obligation |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "actor" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(ActorDefinition) | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what is intended with this specific obligation instance - beyond the formal definition |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "documentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "valueCalculation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | references, eg. names, the element on which the value depends |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "referenceElementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | how to use this obligation, eg. for specific debatable fields like gender etc. |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "usage" | |
![]() ![]() ![]() ![]() |
0..1 | UsageContext | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filter" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what the filter should achieve |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filterDocumentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..* | Extension | process ... |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "process" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(code) | Value of extension | |
![]() ![]() |
1..1 | uri | "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Extension | New Obligation Extension | |
![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 1..1 | Extension | Composite code describing the nature of the obligation |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "code" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: Proposed Obligation Codes VS (complete) (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "elementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | who is acting on behalf or for this obligation |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "actor" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(ActorDefinition) | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what is intended with this specific obligation instance - beyond the formal definition |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "documentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "valueCalculation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | references, eg. names, the element on which the value depends |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "referenceElementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | how to use this obligation, eg. for specific debatable fields like gender etc. |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "usage" | |
![]() ![]() ![]() ![]() |
0..1 | UsageContext | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filter" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what the filter should achieve |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filterDocumentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..* | Extension | process ... |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "process" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(code) | Value of extension | |
![]() ![]() |
1..1 | uri | "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation" | |
Documentation for this format | ||||
This structure is derived from Extension
Summary
Complex Extension: Modified Extension to handle the obligations as I would like to see it. Also allowing for my own codesystems - where necessary.
Differential View
This structure is derived from Extension
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Extension | New Obligation Extension | |
![]() ![]() |
1..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 1..1 | Extension | Composite code describing the nature of the obligation |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "code" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: Proposed Obligation Codes VS (complete) (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "elementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | who is acting on behalf or for this obligation |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "actor" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(ActorDefinition) | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what is intended with this specific obligation instance - beyond the formal definition |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "documentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "valueCalculation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | references, eg. names, the element on which the value depends |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "referenceElementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | how to use this obligation, eg. for specific debatable fields like gender etc. |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "usage" | |
![]() ![]() ![]() ![]() |
0..1 | UsageContext | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filter" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what the filter should achieve |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filterDocumentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..* | Extension | process ... |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "process" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(code) | Value of extension | |
![]() ![]() |
1..1 | uri | "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Extension | New Obligation Extension | |
![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 1..1 | Extension | Composite code describing the nature of the obligation |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "code" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: Proposed Obligation Codes VS (complete) (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "elementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | who is acting on behalf or for this obligation |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "actor" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(ActorDefinition) | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what is intended with this specific obligation instance - beyond the formal definition |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "documentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "valueCalculation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | references, eg. names, the element on which the value depends |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "referenceElementId" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | how to use this obligation, eg. for specific debatable fields like gender etc. |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "usage" | |
![]() ![]() ![]() ![]() |
0..1 | UsageContext | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | When the obligation is on the profile itself, not a particular element, a list of elements to which it applies |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filter" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | an explanation of what the filter should achieve |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "filterDocumentation" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() ![]() |
S | 0..* | Extension | process ... |
![]() ![]() ![]() ![]() |
0..1 | id | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "process" | |
![]() ![]() ![]() ![]() |
0..1 | canonical(code) | Value of extension | |
![]() ![]() |
1..1 | uri | "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation" | |
Documentation for this format | ||||
This structure is derived from Extension
Summary
Complex Extension: Modified Extension to handle the obligations as I would like to see it. Also allowing for my own codesystems - where necessary.
Other representations of profile: CSV, Excel, Schematron
| Path | Status | Usage | ValueSet | Version | Source |
| Extension.extension:code.​value[x] | Base | required | Proposed Obligation Codes VS (complete) | 📦0.1.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|