13606 revisited - list proposal

2011/12/16 Erik Sundvall <erik.sundvall@liu.se>

If so, why do you want to turn the 13606/openEHR into something
“healthcare a-specific”? Wouldn’t that be an enormous deviation from
the current 13606 thinking and purpose? Was not 13606 intended exactly
for healthcare?

Well, in fact current EN13606 RM is nearly healthcare independent, except the “EHR_EXTRACT” class name, the attributes “ehr_system”, “ehr_id”, “subject_of_care” and “healthcare_facility” and the demographic model. The class and attribute names can be easily changed to drop the EHR part and for the demographic package I think that the one of openEHR is much better and, in fact, it is already healthcare independent.

In any case, this generic design is a result of the current scope of 13606: EHR exchange and not a complete EHR implementation specification. From our experience, interoperability between legacy systems (standard-based or not) is much easier using a generic model for exchange. The harsh truth is that the quality of the data and the design of information structures in existing EHR systems is quite bad or unclear, thus making really complicated the process of automatically transforming it to a very specific reference model. This is not the case when we use 13606.

A different thing is if 13606 scope changes during the revision. In that case, I agree that reducing layers of modelling by introducing specific classes will make the systems more efficient.

David

Hi!

In any case, this generic design is a result of the current scope of 13606:
EHR exchange and not a complete EHR implementation specification.

Thanks for reminding me.

I tend to forget that the 13606 purpose never was to make internal
system semantics interoperable. It's easy to forget the intentional
13606 focus when usually thinking of mappings and interoperability
issues based on examples like the ones on slides 12 and 13 of...
http://www.imt.liu.se/~erisu/2011/openEHR-TBMI19-lecture.pdf

As you know, if you want to truly bi-directionally share things for
which it is impossible to define deterministic conversion
algorithms/programs (thus maintaining patient safety in automated
conversions), then just defining a standard message- or extract format
will be a lost cause (no matter how determined politicians are and no
matter how much you pay IT-consultants to try to do the job). Instead
the semantics of the end point systems will need to be aligned sooner
or later.

Anyway it wouldn't hurt if a new or refreshed internationally
recognized standard could be used by those vendors and system owners
that actually _want_ to agree on the internal clinical semantics of
efficiently implementable systems all the way down to some of the
technical (e.g. openEHR inspired) details. I think there is now a
market for such a standard (or new standard part) helping those that
have given up beliefs in mapping of incompatible semantics.

From our
experience, interoperability between legacy systems (standard-based or not)
is much easier using a generic model for exchange. The harsh truth is that
the quality of the data and the design of information structures in existing
EHR systems is quite bad or unclear, thus making really complicated the
process of automatically transforming it to a very specific reference model.
This is not the case when we use 13606.

I suspect this is an intentional difference between current 13606 and
openEHR; to faithfully capture the current (incompatible) situation
versus aiming to change the current situation. Can those different
goals really meet in one RM or do we need two standardized RMs?
http://dilbert.com/strips/comic/2011-08-02/

A side-track question: Do you feel that the archetyped approach with
13606 really helps in the current mappings/transformations that you
work with more than what just using e.g. RDF+OWL would help? Or does
the archetype stuff and RM mostly complicate things?

A different thing is if 13606 scope changes during the revision. In that
case, I agree that reducing layers of modelling by introducing specific
classes will make the systems more efficient.

Is there an opening for scope-change or not within the formal
13606-revision or would one need to start a completely new standard in
order to define a standard for aligning internal EHR system semantics?

Could one add a new part (13606 part-6 or 1b?) to the specification
containing detailed RM semantics (inspired by openEHR) and at the same
time align that new part and a more general "healthcare a-specific"
model (a revised 13606 part-1(a)?) in a way that clearly defines a
deterministic (and tested) conversion algorithm from "the detailed
clinically focused" RM (6 or 1b) to the "healthcare a-specific" RM
(1a)?

It would be nice to have the different parts "under the same roof", a
revised 13606, since they could share an AM based on AOM 1.5.

Best regards,
Erik Sundvall
erik.sundvall@liu.se http://www.imt.liu.se/~erisu/ Tel: +46-13-286733

+1

BTW in an ideal world the 13606-openEHR divergence shouldn't have happened in first place. I seriously think we can't afford to fall apart and go our own ways. But never mind...

-koray

Hi,

2011/12/16 Erik Sundvall <erik.sundvall@liu.se>

Hi!

As you know, if you want to truly bi-directionally share things for
which it is impossible to define deterministic conversion
algorithms/programs (thus maintaining patient safety in automated
conversions), then just defining a standard message- or extract format
will be a lost cause (no matter how determined politicians are and no
matter how much you pay IT-consultants to try to do the job). Instead
the semantics of the end point systems will need to be aligned sooner
or later.

