Thomas et al : As David acknowledges (below) your comments provide food for thought and further exploration. I am travelling April 8-24 (family gathering in Australia) and will pick up on this thread whence I return.
carl ---------------------------- Original Message ---------------------------- Subject: Re: likes CAM [Fwd: Re: [bcm] Todays meeting [Fwd: Re: OASIS I do like the possiblity here of mapping from OCL; actually this kinda validates our approach - since the scripting can support higher level representation models well - that can then use production rules to create the various sections of the CAM template. Yes - the external mapping is an after thought - mostly to satisfy local formatting needs - and yes - you can make that an <include> so its not part of the main mapping - just optional, and that fixes the re-use issues. It's one of those ugly - people will ask for it - so we added it (specifically for a UPU address label application) things. The way we do repeating groups is pretty clever - since we only need to call these out for extended parent/child linkages (this is one aspect I "borrowed" from the XML mapper I engineered) - otherwise the engine can follow an intuitive flow guided by the reference structure. There's an @ mechanism to direct that as needed. We've not been to strict with typing in the structure - since you can use functions or masks to direct that behaviour - and also often some fields may need mixed typing - eg 'NONE' or '[value]', etc. Anyway - clearly good basis to explore further. I think he will like my VisualScript templates for CAM - and also the XML business noun structure for registry. Also - he should review the SCM team work on OWL.... Cheers, DW > ---------------------------- Original Message ---------------------------- Subject: Re: [bcm] Todays meeting [Fwd: Re: OASIS CAM / BCM] > From: "Thomas Beale" <thomas at deepthought.com.au> > Date: Mon, April 4, 2005 8:54 pm > To: openehr-technical at openehr.org > -------------------------------------------------------------------------- > > Carl Mattocks wrote: David (Forslund) et Al : FYI - We > informally discussed your comments at the BCM TC meeting today. > There was general agreement that it would be good if we could > work towards a cooperation that would result in a common > definition of how Templates & Archetypes support e-Health and other e-business services. I have had a quick look at the > main CAM specification. I hope you will excuse me making my > observations in the form of comparisons with ADL and other > formalisms - ADL and OWL are my main thinking reference points > these days.... > General My first comment is that it is very good to see someone else > doing some detailed thinking in this area - coming no doubt from a different background to our openEHR efforts. Cross-analysing each others' work will only lead to better work in my opinion. Now to the details.... > > I think it would be far preferable not to use XML in the specification or > document - it's very hard for humans to read, and it obscures the formalism that is being presented. It also makes it harder to see how to use it in non-XML formalisms. Having said that, I am glad to see that Xpaths are being used to reference things. > > A general approach is to define an abstract formalism that embodies > exactly what you want, without being messed around by XML. See W3C OWL for an example (or openEHR ADL for that matter). I would also prefer to see a stronger binding to object-oriented semantics such as UML (well, we can debate about how good that is, some other day...). XML-schema is generally regarded only as an approximation to OO. One of the reasons to go with "real OO" is that we can not only have a syntax (ADL - > http://www.openehr.org/repositories/spec-dev/latest/publishing/architecture/am/adl.pdf) > but we can also have a direct equivalent object model of archetypes (AOM - > http://www.openehr.org/repositories/spec-dev/latest/publishing/architecture/am/aom.pdf), > which is what programmers need to work with. > > Having reviewed the 5 sections of a CAM document, I have come to the > conclusion that the final section - External content mapping - does not belong; see comments below; I think this part is overambitious in a specification which is otherwise pretty clear. > > Otherwise, there is a lot in common with our work, and I look forward to > deeper mutual exploration of the work we are doing. Assembly Section > As far as I can tell, each CAM document indicates the model (assembly) > it constrains, in the "assembly" section. openEHR ADL simply references the model being used, in the archetyped identifier, e.g. > openEHR-EHR-ENTRY.bp_measurement.v1, meaning "this is an archetype of the ENTRY concept from the openEHR EHR information model". > > It seems that in the assembly structure there are template-like places > where data could be put at runtime, marked by %%, e.g. > %% %% WorldCupSoccer %% %% > One problem I have with this is that there is no typing on the data; how > do you ensure "UnitPrice" is a monetary amount? > > Business Rules I think this section is the equivalent of the main body of > the archetype. It uses a functional syntax to constrain structure, e.g. > I suspect that the predicates of CAM might map fairly well to > the cADL semantics in ADL. One thing I cannot see in CAM is how > multiple repeated members are dealt with, e.g. multiple > ELEMENTs in a CLUSTER (openEHR model). We deal with this by > having an identification system which identifies every node in > the archetype structure - which is more like an instance > structure than a class structure. To see an example, see > http://www.openehr.org/repositories/archetype-dev/latest/adl/archetypes/openehr/ehr/entry/observation/openEHR-EHR-OBSERVATION.apgar.v1.html. > You can see multiple ELEMENT children, identified as [at0005] > (heart rate), [at0009] (breathing) etc, of the LIST parent, > identified with [at0001]. In ADL we can use paths to access any > such repeated element anywhere in the tree, enabling the > archetype writer to make statements about each _instance_ of > ELEMENT under its parent. I don't yet see how CAM deals with > this requirement; although, thinking about it, Xpath allows one > to reference the n-th child of a parent, so maybe it is done > like that. One problem with that is it requires a certain > ordering for the constraints to apply to the correct items. It > may be that IDvalues are used to do this, but I can't quite see > it. > > UIDrefeences seem to be something like a 'coded term/expression' which > refers to a value set, e.g. the possible set of terms which are names of diseases affecting the liver, or blood types etc. > > I noticed also the predicate SetValue(); I take the meaning of this to be > setting default values. The equivalent of this in ADL is actually in the templates - over the years of work on archetypes we have discovered that setting default values is almost always a local, and putting it in archetypes prevents the archetypes from being properly re-usable. Our forthcoming template specification shows how to set default values. > > Another point of similarity & departure is section 4.3.1 - Xpath > comparator functions. ADL does not currently use specialist functions, since it just relies on the object-meta model, i.e. it can reference a named property of any class in a UML model, and make a comparison statement based on that. For example, you can state that the range of a QUANTITY.magnitude is 0..150. String pattern matching is done using the PERL style of regular expressions. Operators like count() we provide via 'cardinality'. Other arbitrary operators aren't provided, and we don't think are likely to be needed in most cases. However, there will be a way to make comparisons with functions defined in the given UML model, e.g. something like "Person.age() > 40". > > The ADL equivalent of the CAM mask syntax for numerics is the regular > expression and/or the ability to constrain object properties like precision. I can see that some people might prefer the dBase-ish mask syntax though - it is easier to read for simpler cases; REs do give you more power, but I admit it might be debatable as to whether you ever need it. For date/times, ADL uses only ISO8601 format, and bases its > constraint patterns on ISO8601. I have to say I am in favour of one standardised way to do dates/times; the local preferences should always be translated at the GUI...Also one of the things we handle with the ADL date/time patterns is partial date/times which are ubiquitous in medicine (and I would argue everyewhere else;-). > > Content Referencing I think that the content referencing part looks > interesting, e.g. > We have been searching for a while for proper ways to do this, and I > suspect that there is some thinking here we could use; I do find it annoying to have to mentally try and work out the formalism by > reading raw XML though! The general equivalence with ADL is the 'ontology' part of an ADL archetype. > > The general problem being dealt with here is the interface between > archetypes/templates and other knowledge resources, ontologies and reference databases. As far as I know, no-one has developed a good way of doing it, but there is reasearch at the University of Manchester on it currently going on. I would suggest that rather than calling this part of a CAM template "content referencing", it should really be called "knowledge referencing" (although that would break the ABCDE thing;-). Data Validation This is marked as an advanced option and it says: The DataValidation section is thus more likely to be tied to a particular production implementation and environment, particularly for post-content creation checks. > > Our analysis is that data validation can mostly be specified re-usably in > archetypes, with local modifications specified in templates. Data validation comes automatically in ADL, and is one of the primary functions of archetypes. THe openEHR archetype-processing kernel does two main functions: default data creation, and data validation. More complex data validations in ADL which are the equivalent of the following CAM: > are done in the invariant section, using first order predicate logic > statements in OCL, in keeping with the UML/OCL object-oriented approach of archetypes. > > Although I can't guess the formal semantics of the functions and XML > attributes beig used, it looks as if there would be a pretty close mapping to OCL statements; I have to say that I would recommend OCL-like syntax due to its generality; in the CAM approach I would suggest that new XML attributes and functions will continually have to be invented to take care of new kinds of conditional statements (but maybe I am missing something here). External Content Mapping I haven't really studied this section, but would point out that in principle, having local > context-dependent instructions in what is otherwise a reusable template renders the template non-reusable. If I understand what this part of a CAM template is, it should be in local templates, not the reusable template (what we call an archetype). Then multiple local users can have their own templates, and all reuse the same archetype. > > I also notice that in the semantics of this section, the functional > language of Xpath is being relied on. Personally, I think that this is likely to remain limited - just enough to make Xqueries work. I suggest that a more general FOPL or mathematical syntax be considered. > > As far as I can see at this stage, this section is ad hoc, and used to > "provide hints in implementation contexts", so I don't have a good feel for what it is trying to do. I would say that quite apart from it being local content in an otherwise reusable specification, its semantics (inferring from what I read in the document) are not likely to be that compatible with the rest of the ABCD sections, and this is another reason to remove this part from CAM templates. The section on merging makes me even more sure of this! > > - thomas beale -- Carl Mattocks co-Chair OASIS (ISO/TS 15000) ebXMLRegistry Semantic Content SC co-Chair OASIS Business Centric Methodology TC CEO CHECKMi v/f (usa) 908 322 8715 www.CHECKMi.com Semantically Smart Compendiums [AOL] IM CarlCHECKMi - If you have any questions about using this list, please send a message to d.lloyd at openehr.org

