This wiki has undergone a migration to Confluence found Here

Act in DEF Mood

From HL7Wiki
Jump to navigation Jump to search


Various challenges with using DEV (or EVN.CRT) mood have been identified. These are detailed here:


At the Face-to-face meeting Q3 , Tuesday, September 22, this issue came very close to being Resolved. A solution was outlined, as is documented below. There was an M&M Motion to endorse this strategy, with no sense that we should follow a different track, but there was also a desire to leave this solution Open on the Wiki for a few weeks, and take a final resolution motion at the time that a Harmonization Proposal is prepared for the November 2009 RIM Harmonization review.

The group in attendance reviewed an initial proposal that also "solves" the problem, is a "cleaner" model for the RIM, but that would pose severe backwards compatibility issue to existing implementations and specifications. This proposal is documented below to demonstrate the alternative that was considered, but is no longer under active consideration.

Defining the Issue

(From M&M discussions Q2 in Atlanta, and others)

DEF and CRT mood are not usable as Mood Codes because the usual rules around the meaning of participations and Act attributes inevitably lead to conflict. For example, as things presently stand:

  • How do I DEF a test that can only be ordered by an RN? I cannot since I cannot use other mood codes, and the author is the one who authored the definition.
  • How do I create a CRT for a class in "INT" mood? I cannot unless I add a new mood INT.CRT.
  • How do I specify a DEF for an ACT that should be created in "suspended" status? I cannot since status belongs to the DEF, unless I create a second status attribute, as GS suggests below.
  • If there is a need for both EVN.CRT and CRT, is there not also a need for everyOtherMoodCode.CRT?
  • How do I include the requirement that the author of an Act not be the subject? I cannot unless we create another "flavor" of the author Participation.

Endorsed Solution

This solution is founded on pre-coordinating a set of ActMood codes and attributes that support the modeling of abstractions (definitions and criteria) of the real Acts (particularly those whose mood is in the ActMoodCompletionTrack hierarchy. Although this is less "clean" than distinguishing an "abstract/real" axis, as suggested in the initial proposal.

Therefore the solution involves the addition of a set of ActMood codes, the addition of two attributes (one each in Act and Participation), and the (re-?)articulation of rules surrounding the meaning of participations as they appear within a criterion.

Add OpenIssue to ActMood.DEF


The M&M discussion raised the question of: "What is the difference between ActMood.DEF and ActMood.CRT?" The conclusion of the group was that although these are used for different purpose, the purpose is clearly expressed in the ActRelationship that links to these Acts, but in both cases, they are asserting an abstraction of a class to be used as a criterion that serves either for logic or to define such acts.


Add an OpenIssue to ActMood.DEF that says: "The semantic constructs embodied in DEF and CRT moods seem indistinguishable, and their uses can readily be determined by the context in which these are used. Therefore, this OpenIssue has been created to declare that it is likely that ActMood.DEF will be "retired" in the future in favor of the more general ActMood.CRT."

Add Codes to ActMood


In order to facilitate the ability to define criteria on classes in varying primary moods, the set of pre-coordinated ActMoodCriterion sub-types needs to be extended. The proposed set is felt to be a reasonable sub-set of all mood codes, but others may need to be added in the future.


The following list of codes (with their print names and definitions) will be added to ActMood, as specializations of ActMood.CRT:

  1. RQO.CRT|request criterion| A criterion expressed over requests or orders (ActMood.RQO).
  2. INT.CRT|intent criterion| A criterion expressed over intents (ActMood.INT).
  3. PRMS.CRT|promise criterion| A criterion expressed over promises (ActMood.PRMS).
  4. GOL.CRT|goal criterion| A criterion expressed over goals (ActMood.GOL).
  5. RSK.CRT|risk criterion| A criterion expressed over risks (ActMood.RSK).

Add attribute recordStatusCode to Act class and coordinate with Act.statusCode


In order to communicate about the status of a criterion, definition, or even a request, as distinguished from the status of the item being abstracted, defined or requested, one needs a second attribute that can communicate status codes about acts.

Add attribute to Act class

  • Name: documentStatusCode
  • Multiplicity: 0..1
  • Data Type: CS
  • Concept Domain: ActStatus
  • isDocumentCharateristic: true
  • Definition: NEED HELP HERE!!!

    The state of the record that documents the Act.

    Rationale: In order to communicate about the status of a criterion, definition, or even a request, as distinguised from the status of the item being abstracted, defined or requested, one needs this second attribute that can communicate status of the record or documentation of the Act (definition, order or criterion) as distinguished from the Act.statusCode that reflects the state of the Act itself.

Change attribute Act.statusCode

Reset isDocumentCharateristic to false

    • isDocumentCharateristic: false

[ALL READERS: this was not discussed in Atlanta, but I believe it is a necessary step. Does it not "break" existing implementations??]

Initial but Rejected Solution


The presence the need for "paired" attributes - two flavors of author participation, paired mood codes like EVN.CRT, two flavors of statusCode - are prima facia evidence that there are two different states present that are been collapsed into one. I submit that the distinction is between Acts that are "normal" and will represent real world artifacts (INT, EVN, GOL) and acts that are an "abstract definition" of that reality like "DEF", "CRT", "EVN.CRT". From eMeasures, it has become clear that criteria must exist in all moods and involve all reasonable participations. There seem to be similar requirements for DEF Acts. That being the case, this is not manageable so long as DEF and CRT are mood codes and so long as Act attributes and associations must be relegated to either document characteristic or not.


Two recommendation items were added before 2009-09-21. These have been moved to a Previous Recommendations subsection. What follows was developed subsequent to that date.

New Act Attribute - abstractionCode

Add a new attribute to Act with a sort order that places it immediately after moodCode. The name is "abstractionCoe" with definition like "Determines whether the the Act is a normal act that will instantiated in real record elments or is an abstraction that defines or creates criteria about such normal acts."

This attribute should be Mandatory.

There should be three codes: "NORMAL", "DEF" and "CRT". with a default value of "NORMAL".

Changes in ActMood

Remove DEF, CRT and EVN.CRT from ActMood. The remaining codes in ActMoodPredicate should be considered as candidate abstractions. Initial analysis suggests that both GOL and RSK are in fact "normal" moods as they have assigned subjects, times that are expected, etc. (Phrased another way, one can envisage a DEF for a Goal.)

Changes in "Rules"

  • For all Acts whose abstractionCode is "NORMAL", the rules according to DocumentCharacteristic, and existing RIM definitions apply.
  • For all Acts whose abstractionCode is not "NORMAL", every attribute, and association of that Act is interpreted as being part of the criterion or definition.
  • In order to document the life cycle and responsibilities surrounding a set of elements not in "NORMAL" mood, these classes must stem from a "NORMAL" class (such as RQO) that packages these elements.

Previous Recommendations

[1] Document characteristic attributes: Current thinking is to assume that in EVN.CRT mood, no properties are documentation characteristic. Gunther suggests that we may need to split Act.statusCode into an Act.actStatusCode and an Act.recordStatusCode.

[2] Vocabulary binding: Current thinking is to include a local code, which in the local code system reflects a value set.