Problem with constraint_binding

Dear readers,

I have a problem and I want to ask your advise.

The problem is that I want to use openEHR-EHR-EVALUATION.problem_diagnosis.v1 which is in CKM.

In that archetype is the item “Problem/Diagnosis name”, which is of type DV_TEXT. We want to use it as DV_CODED_TEXT, because we want to add code to the entered name.

In this situation where I work, the customer wants to use 2 different codes, one company crerated internal codelist, and ICD10.

It seems easy to arrange in the archetype, I think I need to specialize it, because I want to add the constraint-bindings to give room for the codes. The archetype-editor from Ocean allows two constraint-bindings on the same node, like displayed below. But this seems wrong to me.

In the reference model in the DV_CODED_TEXT is one CODE_PHRASE (1..1). And CODE_PHRASE has terminology_id and code_string also 1..1

So how will the construct below be interpreted following the specs?

constraint_bindings = <
[“ETDA”] = <
items = <
[“ac0001”] = terminology:ETDA

[“ICD10”] = <
items = <
[“ac0001”] = terminology:ICD10

My second question, if you say this is impossible to add two terminology constraints to one data-item, which construct do you advise to make two terminology constraints_bindings available to one DV_CODED_TEXT (or maybe another datavalue-type)?

Thanks for any help.

Best regards
Bert Verhees

Hi Bert

This is correct. If you were to add those constraints in a specialised archetype, at run-time the submitted term in the defining_code attribute would have to come from one of the two terminologies specified.

The constraint can define multiple potential terminologies but only one defining_code is allowed in the instance data.

Ian

What about having two sibling DV_CODED_TEXT nodes as alternatives on the parent? (or specialize two different ones from the single parent one). That would allow to arbitrarily define constraint binding as needed, and in data only one would be correct one

Thanks Ian, that explains.

Best regard
Bert

We are considering that Diego, the fact is that the customer wishes to code the name -item two times. Both coding - systems are not easy to map and the mapping cannot be calculated easily by software.

So we need two Dv_coded_text’s to carry the codes, and only one value to carry the name.

The problem with to Dv_coded_text’s is however that it offers two value - fields and that is not what we want.

It is a pity that a Dv_coded_text only can carry one code. I don’t understand that restriction but we cannot solve that now, I hope this can be considered in a RM change.

So I think, we will have two Dv_coded_text’s and from one having the value put of in a template if that is possible. I look into that tomorrow.

Best regards
Bert

Perhaps the best solution for the time being is to add an additional diagnosis component with the secondary terminology binding that might be used. This is not so common and would need a BR specialization.

Beatriz

Hi All

The idea was that the code_phrase was directly entered as part of choosing the text from the terminology.

Anywhere where coding is done as a secondary process, the code mappings allow multiple codes.

I think this meets all the needs you have specified. Mappings allow each terminology to be specified.

It is likely in the future that EHRs will have multiple mappings for different purposes and different eras of computing, allowing upgrading of historical data.

Cheers, Sam

Hi Bert,

A dv_coded text can carry a single defining_code but as many code mappings as you wish. This makes sense to me as I would always expect one code to be regarded as the original clinical source of truth, and other mappings to be regarded as secondary. All of these can be queried via AQL. The defining_code should be the one that is selected by the user.

I would strongly suggest that you use mappings for this purpose. I would also not bother with trying to place constraints via archetypes or templates. You are really not achieving much that cannot be otherwise simply documented or applied in software.

Perhaps I’m still not understanding the requirement here?

Ian

Hi, I need to defer this discussion to next Monday. I will come back to this. Thanks all for your input.

Best regards
Bert

Hi,

Multiple codes create the problem of deciding which one is ‘the truth’.
One code needs be declared to be ‘the truth’.

But…

The truth’ depends on the context the code is used in.
So how can one declare what the clinical/administrative/research context is?

And…

subject’ has ‘associated data
Is the code used for defining the subject of associated data?
Or is the code used to define the data provided itself?

Gerard Freriks
+31 620347088
gfrer@luna.nl

Kattensingel 20
2801 CA Gouda
the Netherlands

I assume that mappings could also contain constraint bindings right?

But isn't the "name" field in any coded terminology "just
another code" for a concept ? Or, in other words, the
"canonical", human-readable, stylised, formal label for a
concept the user of a terminology may wish to actually name
differently in day-to-day use ?

Karsten

I’m not sure Diego. I guess so. We definitely need to be able to specify at template level how/if any code bindings should be handled at runtime. I suspect this might need some sort of rules that are a bit more complex than just a simple constraint.

This conversation might be a chance to tease out exactly what is required in terms of implementer guidance. I.e. In Bert’s case, exactly what does the customer expect to happen.? Is ICD preferred to icpc. How is any actual code mapping carried out. I can supply some similar use cases from uk allergies work where we are transitioning to snomed but need to carry legacy codes.

Ian

Yes.

Any item in an archetype potentially has:

  • an ad-hoc, locally defined, display name
  • an official canonical name in a specific language domain
  • and, in order to disambiguate it, an unique code in
  • a specific terminology/classification domain

Gerard Freriks
+31 620347088
gfrer@luna.nl

Kattensingel 20
2801 CA Gouda
the Netherlands

Hence the notion that the "name" in*side* the terminology
domain could be discussed to be ignored in the context of
Bert's question such that it becomes

  user-level name
    code from domain A
    code from domain B

in which

  name from domain A/B/...

doesn't occur which means

  user-level name

IS TO BE mapped at any rate, typically in a way where
user-level name in clinical artifacts isn't directly
associated with particular codes but rather a mapping
"relation" (of whatever kind) is used.

Karsten

It is a customer requirement. It is a real life problem.

It is not very helpful to me to have discussions about the good, bad or ugly of solutions. But, of course, go ahead for your own interests.

It is about an international organization which processes data from several countries.

The several countries have independent organizations, and the overall organization cannot enforce a common terminology. There are two terminologies in this case, and those two terminologies cannot be mapped easily, because the granularity is different.

How this is handled until so far this problem is to add the two required codes to an item. So everybody was happy.

Now this customer is moving over to OpenEHR, and because DV_Coded_Text accepts only one terminology per occurrence, this is a problem..

It would be nice to have the RM accept more codes, but that is not likely to happen (anyway not soon), although I don't see any problem in having this feature.

So we need to find another solution which is elegant and efficient.

My best guess is, to have two DV_CODED_TEXT's in a Cluster, and from one DV_CODED_TEXT, have the value-property put off in the template (I hope that is possible, I did still not look at that, if it is not possible we need the GUI to handle this, which is, I think, the worst case solution).

Thanks,

Bert

Hi Bert,

I think you have missed the response yesterday from a couple of people, who suggested that you could use the DV_TEXT (or DV_CODED_TEXT) mappings.target:

  http://www.openehr.org/releases/RM/latest/docs/data_types/data_types.html#_dv_text_class

Your text item could have 2 mappings. The target of each mapping is a CODE_PHRASE, which has a terminology id and a code.

Does that help?

Peter

Thanks Peter, I must have missed it.

blush blush (missing my regular workstation/email client)

It is indeed the solution.

Sorry for that

Best regards

Bert

Perhaps I have come in at the wrong point of the conversation and missed the original question but I believe that the SEC has already approved a change (or at least got a change proposal from me, I’ll need to follow up to find the Jira card) to add a value to the mappings code phrase. Is this a solution to your issue?

Heath

See SPECPR-132 and proposed solution in SPECPR-165 which is designed to not break the current schema. They appear to be assigned to R1.1 but not progressed to a CR.

Heath