what is the use of the reference model?

I’ve been going round in circles about this question all weekend, and have two ideas.

  1. It’s basic and most important use is to provide reference to check the correctness of the arquetypes.
  2. It is needed for some types of persistence design

Why am I asking myself this? because once assertions are implemented, all that may be needed for validating real data may be included in archetypes, can’t it?

am I missing something?
thank you

Dear Rodrigo,

The Reference Model defines a generic model of any document.
And is mapped onto (into) the persistence layer.
Archetypes are constraints on the Reference Model but are formed using its own meta-model.

Your possibility number 1 is not correct.
Possibility 2 is correct.

Real data is ‘validated’ (better: defined) using the Archetype (the constraints)
And the archetypes are validated (defined) using the archetype meta-model.

Gerard

– –

Gerard Freriks, arts

Huigsloterdijk 378

2158 LR Buitenkaag

The Netherlands

T: +31 252 544896

M: +31 653 108732

Gerard,

But correctness of a particular Archetype (for openEHR) must checked against the Reference Model, or is it not?

I did not mean to say what is the use, but meant “what is it used for?”

regards

Gerard Freriks wrote:

Rodrigo Filgueira wrote:

I've been going round in circles about this question all weekend, and have two ideas.

1. It's basic and most important use is to provide reference to check the correctness of the arquetypes.
2. It is needed for some types of persistence design

Why am I asking myself this? because once assertions are implemented, all that may be needed for validating real data may be included in archetypes, can't it

am I missing something?

yes....the data. The data are all instances of the reference model, nothing else. No matter how many openEHR deployments, no matter how many archetypes or templates - all the data are instances of the one schema - the reference model.

- thomas

Thomas,

I see that some attributes for some clases are not present in archetypes.
For examples language in the Entry class.
It is clear to me that the restriction is allready defined by the infariants of that class, but I wonder where do you check or validate that field.

Do you wait until you build the RM object?

Another question about this, how do you refer to this attributes in templates?
this question arised because there are no archetype paths that lead you to this attributes.

Another thing, I believe it is a spec error, the EVENT_CONTEXT class from the COMPOSITION package does not inherit from LOCATABLE. Is that correct?

thank you

Quoting Thomas Beale <Thomas.Beale@oceaninformatics.biz>:

Thomas in option 2 I meant the reference model serves as a stable schema and container of the real data, but correct me if I’m wrong, this schema is instantiated with data with the only purpose of fetching it from databases and persisting it to databases. All other processing is to be done by the AOM.
Thomas Beale wrote:

We need to think as per end users point view. What is
a use of reference model to end user? will it simplify
the transaction.

This a thought I want to share with you.

Regards,
Dr. Ankush

Thanks Gerard ,
This gives some understanding of RM.

Will it be more useful if we can understand it in more
end user perspective?

Regards,
Dr. Ankush

Rodrigo

Templates can constrain or populate any attribute - you can determine the path of the object ending with the attribute name. This applies throughout.

More in line..

Rodrigo Filgueira - IIE wrote:

Thomas,

I see that some attributes for some clases are not present in archetypes.
For examples language in the Entry class.
It is clear to me that the restriction is allready defined by the infariants of that class, but I wonder where do you check or validate that field.

Do you wait until you build the RM object?

At Ocean we state it in a template - the openEHR version of this coming. Then we populate the value in the RM object.

Another question about this, how do you refer to this attributes in templates?

Paths - path_to_object/attribute_name

this question arised because there are no archetype paths that lead you to this attributes.

Only because we have not included it as we do not want to constrain it in archetypes.

Another thing, I believe it is a spec error, the EVENT_CONTEXT class from the COMPOSITION package does not inherit from LOCATABLE. Is that correct?

Yes - we use a path to get there too - there is only 0..1 so it does not repeat.

Cheers, Sam

Rodrigo Filgueira wrote:

Thomas in option 2 I meant the reference model serves as a stable schema and container of the real data, but correct me if I'm wrong, this schema is instantiated with data with the only purpose of fetching it from databases and persisting it to databases. All other processing is to be done by the AOM.

