Obligation Discussion
0.4.1 - Working Draft to present the Concept Ideas and Background Details (FO)

Obligation Discussion - Local Development build (v0.4.1) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Actor

Optionen zum Umgang mit Requirements

The meaning of the mustSupport profile attribute used in the FHIR implementation guide can only be understood by reading it. To do this, the text must be carefully read and interpreted and implemented accordingly. From that no machine-readable derivation be extracted, so that the details are inaccessible or not usable for validators.

For implementations further details in the form of requirements and actors are necessary:

Option 1

With this option a reference is made to the actors:

Option1ElementItemActorOwnActor1DefinitionObligationObligation1Definitioninherits0..*contains/incldues0..*1..*points to0..*

The requirements are then attached to the actors and are implicitly set.

Definitions and examples on the artifacts page use “1” as the associated number. Instances use letters as identifier.

Option 2

In this variant, a reference is made to various requiremens:

Option2ElementItemActorOwnActor2DefinitionObligationSetObligation2Definitioninherits0..*contains/incldues0..*1..*points to0..*

The actors then aggregate the requirements.

Definitions and examples on the artifacts page use “2” as the associated number. Instances use letters as identifier.

Beispiel Requirements

In the following, a few concrete requirements are to be implemented in order to demonstrate the realization:

Use Case Demographic Consumption   Bracelet   Spiritual Leader
Activity to be stored to be printed to be displayed to be printed sent/forward
Element          
Patient          
.id SHALL exactly SHOULD equivalent SHOULD equivalent SHALL equivalent  
.name SHALL exactly SHOULD equivalent SHOULD equivalent SHALL equivalent SHOULD equivalent
.name.family     exact exact  
.name.given     truncate modify  
.name.given[0]     exact    
.name.given[1]     truncate    
.dob SHALL exactly SHOULD equivalent SHOULD equivalent SHALL equivalent  
.address SHALL equivalent          
.religion         SHOULD equivalent
.maritalStatus SHOULD equivalent        

Examples

1: via Actor
Option1 ExamplePatientidentifiernamedobreligionaddressmaritalStatusPatientConsumerDemographicsConsumerDemographicsConsumer1DemographicsConsumer2DemographicsConsumer3SpiritualAdviserConsumerBraceletPrinterDemographicConsumptionObligation1SHALLstoreExactlySHOULDprintEquivalentDemographicConsumptionObligation2SHALLstoreEquivalentDemographicConsumptionObligation3SHOULDstoreEquivalentBraceletPrinterObligationSHALLprintSHOULDdisplaySpiritualAdviserObligationSHOULDforwardEqivalent1..*0..*0..10..10..10..1points topoints topoints topoints topoints topoints topoints topoints topoints to
2: via Obligation
Option2 Example 1PatientidentifiernamedobreligionaddressmaritalStatusPatientConsumerDemographicsConsumerSpiritualAdviserConsumerBraceletPrinterDemographicConsumptionObligation1SHALLstoreExactlySHOULDprintEquivalentDemographicConsumptionObligation2SHALLstoreEquivalentDemographicConsumptionObligation3SHOULDstoreEquivalentBraceletPrinterObligationSHALLprintEquivalentSHOULDdisplayEquivalentSpiritualAdviserObligationSHOULDforwardEquivalent1..*0..*0..10..10..10..1points topoints topoints topoints topoints topoints topoints topoints topoints to
3: via detailed Obligation

In this example, the bracelet printer should choose any name. This may lead to using the birth name:

Option2 Example 2PatientidentifiernamenameAtBirthlegalNamedisplayNamePatientConsumerDemographicsConsumerBraceletPrinterDemographicConsumptionObligation1SHALLstoreExactlySHOULDprintEquivalentBraceletPrinterObligationSHOULDdisplayEquivalentBraceletPrinterObligation1SHALLprintExactlyBraceletPrinterObligation2SHALLprint1..*0..*points topoints topoints topoints topoints topoints to
4: via Obligation with more hierarchies

To select a current name for the Bracelet Printer, an artificial layer with currentName has been removed.

