Question: Interpretation of multiple pre-conditions in CDA

Feb 24, 2013

Question: Since a CDA R2 clinical statement can be associated with zero or more “Criterion” through precondition, what would happen in case there are TWO Criterions, one is TRUE and other is FALSE? What should be the default operator in order to arrive at the final decision point whether a service/activity should be performed or not? Should it be allTrue (AND) or atLeastOneTrue(OR)? or in the context of a specific IG, we can make our own statements as CDA is silent on this? I see that HQMF specification explicitly states AND, OR and other operators however this is not the case for CDA.

Background:

A clinical statement in CDA R2 can be associated with zero or more “Criterion” through “precondition”:

CDA defines precondition like this:

“The precondition class, derived from the ActRelationship class, is used along with the Criterion class to express a condition that must hold true before some over activity occurs.”

This means that the precondition must be true for a service/activity to be performed.

Answer:

There’s a property defined on the RIM ActRelationship (which is the base class underlying the CDA precondition) called conjunctionCode, which is defined as:

A code specifying the logical conjunction of the criteria among all the condition-links of Acts (e.g., “and”, “or”, or “exclusive-or”)

So if this attribute were present on the CDA precondition class that would answer your question. However, as you can see, the CDA precondition class has no such attribute as “conjunctionCode” - although it inherits it from the RI, the value has been fixed to the nullFlavor “No Information”,  and so it doesn’t need to be shown on the diagram. And therefore, technically, in CDA, you can’t evaluate the meaning of multiple -pre-conditions. But that’s being pedantic. In most cases, where a committee rules out the use of an attribute like that, there’s an implicit default value.

And it turns out that this is the case in CDA. When the CDA specification says, in text:

“The precondition class, derived from the ActRelationship class, is used along with the Criterion class to express a condition that must hold true before some over activity occurs.”

That answers the question: the condition must hold true. And so if you state more than one condition, then each of them is a condition that must hold true - so the implicit default conjunctionCode is “true”.

So the direct answer to the question: they must all be true.

Extensibility

Further, by the rules of CDA extension, you can’t effectively change this. The rules say:

Extensions should not change the meaning of any of the standard data items, and receivers must be able to safely ignore these elements

You can’t add conjunctionCode as an extension without changing the meaning of the standardised data elements (or, more strictly, you could add it, but the only value you could use would be “and”). Adding it by a different name wouldn’t make any difference either.

But if you really wanted to do this, and the most you could do is add the or-constraints themselves as extensions - but then you have to somehow choose which preconditions a general CDA process would be aware of - which sounds quite unsatisfactory to me (and you can’t - legally, at least - simply say that you can ignore the general CDA processor case either).

This is the kind of case where it’s very difficult to extend CDA and get it to do what you want.