Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How is openEHR supposed to be used?

I am researching about electronic health records (EHR). OpenEHR seems to be quite extended and appreciated in this field, as it is widely adopted. However, I fail to find how it is used. I mean, I can see all the definitions for archetypes, and how those definitions are written in ADL or XML. But, once I have an archetype which is just that, a definition of a certain data model, how do I use that? Is there another type of representation, maybe also in ADL or XML? Are there any examples of actual health records for a patient? I have spent hours looking for a John Doe health record example, with info like gender, age, blood pressure and so on, but all the examples I can find are about definitions of those terms.

If anyone can put me on the right track, I would appreciate it. Thanks in advance!

like image 501
David Ballester Avatar asked Aug 22 '14 14:08

David Ballester


3 Answers

after having the set of archetypes that specifies your clinical record (structure, constraints, terminology), I would recommend to create your Operational Templates (OPT) using the Ocean Template Designer. That is a big XML with all the referenced archetype semantics in one file (easy to handle).

After that, you have to make some design choices:

  1. Database technology

You can choose a relational, object based or document based technology. My preference is a mix of relational + some XML support. Most relational DBMS today support xml as a native datatype.

  1. Data model

There are two extreme models a) map the RM 1-1 to a DB model, b) use a key/value approach. For requirements that needs to query the hierarchy a) is better, but you'll have a lot of joins in relational DBMSs. For queries based on plain data b) is better but you'll need to have some logic if you want to build the hierarchy back from the k/v sets.

Why I mentioned the hierarchy? As you might notice, the openEHR Information Model has a tree structure, so is hierarchic by default, and that's because clinical information is hierarchical in nature.

What I did in my EHRServer was creating structured indexes in a relational DBMS. This approach sits in the middle of a) and b). I also use ORM tools (http://grails.org/doc/latest/guide/GORM.html) to automatically map object instances into tables.

One key aspect of the data model is to save the reference to the archetype that defines every data point, that can be done in the DB itself or using metadata to map archetype paths to a table/column.

  1. UI definition

You can create your UI by hand, or generate it from archetypes + templates. Either way you'll need some metadata to bind the fields on the UI to fields on archetypes. For this I use the field id and the archetypeId + path.

This helps me to bind input data from doctors into the openEHR Information Model, and with the right metadata this can be done in a generic way.

If you don't know about archetype Ids and paths, please read: http://openehr.org/releases/1.0.2/architecture/am/archetype_principles.pdf

I would recommend also the Architecture Overview: http://openehr.org/releases/1.0.2/architecture/overview.pdf

  1. Business logic

Binding data to your data model is part of the business logic, also validating that data. For validation I use the constraints that appear in the archetypes and operational templates. IF you have the archetype Id + path, you can get the constraint from the archetype and then you can evaluate that constraint against input data.

  1. Integration of previous components

Glue all the stuff together and you'll have: UI <-> logic <-> DB

Hope that helps.

like image 171
Pablo Pazos Avatar answered Sep 20 '22 22:09

Pablo Pazos


Records are compiled and transmitted in XML to other vendors or organizations. HL7 is used for sending messages such as lab orders to/from lab vendors with specific OBR and OBX.

I'm not sure what you are looking to do with your research - if you're building your own app/site, then I would suggest blue button plus. It is an initiative by the ONC and the js will parse most CCDA (XML document with patient info from EHR) documents. Look over the library on GitHub - https://github.com/blue-button/bluebutton.js

Most importantly, research the background (HITECH Act) and know the challenges (EHR interoperability). Go to HHS.gov and look over the information there. Also, you're going to need someone who knows medical terminology and codes (ICDs, CPTs, SNOMED, etc.) as well as a clinical advisor because you could have all the data in the world, but if you don't display it in a proper or meaningful way, it's essentially useless.

like image 41
Smcner12 Avatar answered Sep 23 '22 22:09

Smcner12


The openEHR spec describes how to write a system based on this dual layer approach...a number of companies around the world now use the architecture as the foundation for their systems. Your frustration is not new, as it is a demanding step to take. But the result is that health records can be shared by the systems, with post hoc discovery of formal meaning. The models can be written in any language, adding languages as you go....there is no language primacy.

I suggest that you subscribe to openehr.org technical mailing list and ask the same question.

Cheers Sam Heard OpenEHR Foundation

like image 28
Sam Heard Avatar answered Sep 23 '22 22:09

Sam Heard