On 17/03/2011 08:08, Athanassios I. Hatzis, PhD wrote:
>
> Hi Thomas,
>
> I read your email and I would like to comment on the three main topics 
> you touched. First I believe that people in openEHR project have 
> contributed a lot in all three areas of health informatics as you 
> mentioned in your email and congratulations to all for leading 
> innovative work. Nevertheless in my opinion what makes openEHR to 
> excel in the domain of health informatics and where I certainly place 
> my bet for the future is the design of archetypes and especially 
> templates. This is THE bridge between health professionals and 
> software developers.
>

yes - this is the key for the future.

> You can find tons of specifications from all the organizations you 
> referred to and you can also find a lot of open source software tools 
> and applications in the health domain but the simplicity of archetypes 
> and templates and the tools to design them is unique in your project. 
> Nevertheless the last two years I have been pondering a lot on the 
> state of the art regarding the design of graphical user interfaces, 
> the design of the data model and the trend to support distributed 
> systems with web services. This is certainly not the place to get into 
> great depth about the technical details on all these but I am more 
> than happy to present you my research plan and perhaps you can provide 
> me with answers or directions on the OPEN design principles that you 
> followed in your project in order to cope with the following issues:
>
> 1.Data model (I am referring to your UML RM model) - Archetypes and 
> templates
>
> a.What database model are you using for the permanent storage of your 
> entities, is that implemented on a popular DBMS, is it open ?
>

openEHR does not specify a physical data model - this should be a 
freedom left up to developer organisations. They may want to persist 
data in:

    * an object database,
    * a relational DB ...
          o in classic 3NF form
          o in blob + index form
          o in some path-based form
          o in some hybrid of any of the above
          o other...
    * some fast-file database
          o like MUMPS (e.g. Cache)
          o like http://fallabs.com/kyotocabinet/
    * something else


all these have different run-time characteristics, which are crucially 
important in production deployments, since we are talking about 
O(10,000) - O(1,000,000) of EHRs. Even for a relational DB, as you can 
see there is no standard persistence approach. What is starting to 
emerge is lessons on better and worse DB strategies, and maybe openEHR 
will publish some of the ones that work best. My guess is that the place 
to look for interesting strategies is in projects like the opereffa project.

> b.How do you connect the database model with the programming data 
> model and your ADL structures, what kind of OR mapping are you using
>

this is heavily dependent on the DB approach used. In the Ocean 
products, a blob + index approach is used; this means blobs are 
serialised and deserialised ('materialised') straight from/into object 
structures. If a classic 3NF approach were used, an O/R mapper has to be 
used. Classic 3NF for very object-oriented/hierarchical structures 
doesn't work well, so it is best avoided. Some hybrid of blob/3NF can be 
used; this needs to be designed and then you can use products like 
Hibernate to help (but note Hibernate will, left to its own devices, 
generate absolutely terrible DB table structures from object models).

> c.Why are you using ADL and not standard XML-XSD to describe your 
> archetypes, templates ?
>

There are two answers to this....

1. Archetypes as XML Schemas (XSD)
it is difficult to specify any kind of information models properly in 
XSD, because its inheritance and genericity semantics are absolutely 
broken. No need to believe me - see the extracts at the bottom of this 
post. The only safe approach with XSD is to minimise inheritance 
(preferably remove it altogether). The lack of genericity (i.e. support 
for types like List<T>) has to be worked around with special classes 
representing the actual types to be used, e.g. List<Dog> etc.

The conclusion of this is that XSD can be used as an output expression 
only, but is not useful in the internals of a modelling environment. For 
that reason, XSDs in openEHR are (starting to be) generated by tools 
starting from the Operational Template (OPT). In such XSDs, there is 
little or no inheritance, just concrete types.

2. Archetypes as XML instance
Now, XSD is one kind of XML. In openEHR any archetype can be expressed 
as XML instance, which is a serialisation of the published standard 
archetype XSD, i.e. this is one schema for all archetypes. Archetypes 
and templates expressed this way are simply XML serialisations of the 
object model of archetypes (AOM).

> d.Have you explored the path on how your knowledge representation is 
> linked to popular W3 technologies such as ontology, linked data, RDFs, 
> especially the application of these on media information management ?
>

not nearly as much as we could - to date, we know where Xpath fits in 
(Xpath is a surprisingly rich language), and there are still ideas of 
interchange with OWL. However, note that OWL is a description logic 
(DL), archetyes are essentially a kind of Frame Logic (FL). These are 
two different kinds of logics (one based on classifications / types, one 
based on instances) that can't easily be inter-converted. Rather 
seamless interfacing should be the goal.

Things like Sparql could be explored,  but as far as I know, not much 
work has been done on this. Others on this list would be far more 
competent than I to comment on these technologies.

