On 28/04/2011 02:07, Heather Leslie wrote:
> Hi everyone,
>
> I think you are missing some of the further complexity here. There is 
> a definite need for differentiation between draft and published 
> archetypes for which a version number alone is not enough.
> Currently we are talking only about v1 archetypes and how to manage 
> them, and to a degree it makes sense. We certainly considered using 
> v0.x for drafts but it doesn't solve the downstream problems - once a 
> v1 archetype is published, the non-breaking revisions will become 
> v1.1, 1.2 etc. No problem
> But when we make a breaking change it becomes v2 (or v3 or v4 or 125), 
> but it needs to be clear that it is v2 *draft* initially and not v2 
> *published* until we have completed the neccessary collaborative reviews.

There are two ways to look at this:

    * A - 'draft' is only possible at the notional v0 or first version
      stage; after initial publication, it can't be used, since the
      archetype is now 'in the open'
    * B - it is possible to go back to 'draft' status when the major
      version number is incremented on the basis that a new major
      version is a new archetype, and authors need to be able to go back
      into 'initial development' mode

I can see arguments for both. What we need to decide on as a community 
is what rule we want here, and to stick to it. If we can decide that, we 
can document it and post it in a new draft of the identification 
specification 
<http://www.openehr.org/svn/specification/TRUNK/publishing/architecture/am/knowledge_id_system.pdf>.
 


Diego's problem of knowing what archetype one is actually using is real 
and needs to be solved. CKM does track revision numbers, but they are 
not part of the version id, and you have to go into the revision history 
view to see them. However the above-mentioned identification draft spec 
indicates a system of referencing to do this such that an archetype 
whose id is currently shown as openEHR-EHR-EVALUATION.diagnosis.v1 would 
be referenced from data and / or software (i.e. in any operational 
context) as openEHR-EHR-EVALUATION.diagnosis.v1.29.0, or in the future 
with a namespace as well, i.e. 
org.openehr.ehr::openEHR-EHR-EVALUATION.diagnosis.v1.29.0

Note that in this system of identification, if the final part of the 
revision number is a '0', i.e. the '0' above in '1.29.0', it means that 
the archetype is published; if it is anything else it is draft or some 
other pre-release state (this corresponds with view B above). Changes in 
the lifecycle state of the archetype are assumed to always cause an 
increment in final number of the extended version id.

A fuller idea of referencing archetypes from from data is described in 
this spec, exemplified by the following:

se.skl.epj::openEHR-EHR-EVALUATION.genetic_diagnosis.v1.12,  -- some 
Swedish archetype
org.openehr.ehr::openEHR-EHR-EVALUATION.diagnosis.v1.29,   -- its 
parent, the CKM diagnosis archetype
org.openehr.ehr::openEHR-EHR-EVALUATION.problem.v2.4       -- the 
ultimate parent, the CKM problem archetype

here the whole specialisation lineage has been included. The reason for 
doing this are a) if the archetype lineage information is not shared 
between sender and receiver (maybe the receiver can't see the Swedish 
CKM) and b) to enable the receiver to know what archetypes could be used 
for querying the data, assuming it was not going to use the most 
specialised one (e.g. the data might have been sent from Sweden to 
Denmark, and the Danish system doesn't use the Swedish genetic diagnosis 
archetype, but does use the other two).

Note that the version ids above only have 2 parts, because the final 
part is always '0' for published archetypes (but it could be included 
for better consistency).

Assuming this kind of system was used, then supporting it requires some 
changes in CKM to a) make the full version + revision id visible.

Note that the 'identifiers' above are just strings. Even in a future 
where Oids were used for identifying artefacts, you still need to 
generate the above strings, or the equivalent, from meta-data - 
essentially as composite keys (in the relational sense) so that 
comparisons can be made between artefacts. (Or they might also be 
obtainable from some Oid-keyed meta-data repository). In other words, 
embedding such strings in data isn't making a statement about how 
archetypes are identified, it is just one useful means of *referencing* 
archetypes.

Finally, to be sure that the archetype you have in your environment is 
indeed what you think it is, digital signing, or at least hashing, is 
needed such that published archetypes are posted with their signatures 
alongside for verification by accessing systems. MD5-based hashing is 
already in use in some openEHR-based products, but it has not been 
properly described (an initial idea is in section 8 of the 
identification spec doc).

It seems that there is enough use of archetypes now to finalise many of 
these issues, and describe them in a new issue of the identification 
specification. We then need to work out an implementation plan, mostly 
to do with changes to CKM to support the decisions.

There are two ways to go about this:

    * interested parties review the identification spec, and provide
      feedback
    * we work out the details on the technical list + wiki via
      discussion and then update the spec.

Key things that need decisions:

    * do we go with starting at v0 or v1 (I still like v0 because it
      implies 'you will most likely get burnt by using this archetype in
      a real system, but have fun and tell us your experience')?
    * can we agree on the archetype life-cycle states and the idea that
      a change in state always causes an increment in minor revision number?
    * how should archetypes be referenced from data?
    * what system of hashing and signing should be used?

- thomas*
*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.openehr.org/mailman/private/openehr-technical_lists.openehr.org/attachments/20110428/6eacdbf4/attachment.html>

Reply via email to