Hi Tom, a very comprehensive set of questions to determine the requirements...
I will provide my point by point feedback shortly but I have one objection/suggestion re using annotations for GUI matters. As name implies annotations seem to me something for the humans; providing context and additional information about a particular data point. Exploiting this section for GUI generation which will be consumed by GUI tools/generators do not seem all too appropriate to me. What I have in mind is a separate section for GUI Directives or at least introduce a reserved keyword for this purpose within annotations section. I think that'll ensure more consistent and safe implementations by different groups. Both support your points about tag standardisation... Cheers & happy new year, -koray From: openehr-technical-bounces at openehr.org [mailto:[email protected]] On Behalf Of Thomas Beale Sent: Friday, 24 December 2010 12:25 a.m. To: Openehr-Technical; For openEHR clinical discussions Subject: Archetype & Template ANNOTATIONS - requirements? All, the next beta of the archetype workbench, which is progressively implementing all of ADL 1.5 will include 'annotations', which is a feature enabling a set of comments to be created on a per-node level in an archetype. The raw ADL appearance of this is typified by the following two test archetypes (go to the bottom): http://www.openehr.org/svn/knowledge2/TRUNK/archetypes/ADL_1.5_test/validity/annotations/ For a given node (i.e. path) and a given language in an archetype or template, the annotations are a set of name-value pairs (technically a Hash of Strings, with String keys). This means you might have the following on some node in an archetype (keys in italics, values to the right): * clinical justification: "see xyz examination protocol, at http://medline.org/some/ref.html" * data type: "free text with optional preferred coding" On a template, we would expect the annotations to be more local, e.g.: * NHS data dictionary: "See doc xxxxx, ref yyyyy" * Terminology: "constrained according to NHS ED 4h protocol" Of course we don't know exactly how things will turn out, so we need to see some experimentation in the real world. REQUIREMENTS QUESTIONS - please provide feedback: * BASIC REPRESENTATION: all annotations are (unicode) String values with (unicode) String keys, * this allows any string, including in script languages like Farsi, Hindi, Chinese etc * Q1: is such a structure powerful enough? It might be argued that the keys should be internal codes, i.e. at-codes, or external coded concepts, e.g. SNOMED codes. * PERSISTENCE: where do annotations get recorded? * if annotations are regarded as an intrinsic part of an archetype, they are recorded in the archetype: this is what we have currently implemented * if annotations are regarded as intrinsically part of the local use environment, then they would be persisted as some adjunct artefact that references an archetype, or else in specialised archetypes/templates, even if no other constraints are added to the archetype proper; we have currently assumed the latter. * Q2: if both are assumed, then some rules for a) translations and b) merging are required; SEE BELOW * LANGUAGE annotations groups (i.e. set of key, value) on a per-language basis, i.e. 'en' annotations separated from 'es' from 'cz' etc in the usual way * Q3: this means that for a given archetype, there is a choice with respect to translations: * force translation of all annotations to all languages available for this archetype: this is probably reasonable for international archetypes on CKM, since any such annotations must presumably be relevant no matter what language * for any given archetype, within a specific use context, allow just the annotations in the local language to exist? This appears to be reasonable, since just because a CKM archetype had a Swedish translation doesn't mean your local users in Beijing should translate their annotations to Swedish... * If the answer to Q2 is that a mixture is allowed, then we should allow both of above possibilities for translation, and we assume that any local translations are within local archetypes / templates. I.e. you can't add annotations outside of an archetype or template. * TAG VALUES: should keys be standardised in some way? Currently, we implemented just Strings. The answer depends on our notion of how interoperable annotations should be. * Q4: Requirements possibilities: * no standardisation (what has currently been assumed) * international standardisation only - i.e. only CKM archetypes would have standardised tags; this can be supported with the 'no standardisation' option as well, since centralised/standardised tooling could ensure standard tag sets. * standardisation at a national level, perhaps in concert (one day) with IHTSDO, and using the Snomed CT 'national extension' as a place to do it * standardisation within 'families' of archetypes. This does not seem so likely, since many tags should be standard across most archetypes developed by a particular programme. * Technical options: * Q5: make them internal coded terms instead, allowing tools to more easily control which sets of keys are used in a particular place. * Q6: but this still doesn't force any standard set of key values across a group of archetypes, e.g. as created within a single government national repository. Doing that might be an argument to use SNOMED codes from the local extension. Assuming everyone agrees that they will use SNOMED! * MERGING: annotations on a given node are keyed by the path to that node in the archetype or template. Currently, annotations in a specialised node in a specialised archetype are treated as distinct, and the annotations are not merged. * Q7: it could be argued that in the 'flat' form of an archetype or template (including the operational template), the annotations from all specialised versions of the same node should be merged, rather than just keeping the annotations (if any) from the proximal archetype in use. * if merging is to be used, how to do it? If the same keys are encountered, do we simply append the string values for a given key? Or use some more sophisticated generation of key values a bit like at-codes, whose depth can always be known. E.g. a key "terminology" might be converted to the key "terminology.1" and "terminology.1.1". This seems clunky, and might be an argument for making all keys at-coded terms, so that the keys are just normal at-codes like at0001, at0001.1 etc, and obey all the usual rules of these codes, which are already established * slight variation: make a new annotations-specific series of code types, "an0001", "an0001.1", "an0.1" etc. This would make it easy to keep annotations keys separate from at-codes, enabling the annotations part of an archetype to be thrown away in runtime versions. BUT SEE SNOMED option above. * OPERATIONAL USE: it is currently assumed that annotations are design-time only, and can be safely removed in operational expressions of archetypes, i.e. within operational templates (OPTs). However, it could be argued that OPTs should (sometimes?) keep annotations for use within some design time tools. * Q8: therefore, should anotations be present in OPTs but removable in downstream generated artefacts? My own feeling is that we should get a balance between complexity/sophistication and pragmatism as follows, noting that we have little evidence in the field for this so far: * BASIC REPRESENTATION: the more I think about it, the more I am inclined to implement tags as 'an-codes' rather than just Strings. See following points for why. * PERSISTENCE: annotations can only exist in an archetype or template, i.e. no new kind of artefact is required. This means that if all you want to do is add annotations at a local level to a national or international archetype, you have to create a specialised archetype or template. This seems reasonable enough, since if you want to create local annotations, the likelihood is that you want to add some local constraints as well, typically at least on coded fields. * LANGUAGES: annotations have to be translated to all languages defined in the archetype in which the annotations were authored. This means that international and national archetypes, likely to have more languages, would indeed have annotations translated across all languages present, with the annotations in each language being of the same path & key structure. * TAG STANDARDISATION: YES to coding of the tags using internal codes, e.g. with an 'an-code' series (rather than no coding or SNOMED CT coding). WHY? * This enable tools to exert some control over translation, same as for at-codes, ac-codes * Internal codes can have bindings to external codes, e.g. SNOMED CT codes in the future. Assuming global access to and implementation of SNOMED CT & national extensions is probably too much at this stage. If it does all go SNOMED CT for everyone in the next few years, the binding ability will enable archetypes to easily simulate direct SNOMED CT coding. * term definitions for Internal codes for the tags can be changed, without structurally changing the archetype annotations * existing specialisation rules can be used to reason about merging, since we already have rules for this on at-codes attached to nodes. * OPERATIONAL TEMPLATE: we should assume that annotations are retained in the operational template (perhaps as a tooling option), since the OPT form is used in design time tools to create final stage artefacts, e.g. software APIs, GUI forms etc, and also documentary rendering of the templates for review. The current implementation will be release in the next 2 weeks or so. All feedback is welcome, and will be used to improve the facility. Anyone who wants to write test archetypes also welcome. I am particularly interested in the thoughts of clinical people. - thomas beale -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.openehr.org/mailman/private/openehr-technical_lists.openehr.org/attachments/20101230/b9270dd9/attachment.html>