Option2 Example 3several names are grouped to simplify references to obligationsPatientidentifiernamecurrentNamenameAtBirthlegalNamedisplayNamefamilygivengivenFirstgivenSecondPatientConsumerDemographicsConsumerBraceletPrinterDemographicConsumptionObligation1SHALLstoreExactlySHOULDprintEquivalentBraceletPrinterObligation1SHALLprintExactlyBraceletPrinterObligation2SHALLprintModifyBraceletPrinterObligation3SHALLprintTruncateBraceletPrinterObligation4SHOULDdisplayExactBraceletPrinterObligation5SHOULDdisplayTruncate0..11..*1..10..11..*0..*points topoints topoints topoints topoints topoints topoints topoints topoints topoints topoints to
5:

An artificial level is avoided when a derivative is made as profile1 and profile2. In this case, profile 2 prohibits the use of the birth name via the cardinality 0..0:

Option2 Example 4grouping for names is done by derived profiles instead of grouping elementsname2 disallows use of name-at-birthPatient1identifiername1nameAtBirthdisplayNamelegalNamePatient2name2familygivengivenFirstgivenSecondPatientConsumerDemographicsConsumerBraceletPrinterDemographicConsumptionObligation1SHALLstoreExactlySHOULDprintEquivalentBraceletPrinterObligation1SHALLprintExactlyBraceletPrinterObligation2SHALLprintExactBraceletPrinterObligation3SHALLprintTruncateBraceletPrinterObligation4SHOULDdisplayExactBraceletPrinterObligation5SHOULDdisplayTruncatederivederive0..11..10..10..01..10..11..10..*1..*0..*0..*points topoints topoints topoints topoints topoints topoints topoints topoints topoints topoints to

Umsetzung in FHIR

The current solution in FHIR R5 is as follows:

FHIR R5 (current)ProfileActorDefinitiondescriptionpurposetype <PERSON|SYSTEM>RequirementsdescriptionpurposeStatementconformance <SHALL|SHOULD|MAY|SHOULD_NOT>requirementObligation Profile Flag Extensionmarks a profile as "obligation profile only"Obligation Ext.codedocumentationusagefilterfilterDocumentationprocessElementDefinitionconditionmustHaveValuevalueAlternativesmustSupportisSummarybindingStructureDefinitionderived fromderived fromactor0..*derived from0..*replaces mustSupport

This contains the relevant information in Obligation extension .code.

In all subsequent proposals, the bond is distributed among 2 classes, which are then to be implemented together as a resource:

Implementation Variant 1

Reference from a profile (require change of profile):

FHIR R5: Option 1ActorDefinitiondescriptionpurposetype <PERSON|SYSTEM>RequirementsdescriptionpurposeStatementconformance <SHALL|SHOULD|MAY|SHOULD_NOT>requirementElementDefinitionconditionmustHaveValuevalueAlternativesmustSupportisSummarybindingStructureDefinitionObligation SetiddocumentationusagefilterfilterDocumentationprocessObligation Detailsconformance_verbactivitydataExpectationderived fromderived fromactor0..*derived from0..*points toEach element pointsto individual obligationsby id.0..*1..*The obligation is optionallycontained in the profile.
Implementation Variant 2

Reference from the obligation (quire a change of the obligation):

FHIR R5: Option 2ActorDefinitiondescriptionpurposetype <PERSON|SYSTEM>RequirementsdescriptionpurposeStatementconformance <SHALL|SHOULD|MAY|SHOULD_NOT>requirementElementDefinitionconditionmustHaveValuevalueAlternativesmustSupportisSummarybindingStructureDefinitionObligation SetiddocumentationusagefilterfilterDocumentationprocessObligation Detailsconformance_verbactivitydataExpectationLinkThe link class binds obligation setsto individual elements, thuspreventing updates to the profile,and keeps both separated.derived fromderived fromactor0..*derived from0..*1..*The obligation is optionallycontained in the profile.Each element pointsto individual obligationsby id.
Implementation Variant 3

separate linking:

FHIR R5: Option 3ActorDefinitiondescriptionpurposetype <PERSON|SYSTEM>RequirementsdescriptionpurposeStatementconformance <SHALL|SHOULD|MAY|SHOULD_NOT>requirementElementDefinitionconditionmustHaveValuevalueAlternativesmustSupportisSummarybindingStructureDefinitionObligation SetiddocumentationusagefilterfilterDocumentationprocessObligation Detailsconformance_verbactivitydataExpectationderived fromderived fromactor0..*derived from0..*points toEach obligation set pointsto individual elementsby path.0..*1..*The obligation set isoptionally containedin the profile.