Capability Questions

Application Name: Platform Version Number: N/A

Question: Hello OpenMRS community! I’m representing a team consulting a medical non-profit on implementing an EMR system, and OpenMRS jumped out as a potential fit. The organization focuses on ophthalmology and partners with various donors and the Armenian government. We’ve been researching the software but wanted to supplement our efforts with some direct feedback from the community. I’ve included some questions below, in order of priority, and would greatly appreciate any feedback:

  1. How easily can OpenMRS be translated into different languages? The implementing organization operates in Armenian, but having the ability to switch the interface into English and Russian would also be helpful.
  2. Are there any modules specific to ophthalmology? The organization has a good relationship with a local IT firm and can add functionality as needed, but knowing what’s already out there would be nice.
  3. Speaking of, how easy is it to add/change new functionality via modules? We saw the tutorial on making modules but we’re not sure what the limits are.
  4. The installation section of the wiki mentioned that the latest versions of Java and Tomcat were not supported at the time of writing. Is this still the case? If so, are there any workarounds, or how would this impact implemention?
  5. How does OpenMRS handle the use of images? The organization would like to be able to output images directly from exam room equipment (based on the capabilities of the machines themselves), as well as upload and share images manually. If this isn’t natively supported, as I suspect is the case with the machine interface, we would like to be able to add this via a module, if the architecture allows it.
  6. The Armenian government is (slowly) working on implementing a national records system, and if the organization we’re consulting for adopts OpenMRS it would like to at least be able to output data to the national system. The wiki mentions Mirth as a way to communicate between different EMRs, but we’re unfamiliar with it or its implications. Is this interaction possible, and if so, how would we go about implementing it?
  7. Can OpenMRS cache locally, so providers can continue to input data if the internet goes out?
  8. A possible solution to #7 we’ve been exploring is the use of local child servers at each of the organization’s facilities. The Sync module looks particularly promising, but we’d like to know if there’s anything else we should take into account that isn’t mentioned on the Sync wiki.
  9. What sort of statistical analysis tools are available for OpenMRS, either natively or in a module? The organization would like to track it’s impact by analyzing patient locations, demographics, etc.
  10. Does OpenMRS have or support a patient portal, so individual patients can log in and access their own (but only their own) records and notes? How much of a burden does/would this place on servers (i.e. more, less, or about the same as a provider accessing and entering data)?

Because we are on a timeline, we would appreciate any responses by June 14th or earlier so we can either continue to investigate OpenMRS as an option or if we need to look elsewhere. Any help, feedback, or general insights from the community would go a long way to help us and the organization we’re working with.



Hi Alex,

I can answer a few of the questions:

We use transifex for translations. Translating to Armenian should be straightforward as long as you’re able to use unicode encoded characters (UTF-8).

I’m not able to answer this question.

There are a couple answers to this. The core system is built on Java. The UI is built with Angular, CSS and HTML (for the legacy UI). We separated the REST API from the user interface about two years ago and added feature called Open Web Apps that allows you to easily build, package and deploy a user interface against the OpenMRS Platform REST API.

If you have experienced Java developers you can add any module and feature that you want. In my experience it takes 6 to 12 months for an experienced Java developer to be fully proficient in developing on the platform.

We have OpenMRS currently running on Tomcat 7 and Java 8 (Oracle or OpenJDK). I think some implementations are working on upgrading to Tomcat 8, but our team hasn’t done it yet.

Partners in Health and Bahmni have a PACS integration module and Radiology module that use the DCM4CHEE standard to exchange images with radiology equipment. Manual upload would need to be added as a widget within a form, but the development effort on this shouldn’t be large.

A number of implementations are actively working on this. We are developing a core integration with OpenHIE that uses HL7 standards using the IHE PIX and PDQ profiles to exchange patient demographic information. We’re also working on exchanging HL7 v2 CDA documents. These conversations are ongoing in the design forum and we’ll update the wiki documentation as the feature decisions are being made.

We don’t currently have the capability to enter data offline and store it in a cloud instance of OpenMRS. The current model is to have a local server installed within the clinic or hospital and have that system interact with a centralized server or Health Information Exchange.

I’m not familiar with statistical analysis tool connections. However, OpenMRS uses SQL databases (MySQL, PostGRES and H2). I should also suggest that you will want to consider an ETL process to flatten the data for reporting and statistical analysis because the majority of data id stored as observations for quick clinic retrieval. ETL processes are often implementation specific, but there is work out there that uses Pentaho’s Kettle and native SQL scripts to perform the ETL.

I’m not able to answer this question.