I completely agree. But aligned does not mean that the have to be exactly the same. Conversions between models and standards will always be needed.

Anyway it wouldn’t hurt if a new or refreshed internationally
recognized standard could be used by those vendors and system owners
that actually want to agree on the internal clinical semantics of
efficiently implementable systems all the way down to some of the
technical (e.g. openEHR inspired) details. I think there is now a
market for such a standard (or new standard part) helping those that
have given up beliefs in mapping of incompatible semantics.

The problem is that a unique solution will never be used by all actors (due to the human nature of divergence). The need of interoperability between different solutions and systems will always exist and then we have to give a solution for this scenario. Best practices maybe will commonly accepted, but no specific solutions probably.

From our
experience, interoperability between legacy systems (standard-based or not)
is much easier using a generic model for exchange. The harsh truth is that
the quality of the data and the design of information structures in existing
EHR systems is quite bad or unclear, thus making really complicated the
process of automatically transforming it to a very specific reference model.
This is not the case when we use 13606.

I suspect this is an intentional difference between current 13606 and
openEHR; to faithfully capture the current (incompatible) situation
versus aiming to change the current situation. Can those different
goals really meet in one RM or do we need two standardized RMs?
http://dilbert.com/strips/comic/2011-08-02/

I talked of this with Thomas last August in Oslo. For me, the ideal solution would be to have a unique model that covers both needs. It should include generic classes such as those of 13606 and inherit from them specific classes for building EHR systems, as those of openEHR. Technically it should be possible to have, for example, a generic COMPOSITION-ENTRY-CLUSTER-ELEMENT structure that can be instantiated, but also a COMPOSITION-OBSERVATION-ITEM_TREE-ELEMENT structure inherited from it. An implementer could choose then to just create instances of the generic classes (e.g. for exchange) or instances of the specific ones, that are compatible (e.g. for operational systems). Note that this is currently not possible since ENTRY is an abstract class in openEHR.

A side-track question: Do you feel that the archetyped approach with
13606 really helps in the current mappings/transformations that you
work with more than what just using e.g. RDF+OWL would help? Or does
the archetype stuff and RM mostly complicate things?

It definitely helps. On the one hand because we deal with data transformations and then it is essential to have a clearly defined reference or information model to shape the data that is going to be communicated. And on the other hand, archetypes are the target schema for these data. We will all agree that the dual model is the best way to have together the three basic ingredients of semantic interoperability: the data structure, the concept definition and the binding to terminologies.

A different thing is if 13606 scope changes during the revision. In that
case, I agree that reducing layers of modelling by introducing specific
classes will make the systems more efficient.

Is there an opening for scope-change or not within the formal
13606-revision or would one need to start a completely new standard in
order to define a standard for aligning internal EHR system semantics?

I have no idea. I don’t know the internal rules of ISO.

Could one add a new part (13606 part-6 or 1b?) to the specification
containing detailed RM semantics (inspired by openEHR) and at the same
time align that new part and a more general “healthcare a-specific”
model (a revised 13606 part-1(a)?) in a way that clearly defines a
deterministic (and tested) conversion algorithm from “the detailed
clinically focused” RM (6 or 1b) to the “healthcare a-specific” RM
(1a)?

From what I have heard, it is possible to add new part to the standard.

David

if you want to truly bi-directionally share things ...
the semantics of the end point systems will need to be aligned sooner
or later.

Anyway it wouldn't hurt if a new or refreshed internationally
recognized standard could be used by those vendors and system owners
that actually _want_ to agree on the internal clinical semantics of
efficiently implementable systems all the way down to some of the
technical (e.g. openEHR inspired) details. I think there is now a
market for such a standard (or new standard part) helping those that
have given up beliefs in mapping of incompatible semantics.

Although openEHR is designed for aligning semantics of the data inside and between systems, real sytems/products are not so much deficient in this area (well, actually they usually are) as focussing on higher levels of computing, such as medication list management, prescription tracking, care plan management and so on. They generally have to implement such things with hard-wired logic and dedicated DB tables etc because there is no generalised data architecture that provides the platform for such functionality.

In the standards arena, we have to deal with these upper levels of functionality at some point, but doing so will be easier having defined a ‘proper’ data architecture (I don’t mean to say today’s version is perfect, just that it is probably in the right ballpark of structure/semantics to support upper layers of logic).

One of the forthcoming proposals we have been working on for some time is a generalised rule-based ‘Entry Index’ system which enables higher level structures like medication lists and care plans to be completely specified in terms of the low level openEHR Entry types we know today (or whatever they become). This facility is based on AQL rule patterns and output notifications / events, so it is a higher level of sophistication than what currently exists in openEHR.

