LinkEHR writes an archetypenode id in a use_node, the Java ADL-parser
regards this as erroneous, although it is permitted in the AOM, where
there is an nodeId in the ArchetypeInternalRef constructor.
The repair in adl.jj was, however simply to do. I tested it with all
available testfiles, and also with adding an nodeId in the
adl-test-entry.archetype_internal_ref.test-arc hetype, like this:
attribute3 matches {
use_node SECTION /items[at0001]
use_node SECTION /items[at0002]
}
attribute4 matches {
use_node SECTION[at0005] /items[at0001]
use_node SECTION[at0006] /items[at0002]
}
I copied the needed code-change down below:
ArchetypeInternalRef archetype_internal_ref(String path, CAttribute
parent) :
{
String type;
Interval<Integer> occurrences = new Interval<Integer>(1, 1);
String target;
String nodeID = null;
}
{
<SYM_USE_NODE> type = type_identifier()
[ nodeID = constraint_ref() ]
[ occurrences = c_occurrences() ]
target = absolute_path()
{
return new ArchetypeInternalRef(path, type, occurrences, nodeID,
parent,
target);
}
}
---------------------------------------
Also, I mentioned another problem in the ADL-parser last week, but I got
no feedback on that, it was maybe because it was a bit confusing.
Again, below the description and how to change the code:
The ADL-Parser is not capable of parsing EN13606 archetypes because of
the keyword "units" which belongs to the EN13606 datatype PQ.
I solved this problem by commenting out all occurrences of SYM_UNITS
This is in line 2958, becomes:
CDvQuantityItem c_dv_quantity_item() :
{
Interval value = null;
Interval precision = null;
String units;
}
{
"[" string_value() "]" <SYM_EQ> "<"
(<SYM_C_QUANTITY_UNITS>) <SYM_EQ> "<"
units = string_value()
">"
[
<SYM_MAGNITUDE> <SYM_EQ> "<"
value = real_interval_value()
">"
]
[
<SYM_PRECISION> <SYM_EQ> "<"
precision = integer_interval_value()
">"
]
">"
{
return new CDvQuantityItem(value, precision, units);
}
}
and line 341 containing: | < SYM_UNITS: "units"> :DOMAIN_TYPE_C_QUANTITY
is removed
--------------------------
I don't know if it is wished that both issues which are repaired this
way will be posted in the according repository.
If so, I can post the change.
If not, it works for me.
Thanks
Bert