An Outsider’s Look at Developing Electronic Health Record Systems

Introduction

Long term, I’m interested in working as a software engineer for the international development sector. Most likely that will take the form of international health care or medical record keeping. I’m not currently working in the healthcare field, but have recently been doing some personal research out of curiosity. I wanted to see how software engineers build the systems used to record Electronic Medical Records (EMRs) and Electronic Health Records (EHR).

Isn’t it just a bit crazy that the systems that record and store our medical records are made by developers?! Who trusted us with that… (image generated by NightCafe)

An EMR contains all the medical history, test results, medication information, diagnoses, immunization, and allergy data for a specific patient, while an EHR stores all of the EMR data in addition to family medical history, demographics, insurance details and other administrative information (key differences can be read about here).

There are many examples of both open-source and proprietary EHR systems. Some examples of open-source EHR systems include OpenMRS, an open-source platform for managing medical records in low-resource settings, and LibreHealth, an open-source healthcare platform that provides EHR functionality. Proprietary EHR systems include Epic, a comprehensive EHR system used by hospitals and clinics, and Cerner, another widely used EHR system created by Oracle.


Open-Source EHR Systems

OpenMRS is an open-source medical record system that is primarily written in Java and uses the Spring framework. The GitHub repository is located here. The user interface of OpenMRS is built using HTML, CSS, and JavaScript, and it uses the Apache Tomcat application server to run. The system utilizes a MySQL database to store data.

LibreHealth is another open-source healthcare platform that includes electronic health record (EHR) functionality, among other things. Their projects are primarily hosted using GitLab here, but also have a mirrored GitHub organization. The core of the LibreHealth platform is written in PHP. The user interface of LibreHealth is built using HTML, CSS, and JavaScript, and it uses the Apache web server to run. LibreHealth also uses MySQL for its database.

In addition to these core technologies, OpenMRS and LibreHealth each have a modular architecture and include a wide range of additional modules that can be added to the system to extend its functionality. These modules can be implemented using a variety of programming languages and technologies, depending on the needs of the module (they even have modules written in my favorite language, TypeScript!).

These systems also come with developer tools and resources, including a developer community, comprehensive documentation (links for OpenMRS and LibreHealth), and a range of libraries and APIs that can be used to build custom modules or integrate with other systems. At the time of this writing, the core repository for OpenMRS has 3.3k stars on GitHub while the main IO repo for LibreHealth has only 184 stars, and the OpenMRS organization hosts 311 repositories while LibreHealth hosts 24. Therefore, OpenMRS appears to have a more active developer community and a richer ecosystem of tooling support than LibreHealth.


Proprietary EHR Systems

Epic Systems and Oracle Cerner are two examples of companies that make proprietary electronic health record (EHR) systems that are used by hospitals and clinics to manage patient medical records and other healthcare data. These are comprehensive EHR systems that include a range of functionalities, such as appointment scheduling, clinical documentation, billing and claims management, and population health management.

These are complex systems that are built using a variety of programming languages and technologies. The core of each system is written in a proprietary programming language that was specifically designed for use in the healthcare industry. Epic Systems is built on the Massachusetts General Hospital Utility Multi-Programming System (MUMPS or simply M) non-relational database programming language which was created in 1966 (as per Elys.com blog site). Oracle Cerner uses a custom querying language called Cerner Command Language (CCL), a custom database system called Cerner Millenium, and even a custom unit testing framework called CCL Unit (CCL testing documentation)!

Here’s the classic Hello World snippet of MUMPS (for-loop-ified for pazazz):

for i=1:1:10 do
    write "Hello world"
end

and again for the Cerner Command Language:

for (i=1;i<=10;i++) {
    write "Hello world"
}

Cerner and Epic use a number of other programming languages and technologies, including Java, C#, and HTML, to build the various components of the systems.

These applications also utilize a range of frameworks and libraries to support the development and deployment of the systems. These include web development frameworks, such as Angular or React, as well as libraries for tasks such as data management and security.

These are proprietary systems, so detailed information about the technologies and frameworks used to build them is not publicly available, and developers generally have to work with those companies to get access to this tech. As a proud Californian who likes his warm weather though, I don’t think I’ll be moving any time soon to Kansas City, Missouri (Oracle Cerner headquarters) or Madison, Wisconsin (Epic Systems).

Conclusion

EHR systems are built using a range of programming languages and tools, and examples of both open-source and proprietary systems can be seen. Granted, I’m not a member of the healthcare industry: in fact, I’d never even heard of MUMPS or Cerner Millennium before! If you work with these systems, I’d love to hear what I missed or got completely wrong.

Print Friendly, PDF & Email

Posted

in

by

Tags:

Comments

One response to “An Outsider’s Look at Developing Electronic Health Record Systems”

  1. Maryum Shabazz Avatar
    Maryum Shabazz

    This was interesting to read as someone with 11 years in the healthcare industry who has used a myriad of healthcare charting systems, epic, cerner, meditech, mckesson, etc there is a lot wrong and the primary issue IMO is the people coding it don’t have any medical knowledge. There needs to be more multidisclipinary software engineers (Yay! for the post bacc students filling the void). I have a very unique perspective after being a RN for 11 years (as of this year) and now software engineer. What is possible, what is not possible, what is needed and what is not needed. I’d be open to a chat if we can find a time that mutually works.

Leave a Reply

Your email address will not be published. Required fields are marked *