FHIR © HL7.org  |  FHIRsmith 4.0.1  |  Server Home  |  XIG Home  |  XIG Stats  | 

FHIR IG analytics

Packageobligation
Resource TypeCodeSystem
IdCodeSystem-obligationProposed.json
FHIR VersionR5
Sourcehttps://build.fhir.org/ig/frankoemig/obligation/CodeSystem-obligationProposed.html
URLhttp://v2.hl7.org/fhir/CodeSystem/obligationProposed
Version0.1.0
Statusdraft
Date2026-03-26T16:58:18+00:00
NameObligationProposedCodes
TitleProposed Obligation Codes
DescriptionThis codesystem is a **proposal for obligation codes** in response to Grahame's codesystem for obligations. It represents an ontology that not only combines the other three codesystems (verb, obligation, data expectation), but also introduces some more axes/dimensions to better explain the meaning of the codes.
CopyrightConformance WG
Contentcomplete

Resources that use this resource

ConceptMap
obligation#currentMapOriginalToProposedMapOriginalToProposed Mapping
ValueSet
obligation#currentobligationContentConsumptionProposedProposed Content-consumption-oriented Obligation Codes VS
obligation#currentobligationContentCreationProposedProposed Content-creation-oriented Obligation Codes VS
obligation#currentobligationProposedProposed Obligation Codes VS (complete)
obligation#currentobligationProposedActiveProposed Obligation Codes VS (active only)
obligation#currentobligationTransportProposedProposed Transport-oriented Obligation Codes VS

Resources that this resource uses

No resources found


Narrative

Note: links and images are rebased to the (stated) source

Generated Narrative: CodeSystem obligationProposed

Language: en

Properties

This code system defines the following properties for its concepts

NameCodeURITypeDescription
Parentparenthttp://hl7.org/fhir/concept-properties#parentcodeWho is the parent element of this concept? Multiple parents are possible.
negationnegationbooleanNegating the underlying combination of concepts.
Not Selectableabstracthttp://hl7.org/fhir/concept-properties#notSelectablebooleanIs this an abstract concept, ie. defined to establish the ontology, so that it cannot be used directly. (only valid for the concept where it is defined)
testabletestablecodeIs this a testable requirement?
Commentcommenthttp://hl7.org/fhir/concept-properties#commentstringComment from Conformance WG
converseconversecodeWhat is the opposite item
constrainToconstrainTocodeWhat is a possible constraint? This can be done with the hierarchy, or, in case of conformance verbs, explicitly following this option, although this is not recommended.
applyOnapplyOncodeApply on which element level: root, node, leaf, all, notRoot, notLeaf
actoractorcodeActor

Concepts

This case-sensitive code system http://v2.hl7.org/fhir/CodeSystem/obligationProposed defines the following codes in a Is-A hierarchy:

LvlCodeDisplayDefinitionParentnegationNot SelectabletestableCommentconverseconstrainToapplyOn
1Negation NegationNegate the meaning of the concepts that inherit 'negation'. (Negation is not negated again.)truetrueIn principle, negation is to be inherited from concepts that are negated already. Therefore, a negation shall only take effect once, and not negate a negation.
1Verbs conformance verbsConformance verbs are to be used to define the requirement level that is the foundation to indicate what has to be tested.trueConformance verbs are primarily interesting for testing, i.e. to indicate what has to be tested. The other concepts can be taken as hints to a developer.
2  MAY MAYit is to the developers choice whether an element is supported or notVerbsnotTestableMAY primarily provides additional general information, but is still for the discretion of the implementer/developer.MAYNOTSHOULD, SHOULDNOT
3    SHOULD SHOULDIt is a recommendation to take care of this elementMAYJust a hint.SHALL, SHOULDNOT, SHALLNOT
4      SHALL SHALLThis verb denotes a testable requirement.SHOULDtestable
2  MAYNOT MAYNOTIt is to the developers choice whether an element is probably not supported.Verbs, NegationtruenotTestableMAYNOT is no reasonable option. It is mentioned though to complete the hierarchy.MAY
3    SHOULDNOT SHOULD NOTit is a recommendation NOT to take care of this element (for some reasons)MAYNOTtrueSHOULDSHALLNOT, SHOULD, SHALL
4      SHALLNOT SHALL NOTit is forbidden to handle this elementSHOULDNOTtruetestableIt may happen for some elements, eg. due to security reasons, not to handle (provided/store/etc.) this element.SHALL
1FunctionalType Functional Type of RequirementFunctional Type of Requirementtrue
2  functional functionalfunctional requirementFunctionalType
3    internal internal functionalfunction that operates on the internal data managementfunctional
3    return return functionalfunctional requirement on direct returnsfunctional
3    response response functionfunctional requirement to prepare responsesfunctional
3    forward forwarding functionfunctional requirement to forward datafunctional
2  data datadata requirementFunctionalType
1Testable Type of TestingType of Testingtrue
2  testable testablerequirement is testableTestable
3    testableByMachine machine testablerequirement is testable by a machinetestable
3    testableByHuman human testablerequirement is testable by a human (inspection)testable
4      withChecklist checklistrequirement is testable by using a checklisttestableByHuman
2  notTestable testablerequirement is not testableTestabletrue
1ActorType Type of ActorAn actor can operate in two ways: with the content itself, or as a manager of the instance.true
2  transport transporthandle the transport of data once the instance is available/accessibleActorTypenot sure whether this (and everything related) has to be taken out of this spec?
2  content content mngmtmanage the data itselfActorType
1Actor Actor of CommunicationActor, i.e. indirect direction of communicationtrue
2  both sender and/or receiverboth: sender+receiver resp. creator+consumerActortruean actor can only do one thing at a certain point in time. Therefore, both is not allowed and only listed for documentation.
2  sender sendersender (transmitter) of dataActor, transportSender does not necessarily need to create the instance.
2  receiver receiverreceiver of dataActor, transport
2  creator creatorcreator of dataActor, contentCreator does not necessarily need to send the instance.
2  consumer consumerConsumer of dataActor, content
2  router routerrouter of data: shall be receiver and sender!Actor, transporttrueA router is in principle a combination of receiver and sender, w/ possible changes on the data in between. It should be described as such.
1Device Device for ActivityDevice to be used for the activitytrue
2  screen screenscreen/displayDevice
3    wideScreen wide screenwide screen/displayscreen
3    radScreen radiologic screenscreen/display capable of showing radiologic resultsscreen
2  printer printerprinterDevice
3    laserPrinter laser printerlaser printerprinter
3    matrixPrinter matrix printermatrix printerprinterSometimes it is important to use a matrix printer, esp. for creating carbon copies.
2  portableStorage portable storage deviceportable storage deviceDevice
3    usbStick usb stickUSB StickportableStorage
3    tapeDrive tape drivetape driveportableStorage
1Media Mediadifferent media to be used with specialised devicestrue
2  paper paperpaperMedia
2  stick stickstickMedia
2  disc discdiscMedia
2  tape tapetapeMedia
1ElementLevel Level of ApplicationOn which level to apply this obligation: root, node, or leaftrue
2  root on root nodeapply obligation on root node onlyElementLevelnotRoot
2  node on any nodeapply on any node that is not root or leafElementLevel
2  leaf on leaf nodeapply on leaf node onlyElementLevel
2  all on all levelsapplication on all levels possibleElementLevel
2  notRoot all but rootapply on non-root nodes onlyElementLevelroot
2  notLeaf all but leafapply on non-leaf nodesElementLevel
1Activity ActivityActivities, aka of general obligationtrue
2  FunctionalObligations Functional ObligationsFunctional Obligation describing processsing functionalitiesActivitytrue
3    ProducerObligations Resource Producer ObligationsFunctionalObligationstrue
4      send sendconvey instance with values to somewhereProducerObligations, senderroot
4      populate populatepopulate with values from somewhereProducerObligations, creatorprohibited elements can be expressed by 'SHALL NOT send'.
5        from-ui from UITake the data from UI, so that the user has the ability to enter it.populate
5        from-store from persistence layerTake data from storage/persistence layer.populate
5        generate generate this dataThis data can be generated.populate
6          from-other generate from other valuesThis data can be generated from other data.generate
6          sequence generate a sequence numbergenerate
5        from-input from input streamAs a router, take data from input stream.populate, router
5        as-constant constantadded as constant to the data, no special treatment done internallypopulate
5        into-narrative narrativeadded to the narrative, no special treatment done internallypopulate
3    ConsumerObligations Resource Consumer ObligationsObligation for ConsumerFunctionalObligations, receivertrue
4      receive receivereceive data form somewhereConsumerObligations, receiverroot
4      process processhandle data from instances as needed for general message consumption, store permitted.ConsumerObligations, consumerelements that are to be ignored can be expressed by 'SHALL NOT process'.
5        follow-up follow-up activitywhat to do internallyprocess
6          display display/present (UI)present the data on a displayfollow-up
6          persist persistpersist/store the data somewhererouter, follow-up
7            archive archivepersist/store the archive which ensures longlasting accesspersist
7            in-database persist in a databasepersist in a databasepersisttoo explicit/dedicated, concerns application details
7            in-file store in a filestore in a filepersisttoo explicit/dedicated, concerns application details
6          print printprint the data (somewhere)follow-up
6          eval evaluateconsider the data in order to interpret other correctlyfollow-up
6          integrate integrate into datato UPDATE existing data by merging other data with the existing data in a controlled mannerfollow-up
5        respond activity as responsewhat to respondprocess
6          warning return warningsreturn possible warningsrespond
7            error return errorreturn possible errorswarning
7            reject-invalid reject invalid datareject if data is invalidwarning
6          accept-invalid accept invalid dataaccept if data is invalidrespond
3    ExchangerObligations Resource Exchanger Obligationsneeds clarification ...FunctionalObligations, both, routertrue
4      route route forwardas a router forward to the next recipientExchangerObligationsfalse
3    OtherObligations Resource Other ObligationsOther obligations beyond what has been described above.FunctionalObligationstrue
4      explain explainprovide an explanation in a capability statement how this element is handledOtherObligations
4      document documentdocument the use of this element in a separate documentOtherObligations
2  DataObligation Obligations on DataData ObligationsActivity, creator, consumertrueThe following codes may apply to creator and consumer. For example 'do not modify from UI'.
3    expected expecteddata fits to expectations/specificationDataObligationThis applies to recipients and denotes that the data should be present according to the specification, i.e. is specified.
4      unaltered preservepreserve what you getexpectedThat may also be used to take data from UI without any modifications.
5        exactly exactlyexactly what is specified, nothing elseunalterednot sure whether 'unaltered' is sufficient so that we can drop that!?
4      modify modifyallow for modifications of the dataexpected, consumerCovers all types of modifications to data.
5        assocation assocationtaken by associationmodify
5        equivalent equivalentin an equivalent waymodify
5        translate translateData received is preserved by 1:1 mapping/translation to an internal value that is semantically equivalent, that preserves the temporal aspect of the translation.modify
6          semantically translate semanticallyTwo concepts are semantically equivalent if they can substitute for each other in the defined use case with no loss of information used to define the concept.translate
6          clinically translate clinicallyTwo concepts are clinically equivalent if they can substitute for each other in the defined use case with no impact on clinical interpretation by a trained clinician. This may include further refinements based on the specific domain, e.g., for Lab use case, this would require interpretation that includes the impact of differences in normal ranges.translate
5        reference referenceUse referenced data based on stored pointer; stored data is displayed by linking to the corresponding stored value most often the case for data elements that are STORED EXACT by ASSOCIATION.modify
5        truncate cut off datacut off remaining characters from the data thereby shortening the datamodify
5        more-details additional details/valuesextends the expected data with more/own information, e.g. appartment if street is specifiedmodify, creatorThis is in principle not a modification...
5        more-structure additional substructuresprovides the data with more granular details, e.g. house number for an address linemodify, creatorThis is in principle not a modification...
5        missing data is missing/not availableprovide a null-flavor/absent reasonmodify, creatorIn FHIR this is the permission/indication for a data-absent-reason or something similar. In V3 it is null-flavor.
5        constant added as a constantthis value has no valid representation or meaning in the sending application, it is just added because it is required to be theremodify
3    unexpected unexpected valueshow to manage unexpected data (as sender or receiver)DataObligation
4      replaces new/other valuesreplaces the expected data by something elseunexpected
4      consider consider unexpected valuestake vare of values that are coming but not described/specified. Allows for warningsunexpected
1CombinedObligations combined obligationsThe children can be used to encode obligations for data elements. Terms in parenthesis are shown for readability. This list is not complete, and only provides some reasonable samples.trueThe following list is just a snippet and should be enhanced during the discussion..., The hierarchy has to discarded because not everything is explicitly modelled.
1MAY:populate MAY populate with dataConformant applications MAY take and provide data.CombinedObligations, MAY, populateis this a useful combination?
1MAY:populate:missing MAY populate data element with why orig data is missingConformant applications MAY populate the element why the original data is missing.MAY:populate, missing
1MAY:(populate)from-ui MAY populate with data taken from uiConformant applications MAY take data from a UI and provide it.CombinedObligations, MAY, from-ui
1SHOULD:populate SHOULD populate with dataConformant applications SHOULD take and provide data.CombinedObligations, MAY:populate
1MAY:(populate)into-narrative MAY populate into-narrativeConformant applications MAY populate element into narrative text as well.CombinedObligations, SHOULD:populatediscuss whether other representation forms are better
1SHOULD:(populate)into-narrative SHOULD populate into-narrativeConformant applications SHOULD populate element into narrative text as well.CombinedObligations, MAY:(populate)into-narrativediscuss whether other representation forms are better
1SHALL:(populate)into-narrative SHALL populate into-narrativeConformant applications SHALL populate element into narrative text as well.CombinedObligations, SHOULD:(populate)into-narrativediscuss whether other representation forms are better
1SHOULDNOT:(populate)into-narrative SHOULD NOT populate into-narrativeConformant applications SHOULD NOT populate element into narrative text.CombinedObligationsSHOULD:(populate)into-narrative
1SHALLNOT:(populate)into-narrative SHALL NOT populate into-narrativeConformant applications SHALL NOT populate element into narrative text.CombinedObligations, SHOULDNOT:(populate)into-narrativeSHALL:(populate)into-narrative
1SHALL:populate SHALL populate with dataConformant applications SHOULD take and provide data.SHOULD:populate
1SHOULD:(populate)from-ui SHOULD populate with data taken from uiConformant applications SHOULD take data from a UI and provide it.CombinedObligations, SHOULD, from-ui, creator
1SHALL:(populate)from-ui SHALL populate data taken from uiConformant applications SHALL take data from a UI and provide it.SHOULD:(populate)from-ui, SHALL, from-uitestableByHuman
1SHALL:(populate)from-ui:more-details SHALL populate with data taken from ui perhaps with more detailsConformant applications SHALL take data from a UI and bring it into the instance. It is allowed to provide more details then specified.SHALL:(populate)from-ui, more-details
1SHOULD:send SHOULD send the instanceConformant applications SHOULD send the instance.CombinedObligations
2  SHALL:send SHALL send the instanceConformant applications SHALL send the instance.CombinedObligations, SHALL, send, sendertestableByMachineroot
1MAY:persist MAY store the dataConformant applications MAY store the data.CombinedObligations, MAY, persist
1SHOULD:persist SHOULD store the dataConformant applications SHOULD store the data.CombinedObligations
2  SHALL:persist SHALL store the data somewhereConformant applications SHALL store the data in some way.CombinedObligations, SHALL, persisttestableByHuman
3    SHALL:persist:exactly SHALL store the data somewhere, but exactly as is sentConformant applications SHALL store the data in a way that the originally data from the instance can be reestablished.CombinedObligations, SHALL, persist, exactlytestableByHuman
2  SHOULD:(persist)in-database SHOULD store the data in a databaseConformant applications are asked to store the data in a database.CombinedObligations, SHOULD, persist, in-database
2  SHALLNOT:populate:more-details SHALL NOT populate more data than is specifiedConformant applications SHALL NOT populatae more data than is specified. The specification is closed.CombinedObligations, SHALLNOT, populate, more-details, creatortruetestableByMachine
2  SHALLNOT:populate:missing SHALL NOT populate info about missing data, ie. data absent reasonsConformant applications SHALL NOT populate a reason for missing information.CombinedObligations, SHALLNOT, populate, missing, creatortrue
2  MAY:populate:more-structure MAY populate the data in more structured wayConformant applications are allowed to populate the data with more structure. For example, to split an address line into streetname and house number.CombinedObligations, MAY, populate, more-structure
2  SHALLNOT:follow-up:truncate SHALL NOT truncate dataConformant applications SHALL NOT cut off data.CombinedObligations, SHALLNOT, follow-up, truncate, consumertruetestableByHuman
2  MAY:modify MAY modify the dataConformant applications MAY, i.e. are allowed to modify the data.CombinedObligations, MAY, modifynice hint
2  MAY:print MAY print dataConformant applications MAY print the data.CombinedObligations, MAY, print
2  SHOULD:print SHOULD print dataConformant applications SHOULD print the data.CombinedObligations, SHOULD, print
2  SHALL:print SHALL print dataConformant applications SHALL print the data.CombinedObligations, SHALL, print, consumertestableByHuman
1SHALLNOT:(populate):in-narrative SHALL NOT add to narrativeConformant applications SHALL NOT add this data to the narrative.CombinedObligations, SHALLNOT, populate, into-narrative, creatortestableByHuman
1MAY:process MAY process the dataConformant applications MAY process the data somehow.CombinedObligations, MAY, processThere is no further specification in which way the data can be processed.
1SHOULD:process SHOULD process the dataConformant applications SHOULD process the data in some meaningful way.CombinedObligations, MAY:process
1SHALL:process SHALL process the dataConformant applications SHALL process the data in some meaningful way.CombinedObligations, SHOULD:process
1SHOULDNOT:process SHOULD NOT process the dataConformant applications SHOULD NOT process the data in some meaningful way.CombinedObligations, SHOULDNOT, process
1SHALLNOT:process SHALL NOT process the dataConformant applications SHALL NOT process the data in some meaningful way.SHOULDNOT:process, SHALLNOT, process
1SHOULD:document SHOULD document how the data is usedConformant applications SHOULD document the way the data is used in some (meaningful) way.CombinedObligations, SHOULD, document
1SHALL:document SHALL document how the data is usedConformant applications SHALL document the way the data is used in some (meaningful) way.SHOULD:document, SHALL, document
1SHOULD:display SHOULD display the dataConformant applications SHOULD display the data in some meaningful way.CombinedObligations, SHOULD, display
1SHALL:display SHALL display the dataConformant applications SHALL display the data in some meaningful way.CombinedObligations, SHOULD:display
1SHOULDNOT:modify SHOULD NOT modify the dataConformant applications SHOULD NOT modiify the data in any way.CombinedObligations, SHOULDNOT, modify
1SHALLNOT:modify SHALL NOT modify the dataConformant applications SHALL NOT modiify the data in any way.CombinedObligations, SHALLNOT, modify
1MAYNOT:process MAY NOT process dataConformant applications MAY NOT process data, aka of ignoring.CombinedObligations, MAYNOT, processthis is equivalent to MAY:ignore.
1SHOULD:reject-invalid SHOULD reject invalid dataConformant applications SHOULD reject invalid data.CombinedObligations, SHOULD, reject-invalid
1SHALL:reject-invalid SHALL reject invalid dataConformant applications SHALL reject invalid data.CombinedObligations, SHALL, reject-invalid
1SHOULD:accept-invalid SHOULD accept invalid dataConformant applications SHOULD accept invalid data.CombinedObligations, SHOULD, accept-invalid
1SHALL:accept-invalid SHALL accept invalid dataConformant applications SHALL accept invalid data.CombinedObligations, SHALL, accept-invalid
1SHOULD:receive SHOULD be able to receive the dataConformant applications SHOULD be able to receive the data.CombinedObligations, SHOULD, receive
1SHALL:receive SHALL be able to receive the dataConformant applications SHALL be able to receive the data.CombinedObligations, SHALL, receive
1SHOULDNOT:error SHOULD NOT return an error to the sender of the dataConformant applications SHOULD NOT reurn an erorr to the sender of the data.CombinedObligations, SHOULDNOT, error
1SHALLNOT:error SHALL NOT return an error to the sender of the dataConformant applications SHALL NOT reurn an erorr to the sender of the data.CombinedObligations, SHALLNOT, error
1ForeignStandards concept codes from other standardsOther standards use specific terms for optionality/usage that should be conceptualized here.CombinedObligationstrue
1v2 v2 concept codesoptionality/usage codes from v2ForeignStandardstrue
2  v2-r v2: Rrequired in v2.xv2, SHALL, populateminCard = 1
2  v2-re v2: RErequired but may be empty in v2.xv2, SHALL, populateminCard = 0
2  v2-x v2: Xforbidden in v2v2, SHOULDNOT, populate, process
2  v2-b v2: Bbackwards use in v2 onlyv2, SHOULDNOT
2  v2-w v2: Wwithdrawn use in v2 onlyv2, SHOULDNOT, populate, process
1v3 V3 concept codesoptionality/usage codes from V3/CDAForeignStandardstrue
2  v3-m v3: Mmandatory in HL7 V3v3, SHALL, populate, exactly, SHALLNOT:populate:missingA value must be present and null-flavors are not allowed; to be combined with minCard = 1
2  v3-r v3: Rrequired in HL7 V3v3, SHALL, populate, MAY:populate:missingA value must be present but it can be a null-flavors
2  v3-x v3: Xforbidden in HL7 V3v3, SHALLNOT, populate
1ihe IHE concept codesoptionality/usage codes from IHEForeignStandardstrue
2  ihe-r IHE: Rrequired in IHE v2.x specsihe
2  ihe-r2 IHE: R2R2 in IHE v2.x specsihe, SHALL:process, SHOULD:populateThis is interpreted as the receiver has to support it, but when becoming the sender it is not really necessary to return it again
2  ihe-x IHE: XX in IHE v2.x specsiheforbidden?
1xDT German xDT standardsThe German xDT standard family has a very specific set of codes and is just presented here for completeness and demonstration purposesForeignStandardstrueall concept codes are to processed by the receiver; different requirements for sender
2  xDT-M xDT: MMUSS in xDT (unbedingtes Mussfeld)xDT, SHALL, SHALL:process, SHALL:populateminCard=1
2  xDT-m xDT: mmuss in xDT (bedingtes Mussfeld)xDT, SHALL, SHALL:process, SHALL:populatedepends on the value of another field
2  xDT-K xDT: KKANN in xDT (unbedingts KANNfeld)xDT, SHALL, SHALL:process, SHALL:populate
2  xDT-k xDT: kkann in xDT (bedingtes Kannfeld)xDT, SHALL, SHALL:process, SHALL:populatedepends on the value of another field