More generally, I suggest that you consider the various implementation contexts within the health system. Does opthalmology happen mostly in major hospitals, clinics or eye care shops? Where will the system need to be accessed and what is the deployment environment for each area? My work has focused on delivering different experiences to these different deployment contexts. For example, a major hospital may need to interoperate with multiple departments, tracking inpatients and surgeries but a field clinic may only need to fill forms and refer them to a hospital.

I would also suggest considering whether a particular distribution of OpenMRS is appropriate as a starting point and if you would like to build your own distribution.


1 Like

Hello Craig,

Thank you for your quick response. Regarding parent/child servers, we’ve actually been leaning toward just such a server model, with satellite locations having smaller servers to meet their localized needs and synchronizing with a more powerful centralized server. We’re primarily considering this as a redundancy in case of a localized internet or power outage, but this raised the issue of whether or not OpenMRS can access even a local server via LAN or Ethernet when there is no internet to load a browser window. Any workarounds you know of?

Some background, for context: as previously mentioned, the organization in question operates primarily in Armenia, with physicians sometimes consulting from the United States, Australia, and Europe. Electricity​ and internet are relatively reliable, although up/down speeds leave much to be desired. Local IT support is excellent, and the organization has a good relationship with a nearby IT firm. The main office is in the capital city of Yerevan, together with a primary medical presence at a dedicated eye hospital and six sub-specialty clinics around the city. There are also two rural centers embedded in local hospitals, with plans for three more elsewhere in the country. These are typically staffed by a single ophthalmologist and two or three nurses, so only one or two simultaneous EMR users at each of these. Lastly, there is a mobile unit that travels around the country, and while reliable internet may not be available they currently use paper records at all facilities so the mobile team can continue to use those and upload them periodically as internet access becomes available (I believe this method is currently used by at least a couple OpenMRS implementers in Africa, according to the wiki).

Thank you again for your time, it’s much appreciated.


One more very important question that I somehow forgot to mention: security.

Does OpenMRS natively include patient data encryption and other security features? If so, is it on par with Meaningful Use Stage 2 and/or HIPAA, or does security need to be addressed via add-ons (and do these already exist or is this effort typically implementer-specific)?



Hi @amlemmon ,

As you can imagine, you have asked many questions, it would be almost worth organising a call with various members of the community to get all the input you are requesting.

First of all OpenMRS is not a final product but a toolkit upon which OpenMRS-based products (distributions) are built. Therefore depending on the distribution (‘product’) that we are talking about items on your list may or may not be covered. In particular the UI may change a lot across distributions and allow different things. I would say that OpenMRS is very rich and allows a lot, but this doesn’t mean that there is a distribution out there that necessarily enables what OpenMRS allows. Or at least there is not one distribution that enables all of what the overall OpenMRS code base allows.

Anyhow, I will quickly provide answers to specific items that are currently on our plate and hence fresh on my mind.

There is definitely a difference between localising OpenMRS in a certain language and making it switchable across several languages. I would say that the former is a given, the latter is a lot more challenging. We are currently working on a project that requires OpenMRS/Bahmni to run both in Khmer and in English and we have achieved a complete switch but there are some caveats. Additional complications come from mixing languages using Roman and non-Roman alphabets (such as English and Russian).

In our experience as service providers and implementors of OpenMRS I would say that there is not any limits to leveraging modules. At least we never faced any limitations worth mentioning or that have become blockers in any way. The OpenMRS Core devs made a very good job at modularising the platform. However modularity brings another level of complexity that would not have existed with a single common code base, that had to be the trade off. Every module starts by depending on OpenMRS Core’s API. If you encounter a bug or a missing feature in there then you will have to work on the Core itself (or on any of the core Platform modules), which is not a problem, all of this is still open-source and open for collaborative work, of course, as it is anyway the case for all OpenMRS community projects.

We have developed Visit Documents UI for the Reference Application. It was designed to be extendable in many ways, but your exact use case should be discussed in details to understand how to get there.

This is the vast subject of national HIS, HIE and shareable & interoperable patient records. You may also be interested in OpenHIE.

Client-side caching will depend on the client UI being leveraged on. There is an Android app that acts a UI client for the Reference Application that - I believe - intends to do just that. In Bahmni, Bahmni Connect allows this to a certain extent (look at this thread of example). I would say: there is a reasonable coverage for offline features.

There is of course the reporting module, but you may be interested in this thread: ‘Evaluating Kibana for reporting and visualization’.

I think the answer is no. You may be interested in this thread specific to Bahmni: ‘Adding a patient portal’.

This is might be of interest: ‘Sync 2.0 Planning’.