Personal tools

Technical Aspects of OpenEMR

From OpenEMR Project Wiki

Jump to: navigation, search

An Evaluation of the Technical Aspects of OpenEMR - Julia Weatherby

From GPLMedicine


1 An Evaluation of the Technical Aspects of OpenEMR
1.1 Introduction
1.2 Architecture
1.3 Security
1.4 Interoperability
1.5 User Interface
1.6 Installation
1.7 Backup and Portability
1.8 Maintenance and Support

An Evaluation of the Technical Aspects of OpenEMR

Julia Weatherby

16 February 2006


The healthcare industry is currently undergoing a gradual migration from paper-based patient record systems to electronic medical record (EMR) based systems. The adoption rates of the electronic systems vary, but they tend to be highest for large organizations, and lowest for smaller, private medical practices. Larger organizations tend to have more money and resources to spend on expensive, proprietary software and services. Smaller practices have less money, and may not even have the technical staff to support a complex system, so there is growing interest in free and open source medical software that provides features comparable to the more popular and established propriety medical systems. There are a number of open source electronic medical record systems available, including VistA, ClearHealth, FreeMED and OpenEMR. This paper will discuss OpenEMR and its technical aspects.

OpenEMR is a full-featured electronic medical record and practice management system that is free, open source, compliant with HIPAA standards and supported on a variety of platforms. The user interface is web-based, making the look and feel more familiar to less technical users, and more accessible to all users. Some of the features of OpenEMR include management of electronic health records, encounter templates which can be customized, an appointment calendar, electronic billing system, support for multiple coding systems, prescriptions, patient statements and reporting (About OpenEMR). The medical record is viewed easily through a summary screen with a brief description of medical issues, medications, allergies and other medical history. From the summary screen it is simple to click for more details.


OpenEMR was built upon what is commonly known as the LAMP architectural platform. LAMP is an acronym for Linux, Apache, MySql and Php/Perl/Python. There are many websites and web applications online today that are built using this platform. It is completely free and open source. Other benefits are that the products are well-supported by the open source community and the software stack is mature and tends to be stable. Linux is the base operating system that hosts all the server and application code. Although Linux is the "L" in LAMP, there can also be a reference to XAMPP. This term is used when running the software stack on Windows or Windows XP. OpenEMR does support non-Linux operating systems, such as OpenBSD, Windows 2003 Server and Windows XP. Apache is the name of an extremely popular open source web server. MySql is the database back-end for the system. It is commonly used in open source projects, but there are more robust databases out there. The P stands for Php, Perl or Python. OpenEMR and its components are built on a mix of Php and Perl.

The OpenEMR solution consists of three components. These components are the OpenEMR EMR and Practice Management (PM) System, FreeB and SQL-Ledger. The OpenEMR EMR and Practice Management System is the main component of the system. It provides the application functionality of the calendaring system, electronic medical records, encounter forms and prescriptions. The code base for this is what is supported and managed through the OpenEMR open source community. FreeB is an open source medical bill formatting engine for medical billing documents. SQL-Ledger is a general account system that is not specific to healthcare. These two components are actually open source modules that are separate open source projects. OpenEMR benefits and is also dependent upon the other open source projects for this code. There are even cases where pieces of the main EMR/PM component are also separate open source projects.


In early releases of OpenEMR, security was more problematic. It did not have role-based access control, which protects data in the system from inappropriate access. Role-based access control allows access to certain data objects based on three aspects of security: the user requesting access, the object being requested, and the role of the user (Ferraiolo 142). Although this feature is powerful, it is not health-care specific, and there are discussions on making it easier for medical users to understand by using healthcare terms such as patient, physician, etc. Today, OpenEMR (and other open source EMR software implementations) supports a module called phpGacl. As mentioned earlier, this is an open source project itself, and is not specific to health care industry. OpenEMR is able to take advantage of the free, tested, reliable software to create a more secure system.

Other aspects of security can be addressed through securing the operating system, network and web server. Because OpenEMR uses a standard software stack, there are many reliable security solutions available.


