Need to specify a choice of different objects within a container attribute in Archetype and Template
Activity
Thomas Beale May 21, 2015 at 12:49 PMEdited
See https://openehr.atlassian.net/wiki/display/ADL/Archetype+Group+Construct for solution - implemented in 2.0.6
Heath Frankel May 8, 2015 at 12:03 AM
The comment above doesn't seem to be related to this issue, for me this the comment is relevant to the RM assumed requirement to have unique names in data.
Alessandro Torrisi March 21, 2009 at 1:46 PM
Suppose we have an archetype, with 1 question "What do you like to eat", it is connected to a coded_text list of "Pizza", "Pasta", "Fish", and "Soup". It is set to occurrence=unbounded.
Now I want to put data in site the archetype, so I get the question, and want to answer it. I am Italian, and I like Pizza, as well as Pasta.
In real life :
Q: What do you like to eat?
A: Pizza, Pasta
In openEhr:
Q: What do you like to eat?
A : Pizza
Q: Waht do you like to eat?
A: Pasta.
I did not asked the question twice, so it is not correct this way.
Beside that, there is an other problem :
In openEhr:
Q: What do you like to eat?
A : Pizza
Q: What do you like to eat?
A: Pizza
Q: What do you like to eat?
A: Pizza
As you can see, I entered 3 times pizza. There is no constrain to avoid this behavior.
Now the technical part..
The example question looks in XML like this :
<items xsi:type="Element" id="at0004" minOccurs="0" maxOccurs="unbounded">
<name>What do you like to eat?</name>
<valueConstraint rmType="DV_CODED_TEXT" xsi:type="CodedTextConstraint">
<definingCode>
<terminologyId>local</terminologyId>
<codeList value="Pizza">at0005</codeList>
<codeList value="Vegetables">at0006</codeList>
<codeList value="Hamburger">at0007</codeList>
<codeList value="Soup">at0008</codeList>
<codeList value="Pasta">at0009</codeList>
<codeList value="Salmon">at0010</codeList>
<codeList value="Fish">at0011</codeList>
<codeList value="French Fries">at0012</codeList>
</definingCode>
</valueConstraint>
</items>
The path is:
/content[openEHR-EHR-OBSERVATION.uvs_multiselect.v1 and name/value='UVS Multiselect test']/data[at0001]/events[at0002]/data[at0003]/items[at0004 and name/value='What do you like to eat?']
Now suppose I still want to answer the question with pasta and pizza I get this :
/content[openEHR-EHR-OBSERVATION.uvs_multiselect.v1 and name/value='UVS Multiselect test']/data[at0001]/events[at0002]/data[at0003]/items[at0004 and name/value='What do you like to eat?']/value = pizza
/content[openEHR-EHR-OBSERVATION.uvs_multiselect.v1 and name/value='UVS Multiselect test']/data[at0001]/events[at0002]/data[at0003]/items[at0004 and name/value='What do you like to eat?']/value = pasta
As you can see we have 2 times the same path. I cannot data on the same path twice.
Two use case for choice are:
1) Within an archetype it is currently common practice to use a CLUSTER containing two optional elements to simulate the real requirement to indicate that the two elements are alternative choices (e.g. age or data of birth). The cluster is actually a redundant level of data that would not be necessary if a choice mechasim was available.
2) Templates that contain an archetype with a slot that allow multiple archetype fillers (e.g. COMPOSITION.problem_list allows EVALUATION.problem, EVALUATION.problem-diagnosis, EVALUATION.problem-diagnosis-histological, EVALUATION.problem-genetic, EVALUATION.injury) need to allow the slot to be filled with a subset of those allowed (e.g. EVALUATION.problem, EVALUATION.problem-diagnosis and EVALUATION.injury) and apply further constraints on those fillers. The resulting operational template will represent this filled slot as an ordered sequence of these EVALUATIONs forcing all the problems to be grouped together, followed by all the diagnosis and finally all the injuries. However, it should be possible for a user to order their problem list as they wish, allowing problems, diagnosis and injuries to be arranged in any combination. Simply making the container non-ordered is not sufficient as this group of problems may need to followed by addition content such as a EVALUATION.clinical_synopsis etc.