Source1

{
  "resourceType": "CodeSystem",
  "id": "obligationProposed",
  "language": "en",
  "text": {
    "status": "generated",
    "div": "<!-- snip (see above) -->"
  },
  "url": "http://v2.hl7.org/fhir/CodeSystem/obligationProposed",
  "version": "0.1.0",
  "name": "ObligationProposedCodes",
  "title": "Proposed Obligation Codes",
  "status": "draft",
  "experimental": true,
  "date": "2026-03-26T16:58:18+00:00",
  "contact": [
    {
      "telecom": [
        {
          "system": "url",
          "value": "http://www.hl7.org/Special/committees/conformancewg"
        }
      ]
    }
  ],
  "description": "This codesystem is a **proposal for obligation codes** in response to Grahame's codesystem for obligations.\nIt represents an ontology that not only combines the other three codesystems (verb, obligation, data expectation), but also introduces some more axes/dimensions \nto better explain the meaning of the codes.",
  "copyright": "Conformance WG",
  "caseSensitive": true,
  "hierarchyMeaning": "is-a",
  "compositional": true,
  "content": "complete",
  "count": 177,
  "property": [
    {
      "code": "parent",
      "uri": "http://hl7.org/fhir/concept-properties#parent",
      "description": "Who is the parent element of this concept? Multiple parents are possible.",
      "type": "code"
    },
    {
      "code": "negation",
      "description": "Negating the underlying combination of concepts.",
      "type": "boolean"
    },
    {
      "code": "abstract",
      "uri": "http://hl7.org/fhir/concept-properties#notSelectable",
      "description": "Is this an abstract concept, ie. defined to establish the ontology, so that it cannot be used directly. (only valid for the concept where it is defined)",
      "type": "boolean"
    },
    {
      "code": "testable",
      "description": "Is this a testable requirement?",
      "type": "code"
    },
    {
      "code": "comment",
      "uri": "http://hl7.org/fhir/concept-properties#comment",
      "description": "Comment from Conformance WG",
      "type": "string"
    },
    {
      "code": "converse",
      "description": "What is the opposite item",
      "type": "code"
    },
    {
      "code": "constrainTo",
      "description": "What is a possible constraint? This can be done with the hierarchy, or, in case of conformance verbs, explicitly following this option, although this is not recommended.",
      "type": "code"
    },
    {
      "code": "applyOn",
      "description": "Apply on which element level: root, node, leaf, all, notRoot, notLeaf",
      "type": "code"
    },
    {
      "code": "actor",
      "description": "Actor",
      "type": "code"
    }
  ],
  "concept": [
    {
      "code": "Negation",
      "display": "Negation",
      "definition": "Negate the meaning of the concepts that inherit 'negation'. (Negation is not negated again.)",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        },
        {
          "code": "negation",
          "valueBoolean": true
        },
        {
          "code": "comment",
          "valueString": "In principle, negation is to be inherited from concepts that are negated already. Therefore, a negation shall only take effect once, and not negate a negation."
        }
      ]
    },
    {
      "code": "Verbs",
      "display": "conformance verbs",
      "definition": "Conformance verbs are to be used to define the requirement level that is the foundation to indicate what has to be tested.",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        },
        {
          "code": "comment",
          "valueString": "Conformance verbs are primarily interesting for testing, i.e. to indicate what has to be tested. The other concepts can be taken as hints to a developer."
        }
      ],
      "concept": [
        {
          "code": "MAY",
          "display": "MAY",
          "definition": "it is to the developers choice whether an element is supported or not",
          "property": [
            {
              "code": "parent",
              "valueCode": "Verbs"
            },
            {
              "code": "constrainTo",
              "valueCode": "SHOULD"
            },
            {
              "code": "constrainTo",
              "valueCode": "SHOULDNOT"
            },
            {
              "code": "testable",
              "valueCode": "notTestable"
            },
            {
              "code": "converse",
              "valueCode": "MAYNOT"
            },
            {
              "code": "comment",
              "valueString": "MAY primarily provides additional general information, but is still for the discretion of the implementer/developer."
            }
          ],
          "concept": [
            {
              "code": "SHOULD",
              "display": "SHOULD",
              "definition": "It is a recommendation to take care of this element",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "MAY"
                },
                {
                  "code": "constrainTo",
                  "valueCode": "SHALL"
                },
                {
                  "code": "constrainTo",
                  "valueCode": "SHOULDNOT"
                },
                {
                  "code": "constrainTo",
                  "valueCode": "SHALLNOT"
                },
                {
                  "code": "comment",
                  "valueString": "Just a hint."
                }
              ],
              "concept": [
                {
                  "code": "SHALL",
                  "display": "SHALL",
                  "definition": "This verb denotes a testable requirement.",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "SHOULD"
                    },
                    {
                      "code": "testable",
                      "valueCode": "testable"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "code": "MAYNOT",
          "display": "MAYNOT",
          "definition": "It is to the developers choice whether an element is probably not supported.",
          "property": [
            {
              "code": "parent",
              "valueCode": "Verbs"
            },
            {
              "code": "abstract",
              "valueBoolean": true
            },
            {
              "code": "parent",
              "valueCode": "Negation"
            },
            {
              "code": "converse",
              "valueCode": "MAY"
            },
            {
              "code": "comment",
              "valueString": "MAYNOT is no reasonable option. It is mentioned though to complete the hierarchy."
            },
            {
              "code": "testable",
              "valueCode": "notTestable"
            }
          ],
          "concept": [
            {
              "code": "SHOULDNOT",
              "display": "SHOULD NOT",
              "definition": "it is a recommendation NOT to take care of this element (for some reasons)",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "MAYNOT"
                },
                {
                  "code": "negation",
                  "valueBoolean": true
                },
                {
                  "code": "constrainTo",
                  "valueCode": "SHALLNOT"
                },
                {
                  "code": "constrainTo",
                  "valueCode": "SHOULD"
                },
                {
                  "code": "constrainTo",
                  "valueCode": "SHALL"
                },
                {
                  "code": "converse",
                  "valueCode": "SHOULD"
                }
              ],
              "concept": [
                {
                  "code": "SHALLNOT",
                  "display": "SHALL NOT",
                  "definition": "it is forbidden to handle this element",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "SHOULDNOT"
                    },
                    {
                      "code": "negation",
                      "valueBoolean": true
                    },
                    {
                      "code": "testable",
                      "valueCode": "testable"
                    },
                    {
                      "code": "converse",
                      "valueCode": "SHALL"
                    },
                    {
                      "code": "comment",
                      "valueString": "It may happen for some elements, eg. due to security reasons, not to handle (provided/store/etc.) this element."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "code": "FunctionalType",
      "display": "Functional Type of Requirement",
      "definition": "Functional Type of Requirement",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "functional",
          "display": "functional",
          "definition": "functional requirement",
          "property": [
            {
              "code": "parent",
              "valueCode": "FunctionalType"
            }
          ],
          "concept": [
            {
              "code": "internal",
              "display": "internal functional",
              "definition": "function that operates on the internal data management",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "functional"
                }
              ]
            },
            {
              "code": "return",
              "display": "return functional",
              "definition": "functional requirement on direct returns",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "functional"
                }
              ]
            },
            {
              "code": "response",
              "display": "response function",
              "definition": "functional requirement to prepare responses",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "functional"
                }
              ]
            },
            {
              "code": "forward",
              "display": "forwarding function",
              "definition": "functional requirement to forward data",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "functional"
                }
              ]
            }
          ]
        },
        {
          "code": "data",
          "display": "data",
          "definition": "data requirement",
          "property": [
            {
              "code": "parent",
              "valueCode": "FunctionalType"
            }
          ]
        }
      ]
    },
    {
      "code": "Testable",
      "display": "Type of Testing",
      "definition": "Type of Testing",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "testable",
          "display": "testable",
          "definition": "requirement is testable",
          "property": [
            {
              "code": "parent",
              "valueCode": "Testable"
            }
          ],
          "concept": [
            {
              "code": "testableByMachine",
              "display": "machine testable",
              "definition": "requirement is testable by a machine",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "testable"
                }
              ]
            },
            {
              "code": "testableByHuman",
              "display": "human testable",
              "definition": "requirement is testable by a human (inspection)",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "testable"
                }
              ],
              "concept": [
                {
                  "code": "withChecklist",
                  "display": "checklist",
                  "definition": "requirement is testable by using a checklist",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "testableByHuman"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "code": "notTestable",
          "display": "testable",
          "definition": "requirement is not testable",
          "property": [
            {
              "code": "parent",
              "valueCode": "Testable"
            },
            {
              "code": "negation",
              "valueBoolean": true
            }
          ]
        }
      ]
    },
    {
      "code": "ActorType",
      "display": "Type of Actor",
      "definition": "An actor can operate in two ways: with the content itself, or as a manager of the instance.",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "transport",
          "display": "transport",
          "definition": "handle the transport of data once the instance is available/accessible",
          "property": [
            {
              "code": "parent",
              "valueCode": "ActorType"
            },
            {
              "code": "comment",
              "valueString": "not sure whether this (and everything related) has to be taken out of this spec?"
            }
          ]
        },
        {
          "code": "content",
          "display": "content mngmt",
          "definition": "manage the data itself",
          "property": [
            {
              "code": "parent",
              "valueCode": "ActorType"
            }
          ]
        }
      ]
    },
    {
      "code": "Actor",
      "display": "Actor of Communication",
      "definition": "Actor, i.e. indirect direction of communication",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "both",
          "display": "sender and/or receiver",
          "definition": "both: sender+receiver resp. creator+consumer",
          "property": [
            {
              "code": "parent",
              "valueCode": "Actor"
            },
            {
              "code": "abstract",
              "valueBoolean": true
            },
            {
              "code": "comment",
              "valueString": "an actor can only do one thing at a certain point in time. Therefore, both is not allowed and only listed for documentation."
            }
          ]
        },
        {
          "code": "sender",
          "display": "sender",
          "definition": "sender (transmitter) of data",
          "property": [
            {
              "code": "parent",
              "valueCode": "Actor"
            },
            {
              "code": "parent",
              "valueCode": "transport"
            },
            {
              "code": "comment",
              "valueString": "Sender does not necessarily need to create the instance."
            }
          ]
        },
        {
          "code": "receiver",
          "display": "receiver",
          "definition": "receiver of data",
          "property": [
            {
              "code": "parent",
              "valueCode": "Actor"
            },
            {
              "code": "parent",
              "valueCode": "transport"
            }
          ]
        },
        {
          "code": "creator",
          "display": "creator",
          "definition": "creator of data",
          "property": [
            {
              "code": "parent",
              "valueCode": "Actor"
            },
            {
              "code": "parent",
              "valueCode": "content"
            },
            {
              "code": "comment",
              "valueString": "Creator does not necessarily need to send the instance."
            }
          ]
        },
        {
          "code": "consumer",
          "display": "consumer",
          "definition": "Consumer of data",
          "property": [
            {
              "code": "parent",
              "valueCode": "Actor"
            },
            {
              "code": "parent",
              "valueCode": "content"
            }
          ]
        },
        {
          "code": "router",
          "display": "router",
          "definition": "router of data: shall be receiver and sender!",
          "property": [
            {
              "code": "parent",
              "valueCode": "Actor"
            },
            {
              "code": "parent",
              "valueCode": "transport"
            },
            {
              "code": "abstract",
              "valueBoolean": true
            },
            {
              "code": "comment",
              "valueString": "A router is in principle a combination of receiver and sender, w/ possible changes on the data in between. It should be described as such."
            }
          ]
        }
      ]
    },
    {
      "code": "Device",
      "display": "Device for Activity",
      "definition": "Device to be used for the activity",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "screen",
          "display": "screen",
          "definition": "screen/display",
          "property": [
            {
              "code": "parent",
              "valueCode": "Device"
            }
          ],
          "concept": [
            {
              "code": "wideScreen",
              "display": "wide screen",
              "definition": "wide screen/display",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "screen"
                }
              ]
            },
            {
              "code": "radScreen",
              "display": "radiologic screen",
              "definition": "screen/display capable of showing radiologic results",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "screen"
                }
              ]
            }
          ]
        },
        {
          "code": "printer",
          "display": "printer",
          "definition": "printer",
          "property": [
            {
              "code": "parent",
              "valueCode": "Device"
            }
          ],
          "concept": [
            {
              "code": "laserPrinter",
              "display": "laser printer",
              "definition": "laser printer",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "printer"
                }
              ]
            },
            {
              "code": "matrixPrinter",
              "display": "matrix printer",
              "definition": "matrix printer",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "printer"
                },
                {
                  "code": "comment",
                  "valueString": "Sometimes it is important to use a matrix printer, esp. for creating carbon copies."
                }
              ]
            }
          ]
        },
        {
          "code": "portableStorage",
          "display": "portable storage device",
          "definition": "portable storage device",
          "property": [
            {
              "code": "parent",
              "valueCode": "Device"
            }
          ],
          "concept": [
            {
              "code": "usbStick",
              "display": "usb stick",
              "definition": "USB Stick",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "portableStorage"
                }
              ]
            },
            {
              "code": "tapeDrive",
              "display": "tape drive",
              "definition": "tape drive",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "portableStorage"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "code": "Media",
      "display": "Media",
      "definition": "different media to be used with specialised devices",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "paper",
          "display": "paper",
          "definition": "paper",
          "property": [
            {
              "code": "parent",
              "valueCode": "Media"
            }
          ]
        },
        {
          "code": "stick",
          "display": "stick",
          "definition": "stick",
          "property": [
            {
              "code": "parent",
              "valueCode": "Media"
            }
          ]
        },
        {
          "code": "disc",
          "display": "disc",
          "definition": "disc",
          "property": [
            {
              "code": "parent",
              "valueCode": "Media"
            }
          ]
        },
        {
          "code": "tape",
          "display": "tape",
          "definition": "tape",
          "property": [
            {
              "code": "parent",
              "valueCode": "Media"
            }
          ]
        }
      ]
    },
    {
      "code": "ElementLevel",
      "display": "Level of Application",
      "definition": "On which level to apply this obligation: root, node, or leaf",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "root",
          "display": "on root node",
          "definition": "apply obligation on root node only",
          "property": [
            {
              "code": "parent",
              "valueCode": "ElementLevel"
            },
            {
              "code": "converse",
              "valueCode": "notRoot"
            }
          ]
        },
        {
          "code": "node",
          "display": "on any node",
          "definition": "apply on any node that is not root or leaf",
          "property": [
            {
              "code": "parent",
              "valueCode": "ElementLevel"
            }
          ]
        },
        {
          "code": "leaf",
          "display": "on leaf node",
          "definition": "apply on leaf node only",
          "property": [
            {
              "code": "parent",
              "valueCode": "ElementLevel"
            }
          ]
        },
        {
          "code": "all",
          "display": "on all levels",
          "definition": "application on all levels possible",
          "property": [
            {
              "code": "parent",
              "valueCode": "ElementLevel"
            }
          ]
        },
        {
          "code": "notRoot",
          "display": "all but root",
          "definition": "apply on non-root nodes only",
          "property": [
            {
              "code": "parent",
              "valueCode": "ElementLevel"
            },
            {
              "code": "converse",
              "valueCode": "root"
            }
          ]
        },
        {
          "code": "notLeaf",
          "display": "all but leaf",
          "definition": "apply on non-leaf nodes",
          "property": [
            {
              "code": "parent",
              "valueCode": "ElementLevel"
            }
          ]
        }
      ]
    },
    {
      "code": "Activity",
      "display": "Activity",
      "definition": "Activities, aka of general obligation",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "FunctionalObligations",
          "display": "Functional Obligations",
          "definition": "Functional Obligation describing processsing functionalities",
          "property": [
            {
              "code": "abstract",
              "valueBoolean": true
            },
            {
              "code": "parent",
              "valueCode": "Activity"
            }
          ],
          "concept": [
            {
              "code": "ProducerObligations",
              "display": "Resource Producer Obligations",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "FunctionalObligations"
                },
                {
                  "code": "abstract",
                  "valueBoolean": true
                }
              ],
              "concept": [
                {
                  "code": "send",
                  "display": "send",
                  "definition": "convey instance with values to somewhere",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "ProducerObligations"
                    },
                    {
                      "code": "parent",
                      "valueCode": "sender"
                    },
                    {
                      "code": "applyOn",
                      "valueCode": "root"
                    }
                  ]
                },
                {
                  "code": "populate",
                  "display": "populate",
                  "definition": "populate with values from somewhere",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "ProducerObligations"
                    },
                    {
                      "code": "parent",
                      "valueCode": "creator"
                    },
                    {
                      "code": "comment",
                      "valueString": "prohibited elements can be expressed by 'SHALL NOT send'."
                    }
                  ],
                  "concept": [
                    {
                      "code": "from-ui",
                      "display": "from UI",
                      "definition": "Take the data from UI, so that the user has the ability to enter it.",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "populate"
                        }
                      ]
                    },
                    {
                      "code": "from-store",
                      "display": "from persistence layer",
                      "definition": "Take data from storage/persistence layer.",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "populate"
                        }
                      ]
                    },
                    {
                      "code": "generate",
                      "display": "generate this data",
                      "definition": "This data can be generated.",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "populate"
                        }
                      ],
                      "concept": [
                        {
                          "code": "from-other",
                          "display": "generate from other values",
                          "definition": "This data can be generated from other data.",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "generate"
                            }
                          ]
                        },
                        {
                          "code": "sequence",
                          "display": "generate a sequence number",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "generate"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "code": "from-input",
                      "display": "from input stream",
                      "definition": "As a router, take data from input stream.",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "populate"
                        },
                        {
                          "code": "parent",
                          "valueCode": "router"
                        }
                      ]
                    },
                    {
                      "code": "as-constant",
                      "display": "constant",
                      "definition": "added as constant to the data, no special treatment done internally",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "populate"
                        }
                      ]
                    },
                    {
                      "code": "into-narrative",
                      "display": "narrative",
                      "definition": "added to the narrative, no special treatment done internally",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "populate"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "code": "ConsumerObligations",
              "display": "Resource Consumer Obligations",
              "definition": "Obligation for Consumer",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "FunctionalObligations"
                },
                {
                  "code": "abstract",
                  "valueBoolean": true
                },
                {
                  "code": "parent",
                  "valueCode": "receiver"
                }
              ],
              "concept": [
                {
                  "code": "receive",
                  "display": "receive",
                  "definition": "receive data form somewhere",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "ConsumerObligations"
                    },
                    {
                      "code": "parent",
                      "valueCode": "receiver"
                    },
                    {
                      "code": "applyOn",
                      "valueCode": "root"
                    }
                  ]
                },
                {
                  "code": "process",
                  "display": "process",
                  "definition": "handle data from instances as needed for general message consumption, store permitted.",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "ConsumerObligations"
                    },
                    {
                      "code": "parent",
                      "valueCode": "consumer"
                    },
                    {
                      "code": "comment",
                      "valueString": "elements that are to be ignored can be expressed by 'SHALL NOT process'."
                    }
                  ],
                  "concept": [
                    {
                      "code": "follow-up",
                      "display": "follow-up activity",
                      "definition": "what to do internally",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "process"
                        }
                      ],
                      "concept": [
                        {
                          "code": "display",
                          "display": "display/present (UI)",
                          "definition": "present the data on a display",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "follow-up"
                            }
                          ]
                        },
                        {
                          "code": "persist",
                          "display": "persist",
                          "definition": "persist/store the data somewhere",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "router"
                            },
                            {
                              "code": "parent",
                              "valueCode": "follow-up"
                            }
                          ],
                          "concept": [
                            {
                              "code": "archive",
                              "display": "archive",
                              "definition": "persist/store the archive which ensures longlasting access",
                              "property": [
                                {
                                  "code": "parent",
                                  "valueCode": "persist"
                                }
                              ]
                            },
                            {
                              "code": "in-database",
                              "display": "persist in a database",
                              "definition": "persist in a database",
                              "property": [
                                {
                                  "code": "parent",
                                  "valueCode": "persist"
                                },
                                {
                                  "code": "comment",
                                  "valueString": "too explicit/dedicated, concerns application details"
                                }
                              ]
                            },
                            {
                              "code": "in-file",
                              "display": "store in a file",
                              "definition": "store in a file",
                              "property": [
                                {
                                  "code": "parent",
                                  "valueCode": "persist"
                                },
                                {
                                  "code": "comment",
                                  "valueString": "too explicit/dedicated, concerns application details"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "code": "print",
                          "display": "print",
                          "definition": "print the data (somewhere)",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "follow-up"
                            }
                          ]
                        },
                        {
                          "code": "eval",
                          "display": "evaluate",
                          "definition": "consider the data in order to interpret other correctly",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "follow-up"
                            }
                          ]
                        },
                        {
                          "code": "integrate",
                          "display": "integrate into data",
                          "definition": "to UPDATE existing data by merging other data with the existing data in a controlled manner",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "follow-up"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "code": "respond",
                      "display": "activity as response",
                      "definition": "what to respond",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "process"
                        }
                      ],
                      "concept": [
                        {
                          "code": "warning",
                          "display": "return warnings",
                          "definition": "return possible warnings",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "respond"
                            }
                          ],
                          "concept": [
                            {
                              "code": "error",
                              "display": "return error",
                              "definition": "return possible errors",
                              "property": [
                                {
                                  "code": "parent",
                                  "valueCode": "warning"
                                }
                              ]
                            },
                            {
                              "code": "reject-invalid",
                              "display": "reject invalid data",
                              "definition": "reject if data is invalid",
                              "property": [
                                {
                                  "code": "parent",
                                  "valueCode": "warning"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "code": "accept-invalid",
                          "display": "accept invalid data",
                          "definition": "accept if data is invalid",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "respond"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "code": "ExchangerObligations",
              "display": "Resource Exchanger Obligations",
              "definition": "needs clarification ...",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "FunctionalObligations"
                },
                {
                  "code": "parent",
                  "valueCode": "both"
                },
                {
                  "code": "parent",
                  "valueCode": "router"
                },
                {
                  "code": "abstract",
                  "valueBoolean": true
                }
              ],
              "concept": [
                {
                  "code": "route",
                  "display": "route  forward",
                  "definition": "as a router forward to the next recipient",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "ExchangerObligations"
                    },
                    {
                      "code": "abstract",
                      "valueBoolean": false
                    }
                  ]
                }
              ]
            },
            {
              "code": "OtherObligations",
              "display": "Resource Other Obligations",
              "definition": "Other obligations beyond what has been described above.",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "FunctionalObligations"
                },
                {
                  "code": "abstract",
                  "valueBoolean": true
                }
              ],
              "concept": [
                {
                  "code": "explain",
                  "display": "explain",
                  "definition": "provide an explanation in a capability statement how this element is handled",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "OtherObligations"
                    }
                  ]
                },
                {
                  "code": "document",
                  "display": "document",
                  "definition": "document the use of this element in a separate document",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "OtherObligations"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "code": "DataObligation",
          "display": "Obligations on Data",
          "definition": "Data Obligations",
          "property": [
            {
              "code": "abstract",
              "valueBoolean": true
            },
            {
              "code": "parent",
              "valueCode": "Activity"
            },
            {
              "code": "parent",
              "valueCode": "creator"
            },
            {
              "code": "parent",
              "valueCode": "consumer"
            },
            {
              "code": "comment",
              "valueString": "The following codes may apply to creator and consumer. For example 'do not modify from UI'."
            }
          ],
          "concept": [
            {
              "code": "expected",
              "display": "expected",
              "definition": "data fits to expectations/specification",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "DataObligation"
                },
                {
                  "code": "comment",
                  "valueString": "This applies to recipients and denotes that the data should be present according to the specification, i.e. is specified."
                }
              ],
              "concept": [
                {
                  "code": "unaltered",
                  "display": "preserve",
                  "definition": "preserve what you get",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "expected"
                    },
                    {
                      "code": "comment",
                      "valueString": "That may also be used to take data from UI without any modifications."
                    }
                  ],
                  "concept": [
                    {
                      "code": "exactly",
                      "display": "exactly",
                      "definition": "exactly what is specified, nothing else",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "unaltered"
                        },
                        {
                          "code": "comment",
                          "valueString": "not sure whether 'unaltered' is sufficient so that we can drop that!?"
                        }
                      ]
                    }
                  ]
                },
                {
                  "code": "modify",
                  "display": "modify",
                  "definition": "allow for modifications of the data",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "expected"
                    },
                    {
                      "code": "parent",
                      "valueCode": "consumer"
                    },
                    {
                      "code": "comment",
                      "valueString": "Covers all types of modifications to data."
                    }
                  ],
                  "concept": [
                    {
                      "code": "assocation",
                      "display": "assocation",
                      "definition": "taken by association",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        }
                      ]
                    },
                    {
                      "code": "equivalent",
                      "display": "equivalent",
                      "definition": "in an equivalent way",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        }
                      ]
                    },
                    {
                      "code": "translate",
                      "display": "translate",
                      "definition": "Data received is preserved by 1:1 mapping/translation to an internal value that is semantically equivalent, that preserves the temporal aspect of the translation.",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        }
                      ],
                      "concept": [
                        {
                          "code": "semantically",
                          "display": "translate semantically",
                          "definition": "Two concepts are semantically equivalent if they can substitute for each other in the defined use case with no loss of information used to define the concept.",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "translate"
                            }
                          ]
                        },
                        {
                          "code": "clinically",
                          "display": "translate clinically",
                          "definition": "Two concepts are clinically equivalent if they can substitute for each other in the defined use case with no impact on clinical interpretation by a trained clinician. This may include further refinements based on the specific domain, e.g., for Lab use case, this would require interpretation that includes the impact of differences in normal ranges.",
                          "property": [
                            {
                              "code": "parent",
                              "valueCode": "translate"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "code": "reference",
                      "display": "reference",
                      "definition": "Use referenced data based on stored pointer; stored data is displayed by linking to the corresponding stored value most often the case for data elements that are STORED EXACT by ASSOCIATION.",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        }
                      ]
                    },
                    {
                      "code": "truncate",
                      "display": "cut off data",
                      "definition": "cut off remaining characters from the data thereby shortening the data",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        }
                      ]
                    },
                    {
                      "code": "more-details",
                      "display": "additional details/values",
                      "definition": "extends the expected data with more/own information, e.g. appartment if street is specified",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        },
                        {
                          "code": "parent",
                          "valueCode": "creator"
                        },
                        {
                          "code": "comment",
                          "valueString": "This is in principle not a modification..."
                        }
                      ]
                    },
                    {
                      "code": "more-structure",
                      "display": "additional substructures",
                      "definition": "provides the data with more granular details, e.g. house number for an address line",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        },
                        {
                          "code": "parent",
                          "valueCode": "creator"
                        },
                        {
                          "code": "comment",
                          "valueString": "This is in principle not a modification..."
                        }
                      ]
                    },
                    {
                      "code": "missing",
                      "display": "data is missing/not available",
                      "definition": "provide a null-flavor/absent reason",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        },
                        {
                          "code": "parent",
                          "valueCode": "creator"
                        },
                        {
                          "code": "comment",
                          "valueString": "In FHIR this is the permission/indication for a data-absent-reason or something similar. In V3 it is null-flavor."
                        }
                      ]
                    },
                    {
                      "code": "constant",
                      "display": "added as a constant",
                      "definition": "this value has no valid representation or meaning in the sending application, it is just added because it is required to be there",
                      "property": [
                        {
                          "code": "parent",
                          "valueCode": "modify"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "code": "unexpected",
              "display": "unexpected values",
              "definition": "how to manage unexpected data (as sender or receiver)",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "DataObligation"
                }
              ],
              "concept": [
                {
                  "code": "replaces",
                  "display": "new/other values",
                  "definition": "replaces the expected data by something else",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "unexpected"
                    }
                  ]
                },
                {
                  "code": "consider",
                  "display": "consider unexpected values",
                  "definition": "take vare of values that are coming but not described/specified. Allows for warnings",
                  "property": [
                    {
                      "code": "parent",
                      "valueCode": "unexpected"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "code": "CombinedObligations",
      "display": "combined obligations",
      "definition": "The children can be used to encode obligations for data elements. Terms in parenthesis are shown for readability. This list is not complete, and only provides some reasonable samples.",
      "property": [
        {
          "code": "abstract",
          "valueBoolean": true
        },
        {
          "code": "comment",
          "valueString": "The following list is just a snippet and should be enhanced during the discussion..."
        },
        {
          "code": "comment",
          "valueString": "The hierarchy has to discarded because not everything is explicitly modelled."
        }
      ]
    },
    {
      "code": "MAY:populate",
      "display": "MAY populate with data",
      "definition": "Conformant applications MAY take and provide data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAY"
        },
        {
          "code": "parent",
          "valueCode": "populate"
        },
        {
          "code": "comment",
          "valueString": "is this a useful combination?"
        }
      ]
    },
    {
      "code": "MAY:populate:missing",
      "display": "MAY populate data element with why orig data is missing",
      "definition": "Conformant applications MAY populate the element why the original data is missing.",
      "property": [
        {
          "code": "parent",
          "valueCode": "MAY:populate"
        },
        {
          "code": "parent",
          "valueCode": "missing"
        }
      ]
    },
    {
      "code": "MAY:(populate)from-ui",
      "display": "MAY populate with data taken from ui",
      "definition": "Conformant applications MAY take data from a UI and provide it.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAY"
        },
        {
          "code": "parent",
          "valueCode": "from-ui"
        }
      ]
    },
    {
      "code": "SHOULD:populate",
      "display": "SHOULD populate with data",
      "definition": "Conformant applications SHOULD take and provide data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAY:populate"
        }
      ]
    },
    {
      "code": "MAY:(populate)into-narrative",
      "display": "MAY populate into-narrative",
      "definition": "Conformant applications MAY populate element into narrative text as well.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD:populate"
        },
        {
          "code": "comment",
          "valueString": "discuss whether other representation forms are better"
        }
      ]
    },
    {
      "code": "SHOULD:(populate)into-narrative",
      "display": "SHOULD populate into-narrative",
      "definition": "Conformant applications SHOULD populate element into narrative text as well.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAY:(populate)into-narrative"
        },
        {
          "code": "comment",
          "valueString": "discuss whether other representation forms are better"
        }
      ]
    },
    {
      "code": "SHALL:(populate)into-narrative",
      "display": "SHALL populate into-narrative",
      "definition": "Conformant applications SHALL populate element into narrative text as well.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD:(populate)into-narrative"
        },
        {
          "code": "comment",
          "valueString": "discuss whether other representation forms are better"
        }
      ]
    },
    {
      "code": "SHOULDNOT:(populate)into-narrative",
      "display": "SHOULD NOT populate into-narrative",
      "definition": "Conformant applications SHOULD NOT populate element into narrative text.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "converse",
          "valueCode": "SHOULD:(populate)into-narrative"
        }
      ]
    },
    {
      "code": "SHALLNOT:(populate)into-narrative",
      "display": "SHALL NOT populate into-narrative",
      "definition": "Conformant applications SHALL NOT populate element into narrative text.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULDNOT:(populate)into-narrative"
        },
        {
          "code": "converse",
          "valueCode": "SHALL:(populate)into-narrative"
        }
      ]
    },
    {
      "code": "SHALL:populate",
      "display": "SHALL populate with data",
      "definition": "Conformant applications SHOULD take and provide data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "SHOULD:populate"
        }
      ]
    },
    {
      "code": "SHOULD:(populate)from-ui",
      "display": "SHOULD populate with data taken from ui",
      "definition": "Conformant applications SHOULD take data from a UI and provide it.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD"
        },
        {
          "code": "parent",
          "valueCode": "from-ui"
        },
        {
          "code": "parent",
          "valueCode": "creator"
        }
      ]
    },
    {
      "code": "SHALL:(populate)from-ui",
      "display": "SHALL populate data taken from ui",
      "definition": "Conformant applications SHALL take data from a UI and provide it.",
      "property": [
        {
          "code": "parent",
          "valueCode": "SHOULD:(populate)from-ui"
        },
        {
          "code": "parent",
          "valueCode": "SHALL"
        },
        {
          "code": "parent",
          "valueCode": "from-ui"
        },
        {
          "code": "testable",
          "valueCode": "testableByHuman"
        }
      ]
    },
    {
      "code": "SHALL:(populate)from-ui:more-details",
      "display": "SHALL populate with data taken from ui perhaps with more details",
      "definition": "Conformant applications SHALL take data from a UI and bring it into the instance. It is allowed to provide more details then specified.",
      "property": [
        {
          "code": "parent",
          "valueCode": "SHALL:(populate)from-ui"
        },
        {
          "code": "parent",
          "valueCode": "more-details"
        }
      ]
    },
    {
      "code": "SHOULD:send",
      "display": "SHOULD send the instance",
      "definition": "Conformant applications SHOULD send the instance.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        }
      ],
      "concept": [
        {
          "code": "SHALL:send",
          "display": "SHALL send the instance",
          "definition": "Conformant applications SHALL send the instance.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "send"
            },
            {
              "code": "parent",
              "valueCode": "sender"
            },
            {
              "code": "applyOn",
              "valueCode": "root"
            },
            {
              "code": "testable",
              "valueCode": "testableByMachine"
            }
          ]
        }
      ]
    },
    {
      "code": "MAY:persist",
      "display": "MAY store the data",
      "definition": "Conformant applications MAY store the data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAY"
        },
        {
          "code": "parent",
          "valueCode": "persist"
        }
      ]
    },
    {
      "code": "SHOULD:persist",
      "display": "SHOULD store the data",
      "definition": "Conformant applications SHOULD store the data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        }
      ],
      "concept": [
        {
          "code": "SHALL:persist",
          "display": "SHALL store the data somewhere",
          "definition": "Conformant applications SHALL store the data in some way.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "persist"
            },
            {
              "code": "testable",
              "valueCode": "testableByHuman"
            }
          ],
          "concept": [
            {
              "code": "SHALL:persist:exactly",
              "display": "SHALL store the data somewhere, but exactly as is sent",
              "definition": "Conformant applications SHALL store the data in a way that the originally data from the instance can be reestablished.",
              "property": [
                {
                  "code": "parent",
                  "valueCode": "CombinedObligations"
                },
                {
                  "code": "parent",
                  "valueCode": "SHALL"
                },
                {
                  "code": "parent",
                  "valueCode": "persist"
                },
                {
                  "code": "parent",
                  "valueCode": "exactly"
                },
                {
                  "code": "testable",
                  "valueCode": "testableByHuman"
                }
              ]
            }
          ]
        },
        {
          "code": "SHOULD:(persist)in-database",
          "display": "SHOULD store the data in a database",
          "definition": "Conformant applications are asked to store the data in a database.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHOULD"
            },
            {
              "code": "parent",
              "valueCode": "persist"
            },
            {
              "code": "parent",
              "valueCode": "in-database"
            }
          ]
        },
        {
          "code": "SHALLNOT:populate:more-details",
          "display": "SHALL NOT populate more data than is specified",
          "definition": "Conformant applications SHALL NOT populatae more data than is specified. The specification is closed.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHALLNOT"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "parent",
              "valueCode": "more-details"
            },
            {
              "code": "parent",
              "valueCode": "creator"
            },
            {
              "code": "negation",
              "valueBoolean": true
            },
            {
              "code": "testable",
              "valueCode": "testableByMachine"
            }
          ]
        },
        {
          "code": "SHALLNOT:populate:missing",
          "display": "SHALL NOT populate info about missing data, ie. data absent reasons",
          "definition": "Conformant applications SHALL NOT populate a reason for missing information.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHALLNOT"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "parent",
              "valueCode": "missing"
            },
            {
              "code": "parent",
              "valueCode": "creator"
            },
            {
              "code": "negation",
              "valueBoolean": true
            }
          ]
        },
        {
          "code": "MAY:populate:more-structure",
          "display": "MAY populate the data in more structured way",
          "definition": "Conformant applications are allowed to populate the data with more structure. For example, to split an address line into streetname and house number.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "MAY"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "parent",
              "valueCode": "more-structure"
            }
          ]
        },
        {
          "code": "SHALLNOT:follow-up:truncate",
          "display": "SHALL NOT truncate data",
          "definition": "Conformant applications SHALL NOT cut off data.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHALLNOT"
            },
            {
              "code": "parent",
              "valueCode": "follow-up"
            },
            {
              "code": "parent",
              "valueCode": "truncate"
            },
            {
              "code": "parent",
              "valueCode": "consumer"
            },
            {
              "code": "negation",
              "valueBoolean": true
            },
            {
              "code": "testable",
              "valueCode": "testableByHuman"
            }
          ]
        },
        {
          "code": "MAY:modify",
          "display": "MAY modify the data",
          "definition": "Conformant applications MAY, i.e. are allowed to modify the data.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "MAY"
            },
            {
              "code": "parent",
              "valueCode": "modify"
            },
            {
              "code": "comment",
              "valueString": "nice hint"
            }
          ]
        },
        {
          "code": "MAY:print",
          "display": "MAY print data",
          "definition": "Conformant applications MAY print the data.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "MAY"
            },
            {
              "code": "parent",
              "valueCode": "print"
            }
          ]
        },
        {
          "code": "SHOULD:print",
          "display": "SHOULD print data",
          "definition": "Conformant applications SHOULD print the data.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHOULD"
            },
            {
              "code": "parent",
              "valueCode": "print"
            }
          ]
        },
        {
          "code": "SHALL:print",
          "display": "SHALL print data",
          "definition": "Conformant applications SHALL print the data.",
          "property": [
            {
              "code": "parent",
              "valueCode": "CombinedObligations"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "print"
            },
            {
              "code": "parent",
              "valueCode": "consumer"
            },
            {
              "code": "testable",
              "valueCode": "testableByHuman"
            }
          ]
        }
      ]
    },
    {
      "code": "SHALLNOT:(populate):in-narrative",
      "display": "SHALL NOT add to narrative",
      "definition": "Conformant applications SHALL NOT add this data to the narrative.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHALLNOT"
        },
        {
          "code": "parent",
          "valueCode": "populate"
        },
        {
          "code": "parent",
          "valueCode": "into-narrative"
        },
        {
          "code": "parent",
          "valueCode": "creator"
        },
        {
          "code": "testable",
          "valueCode": "testableByHuman"
        }
      ]
    },
    {
      "code": "MAY:process",
      "display": "MAY process the data",
      "definition": "Conformant applications MAY process the data somehow.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAY"
        },
        {
          "code": "parent",
          "valueCode": "process"
        },
        {
          "code": "comment",
          "valueString": "There is no further specification in which way the data can be processed."
        }
      ]
    },
    {
      "code": "SHOULD:process",
      "display": "SHOULD process the data",
      "definition": "Conformant applications SHOULD process the data in some meaningful way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAY:process"
        }
      ]
    },
    {
      "code": "SHALL:process",
      "display": "SHALL process the data",
      "definition": "Conformant applications SHALL process the data in some meaningful way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD:process"
        }
      ]
    },
    {
      "code": "SHOULDNOT:process",
      "display": "SHOULD NOT process the data",
      "definition": "Conformant applications SHOULD NOT process the data in some meaningful way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULDNOT"
        },
        {
          "code": "parent",
          "valueCode": "process"
        }
      ]
    },
    {
      "code": "SHALLNOT:process",
      "display": "SHALL NOT process the data",
      "definition": "Conformant applications SHALL NOT process the data in some meaningful way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "SHOULDNOT:process"
        },
        {
          "code": "parent",
          "valueCode": "SHALLNOT"
        },
        {
          "code": "parent",
          "valueCode": "process"
        }
      ]
    },
    {
      "code": "SHOULD:document",
      "display": "SHOULD document how the data is used",
      "definition": "Conformant applications SHOULD document the way the data is used in some (meaningful) way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD"
        },
        {
          "code": "parent",
          "valueCode": "document"
        }
      ]
    },
    {
      "code": "SHALL:document",
      "display": "SHALL document how the data is used",
      "definition": "Conformant applications SHALL document the way the data is used in some (meaningful) way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "SHOULD:document"
        },
        {
          "code": "parent",
          "valueCode": "SHALL"
        },
        {
          "code": "parent",
          "valueCode": "document"
        }
      ]
    },
    {
      "code": "SHOULD:display",
      "display": "SHOULD display the data",
      "definition": "Conformant applications SHOULD display the data in some meaningful way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD"
        },
        {
          "code": "parent",
          "valueCode": "display"
        }
      ]
    },
    {
      "code": "SHALL:display",
      "display": "SHALL display the data",
      "definition": "Conformant applications SHALL display the data in some meaningful way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD:display"
        }
      ]
    },
    {
      "code": "SHOULDNOT:modify",
      "display": "SHOULD NOT modify the data",
      "definition": "Conformant applications SHOULD NOT modiify the data in any way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULDNOT"
        },
        {
          "code": "parent",
          "valueCode": "modify"
        }
      ]
    },
    {
      "code": "SHALLNOT:modify",
      "display": "SHALL NOT modify the data",
      "definition": "Conformant applications SHALL NOT modiify the data in any way.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHALLNOT"
        },
        {
          "code": "parent",
          "valueCode": "modify"
        }
      ]
    },
    {
      "code": "MAYNOT:process",
      "display": "MAY NOT process data",
      "definition": "Conformant applications MAY NOT process data, aka of ignoring.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "MAYNOT"
        },
        {
          "code": "parent",
          "valueCode": "process"
        },
        {
          "code": "comment",
          "valueString": "this is equivalent to MAY:ignore."
        }
      ]
    },
    {
      "code": "SHOULD:reject-invalid",
      "display": "SHOULD reject invalid data",
      "definition": "Conformant applications SHOULD reject invalid data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD"
        },
        {
          "code": "parent",
          "valueCode": "reject-invalid"
        }
      ]
    },
    {
      "code": "SHALL:reject-invalid",
      "display": "SHALL reject invalid data",
      "definition": "Conformant applications SHALL reject invalid data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHALL"
        },
        {
          "code": "parent",
          "valueCode": "reject-invalid"
        }
      ]
    },
    {
      "code": "SHOULD:accept-invalid",
      "display": "SHOULD accept invalid data",
      "definition": "Conformant applications SHOULD accept invalid data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD"
        },
        {
          "code": "parent",
          "valueCode": "accept-invalid"
        }
      ]
    },
    {
      "code": "SHALL:accept-invalid",
      "display": "SHALL accept invalid data",
      "definition": "Conformant applications SHALL accept invalid data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHALL"
        },
        {
          "code": "parent",
          "valueCode": "accept-invalid"
        }
      ]
    },
    {
      "code": "SHOULD:receive",
      "display": "SHOULD be able to receive the data",
      "definition": "Conformant applications SHOULD be able to receive the data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULD"
        },
        {
          "code": "parent",
          "valueCode": "receive"
        }
      ]
    },
    {
      "code": "SHALL:receive",
      "display": "SHALL be able to receive the data",
      "definition": "Conformant applications SHALL be able to receive the data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHALL"
        },
        {
          "code": "parent",
          "valueCode": "receive"
        }
      ]
    },
    {
      "code": "SHOULDNOT:error",
      "display": "SHOULD NOT return an error to the sender of the data",
      "definition": "Conformant applications SHOULD NOT reurn an erorr to the sender of the data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHOULDNOT"
        },
        {
          "code": "parent",
          "valueCode": "error"
        }
      ]
    },
    {
      "code": "SHALLNOT:error",
      "display": "SHALL NOT return an error to the sender of the data",
      "definition": "Conformant applications SHALL NOT reurn an erorr to the sender of the data.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "parent",
          "valueCode": "SHALLNOT"
        },
        {
          "code": "parent",
          "valueCode": "error"
        }
      ]
    },
    {
      "code": "ForeignStandards",
      "display": "concept codes from other standards",
      "definition": "Other standards use specific terms for optionality/usage that should be conceptualized here.",
      "property": [
        {
          "code": "parent",
          "valueCode": "CombinedObligations"
        },
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ]
    },
    {
      "code": "v2",
      "display": "v2 concept codes",
      "definition": "optionality/usage codes from v2",
      "property": [
        {
          "code": "parent",
          "valueCode": "ForeignStandards"
        },
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "v2-r",
          "display": "v2: R",
          "definition": "required in v2.x",
          "property": [
            {
              "code": "parent",
              "valueCode": "v2"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "comment",
              "valueString": "minCard = 1"
            }
          ]
        },
        {
          "code": "v2-re",
          "display": "v2: RE",
          "definition": "required but may be empty in v2.x",
          "property": [
            {
              "code": "parent",
              "valueCode": "v2"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "comment",
              "valueString": "minCard = 0"
            }
          ]
        },
        {
          "code": "v2-x",
          "display": "v2: X",
          "definition": "forbidden in v2",
          "property": [
            {
              "code": "parent",
              "valueCode": "v2"
            },
            {
              "code": "parent",
              "valueCode": "SHOULDNOT"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "parent",
              "valueCode": "process"
            }
          ]
        },
        {
          "code": "v2-b",
          "display": "v2: B",
          "definition": "backwards use in v2 only",
          "property": [
            {
              "code": "parent",
              "valueCode": "v2"
            },
            {
              "code": "parent",
              "valueCode": "SHOULDNOT"
            }
          ]
        },
        {
          "code": "v2-w",
          "display": "v2: W",
          "definition": "withdrawn use in v2 only",
          "property": [
            {
              "code": "parent",
              "valueCode": "v2"
            },
            {
              "code": "parent",
              "valueCode": "SHOULDNOT"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "parent",
              "valueCode": "process"
            }
          ]
        }
      ]
    },
    {
      "code": "v3",
      "display": "V3 concept codes",
      "definition": "optionality/usage codes from V3/CDA",
      "property": [
        {
          "code": "parent",
          "valueCode": "ForeignStandards"
        },
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "v3-m",
          "display": "v3: M",
          "definition": "mandatory in HL7 V3",
          "property": [
            {
              "code": "parent",
              "valueCode": "v3"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "parent",
              "valueCode": "exactly"
            },
            {
              "code": "parent",
              "valueCode": "SHALLNOT:populate:missing"
            },
            {
              "code": "comment",
              "valueString": "A value must be present and null-flavors are not allowed; to be combined with minCard = 1"
            }
          ]
        },
        {
          "code": "v3-r",
          "display": "v3: R",
          "definition": "required in HL7 V3",
          "property": [
            {
              "code": "parent",
              "valueCode": "v3"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            },
            {
              "code": "parent",
              "valueCode": "MAY:populate:missing"
            },
            {
              "code": "comment",
              "valueString": "A value must be present but it can be a null-flavors"
            }
          ]
        },
        {
          "code": "v3-x",
          "display": "v3: X",
          "definition": "forbidden in HL7 V3",
          "property": [
            {
              "code": "parent",
              "valueCode": "v3"
            },
            {
              "code": "parent",
              "valueCode": "SHALLNOT"
            },
            {
              "code": "parent",
              "valueCode": "populate"
            }
          ]
        }
      ]
    },
    {
      "code": "ihe",
      "display": "IHE concept codes",
      "definition": "optionality/usage codes from IHE",
      "property": [
        {
          "code": "parent",
          "valueCode": "ForeignStandards"
        },
        {
          "code": "abstract",
          "valueBoolean": true
        }
      ],
      "concept": [
        {
          "code": "ihe-r",
          "display": "IHE: R",
          "definition": "required in IHE v2.x specs",
          "property": [
            {
              "code": "parent",
              "valueCode": "ihe"
            }
          ]
        },
        {
          "code": "ihe-r2",
          "display": "IHE: R2",
          "definition": "R2 in IHE v2.x specs",
          "property": [
            {
              "code": "parent",
              "valueCode": "ihe"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:process"
            },
            {
              "code": "parent",
              "valueCode": "SHOULD:populate"
            },
            {
              "code": "comment",
              "valueString": "This is interpreted as the receiver has to support it, but when becoming the sender it is not really necessary to return it again"
            }
          ]
        },
        {
          "code": "ihe-x",
          "display": "IHE: X",
          "definition": "X in IHE v2.x specs",
          "property": [
            {
              "code": "parent",
              "valueCode": "ihe"
            },
            {
              "code": "comment",
              "valueString": "forbidden?"
            }
          ]
        }
      ]
    },
    {
      "code": "xDT",
      "display": "German xDT standards",
      "definition": "The German xDT standard family has a very specific set of codes and is just presented here for completeness and demonstration purposes",
      "property": [
        {
          "code": "parent",
          "valueCode": "ForeignStandards"
        },
        {
          "code": "abstract",
          "valueBoolean": true
        },
        {
          "code": "comment",
          "valueString": "all concept codes are to processed by the receiver; different requirements for sender"
        }
      ],
      "concept": [
        {
          "code": "xDT-M",
          "display": "xDT: M",
          "definition": "MUSS in xDT (unbedingtes Mussfeld)",
          "property": [
            {
              "code": "parent",
              "valueCode": "xDT"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:process"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:populate"
            },
            {
              "code": "comment",
              "valueString": "minCard=1"
            }
          ]
        },
        {
          "code": "xDT-m",
          "display": "xDT: m",
          "definition": "muss in xDT (bedingtes Mussfeld)",
          "property": [
            {
              "code": "parent",
              "valueCode": "xDT"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:process"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:populate"
            },
            {
              "code": "comment",
              "valueString": "depends on the value of another field"
            }
          ]
        },
        {
          "code": "xDT-K",
          "display": "xDT: K",
          "definition": "KANN in xDT (unbedingts KANNfeld)",
          "property": [
            {
              "code": "parent",
              "valueCode": "xDT"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:process"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:populate"
            }
          ]
        },
        {
          "code": "xDT-k",
          "display": "xDT: k",
          "definition": "kann in xDT (bedingtes Kannfeld)",
          "property": [
            {
              "code": "parent",
              "valueCode": "xDT"
            },
            {
              "code": "parent",
              "valueCode": "SHALL"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:process"
            },
            {
              "code": "parent",
              "valueCode": "SHALL:populate"
            },
            {
              "code": "comment",
              "valueString": "depends on the value of another field"
            }
          ]
        }
      ]
    }
  ]
}