Part of the difficulty with the larger proprietary healthcare IT systems is that they may not be very interoperable. OpenEMR is useful as a stand-alone system, but also implements health care standards to interoperate with other systems and exchange data with those systems. Even if a system won't easily integrate with OpenEMR, the system has features for exchanging data such as through an XML export of patient data. OpenEMR supports HL7 and the ANSI X12 EDI billing standards. One of the features of this system is that it can communicate with ProxyMed and ZirMed for electronic medical claims (Two Clinics).

User Interface

The user interface is web-based, making it easier to secure and access for users, as well as being more familiar to them. Because the software is open source, virtually any part of the user interface can be customized for a particular organization. As part of the package, it is simple to use templates to customize patient encounter forms. The user interface is one of the aspects of OpenEMR which is regularly undergoing improvements with each release.


Installation of OpenEMR is not too difficult and is also progressing on a regular basis. Those with the technical knowledge to understand how to install common software products such as Php, MySQL and perform other typical system administration tasks will find the instructions fairly easy to follow. The installation and configuration steps are a mix of command-line operations, and web-based interactions.

Backup and Portability

Of utmost importance to medical staff is having a reliable backup of their patient data. OpenEMR comes with scripts to backup data to CD. Again, because of the standard stack, there are common methods for creating a backup solution for LAMP. One interesting implementation of OpenEMR has the entire stack built inside a virtual machine using VMware software. VMware is not open source, although there is free software available to run a VMware image. The implementation is for a family practice where the entire OpenEMR system is on a VMware image. The VMware image is backed up every night to DVD. Because VMware images are extremely portable, recovery is quick and simple. The portability of this solution means that a physician could run the entire system on a laptop for use outside the office.

Maintenance and Support

One of the most compelling reasons to choose an open source solution like OpenEMR for an electronic medical record system is that the source code is public. If a user has the proper technical skills, he or she could go directly to the source code repository, analyze the relevant code and even make changes to it. The typical medical office would likely not have those skills in-house. However, there are still ways to get the code changed. The user could make a feature request or report a bug to the OpenEMR developers. The user could hire a technical programmer to make the changes for that implementation. However, the user then risks issues with their code being compatible with future releases. The most beneficial option for the community would be for the user to sponsor a programmer or multiple programmers to fix the source code (Simon 231). A financial incentive might be necessary if the request requires substantial programming. The source code as well as other development team tools (including forms, bug tracking, feature request tracking) are hosted on, a widely-used platform for hosting open source projects. As far as the developers who actively write code for OpenEMR, there are nine developers registered on the source control system, so it is a small community. One advantage of the OpenEMR development model is that it is quite easy to get in contact with the current and some past OpenEMR developers. There is a forum where users can log in and ask questions, make requests, report bugs or otherwise communicate with the development team. Currently there are eight open feature requests. They range from simple graphical user interface changes to interface changes with the billing module. There are nine open bugs reported (OpenEMR Summary). In addition to a small development community, the practice base is also small, but growing. It's estimated that around 1,000 practices implement OpenEMR both within the United States and other countries such as Austria, Sweden and India (OpenEMR adds).

The technical aspects of OpenEMR show that it is built on open standards and open source software, with a standard software stack. It has many aspects typical of an open source project, including a vibrant community of supportive users and developers. The strengths of OpenEMR are that it is free, open source and build on a standard software stack. Other benefits are that it is portable and expandable. Limitations of OpenEMR are mainly due to its immaturity. It still needs time and resources to evolve to be an even more advanced EMR system. This will come as the development, user base and funding grows.

Works Cited About OpenEMR.

Sunset Systems. 3 Feb. 2006. <>.

Ferraiolo, David F. An Argument for the Role-Based Access Control Model. Proceedings of the sixth ACM symposium on Access control models and technologies. 3-4 May 2001:142-143.

OpenEMR adds UB-92 support. 21 Oct. 2005. Samuel Bowden, PhD. LinuxMedNews. 8 Feb. 2006. <>.

OpenEMR Summary. 5 Feb. 2006. <>.

Simon, K.D. The value of open standards and open-source software in government environments. IBM Systems Journal. Feb. 2005:227-238.

Two Clinics Choose Open Source EMR OpenEMR 5 July 2004.Walt Pennington. LinuxMedNews. 8 Feb 2006. <