Systems architecture for data conversion to OpenEHR

I am trying to implement an architecture to automate Clinical Data transformations to the Openehr standard but I can’t find any documentation to support my development.
I was thinking of developing an architecture based on the following elements:

  • ETL to extract the original data.
  • Open EHR API developed in JAVA that transforms the original data to the OpenEHR standard (I don’t know if there is any API that performs these actions). Use the OpenEHR system to do the transformation.
  • OpenEHR system based on Template, Archetypes, Reference Model, Terminology and Task Planning.
  • Finally a DB where the OpenEHR are stored.

If anyone can help me by giving any use case that can be similar to this or any architecture system that exists, I would appreciate it very much.

Thank you.

1 Like

Hi Agustín,

You actually need to implement the transformation. I don’t think there is anything out there to automate this. In fact, the ETL should do the transformation to openEHR.

Another point on “automation”. One thing is to implement an ad-hoc process considering your specific data source, and another a generic process trying to extract from any data source to transform to openEHR. The second is almost impossible to do without a lot of metadata over your data sources.

Let’s say you want to work with one specific data source, and when new data comes there, you need to transform that into openEHR. I would have something like this:

  1. Data Source (known schema)
  2. ETL (I like to use Mirth Connect for this, does the actual schema to openEHR transformation)
  3. openEHR CDR (provides API and storage, also a query formalism)
1 Like

Thank you very much for the answer Pablo, you have helped me a lot.
Finally I am going to implement the architecture with the following elements:

  • Specific data source.
  • ETL that extracts the data and then with a script based on the mapping with the archetypes transforms the data to the OpenEHR standard.
  • OpenEHR CDR: EHRServer to publish the data coming from the ETL to an external NoSQL database. The alternative option to EHRServer would be to implement each of the elements it contains? API for post/get…, NoSQL query builder and repository of archetypes, mapping data, templates, reference and terminology models.

That’s about it.

I’m involved in a project to pull data from an existing ‘legacy’ cancer system into an openEHR CDR.

  1. Create one or more templates to act as targets for the incoming data, Upload the template to an openEHR CDR of your choice. That ‘schema’ is now registered with the CDR and no other back-end engineering is required. The big decision is whether to simply import the datastream as-is into a single composition, or try to normalise it to reflect the new semantic architecture, which may involve pushing the data to several compositions.

Here is an example of a target template to pull data from feeder legacy cancer systems ( this is a bit outdated) but you should get the idea. https://ckm.apperta.org/ckm/templates/1051.57.151

  1. Map/ transform the incoming data to create each composition defined by the templates. We are just using the REST API and Better FLAT data format for this . Typically the coding is done in an integration engine like Mirth. Then post the data to the CDR and it all works nicely.

You can of course build your own datastore, based on the data models but you lose all the advantage of using a CDR like EhrServer, Ehrbase or Better CDR ,where deploying the template is all you need to do for the data to be persistable and queryable.

1 Like

The EHRServer works with a relational database, though it could be used as an intermediate standardized storage to move data to another data destination that could be no-SQL, some ideas are mentioned here https://cloudehrserver.com/learn/use_case_analytics_and_datawarehousing

It all depends on what is your final destination for the data and how the data will be used. You can just keep the data in EHRServer and then create an external analytics app to query, aggregate and display data. You can check some sample use cases here https://cloudehrserver.com/learn

Hope that helps!

BTW, in YouTube you can find some tutorials, it might give you some ideas https://www.youtube.com/watch?v=zSftiFBjboE&list=PL-4c1WHznyulrf8wPhaOq7T0E2QWQMCHH

1 Like

Thank you so much Pablo

1 Like