Monday 23 December 2013

What is OpenEHR anyway?

I am not an expert in OpenEHR, but I (and the Mexican government by the way) are very interested in knowing the proper way to standardize, store and consult health information. Is almost unnecessary to justify this interest, in one hand the developing of software is too expensive to update and sometimes rebuild entire health systems every eight years to meet the new health requirements and standards. In the other hand, the health information is too important to allow that this information becomes obsolete. Most of the children born after 1995 will reach more than one hundred years of age and we are living in a era where huge amounts of genetic information will be added to the Health Record of every citizen. We must find the way that those Health Records remain always available and ready to be updated for the next century. Piece a cake, right?

Unfortunately, right now the situation is a mess: terabytes of information are --and in many cases always will be-- unreachable and useless because the software companies choose a developing approach which is great to do a LMS, a video game or an insurance tool but is a nightmare in the long run to handle complex and always changing data. Considering that the information contained in a Health Tecord can save the life of someone, somewhere, this is a pretty serious issue.

So, I have been reading the OpenEHR PDFs and until now this is my resumé:

Archetypes have definitions, ontologies and constraints. The process to create a new Archetype is called "modelling" and is do it for medical experts, who in many occasions know nothing about the software and computer world and the don't need to know about it anyway. This is why OpenEHR is called a "two modelling" specification, because the Medical Knowledge Domain remains independent from the Programmer Knowledge Domain. Archetypes are the "lego bricks" that allow us to build a full OpenEHR application and, happily, most of the Archetypes that we could need are already modeled and contained in the CKM:

http://www.openehr.org/ckm/

On the other hand, Templates are a kind of archetypes with "slots", basic archetypes are adapted and embedded in this slots to build the data what we need. For instance the "Annual Medical Check Up" template could be conformed by the "Name", "Age", "Sex", "Blood Pressure", "Is Smoker", "Heart Rate", "Menopause", etc, etc, archetypes. Templates are expressed in screen forms showing the data points of its archetypes. When you insert the basic archetypes in the template's slots you can remove parts of the basic archetypes that you don't need. So templates are nearest to a real application.

Templates are "compiled" to generate the Operational Templates (OT). This OT connect the medical world (i.e. the doctors who defined the archetypes and templates) with the programmers world and contain the info to build the models (the "M" in MVC) using Java, C#, Ruby, whatever. This pass from archetypes (health experts domain) to concrete classes (software experts domain) is make it through the Reference Model and the Archetype Object Model.

Having the Models derived from the OTs, the data can now be stored in MySQL, PosgtreSQL, whateverSQL, like any other MVC software. The Archetype Query Language allows extract data from the system if you want to build a RESTful based API to be consulted for external entities. This video explains the templates process:

No comments: