>>
>> In my system it is not useful to preload archetypes, because, 
>> archetypes are only parsed once in my system.
>> That is when they are saved in the system. They are parsed in order 
>> to create a RNG/Schematron definition.
>
> ok, so the downstream form of an archetype you are using is a 
> Schematron schema - so that's the thing that needs to be stored.

OK, I misunderstood that part of the discussion, having a form of 
XML-schema is a representation of an archetype, which can be for 
specific purposes like validation more efficient then the 
archetype-object, depending on the technical architecture of the kernel.

It seems that we agree on that.

>
>>
>> That is used to validate the data, and if new data are entered, then 
>> they will be checked against that RNG/Schematron definition, not 
>> against the parsed archetype.
>> The schema is loaded in microseconds and the validation takes one 
>> second.
>>
>> After the data are validated, they are stored in an XML-database, and 
>> they will never be validated again. They are ready for XPath-queries 
>> and XQueries, and all kind of complicated handling without even 
>> looking at an archetype.
>
> right - that sounds like all other archetype-based systems I know of.
>
>>
>> So the refusal to specify a "archetype_id" in the specs is, in my 
>> architecture, bad for performance, because it forces extra 
>> archetype-parsing, so I have that property without  the consensus 
>> with the specs, and I do not see it as a waste. I make sure that when 
>> I have to export data to an OpenEHR system, I will put the 
>> archetype_id in the archetype_node_id property.
>
> but the specs already specify archetype_details, which contains the 
> archetype id. And you can detect that easily in a schematron schema I 
> guess.  So you can easily figure out that you are on one of those 
> nodes. Is the real problem simply that the syntax of what is in 
> archetype_node_id on one of those nodes - an archetype_id rather than 
> an at-code - causes some problem in your processing? I am not clear on 
> what though... are you trying to use the at-code texts at runtime? Are 
> they also in the Schematron schema?

We are not talking about the OpenEHR reference model, but about 
archetyped data-handling.

I have two arguments, the first one is most simple to explain, so I 
start with that.
----------------------
1)
*A golden rule in design is that attribute-names should indicate what 
they are there for.*

We are not writing obfuscated code, but readable code, because the cold 
war is finished, and we do not need to confuse the Russians anymore, so 
we can safely honor this rule.

This means, an attribute (in the ADL common notation) which contains the 
archetypeNodeID should be called archetype_node_id and an attribute 
containing an archetypeId should be called archetype_id and it is 
confusing to use the attribute archetype_node_id to store both, and 
even, which makes it worse, without indication about what is in it.
----------------------
2)
The second argument is a more technical issue and a bit difficult to 
explain, but I try with an example:

Imagine you have extracted an XML-path in your datastorage which says
....../details[@archetype_node_id="at0001"]/items[@archetype_node_id="at0003"]/.........

Say, your client software wants to build a GUI, and uses the 
ontology-information to create the GUI-control-indicators and 
help-information. I think this is possible to do that that way. It makes 
dynamic GUI-building possible.
This example-path above is easy to find and will not cause any 
complicated handling.

But in the current situation, the path can look like:
....../details[@archetype_node_id="at0001"]/items[@archetype_node_id="openEHR-EHR-ITEM_LIST.address.v1"]/.........

First Step: Now the GUI software wants to have a container-control which 
contains the items, and it looks in the ontology of the containing 
data-set-archetype to find the archetype_node_id: 
"openEHR-EHR-ITEM_LIST.address.v1"

It does not find it, because it is not there.

Second Step: Now you suggest that the software should look if there is 
an archetypeDetails attribute, to see if there is another archetype to 
be used for ontology search. This is one step extra the software needs 
to do.

Should it do this at every archetypeNodeId, or only if search did not 
give a result? That is a statistical question, which workaround will be 
applied more and cost more on the long term. Maybe some tricks may help, 
and we get tricky software.

Third Step: Then, the archetype_node_id in that archetype to search for 
is invisible for the software, because, it is not in the path. So, this 
step is a more complicated, the software needs to know which 
archetype_node_id belongs to the root of that archetype, and then it can 
find in the ontology section what the description is.

This all could be so much easier, and efficient when the extracted path 
looked like:
....../details[@archetype_node_id="at0001"]/items[@archetype_id="openEHR-EHR-ITEM_LIST.address.v1"
 
@archetype_node_id="at0000"]/.........

The software would know in one step what to do to build its dynamic GUI. 
It would see in one step that there is another 
archetype/ontology-section involved, and it would know in the same step 
which archetypeNodeId to look for.

It seems to me that the golden rule in my first argument is there for 
good reason. It makes code not only better readable, but also more 
efficient, it forces short code-paths to solutions for information-handling
----------------------

I hope my arguments are clear now.

Bert

Reply via email to