I foresee such tings (the above is just one example) being slowly standardised, in a flexible way, so that one day medication lists, doctor’s appointment schedules and patient care plans can be widely shared across products and jurisdictions. Secondly, decision support and business intelligence will finally have something solid to work on. In my view, that is the real promise of openEHR. The current models are just a foundation.


I suspect this is an intentional difference between current 13606 and
openEHR; to faithfully capture the current (incompatible) situation
versus aiming to change the current situation.  Can those different
goals really meet in one RM or do we need two standardized RMs?
[http://dilbert.com/strips/comic/2011-08-02/](http://dilbert.com/strips/comic/2011-08-02/)

I should perhaps point out that openEHR has a perfectly usable generic Entry type that does the same as 13606 Entry. This Entry type is designed for weakly structured data.

I would suggest that it is not an argument between inside-system logic V between system logic, but that there is a continuum of structure+semantics, and our models have to cater for that. Some otherwise primitive systems happen to be very good at time-series data (e.g. most vital signs monitors) and creating openEHR Observations in messages for these data sources is in fact easy. So Observation is not specifically an ‘inside-system’ concept, just a standardised way of representing time-series data that is useful for sharing information.

Could one add a new part (13606 part-6 or 1b?) to the specification containing detailed RM semantics (inspired by openEHR) and at the same time align that new part and a more general “healthcare a-specific” model (a revised 13606 part-1(a)?)

that could be a useful idea.

There are other probably more important challenges in the current 13606 though. I have put a few notes here.

  • thomas

Dear Erik,

My personal thoughts and reactions.

It is based on off-line discussions in the EN13606 Association.
We will collect our thoughts and ideas, present them next year to the community and discuss them in February during our annual meeting in Seville.
Until then my personal ideas only.

Gerard Freriks
+31 620347088
gfrer@luna.nl

Hi!

In any case, this generic design is a result of the current scope of 13606:

EHR exchange and not a complete EHR implementation specification.

Thanks for reminding me.

I tend to forget that the 13606 purpose never was to make internal
system semantics interoperable. It’s easy to forget the intentional
13606 focus when usually thinking of mappings and interoperability
issues based on examples like the ones on slides 12 and 13 of…
http://www.imt.liu.se/~erisu/2011/openEHR-TBMI19-lecture.pdf

As you know, if you want to truly bi-directionally share things for
which it is impossible to define deterministic conversion
algorithms/programs (thus maintaining patient safety in automated
conversions), then just defining a standard message- or extract format
will be a lost cause (no matter how determined politicians are and no
matter how much you pay IT-consultants to try to do the job). Instead
the semantics of the end point systems will need to be aligned sooner
or later.

Anyway it wouldn’t hurt if a new or refreshed internationally
recognized standard could be used by those vendors and system owners
that actually want to agree on the internal clinical semantics of
efficiently implementable systems all the way down to some of the
technical (e.g. openEHR inspired) details. I think there is now a
market for such a standard (or new standard part) helping those that
have given up beliefs in mapping of incompatible semantics.

I agree.
This is what I wanted in the first place.
In the standardisation process it was felt to be more safe to obtain experiences first this the present scope.
Some wording in the present scope hints at this more extended use outside of the EH-Extract.

Although I agree, I think, that the 13606 Reference Model should not be a model on how to implement it in a very detailed way in a system.
It must stay a generic and logical model that provides features that help vendors to produce such internal proprietary implemented models.

From our

experience, interoperability between legacy systems (standard-based or not)

is much easier using a generic model for exchange. The harsh truth is that

the quality of the data and the design of information structures in existing

EHR systems is quite bad or unclear, thus making really complicated the

process of automatically transforming it to a very specific reference model.

This is not the case when we use 13606.

I suspect this is an intentional difference between current 13606 and
openEHR; to faithfully capture the current (incompatible) situation
versus aiming to change the current situation. Can those different
goals really meet in one RM or do we need two standardized RMs?
http://dilbert.com/strips/comic/2011-08-02/

It is/was a matter of scope.

I see no reason why we can NOT have one logical model that can serve the purpose of use inside IT-systems and outside an IT-system.
A different matter is whether the present openEHR RM is acceptable or not.
And who owns the spec.

A side-track question: Do you feel that the archetyped approach with
13606 really helps in the current mappings/transformations that you
work with more than what just using e.g. RDF+OWL would help? Or does
the archetype stuff and RM mostly complicate things?

When it is possible to design and implement using 13606 and archetypes in less than a week a common patient summary between two different hospitals, or a system that transforms a proprietary EHR to the CDISC-ODM format,
is that enough of an answer?
My answer is that the present 13606 fulfills its scope and is very functional.

A different thing is if 13606 scope changes during the revision. In that

case, I agree that reducing layers of modelling by introducing specific

classes will make the systems more efficient.

David and I agree.

Is there an opening for scope-change or not within the formal
13606-revision or would one need to start a completely new standard in
order to define a standard for aligning internal EHR system semantics?

In the EN13606 Association community there are openings to do that.
But whether the CEN/ISO representatives want it, is to be found out.

Could one add a new part (13606 part-6 or 1b?) to the specification
containing detailed RM semantics (inspired by openEHR) and at the same
time align that new part and a more general “healthcare a-specific”
model (a revised 13606 part-1(a)?) in a way that clearly defines a
deterministic (and tested) conversion algorithm from “the detailed
clinically focused” RM (6 or 1b) to the “healthcare a-specific” RM
(1a)?

Present thinking in EN13606 is that possibly there can and will be one logical RM as part 1, serving an extended scope.
One of the driving forces behind an updated Part 1 and a new additional standard (SIAM) is the need to reduce the numbers of freedom.
One possible new RM for 13606-1 is being discussed internally.

One RM that allows the expression of constraints on any UML model, as Part 2.

Personally I think that Part 3 will be replaced.
Much of its present content will end up in an other standard that deals with how semantic artefacts (archetypes/templates/ common modeling patterns, etc.) are constructed.
The standardised (sub-)patterns will reduce the degrees of freedom.
Whether this standard for Semantic Interoperability Artefact Modeling (SIAM) will become part of 13606 or a separate standard we will have to see.
Whether the name I used will be its real name, we will have to see.

Part 4: what will we have to do there is an engima for me. I think that there is not enough experience with it.
Part 5: is too young to change. other than correct mistakes and explain more, when needed.

It would be nice to have the different parts “under the same roof”, a
revised 13606, since they could share an AM based on AOM 1.5.

I fear that in my thinking, part of the functionality in the present AOM1.5 will end up in the SIAM standard.
As will be the Observation, Evaluation, Instruction and Action sub-parterns that specialise the generic Entry Class in the RM.


I suspect this is an intentional difference between current 13606 and
openEHR; to faithfully capture the current (incompatible) situation
versus aiming to change the current situation.  Can those different
goals really meet in one RM or do we need two standardized RMs?
[http://dilbert.com/strips/comic/2011-08-02/](http://dilbert.com/strips/comic/2011-08-02/)

I should perhaps point out that openEHR has a perfectly usable generic Entry type that does the same as 13606 Entry. This Entry type is designed for weakly structured data.

It is not exactly the same as what I was proposing. The GENERIC_ENTRY as is now only complicates de model by creating a standalone branch. Instead of that, I would prefer to look for a solution where the ENTRY class is directly instantiable. Thus, an implementer can choose to use it if the lower OBSERVATION, INSTRUCTION, etc. classes do not accommodate his needs. Moreover, it would be easy to cast an ENTRY instance into any of its descendants when needed.

David

Hi David,

I suspect this is an intentional difference between current 13606 and
openEHR; to faithfully capture the current (incompatible) situation
versus aiming to change the current situation.  Can those different
goals really meet in one RM or do we need two standardized RMs?
[http://dilbert.com/strips/comic/2011-08-02/](http://dilbert.com/strips/comic/2011-08-02/)

I should perhaps point out that openEHR has a perfectly usable generic Entry type that does the same as 13606 Entry. This Entry type is designed for weakly structured data.

It is not exactly the same as what I was proposing. The GENERIC_ENTRY as is now only complicates de model by creating a standalone branch.

do you mean in the inheritance tree? Well, that’s true, but that’s normal object modelling…

Instead of that, I would prefer to look for a solution where the ENTRY class is directly instantiable. Thus, an implementer can choose to use it if the lower OBSERVATION, INSTRUCTION, etc. classes do not accommodate his needs. Moreover, it would be easy to cast an ENTRY instance into any of its descendants when needed.

I think this is looking at it from too low a level. The structures of ENTRY, OBSERVATION, INSTRUCTION etc are quite different. The ENTRY concept in openEHR does not on its own define a meaningful object; the structure of the data have to be defined in specific subclasses. The descendants (today) are: ADMIN_ENTRY, OBSERVATION, EVALUATION, INSTRUCTION, ACTION and GENERIC_ENTRY. So GENERIC_ENTRY is just one of the sibling possibilities for representing data. (I realise that it’s a bit annoying that we use ‘ENTRY’ as the abstract parent type, whereas 13606 uses it as the name of the concrete type, but I can’t see any easy way around that).

I think this is a normal modelling outcome. I can’t see how in openEHR, the ENTRY class could do its main job, which is to define the common attributes (we can think of them as meta-data attributes) of all ENTRY types, and also have some kind of commitment to data, which would then be somehow redefined to other specific data structures somehow - casting only works when the physical data don’t change, but are interpreted differently (and anyway, casting should always be avoided - it means the software is potentially violating the type system). The normal OO approach is that a parent class such as ENTRY stays abstract, and its children exhaustively define the possibility space.

However, what I can imagine is a function on ENTRY, something like ‘as_standard_representation: CLUSTER’, which generates a standardised CLUSTER/ELEMENT hierarchy of the 13606 variety (complete with logical data structure markers to indicate the intention of lists, tables etc).

This would allow the openEHR model to stick to normal OO modelling conventions, but also have a fully formally defined transform to the simple CLUSTER/ELEMENT structure from each of its ENTRY subtypes. Calling this function during a traversal of a COMPOSITION would enable something very close to a 13606 COMPOSITION to be generated.

As I mentioned in another post, I think a greater challenge is dealing with the differences in the base classes - my notes on this so far are here.

  • thomas

I am reading 1.0.2 IM and it says CARE_ENTRY, not GENERIC_ENTRY. which
one is the good one?
By the way, both ENTRY and CARE_ENTRY are abstract in openEHR. I don't
think you could only make ENTRY non-abstract without making CARE_ENTRY
non-abstract too (I think it has no sense to inherit an abstract class
from non abstract).
Looking at CARE_ENTRY, I don't really get why ADMIN_ENTRY is not able
to inherit from it. 'protocol' attribute meaning changes according to
the instantiated class (as the pdf says, describes 'how' was arrived
the information) and it is optional, as 'guideline_id'. Why don't make
ADMIN_ENTRY as a child of CARE_ENTRY as protocol could be also used
(why not using it for stating how was the ADMIN_ENTRY information
arrived? or what where the social/legal requirements to led to this
entry).
'guideline_id' could be used to state if this ADMIN_ENTRY was a result
from a clinical guide step (I can be wrong at this one, but that's
what I understand from the specifications). And the specifications say
that this one is only used 'if relevant', so it isn't always used
anyway.

If you do this you can remove CARE_ENTRY and focus on the ENTRY itself :slight_smile:

GENERIC_ENTRY is described in the integration_im.pdf. It's a sibling of ENTRY in the inheritance hierarchy.

- Peter

Hi!

Could we discuss some openEHR+13606 2.0 ideas also using UML-ish diagrams via e.g. http://yuml.me/ if it helps in some cases? (Don’t worry it has nothing to do with YAML despite the name…)

I’ll try to provoke some thoughts by inserting a start diagram as a png in the message now…

…but if it fails to get through the mailservers you also have it at http://yuml.me/386f608e
The yellow stuff is what I guess could be in a 13606-1(a?) “healthcare a-specific” update and the rest in a new 13606-6 or 13606-1b healthcare-specific part.

I have likely missed some details (and did not have time to add datatypes to all attributes, but they are in the openEHR specs).

The online editable “sourcecode” is attached by the end of this mail and also versioned at http://www.openehr.org/wiki/display/spec/openEHR+2.x+RM+proposals±+lower+information+model. It can be edited there to add or change things in order to describe alternative approachess, and then pasted to http://yuml.me/diagram/scruffy/class/draw2 . So dig in and hack on… :slight_smile:

Best regards,
Erik Sundvall
erik.sundvall@liu.se http://www.imt.liu.se/~erisu/ Tel: +46-13-286733

Diagram source code used at http://yuml.me/diagram/scruffy/class/draw2:

[note: No change suggestions in ACTION and INSTRUCTION except that ITEM_STRUCTURE type is replaced by ITEM]
[CONTENT_ITEM{bg:yellow}]][1]
[CONTENT_ITEM][2]]
[CONTENT_ITEM][3]
[ABSTRACT_CARE_ENTRY][4]
[CARE_ENTRY]-[note:CARE_ENTRY Replaces both ADMIN_ENTRY and EVALUATION.]
[ABSTRACT_CARE_ENTRY][5]
[ABSTRACT_CARE_ENTRY][6]
[ABSTRACT_CARE_ENTRY][7]
[ENTRY]-[note:ENTRY replaces GENERIC_ENTRY and is intended also for ‘healthcare a-specific’ stuff as indicated useful by 13606 experiences]
[EVENTS|origin;0..1 period;0..1 duration]+±events>[EVENT|time;0..1 state: ITEM; data: ITEM]]
[EVENTS]-[note: HISTORY renamed to EVENTS]