Hi Rodrigo,
validity processing and some query processing is, correct. But don't forget that the RM has its own semantics as well - it depends on what you are doing. If you are graphing a blood pressure History then you will of course use some of the logic of History, Event etc. Similarly for Instruction/Activity and so on.

But it is the archetypes that provide 80% of the domain-level semantic checking.

- thomas

ankush shinde wrote:

We need to think as per end users point view. What is
a use of reference model to end user? will it simplify
the transaction.

not too sure what you mean by that. Most end users won't be aware of the reference model or even archetypes - they will just see forms and other things on the screen. These forms are directly linked to templates that in turn specify a collection of archetypes for that particular form.

- thomas

Hi,
But for end user is always worry with the performance issue.
How this RIM helps in the performance point of view
Husain

husain poredom wrote:

Hi,
But for end user is always worry with the performance issue.
How this RIM helps in the performance point of view
Husain

*//*

yes, sorry, I wasn't aware that you were thinking from that perspective. Well, performance is a big issue, but a few things to note:

    * latency is usually the main issue (how fast a it takes to get a
      response on the GUI), particularly in the presence of other users
      and server-side queries
    * persistence architecture is almost always the single greatest
      determinant of latency as experienced by the user
    * the Ocean Informatics .Net openEHR implementation performs pretty
      well already; we are currently building large record sets and test
      applications to simulate medium to large size EHR systems.
    * with the Java implementation, tests on openEHR structures built
      using vanilla hibernate schemas performed very badly; as soon as
      the structures were adjusted to be less fine-grained, a 4 second
      wait turned into a 2 millisecond wait.
    * I theorise that the method of persistence documented here
      (http://www.openehr.org/FAQs/t_persistence_notes.htm) may well be
      an order of magnitude faster (including for complex queries) than
      any method.

hope this helps,

- thomas beale

Ankush

It is a recording model that contains features required for all legal recording and audit trail, for tracing inputs and outputs and is the basis for all software. The software has to know about the reference model. The reference model means that the EHR can accept any information at all - the way specific information is recorded depends on the archetype (but it always uses the features of the reference model!).

The clinical concepts are expressed in archetypes. Most software using an EHR service will not need to know what is in archetypes - just how to work with archetypes. So data entry, display and other components need to be archetype-aware but not understand the clinical concepts. The components for data entry can have archetype-specific specifications (we call them templates for data entry and display scripts for viewing) of how to present this to the user.

Decision support and clinicians need to know what an archetype expresses - because the health care of a patient will depend on this. Some other smart software will as well - perhaps determining the billing automatically - etc.

Does this help?

Sam

ankush shinde wrote:

Thanks Sam,

Your explanation has been very useful to understand
RM. I work more in implementing EHR and HIS and deal
with users.

Gerard gave the technical explanation but I thought it
will be useful if I can understand it in user’s point
of view.

Your explanation has solved my query. I think while
system design and development, user perspective is
very important. It should based on real life use cases
and scenarios

I thank you and Gerard for clarifications.

Regards,
Ankush

Thomas this was very helpful.

Regards,
Ankush
--- Thomas Beale <Thomas.Beale@OceanInformatics.biz>
wrote:

husain poredom wrote:
> Hi,
> But for end user is always worry with the
performance issue.
> How this RIM helps in the performance point of
view
> Husain
>
> *//*
yes, sorry, I wasn't aware that you were thinking
from that perspective.
Well, performance is a big issue, but a few things
to note:

    * latency is usually the main issue (how fast a
it takes to get a
      response on the GUI), particularly in the
presence of other users
      and server-side queries
    * persistence architecture is almost always the
single greatest
      determinant of latency as experienced by the
user
    * the Ocean Informatics .Net openEHR
implementation performs pretty
      well already; we are currently building large
record sets and test
      applications to simulate medium to large size
EHR systems.
    * with the Java implementation, tests on openEHR
structures built
      using vanilla hibernate schemas performed very
badly; as soon as
      the structures were adjusted to be less
fine-grained, a 4 second
      wait turned into a 2 millisecond wait.
    * I theorise that the method of persistence
documented here
     

(http://www.openehr.org/FAQs/t_persistence_notes.htm)

Good, I got your point.