> 2.Design of user interfaces, how is openEHR linked to the following
>
> a.What principle you follow when you bind your data to the GUI component ?
>

this is an area of great development. There are some new ideas about 
doing such mappings that are now starting to emerge (see the technical 
list).

> b.Is there a particular model you are following on the design of 
> applications (e.g. MVC ?)
>
> c.Have you considered to support popular document formats such as 
> Office Open XML and Open Document Format ?
>
> d.How easy is it for a developer to embody openEHR technology with 
> popular frameworks (Adobe Flex, Microsoft .NET) ?
>

All of these questions are being actively pursued by openEHR 
implementers and various university research as well. Probably worth 
following the technical list for this.

> 4.Distributed systems and services
>
> a.Considering the major acceptance of the standard clinical documents 
> (CCR, CDA) in the health domain and the impact they have on the 
> interchange of data information, how do you match or implement those 
> in openEHR ?
>

The content of CCR can be quite easily modelled using archetypes, with a 
template to define the actual current standard CCR. Other templates can 
be defined for all kinds of CCR-like things. Then from the OPT form of 
such templates, XSDs can be generated. This approach completely replaces 
the hand-built approach of current CCR, while adding a great deal of 
flexibility to it (i.e. you can have 100 CCR types, all guaranteed to 
create homogeneously queriable data). An openEHR standard for OPT => XSD 
has not yet been published yet, but is coming. I don't know if the CCR 
standard has yet been remodelled in archetypes and templates, but some 
work has been done on this in Germany I believe.

> b.Is there an open demo of a complete prototype that one can explore 
> to see openEHR in action (common scenario includes a clinic with 
> doctors and patients where the user can explore health records for 
> each one of them as well as services provided by the system) ?
>

Opereffa is probably the most complete demo right now - see 
http://www.openehr.org/projects/opereffa.html

- thomas beale


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XSD limitations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    Should Inheritance Exist in XML Schema?

James Clark, designer of Relax NG, sees it as a design flaw (from 
http://www.thaiopensource.com/relaxng/design.html#section:15):

... The support for inheritance in W3C XML Schema is probably the major 
contributor to the considerable complexity of W3C XML Schema Part 1. 
Yet, the inheritance mechanisms in W3C XML Schema do not allow W3C XML 
Schema to express any constraints that cannot be expressed in RELAX NG. 
Although W3C XML Schema has a very complex type system with two type 
hierarchies, one for elements (called substitution groups) and one for 
complex types, it supports only single inheritance. However, modern 
object-oriented languages, such as Java and C#, support multiple 
inheritance (at least for interfaces). Thus, in general the inheritance 
structure of a class hierarchy cannot be represented in a schema. 
Inheritance has proven to be very useful in modeling languages such as 
UML. However, I would argue that trying to make an XML schema language 
also be a modeling language is not a good idea. An XML schema language 
has to be concerned with syntactic details, such as whether to use 
elements or attributes, which are irrelevant to the conceptual model. 
Instead, I believe it is better to use a standard modeling language such 
as UML, which provides full multiple inheritance, to do conceptual 
modeling, and then generate schemas and class definitions from the model 
[5 <http://www.thaiopensource.com/relaxng/design.html#uml>]....


    Type Restriction in XSD

Refer to 
http://www.xml.com/pub/a/2002/11/20/schemas.html?page=4#restriction. The 
following quote from this page summarises the problem quite well.

The parts of the WXS spec which describe derivation by restriction in 
complex types (Section 3.4.6 
<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#derivation-ok-restriction> 
and Section 3.9.6 
<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#cos-particle-restrict>) 
are generally considered to be its most complex parts. Most bugs in 
implementations cluster around this feature, and it is quite common to 
see implementers express exasperation when discussing the various 
nuances of derivation by restriction in complex types. Further, this 
kind of derivation does not neatly map to concepts in either object 
oriented programming or relational database theory, which are the 
primary producers and consumers of XML data. This is the exact opposite 
of the situation with derivation by extension of complex types.

Another challenge in using derivation by restriction of complex types 
arises from the way in which restrictions are declared: when a given 
complex type is to be derived by restriction from another complex type, 
its content model must be duplicated and refined. Duplication of a 
definition replicates definitions, possibly down a long derivation 
chain, so any modification to an ancestor type must be manually 
propagated down the derivation tree. Furthermore, such replication 
cannot cross namespace boundaries -- deriving |ns2:SlowCar| from 
|ns1:Car| may not work if |ns2:SlowCar|'s has a child element, 
|ns2:MaxSpeed|, because it cannot be correctly derived from |ns1:Car|'s 
child element |ns1:MaxSpeed|.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.openehr.org/mailman/private/openehr-technical_lists.openehr.org/attachments/20110318/1f88646e/attachment.html>

Reply via email to