[EVENT][8]
[ITEM{bg:yellow}][9]
[ITEM][10]
[CLUSTER]-[note: ‘structure’ indicates if the cluster is to be validated and interpereted as e.g. a table or list - defaulting to tree if not provided]


  1. SECTION|0..* items: List CONTENT_ITEM{bg:yellow} ↩︎

  2. ENTRY|data: ITEM{bg:yellow} ↩︎

  3. ABSTRACT_CARE_ENTRY|0..1 protocol: ITEM;0..1 guideline_id: OBJECT_REF;0..1 workflow_id: OBJECT_REF;language: CODE_PHRASE;encoding: CODE_PHRASE;subject: PARTY_PROXY;0..1 provider: PARTY_PROXY;0..1 other_participations: List PARTICIPATION; ↩︎

  4. CARE_ENTRY|data: ITEM ↩︎

  5. OBSERVATION|data: EVENTS;0..1 state: EVENTS ↩︎

  6. INSTRUCTION ↩︎

  7. ACTION ↩︎

  8. INTERVAL_EVENT|width;0..1 sample_count;math_function ↩︎

  9. ELEMENT|0..1 null_flavor;0..1 value DATA_VALUE{bg:yellow} ↩︎

  10. CLUSTER|1..* items: ITEM;0..1 structure: CODE_PHRASE{bg:yellow} ↩︎

