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?
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)?
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.
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
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.
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.
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.
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?
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 ?
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.
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.
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).
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:
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?
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.