ADL / archetype wish list

Just to record a few previous emails in the list…

Hi all!

Our priority wish-list is as follows:

  1. Fix the parser so it can parse the archetypes at openEHR homepage
  2. Embedded dADL support in the parser (primarily to be able to parse archetypes containing embedded dADL without parse errors. Object instansiation can wait)
  3. Support for instruction and its related parts in the AOM
  4. Support for action and its related parts in the AOM
    It would be nice if the above things can be implemented within 3 weeks in order not to stop the archetype editor development.

It would be nice if the things below can be implemented within another 3 weeks in order not to stop the archetype editor development.

  1. Full support for domain type and primitive data types, for example assumed value, quantity data type etc. according to the newest specifications
  2. ADLOutputter (updated to the new specs, for example: the description part, composition and section archetypes allow_archetype/use_archetype), (ConstraintRef?))
  3. Constraint bindings according to the specifications (URI?)

Best regards
Johan and Mattias

Thomas Beale wrote:

Just to record a few previous emails in the list....

Hi all!

Our priority wish-list is as follows:

   1. Fix the parser so it can parse the archetypes at openEHR homepage

Need to be more specific, e.g. what syntax in which archetype breaks the
parser; I would bet even we fix all of the following items, it will
still be problems with those archetypes.

  1.

   2. Embedded dADL support in the parser (primarily to be able to
      _parse_ archetypes containing embedded dADL without parse
      errors. Object instansiation can wait)

Is this only the "[]" support, if so it should be a quick fix without
changes on the kernel.

  1.

   2. Support for instruction and its related parts in the AOM

  1.

   2. Support for action and its related parts in the AOM

It would be nice if the above things can be implemented within 3 weeks
in order not to stop the archetype editor development.

Requires update of the kernel - need more investigation to estimate the
work load, but the entry package seems quite different from the release
0.95. :frowning:

It would be nice if the things below can be implemented within another
3 weeks in order not to stop the archetype editor development.

   1. Full support for domain type and primitive data types, for
      example assumed value, quantity data type etc. according to the
      newest specifications
   2. ADLOutputter (updated to the new specs, for example: the
      description part, composition and section archetypes
      allow_archetype/use_archetype), (ConstraintRef?))

As soon as the AM gets updated, it should be fairly straight forward to
fix the outputter too. And it shouldn't be RM dependent.

Rong

2006/3/21, Rong Chen <rong.acode@gmail.com>:

Thomas Beale wrote:

Just to record a few previous emails in the list…

Hi all!

Our priority wish-list is as follows:

  1. Fix the parser so it can parse the archetypes at openEHR homepage

Need to be more specific, e.g. what syntax in which archetype breaks the
parser; I would bet even we fix all of the following items, it will
still be problems with those archetypes.

Is it really that much syntax that can break the parsing process? We have managed to manually convert and parse some archetypes by changing the “” syntax in the ontology part and adding a description part to the archetypes where it is missing. We don’t see that there are much issues here except from two things. First, that the parser doesn’t understand embedded dADL inside cADL, and the only case we have seen that is for the CQuantity data type. Second, that the parser doesn’t understand assumed values that are represented after a semi-colon e.g. value matches {“test”, “test2”; “test”}

We can say that we are satisfied for a while as long as the parsing process don’t break for these things and we can manage without the CQuantity object and maybe the assumed values can be ignored?

  1. Embedded dADL support in the parser (primarily to be able to
    parse archetypes containing embedded dADL without parse
    errors. Object instansiation can wait)

Is this only the “” support, if so it should be a quick fix without
changes on the kernel.

We would really appreciate if that would be fixed as soon as possible. What do you think of archetypes that has no description part? As far as we know, that part is mandatory in ADL archetypes. However, we have seen some archetypes from Ocean Informatics that lacks the description part.

  1. Support for instruction and its related parts in the AOM

  1. Support for action and its related parts in the AOM

It would be nice if the above things can be implemented within 3 weeks
in order not to stop the archetype editor development.
Requires update of the kernel - need more investigation to estimate the
work load, but the entry package seems quite different from the release
0.95 . :frowning:

We understand that there is much work to do in this area, but we would really appreciate if there are resources enough to implement the above in order for our archetype editor to support more archetypes.

It would be nice if the things below can be implemented within another
3 weeks in order not to stop the archetype editor development.

  1. Full support for domain type and primitive data types, for
    example assumed value, quantity data type etc. according to the
    newest specifications
  2. ADLOutputter (updated to the new specs, for example: the
    description part, composition and section archetypes
    allow_archetype/use_archetype), (ConstraintRef?))

As soon as the AM gets updated, it should be fairly straight forward to
fix the outputter too. And it shouldn’t be RM dependent.

Rong

We agree with you on this part. You asked in a previous mail if we could implement the changes to the outputter. We cannot say anything about this, we have to ask our supervisors first.

Regards,

Mattias & Johan

Rong Chen wrote:

Thomas Beale wrote:
  

Just to record a few previous emails in the list....

Hi all!

Our priority wish-list is as follows:

   1. Fix the parser so it can parse the archetypes at openEHR homepage

Need to be more specific, e.g. what syntax in which archetype breaks the
parser; I would bet even we fix all of the following items, it will
still be problems with those archetypes.
  

Why should that be? They are ADL 1.3 compliant, which is what all
archetypes are now - I'm not sure what problems you foresee...

  1.

   2. Embedded dADL support in the parser (primarily to be able to
      _parse_ archetypes containing embedded dADL without parse
      errors. Object instansiation can wait)

Is this only the "[]" support, if so it should be a quick fix without
changes on the kernel.
  

  1.

   2. Support for instruction and its related parts in the AOM

  1.

   2. Support for action and its related parts in the AOM

It would be nice if the above things can be implemented within 3 weeks
in order not to stop the archetype editor development.
    

Requires update of the kernel - need more investigation to estimate the
work load, but the entry package seems quite different from the release
0.95. :frowning:
  

actually no update of the kernel is needed to make the parser parse 0.95
based archetypes - at least not in my Eiffel version - I don't
understand why it should be the case in the Java version...

- thomas

Mattias Forss wrote:

    > It would be nice if the above things can be implemented within 3
    weeks
    > in order not to stop the archetype editor development.
    Requires update of the kernel - need more investigation to
    estimate the
    work load, but the entry package seems quite different from the
    release
    0.95 . :frowning:

We understand that there is much work to do in this area, but we would really appreciate if there are resources enough to implement the above in order for our archetype editor to support more archetypes.

YinSu is already working on this - if Rong wants to indicate whether he wants a branch or a direct update of the trunk (I suggest a branch; I will do it if you want, but I prefer Rong to be in charge of the repository). We can do a quick code update which brings the classes up to Release 1.0, ten fix the test cases, then add all the contracts. If we do it in this order, it may be that you have a compiling version of Release 1.0 in only a couple of weeks.

- thomas

Mattias Forss wrote:

2006/3/21, Rong Chen <rong.acode@gmail.com
<mailto:rong.acode@gmail.com>>:

    Thomas Beale wrote:
    >
    > Just to record a few previous emails in the list....
    >
    > Hi all!
    >
    > Our priority wish-list is as follows:
    >
    > 1. Fix the parser so it can parse the archetypes at openEHR
    homepage
    >
    Need to be more specific, e.g. what syntax in which archetype
    breaks the
    parser; I would bet even we fix all of the following items, it will
    still be problems with those archetypes.

Is it really that much syntax that can break the parsing process? We
have managed to manually convert and parse some archetypes by changing
the "[]" syntax in the ontology part and adding a description part to
the archetypes where it is missing. We don't see that there are much
issues here except from two things. First, that the parser doesn't
understand embedded dADL inside cADL, and the only case we have seen
that is for the CQuantity data type. Second, that the parser doesn't
understand assumed values that are represented after a semi-colon e.g.
value matches {"test", "test2"; "test"}

This is a better description of the same request for me. So instead of
"support all the archetypes at openEHR site", we should really have
several issues on the list here: 1. support for "[]"; 2. embedded dADL
inside cADL, 3. support for assumed values; 4. support for missing
description ( or should we?)

No.1, 3, 4 seem to be relatively easy to fix.

We can say that we are satisfied for a while as long as the parsing
process don't break for these things and we can manage without the
CQuantity object and maybe the assumed values can be ignored?

    >
    > 1.
    >
    >
    > 2. Embedded dADL support in the parser (primarily to be able to
    > _parse_ archetypes containing embedded dADL without parse
    > errors. Object instansiation can wait)
    >
    Is this only the "[]" support, if so it should be a quick fix without
    changes on the kernel.

We would really appreciate if that would be fixed as soon as possible.
What do you think of archetypes that has no description part? As far
as we know, that part is mandatory in ADL archetypes. However, we have
seen some archetypes from Ocean Informatics that lacks the description
part.

    >
    > 1.
    >
    >
    > 2. Support for instruction and its related parts in the AOM
    >
    > 1.
    >
    >
    > 2. Support for action and its related parts in the AOM
    >
    > It would be nice if the above things can be implemented within 3
    weeks
    > in order not to stop the archetype editor development.
    Requires update of the kernel - need more investigation to
    estimate the
    work load, but the entry package seems quite different from the
    release
    0.95 . :frowning:

We understand that there is much work to do in this area, but we would
really appreciate if there are resources enough to implement the above
in order for our archetype editor to support more archetypes.

    >
    > It would be nice if the things below can be implemented within
    another
    > 3 weeks in order not to stop the archetype editor development.
    >
    > 1. Full support for domain type and primitive data types, for
    > example assumed value, quantity data type etc. according
    to the
    > newest specifications
    > 2. ADLOutputter (updated to the new specs, for example: the
    > description part, composition and section archetypes
    > allow_archetype/use_archetype), (ConstraintRef?))
    >
    As soon as the AM gets updated, it should be fairly straight
    forward to
    fix the outputter too. And it shouldn't be RM dependent.

    Rong

We agree with you on this part. You asked in a previous mail if we
could implement the changes to the outputter. We cannot say anything
about this, we have to ask our supervisors first.

I guess you have some spare time by yourself, do need to ask for
approval for that I hope :wink:

Regards,
Rong

Thomas Beale wrote:

Rong Chen wrote:
  

Thomas Beale wrote:
  

Just to record a few previous emails in the list....

Hi all!

Our priority wish-list is as follows:

   1. Fix the parser so it can parse the archetypes at openEHR homepage

Need to be more specific, e.g. what syntax in which archetype breaks the
parser; I would bet even we fix all of the following items, it will
still be problems with those archetypes.
  

Why should that be? They are ADL 1.3 compliant, which is what all
archetypes are now - I'm not sure what problems you foresee...
  

Maybe I was bit negative, but I would like to have more specific
requests on it. For me, the primary goal of the parser upgrade is to
support all the archetypes from the openEHR site, but we need to take
steps to be there.

I will update the project page today and list all the missing features
that could be implemented during this upgrade.

  1.

   2. Embedded dADL support in the parser (primarily to be able to
      _parse_ archetypes containing embedded dADL without parse
      errors. Object instansiation can wait)

Is this only the "[]" support, if so it should be a quick fix without
changes on the kernel.
  

  1.

   2. Support for instruction and its related parts in the AOM

  1.

   2. Support for action and its related parts in the AOM

It would be nice if the above things can be implemented within 3 weeks
in order not to stop the archetype editor development.
    

Requires update of the kernel - need more investigation to estimate the
work load, but the entry package seems quite different from the release
0.95. :frowning:
  