Erik Sundvall wrote:

[ABSTRACT_CARE_ENTRY]^[CARE_ENTRY|data: ITEM]
[CARE_ENTRY]-[note:CARE_ENTRY Replaces both ADMIN_ENTRY and EVALUATION.]
[ABSTRACT_CARE_ENTRY]^[OBSERVATION|data: EVENTS;0..1 state: EVENTS]
[ABSTRACT_CARE_ENTRY]^[INSTRUCTION]
[ABSTRACT_CARE_ENTRY]^[ACTION]

Hi Erik,

So the basic distinction between ADMIN_ENTRY and the clinical entry types would be lost. This feels strange to me, to be using the same CARE_ENTRY class for clinical and non-clinical entries.

I'm particularly nervous that EVALUATION, the product of an important step in patient care, would disappear into the same class as administrative entries. Apart from not feeling nice when I look at a class diagram, mightn't this have the practical consequence of making it difficult to write AQL queries to search for clinical evaluations? Maybe not ... in AQL, you normally select from some archetype by its id, which includes the concept as well as the class ... so it would be select from openEHR-EHR-CARE_ENTRY.risk.v1, instead of select from openEHR-EHR-EVALUATION.risk.v1. I'm not sure whether it's even possible to select from all evaluations without mentioning their concepts.

