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

Extension: New Obligation Extension

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

Usage info

Usages:

  • This Extension is not used by any profiles in this Implementation Guide

You can also check for usages in the FHIR IG Statistics

Formal Views of Extension Content

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension New Obligation Extension
... extension 1..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:code S 1..1 Extension Composite code describing the nature of the obligation
..... extension 0..0 Extension
..... url 1..1 uri "code"
..... value[x] 0..1 code Value of extension
Binding: Proposed Obligation Codes VS (complete) (required)
.... extension:elementId S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... extension 0..0 Extension
..... url 1..1 uri "elementId"
..... value[x] 0..1 string Value of extension
.... extension:actor S 0..1 Extension who is acting on behalf or for this obligation
..... extension 0..0 Extension
..... url 1..1 uri "actor"
..... value[x] 0..1 canonical(ActorDefinition) Value of extension
.... extension:documentation S 0..1 Extension an explanation of what is intended with this specific obligation instance - beyond the formal definition
..... extension 0..0 Extension
..... url 1..1 uri "documentation"
..... value[x] 0..1 string Value of extension
.... extension:valueCalculation S 0..1 Extension a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives
..... extension 0..0 Extension
..... url 1..1 uri "valueCalculation"
..... value[x] 0..1 string Value of extension
.... extension:referenceElementId S 0..1 Extension references, eg. names, the element on which the value depends
..... extension 0..0 Extension
..... url 1..1 uri "referenceElementId"
..... value[x] 0..1 string Value of extension
.... extension:usage S 0..1 Extension how to use this obligation, eg. for specific debatable fields like gender etc.
..... extension 0..0 Extension
..... url 1..1 uri "usage"
..... value[x] 0..1 UsageContext Value of extension
.... extension:filter S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... extension 0..0 Extension
..... url 1..1 uri "filter"
..... value[x] 0..1 string Value of extension
.... extension:filterDocumentation S 0..1 Extension an explanation of what the filter should achieve
..... extension 0..0 Extension
..... url 1..1 uri "filterDocumentation"
..... value[x] 0..1 string Value of extension
.... extension:process S 0..* Extension process ...
..... extension 0..0 Extension
..... url 1..1 uri "process"
..... value[x] 0..1 canonical(code) Value of extension
... url 1..1 uri "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation"

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension New Obligation Extension
... id 0..1 id Unique id for inter-element referencing
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:code S 1..1 Extension Composite code describing the nature of the obligation
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "code"
..... value[x] 0..1 code Value of extension
Binding: Proposed Obligation Codes VS (complete) (required)
.... extension:elementId S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "elementId"
..... value[x] 0..1 string Value of extension
.... extension:actor S 0..1 Extension who is acting on behalf or for this obligation
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "actor"
..... value[x] 0..1 canonical(ActorDefinition) Value of extension
.... extension:documentation S 0..1 Extension an explanation of what is intended with this specific obligation instance - beyond the formal definition
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "documentation"
..... value[x] 0..1 string Value of extension
.... extension:valueCalculation S 0..1 Extension a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "valueCalculation"
..... value[x] 0..1 string Value of extension
.... extension:referenceElementId S 0..1 Extension references, eg. names, the element on which the value depends
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "referenceElementId"
..... value[x] 0..1 string Value of extension
.... extension:usage S 0..1 Extension how to use this obligation, eg. for specific debatable fields like gender etc.
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "usage"
..... value[x] 0..1 UsageContext Value of extension
.... extension:filter S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "filter"
..... value[x] 0..1 string Value of extension
.... extension:filterDocumentation S 0..1 Extension an explanation of what the filter should achieve
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "filterDocumentation"
..... value[x] 0..1 string Value of extension
.... extension:process S 0..* Extension process ...
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "process"
..... value[x] 0..1 canonical(code) Value of extension
... url 1..1 uri "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation"

doco 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.

  • code: code: An Extension
  • elementId: string: Limits obligation to some repeats by FHIRPath
  • actor: canonical: An Extension
  • documentation: string: An Extension
  • valueCalculation: string: An Extension
  • referenceElementId: string: An Extension
  • usage: UsageContext: An Extension
  • filter: string: An Extension
  • filterDocumentation: string: An Extension
  • process: canonical: An Extension

