openehr-ruby icon indicating copy to clipboard operation
openehr-ruby copied to clipboard

Implementation Guide

Open skoba opened this issue 12 years ago • 8 comments

We need some mplementation technology guide!

skoba avatar Feb 08 '13 00:02 skoba

Can we discuss with you choice between RIM based application and OpenEHR based application? Excuse me for off-topic.

niquola avatar Feb 08 '13 16:02 niquola

Hi Nicholas,

Sure. I am always thinking about application. What can I do?

2013/2/9 niquola [email protected]

Can we discuss with you choice between RIM based application and OpenEHR based application? Excuse me for off-topic.

— Reply to this email directly or view it on GitHubhttps://github.com/skoba/ruby-impl-openehr/issues/8#issuecomment-13297871.

skoba avatar Feb 09 '13 00:02 skoba

As we understand, OpenEHR and RIM/R-MIM/D-MIM both are modeling of Health Care.

"The RIM model is too good to be limited to messaging” says Peter Hendler HL7 v3 modeling is done for semantic messaging.

What is your opinion about possibility to base application on messaging model?

Can you reason, why you choose OpenEHR?

What the difference from your point of view between OpenEHR and HL7 v3 package?

niquola avatar Feb 11 '13 08:02 niquola

First of all, I have no intention about HL7. I am afraid that I cannot explain well and my English might make flame, but I do not mean to blame HL7 or relatives. Actually, I do not know HL7 well enough to evaluate and compare with openEHR. The reason why I choose openEHR as an implementation target is quite simple, it was freely available on the Internet at 2007 when I started this project. HL7 official documents were not opened freely at that time, and HL7 Japan did not permit HL7 implementation to publish as open source software in Japan. Now, HL7 documents are freely available and HL7 Japan permits open source implementation. If I start this project now, I would be wondering which I should choose. As a clinician, I was much frustrated by EHR/EMRs in my hospitals and believed "I can do it better" in 2000. I took medical informatics course of graduated school, and started research in 2001. Many resources and documents are freely available on the Internet, but only few resources are available in medical standard domain at that time. In Japan, standard organization had tried to be widespread standards in medicine with political obligation, but they were not effectively adopted. As W3C and IETF did to propagate the Internet, I thought we needed a open standard and open source implementation for standardization. I started "Medical open source software council and seminar" in Japan at 2003 and found the openEHR project at 2007.

I cannot answer the last question, because I do not know HL7 v3 package well.

I do not deny the possibility to make application by messaging model, but messages are usually generated from records in EHR. To record and issue standardized messages, medical record should be designed as standardized model, because no data make no messages. This might be "egg and chicken", but I think both can be complementary.

Are these enough answer to your questions?

skoba avatar Feb 12 '13 03:02 skoba

Thank you for such a complete reply.

My English is very small, but i believe in semantic interoperability (such a hard word :)!

Now we are working on re-design our EHR application for US Realm. We decided it should be heavily bases on standards. I've take a first look on OpenEHR and HL7 v3 (RIM based application). I'm working deeper with HL7 v3, because US OMC certification program.

Both standards are very interesting. Can you fix my amateurish opinion about OpenEHR.

Key concept of OpenEHR is Archetypes & Templates. They look so abstract as UML. So my fist stupid question: why not UML?

As i understand OpenEHR specify for us how to:

  • create repository
  • fill this repository with Archetypes & Templates
  • use archetypes as active meta-model for application

HL7 Reference Information Model looks also abstract, but more specific for Health IT and they are working on transforming their MIF (xml meta language) to UML profile.

Core idea of HL7 domain modeling is modeling by restriction, this means:

  • there is complete and almost immutable Reference Information Mode (http://www.healthintersections.com.au/wp-content/uploads/2011/05/RIM.png), no more attributes & classes can be added.
  • concrete domain areas and messaging are modeled only by restriction possible attributes values and types/cardinality of associations between class instances (D-MIM & R-MIM, something like http://www.hl7.org/documentcenter/public_temp_1E915A54-1C23-BA17-0C2913AD2AC349AC/wg/pafm/PA_DMIM_20020311.gif)
  • HL7 is producing D-MIM and R-MIM standards for concrete domains (like pharmacy or patient administration), sometimes in machine readable format. And you can use this meta-model in your application.

My first impression, that HL7 v3 meta-models becoming standards, so it looks worth to use them in application.

Does OpenEHR Ecosystem has such approved source of Archetypes? I've seen the OpenEHR community repository, but it does not look complete (may be i'm not right)?

niquola avatar Feb 12 '13 19:02 niquola

I do not know why archetypes are not defined by UML. UML diagrams of RM are shown on the official openEHR web site. http://www.openehr.org/wiki/display/spec/openEHR+1.0.2+UML+resources Archetype is an abstract clinical concept, and template is a concrete model for each clinical use case. Template will be replaced by archetypes in the next version of archetype model. More than 300 archetypes are available at the clinical knowledge manager. http://openehr.org/knowledge/ Most of them are under discussion to approve, but they are worth to use for many cases. I have not understood RIM/R-MIM/D-MIM well. How do they define clinical concept? Can you point approved clinical concepts, such as blood pressure, heart rate, body temperature?

skoba avatar Feb 13 '13 15:02 skoba

Hello from Russia, again.

In RIM terminology "body temerature" is represented as Observation (see on diagram http://www.healthintersections.com.au/wp-content/uploads/2011/05/RIM.png). Observation is specialization of Act class. Observation has attributes:

  • value with type "Physical Quantity"
  • code with type "Coded Value", this type has properties code, codeSystem etc
  • methodCode also coded value to code method by which observation was done
  • targetSite coded value, site where observation was done
  • interpretationCode means how to interpret value, for example "abnormal"

In specific case (for example messaging by CCD-A standard) you specify body temperature observation coded in concrete coding system:

<observation classCode="OBS" moodCode="EVN">
   <templateId root="2.16.840.1.113883.10.20.22.4.27" />
     <!-- Vital Sign Observation template -->
    <id root="c6f88321-67ad-11db-bd13-0800200c9a66" />
    <code code="8310-5" codeSystem="2.16.840.1.113883.6.1"
       codeSystemName="LOINC" displayName="Body Temperature" />
   <text><reference value="#vit1" /></text>
   <statusCode code="completed" />
   <effectiveTime value="19991114" />
   <value xsi:type="PQ" value="36.6" unit="celsius" />
   <interpretationCode code="N" codeSystem="2.16.840.1.113883.5.83" />
</observation>

In simple words, HL7 v3 semantic is heavily based on classifications and code systems. Laboratory test results also represented with Observation.

Even patient problems & allergies represented as Observations, but in different code systems. If additional information required more Acts and Roles can be linked by ActRelationships and Participations. Example Allergy Observation with constrains from CCD:

<observation classCode="OBS" moodCode="EVN">
  <!-- allergy observation template -->
  <templateId root="2.16.840.1.113883.10.20.22.4.7"/>
  <id root="4adc1020-7b14-11db-9fe1-0800200c9a66"/>
  <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4 "/>
  <statusCode code="completed"/>
  <effectiveTime><low value="20060501"/></effectiveTime>
  <value xsi:type="CD" code="419511003"
    displayName="Propensity to adverse reactions to drug"
    codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT">
    <originalText><reference value="#reaction2"/></originalText>
  </value>
  <participant typeCode="CSM">
    <participantRole classCode="MANU">
      <playingEntity classCode="MMAT">
    <code code="763049" displayName="Codeine 30mg/ml"
      codeSystem="2.16.840.1.113883.6.88"
      codeSystemName="RxNorm">
      <originalText>
        <reference value="#reaction2"/>
      </originalText>
    </code>
      </playingEntity>
    </participantRole>
  </participant>
</observation>

So HL7 v3 has static Reference Information Model (changing very slowly) and then they model only by refinement, ie not adding attributes and associations, but only refining concrete Code Systems and Value Sets and restricting associations (Participations and ActRelationships) by type and multiplicity. It sound great, by we did not implement it yet.

73's from niquola

niquola avatar Feb 14 '13 21:02 niquola

Thank you for HL7 lecture. The openEHR Reference model entry type has 4 subclasses, OBSERVATION, EVALUATION, INSTRUCTION, ACTION. OBSERVATION. This structure seems similar to HL7, but openEHR specification has upper layer, so-called archetype. Archetype is consisted by RM. http://www.openehr.org/wiki/display/spec/openEHR+1.0.2+UML+resource

Blood pressure archetype defines the structure of data model for observed blood pressure. Archetype has intrinsic-code in itself, starts from 'AT-***'. Some intrinsic AT codes have binding to other terminology, such as ICD-10, SNOMED-CT, etc.

This two-level modeled archetype can be flattened to table, shown bellow.

OID      node                                  AT-CODE    RM type       value
00001   /data/at0003/items[at0004]/value     at0004        DV_QUANTITY   120
00001  /data/at0003/items[at0005]/value      at0005        DV_QUANTITY    80
00002   /data/at0003/items[at0004]/value     at0004        DV_QUANTITY   132
00003  /data/at0003/items[at0005]/value      at0005        DV_QUANTITY    60

We can operate various archetypes on such simple table, and these data can be viewed as structured archetype instances for multilingual use.

skoba avatar Feb 15 '13 09:02 skoba