actually no update of the kernel is needed to make the parser parse 0.95
based archetypes - at least not in my Eiffel version - I don't
understand why it should be the case in the Java version...
  

I know the idea works for the RM part of the kernel. But the issue here
is that the AOM also got changed, e.g. ArchetypeDescription class, which
is also part of the java kernel. Since the parser use AOM for object
output as the parsing result, the parser is dependent on the AOM
classes, therefore the parser must be updated if the AOM changes.

Originally, the AOM and RM are bit separated so it was possible to have
a more 'generic' AOM module which can be used by the parser to handle
any type of RM, openEHR RM or CEN13606 RM. But it isn't quite true,
since the AOM contains some special classes, now known as openEHR
clinical profile classes, which reference the openEHR RM, it makes the
AOM module dependent on the openEHR RM. The ideal way of packaging would
be as following:

1. openEHR RM module
2. generic AOM module, no dependency on any RM modules - support any RM,
no dependency !
3. generic ADL parser, without support for openEHR clinical profile
shortcuts syntax - just support any generic ADL syntax, dependent on (2)
4. a separate package which contains AOM classes specific for openEHR
clinical profile classes, dependent on (1) (2)
5. a parser plug-in for the generic parser to support openEHR clinical
profile syntax, (1)

The benefits of such packaging is that: 1) no dependency from the parser
to the openEHR RM directly; 2) the openEHR RM (1) and the generic AOM
(2) / parser (3) can evolve without effecting each other. Presumably
after a while the AOM and ADL syntax will be more stable than the RM,
and the RM will continuously evolve by itself but without any impact on
the parser.

As it is now, we still can achieve by changing the packaging scheme a
bit. We just need to have finer module products then it is now. So
instead of having one big kernel as the product jar, we could have it
divided into smaller more coherent products/jars:
1. openehr-rm (with a version in the future maybe, e.g. openehr-rm-1.0,
openehr-rm-1.2, and both should work well with the parser)
2. openehr-aom
3. openehr-adl-paser
4. openehr-clinical-profile
5. openehr-clicnial-profile-adl-plugin

We probably should also split the adl-outputter, and rm-object-creation
logic from the kernel as well. Any thoughts or comments on this? Tom,
how is that done in your Eiffel parser and RM/AOM implementation?

Rong

Thomas Beale wrote:

Mattias Forss wrote:
  

    > It would be nice if the above things can be implemented within 3
    weeks
    > in order not to stop the archetype editor development.
    Requires update of the kernel - need more investigation to
    estimate the
    work load, but the entry package seems quite different from the
    release
    0.95 . :frowning:

We understand that there is much work to do in this area, but we would
really appreciate if there are resources enough to implement the above
in order for our archetype editor to support more archetypes.

YinSu is already working on this - if Rong wants to indicate whether he
wants a branch or a direct update of the trunk (I suggest a branch; I
  

I would suggest that we start with updates on a branch.

will do it if you want, but I prefer Rong to be in charge of the
repository). We can do a quick code update which brings the classes up
to Release 1.0, ten fix the test cases, then add all the contracts. If

No sure about the contracts, probably can wait a bit on that. We still
need to do an some analysis of the difference between the existing code
base and the latest specifications and do little bit planning on who
does what and what gets implemented first etc.

Rong

Rong Chen wrote:

I know the idea works for the RM part of the kernel. But the issue here
is that the AOM also got changed, e.g. ArchetypeDescription class, which
is also part of the java kernel. Since the parser use AOM for object
output as the parsing result, the parser is dependent on the AOM
classes, therefore the parser must be updated if the AOM changes.

Originally, the AOM and RM are bit separated so it was possible to have
a more 'generic' AOM module which can be used by the parser to handle
any type of RM, openEHR RM or CEN13606 RM. But it isn't quite true,
since the AOM contains some special classes, now known as openEHR
clinical profile classes, which reference  the openEHR RM, it makes the
AOM module dependent on the openEHR RM. The ideal way of packaging would
be as following:

1. openEHR RM module
2. generic AOM module, no dependency on any RM modules - support any RM,
no dependency !
3. generic ADL parser, without support for openEHR clinical profile
shortcuts syntax - just support any generic ADL syntax, dependent on (2)
4. a separate package which contains AOM classes specific for openEHR
clinical profile classes, dependent on (1) (2)
5. a parser plug-in for the generic parser to support openEHR clinical
profile syntax, (1)

unfortunately this is not really the way openEHR works. What we have tried to do is to build a computing platform with a solid type system for all components. That means that there have to be data types, data structures, identifiers, and some common stuff that is the bottom part of the platform; everything else works on this. So the following packages should be considered common to evreything:

  • Support
  • Data_types
  • Common
    Now, and in the future, all openEHR models will assume this platform. The reason we do it like this is that the #1 requirement for safe computing is a solid type system, including data types and other basic things (e.g. the Support.identification package).

The AOM can be used for archetypes in other models. There is no problem with the AOM using openEHR data types, and representing an archetype say on EN13606. We already can do this.

The challenge comes when you want to actually process data built by that foreign archetype in the openEHR kernel. Tthe way to do this is to convert those data into openEHR form first. So, CEN 13606 data, which is built from a not-very-well designed model with awful (non-standard) data types, and pretty awful demographic elements (due to committee design) will get converted into clean GENERIC_ENTRY structures (http://www.openehr.org/uml/Browsable/_9_5_1_76d0249_1140530578205_529440_4046Report.html) first and then processed inside the openEHR computing environment. The alternative is that openEHR gets infected by every model out there - and it will be a never-ending nightmare of trying to accommodate CEN data types & identifiers, HL7 data types and identifiers, EDIFACT data types and identifiers and so on. The only response to the way the world is is the biological one: build a cell wall and only allow certain things through, transforming them on the way.

At a practical level, there are only openEHR-based archetypes at the moment. There may be CEN-flavoured ones once day, but I think in reality they will be expressed against openEHR using openEHR data types and the GENERIC_ENTRY type; this will make them usable with the openEHR clinical archetypes for doing data conversion.

The benefits of such packaging is that: 1) no dependency from the parser
to the openEHR RM directly; 2) the openEHR RM (1) and the generic AOM
(2) / parser (3) can evolve without effecting each other. Presumably
after a while the AOM and ADL syntax will be more stable than the RM,
and the RM will continuously evolve by itself but without any impact on
the parser.

The RM is extremely stable now; there are only 3 small changes to Release 1.0 to do for Release 1.1 (it will probably be about 5 by the time of 1.1). Our main aim in openEHR now s that Release 1.x will work for 10 years. Release 1.1 contains mainly fixes for things in 1.0, plus the openEHR Exract and probably the template model; after that it will not change except to fix errors. The AOM and ADL are both more likely to change than the main RM at this stage…we still have to finish ADL 2.0, and there are new lessons we have learned which will require some changes to the AOM as time goes on.

As it is now, we still can achieve by changing the packaging scheme a
bit. We just need to have finer module products then it is now. So
instead of having one big kernel as the product jar, we could have it
divided into smaller more coherent products/jars:
1. openehr-rm (with a version in the future maybe, e.g. openehr-rm-1.0,
openehr-rm-1.2, and both should work well with the parser)
2. openehr-aom
3. openehr-adl-paser
4. openehr-clinical-profile
5. openehr-clicnial-profile-adl-plugin

So I think we need to adjust this based on the above…

We probably should also split the adl-outputter, and rm-object-creation
logic from the kernel as well. Any thoughts or comments on this? Tom,
how is that done in your Eiffel parser and RM/AOM implementation?


I have a serialisation library that works off AOM object structures and serialises to various output forms (ADL, HTML-ADL, soon, pure dADL). RM object creation is part of the kernel however.

  • thomas