- Peter

Hi David

While I agree with your sentiment as a technical guy, the fact is that sharing health information will be more important than the application space relatively soon. This is like document sharing now – you can have the best word processor on the planet but if it doesn’t do word then it isn’t really much use.

Things can only change slowly once standardisation creeps in – so we want to liberate the application from the EHR. Providers and consumers owning the EHR and vendors the application spaces.

Cheers, Sam

Dear Thomas,

Are there any documents that one could already look at regarding the rule-based Entry Index you mention below?

Sincerely,

Nadim

Nadim Anani, MSc, PhD student

Centrum för hälsoinformatik / Health Informatics Centre (HIC)

LIME

Karolinska Institutet

SE-17177 Stockholm, Sweden

Hi Nadim,

it is one of the many things I have been struggling to find time to document and upload. Maybe best to email me personally for the moment.

  • thomas

Hi Thomas, I’ve added a proposal to the page on the wiki http://www.openehr.org/wiki/display/spec/openEHR+2.x+RM+proposals±+lower+information+model

I’m also thinking about the ENTRY model, to lift up the data/description attributes from all entry subclasses to the ENTRY, to have a ENTRY.data:DATA_STRUCTURE attribute, so all subentries could define the data as ITEM_STRUCTURE or as a HISTORY.

Maybe to have the flexibility to define ACTIONS and other entries to have a data attribute of class ITEM_STRUCTURE or HISTORY to track time of events instead of inventing DV_DATE/DV_DATETIME ELEMENTs on ACTION/EVALUATION/INSTRUCTION archetypes is a good idea. What do you think?

Hi Thomas, I’ve added a proposal to the page on the wiki http://www.openehr.org/wiki/display/spec/openEHR+2.x+RM+proposals±+lower+information+model

I’m also thinking about the ENTRY model, to lift up the data/description attributes from all entry subclasses to the ENTRY, to have a ENTRY.data:DATA_STRUCTURE attribute, so all subentries could define the data as ITEM_STRUCTURE or as a HISTORY.