Differential View

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension New Obligation Extension
... extension 1..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:code S 1..1 Extension Composite code describing the nature of the obligation
..... extension 0..0 Extension
..... url 1..1 uri "code"
..... value[x] 0..1 code Value of extension
Binding: Proposed Obligation Codes VS (complete) (required)
.... extension:elementId S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... extension 0..0 Extension
..... url 1..1 uri "elementId"
..... value[x] 0..1 string Value of extension
.... extension:actor S 0..1 Extension who is acting on behalf or for this obligation
..... extension 0..0 Extension
..... url 1..1 uri "actor"
..... value[x] 0..1 canonical(ActorDefinition) Value of extension
.... extension:documentation S 0..1 Extension an explanation of what is intended with this specific obligation instance - beyond the formal definition
..... extension 0..0 Extension
..... url 1..1 uri "documentation"
..... value[x] 0..1 string Value of extension
.... extension:valueCalculation S 0..1 Extension a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives
..... extension 0..0 Extension
..... url 1..1 uri "valueCalculation"
..... value[x] 0..1 string Value of extension
.... extension:referenceElementId S 0..1 Extension references, eg. names, the element on which the value depends
..... extension 0..0 Extension
..... url 1..1 uri "referenceElementId"
..... value[x] 0..1 string Value of extension
.... extension:usage S 0..1 Extension how to use this obligation, eg. for specific debatable fields like gender etc.
..... extension 0..0 Extension
..... url 1..1 uri "usage"
..... value[x] 0..1 UsageContext Value of extension
.... extension:filter S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... extension 0..0 Extension
..... url 1..1 uri "filter"
..... value[x] 0..1 string Value of extension
.... extension:filterDocumentation S 0..1 Extension an explanation of what the filter should achieve
..... extension 0..0 Extension
..... url 1..1 uri "filterDocumentation"
..... value[x] 0..1 string Value of extension
.... extension:process S 0..* Extension process ...
..... extension 0..0 Extension
..... url 1..1 uri "process"
..... value[x] 0..1 canonical(code) Value of extension
... url 1..1 uri "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation"

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 0..* Extension New Obligation Extension
... id 0..1 id Unique id for inter-element referencing
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:code S 1..1 Extension Composite code describing the nature of the obligation
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "code"
..... value[x] 0..1 code Value of extension
Binding: Proposed Obligation Codes VS (complete) (required)
.... extension:elementId S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "elementId"
..... value[x] 0..1 string Value of extension
.... extension:actor S 0..1 Extension who is acting on behalf or for this obligation
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "actor"
..... value[x] 0..1 canonical(ActorDefinition) Value of extension
.... extension:documentation S 0..1 Extension an explanation of what is intended with this specific obligation instance - beyond the formal definition
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "documentation"
..... value[x] 0..1 string Value of extension
.... extension:valueCalculation S 0..1 Extension a specific formula how the value for the attached field can be created/calculated; this is esp. for FHIR narratives
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "valueCalculation"
..... value[x] 0..1 string Value of extension
.... extension:referenceElementId S 0..1 Extension references, eg. names, the element on which the value depends
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "referenceElementId"
..... value[x] 0..1 string Value of extension
.... extension:usage S 0..1 Extension how to use this obligation, eg. for specific debatable fields like gender etc.
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "usage"
..... value[x] 0..1 UsageContext Value of extension
.... extension:filter S 0..1 Extension When the obligation is on the profile itself, not a particular element, a list of elements to which it applies
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "filter"
..... value[x] 0..1 string Value of extension
.... extension:filterDocumentation S 0..1 Extension an explanation of what the filter should achieve
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "filterDocumentation"
..... value[x] 0..1 string Value of extension
.... extension:process S 0..* Extension process ...
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "process"
..... value[x] 0..1 canonical(code) Value of extension
... url 1..1 uri "http://obligation.oemig.de/fhir/StructureDefinition/new-obligation"

doco 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.

  • code: code: An Extension
  • elementId: string: Limits obligation to some repeats by FHIRPath
  • actor: canonical: An Extension
  • documentation: string: An Extension
  • valueCalculation: string: An Extension
  • referenceElementId: string: An Extension
  • usage: UsageContext: An Extension
  • filter: string: An Extension
  • filterDocumentation: string: An Extension
  • process: canonical: An Extension

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

Path Status Usage ValueSet Version Source
Extension.extension:code.​value[x] Base required Proposed Obligation Codes VS (complete) 📦0.1.0 This IG

Constraints

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()