We did think about this a long time ago, but it did not seem useful. But I assume you are thinking of doing it because you want to make ENTRY a concrete class which could have ‘any’ structure. In theory doing this breaks a basic modelling rule, which is that a superclass whose descendants define the possible data space should not itself be concrete. The argument here I suppose is that we want to build in a 13606-style ‘uncommitted’ kind of ENTRY. In fact we already have this - it’s currently called GENERIC_ENTRY. This doesn’t get used at the moment (although it has been there for years), and if we want to make it a subtype of ENTRY, that could be done. The main thing to solve I guess is the conversion of any of the specific openEHR kinds of ENTRY into a generic ENTRY structure defined by 13606. This can actually be formally specified by an algorithm. It doesn’t require that the parent abstract ENTRY become concrete either. I am unclear if there are other reasons to make the ENTRY parent type concrete, to mimic 13606 ENTRY, rather than simply move GENERIC_ENTRY to be a subtype, which seems more obvious to me.

Maybe to have the flexibility to define ACTIONS and other entries to have a data attribute of class ITEM_STRUCTURE or HISTORY to track time of events instead of inventing DV_DATE/DV_DATETIME ELEMENTs on ACTION/EVALUATION/INSTRUCTION archetypes is a good idea. What do you think?

Well then I think we risk making the model ambiguous, and different people will use such flexible structures to do the same thing in different ways, which was the thing we were originally trying to avoid. The HISTORY class is very nicely designed to represent complex time-series data that has the same protocol and was captured in an uinterrupted series. It does not try to model sequences of different types of data - in that case, you just have multiple observations. It deal well with point values, averaged interval values, max, min, sample compression and a few other things. But it’s no good with a succession of different kinds of patient events. Any such timeline for that kind of thing has to be constructed post-hoc, when the actual events have already occurred.

I can see a theoretical argument to wanting HISTORY in ACTION, instead of just a single point time, but in practice, noone has ever been able to come up with an example where a series of ACTIONs needs to look like a structured series, mainly because ACTIONs usually need to get recorded when they are done. For example, a regular IV drug administration could in theory be represented by an ACTION with a HISTORY, each of whose events described the action (say: admin Morphine 20 mg IV) but to achieve this you would have to wait until all the administrations were done before writing the data. So for some hours it would look like no drugs were being administered, then a long series of them would suddenly appear in the EHR stretching back… days?

I am not saying ACTION is perfect - there have been suggestions for example that an ACTION + link + OBSERVATION structure should be available for when the prescribed ‘action’ was in fact a new observation, such as ‘check patient reaction to drug’.

Another question of time comes up with EVALUATION - e.g. the diagnosis archetype. This is full of times, and tries to follow a disease course model. Currently there is no RM class for this, but if a standardised temporal disease model were agreed across medicine, I suppose there is no reason why not. But it also is not a simple HISTORY - it is more ‘bumpy’… and I don’t know if there is any agreed standard model of this.

Anyway, these are my thoughts for now. Let’s continue the discussion, and continue to work on the wiki page.

  • thomas

Hi Thomas,

Sorry for the delay, I’m working on several projects right now and have little time to follow discussion here.

I’m also thinking about the ENTRY model, to lift up the data/description attributes from all entry subclasses to the ENTRY, to have a ENTRY.data:DATA_STRUCTURE attribute, so all subentries could define the data as ITEM_STRUCTURE or as a HISTORY.

We did think about this a long time ago, but it did not seem useful. But I assume you are thinking of doing it because you want to make ENTRY a concrete class which could have ‘any’ structure.

Nope, is because I see a common pattern on concreate ENTRY subclases.

In theory doing this breaks a basic modelling rule, which is that a superclass whose descendants define the possible data space should not itself be concrete.

I think this is not the case, having a ENTRY.data : DATA_STRUCTURE is in fact a more specific ENTRY class, but is still a generic one that could be specialized in many ways. In my (maybe biased) experience, all subclasses from ENTRY would make use of this attribute since a structure is needed to record information.

The argument here I suppose is that we want to build in a 13606-style ‘uncommitted’ kind of ENTRY. In fact we already have this - it’s currently called GENERIC_ENTRY. This doesn’t get used at the moment (although it has been there for years), and if we want to make it a subtype of ENTRY, that could be done. The main thing to solve I guess is the conversion of any of the specific openEHR kinds of ENTRY into a generic ENTRY structure defined by 13606. This can actually be formally specified by an algorithm. It doesn’t require that the parent abstract ENTRY become concrete either. I am unclear if there are other reasons to make the ENTRY parent type concrete, to mimic 13606 ENTRY, rather than simply move GENERIC_ENTRY to be a subtype, which seems more obvious to me.

Maybe to have the flexibility to define ACTIONS and other entries to have a data attribute of class ITEM_STRUCTURE or HISTORY to track time of events instead of inventing DV_DATE/DV_DATETIME ELEMENTs on ACTION/EVALUATION/INSTRUCTION archetypes is a good idea. What do you think?

Well then I think we risk making the model ambiguous, and different people will use such flexible structures to do the same thing in different ways, which was the thing we were originally trying to avoid.

I disagree here, the model semantics could be defined in the specs. My argument is that we are giving a more flexible IM is adding flexibility (not ambiguity) to archetypes, and giving knowledge modelers more options. Then, when they create a concrete archetype, there is no ambiguity because an archetype models a concept in one way, and if abstract classes are used in archetypes, the archetype needs specialization to make is usable on a real environment (software can’t instantiate abstract classes, and could not make the decision between using subclass A or subclass B).

The HISTORY class is very nicely designed to represent complex time-series data that has the same protocol and was captured in an uinterrupted series. It does not try to model sequences of different types of data - in that case, you just have multiple observations.

I totally agree.

It deal well with point values, averaged interval values, max, min, sample compression and a few other things. But it’s no good with a succession of different kinds of patient events. Any such timeline for that kind of thing has to be constructed post-hoc, when the actual events have already occurred.

That’s the model semantics that should be defined on the specs. Knowing that, not misuse should happen. In the other hand, tools should not permit this to happen, and this could be implemented as semantic validation of RM instances (BTW this should be done with the current model also).

I can see a theoretical argument to wanting HISTORY in ACTION, instead of just a single point time, but in practice, noone has ever been able to come up with an example where a series of ACTIONs needs to look like a structured series, mainly because ACTIONs usually need to get recorded when they are done.

IMO ACTION.time:DV_DATE_TIME could have the same semantics as ACTION.data.events[0].time, if ACTION.data:HISTORY and events[0]:POINT_EVENT.

The easier example is a repetitive INSTRUCTION like “give 5mg of XXX for 10h every 30m”:

  • The ACTION would register the same information structure
  • The proposed POINT_EVENT of the ACTION could record the information like the current ACTION.time attribute
  • There is a series of ACTIONS recorded for the same INSTRUCTION (instead of creating one ACTION instance for each XXX administration, one ACTION could handle all the information, time series and data, for all the susbtance administrations for the same INSTRUCTION/ACTIVITY).

For example, a regular IV drug administration could in theory be represented by an ACTION with a HISTORY, each of whose events described the action (say: admin Morphine 20 mg IV) but to achieve this you would have to wait until all the administrations were done before writing the data. So for some hours it would look like no drugs were being administered, then a long series of them would suddenly appear in the EHR stretching back… days?

I can’t see the difference with the current ACTION model: the ACTION could be created when the administration starts, and the date/time of that event could be written in INTERVAL_EVENT.time attribute, and when the administration ends, the duration could be written in the INTERVAL_EVENT.width.

Maybe I’m missing something here, but that’s whay I understand.

I am not saying ACTION is perfect - there have been suggestions for example that an ACTION + link + OBSERVATION structure should be available for when the prescribed ‘action’ was in fact a new observation, such as ‘check patient reaction to drug’.

It would be nice to discuss this proposals with more members of the community. I’m not saying we need to do the changes, what I say is lets discuss if we can improve the model in some way, analize the pros and cons, and write down a decision. I mean: we need to try to not leave these kind of discussions die on the maillist, this things are valuable assets that could be explored/exploted in the future.

Another question of time comes up with EVALUATION - e.g. the diagnosis archetype. This is full of times, and tries to follow a disease course model. Currently there is no RM class for this, but if a standardised temporal disease model were agreed across medicine, I suppose there is no reason why not. But it also is not a simple HISTORY - it is more ‘bumpy’… and I don’t know if there is any agreed standard model of this.

Maybe is something like a HISTORY or a HISTORY?

Thanks a lot for sharing,
Kind regards,
Pablo.

In the thread below, Pablo asked whether Action should have as its data not just an ItemStructure but a History, like Observation. Does anyone else have evidence supporting this need?

A related question is: is there a need for an Observation type that only has one Event in it, i.e. one time-point? Obviously quite a few observations in real life, including ‘patient story’ are of this form. Our original motivation was to make all Observation data structures the same, hence the current data structures. Introducing more types makes code more complex and therefore error-prone, but generally makes data simpler/smaller overall.

thoughts?

  • thomas
(attachments)

OceanInformaticsl.JPG

The code is written and validated once. The data, many times.