Some venting and a plea for help

Application Name: Reference Application Version Number: 2.2

Question: Vent: I’ve been digging into OpenMRS for over a week now looking towards a potential implementation and I hardly feel any further in really understanding how it might fit our needs. Trying to understand the different versions of the platform, the state of various add-ons and OWA’s, and the “actual” core of what any of it is, continues to elude me. I’m a well-seasoned software developer with a healthy respect for what’s being done here. I love the underlying database foundation, and what appears to be a strong API. I’m confused between the reference web interface and the legacy UI, and the many add-ons/OWA’s that appear to augment it. From what I can tell, the UI with the tabs is the legacy UI and no longer supported, and the more modern looking UI (blocks for vitals, conditions, etc.) should be the current one. I’m confused at how spartan the application is. I can’t do lab orders, drug orders, treatment plan, programs, basic chief complaint, really anything beyond the most basic vitals and diagnosis code. There’s an “admin to inpatient” button that throws an exception, and no evidence of actual inpatient support (ongoing orders, nursing plan). Then I see a large number of add-ons that appear as though they might augment these basic features, but they literally never actually do what I think they will. My most recent frustration is with orderentry-1.1.0. It seems trivial to install it, and it shows up right away in the list of OWA’s. It doesn’t show up anywhere though except in the list of OWA’s. If I click it in that list, it bounces me to login. It actually logs me out. After some digging around, I learned that I need to create some global properties. I added those, but no change. After looking through the network XHR calls, I could see it was failing due to lack of a patient ID. No way to invoke it from the patient though. Then, looking through the server console, I saw it was throwing an exception on a property that wasn’t mentioned anywhere (orderentryowa.labOrderAutoExpireTimeInDays). I added that (assuming it was numeric), but it stubbornly refuses to do anything. I suppose it’s open-source so I can create an admin UI for the module so it’s clear what configuration is needed, but I’m not to that point yet in understanding the code base. I’m approaching a point where I need to make a recommendation on go or no-go with OpenMRS vs proprietary. Every feature list I see (and from reading through the very nice wiki) it seems to tick most of the boxes we want, but if I can’t make any of it actually work, I can’t offer it as an option.

Plea: I understand that it’s a project where I can’t reasonably expect free support, but if we are able to leverage it, we would almost certainly be contributing right back since we know there would be a decent amount of functionality that we would be developing for our needs that would have broader applicability. I really want to avoid the proprietary route as much as possible but I need a little help at this stage, and just asking questions on the forum isn’t enough. Is there anyone who might be willing to chat with me a little bit to discuss our needs and help me with this evaluation? It would be greatly appreciated.

I hope I don’t come across as disrespectful. I know that many people have made incredible contributions to something that’s sorely needed, especially in the developing world. I’d love to be part of making it even better.

Hi @atkulp,

Thanks for this post - it’s helpful to have you share this experience and there are many of us here that can help get you get a bit further along I hope.

First, just to acknowledge your experience - I don’t think you are alone. And unfortunately I don’t think you are missing anything obvious. As you say, there are many useful OpenMRS features that have been built - into modules, OWAs, and other artifacts - but it can be hard to see how one puts all of these together into a feature-rich application. The system is very configurable, and this steps involved in this configuration isn’t always the most clearly documented.

What I might recommend is to start off by looking at some actual distributions of OpenMRS that are maintained and used by real-world implementations or which are more intended as general-purpose, configurable EMRs.

Some examples:

  • Bahmni - this is probably the first thing I’d recommend you look at, especially if you are new to the community and trying to evaluate if OpenMRS could be a viable product for your organization.

  • Reference application-based distributions. I’d look at these if you want to have significantly more control over your distribution, have resources who can code, or strategically want to stay aligned with the OpenMRS reference application:

    • PIHEMR - code-based customization of the refapp used by multiple PIH-supported countries
    • UgandaEMR: refapp distribution for Uganda. @ssmusoke can describe further

There are many other examples. Most involve significant customization of what artifacts are installed, what metadata is included, what forms and reports are built, and how all of the features available are wired together via “app config” files.

Best, MIke


Thank you so much for your response and your understanding. I had taken a look at Bahmni, but hadn’t seen PIHEMR or UgandaEMR. It looks like are both worth looking at, though it would be easier if there was a demo site for PIH. UgangaEMR looks very functional, except seems to have no outpatient or inpatient functionality, just the specialized treatment clinics. Once I can take a look at PIH I hope I’ll have a better idea.

I think it might be helpful to do a phone chat to talk through some of our needs to help assess this. We know that OpenMRS would still require custom development and are willing to do that, and would endeavor to upstream it wherever we can. Our system has needs like:

  • Search for client by multiple criteria (including phone)
  • Register with link to government home affairs database to pull basic data and phonetic/fuzzy search to reduce duplicates (non-English pronunciation rules)
  • Basic vitals, profile edits
  • Programs: HTS, ART, PrEP, TPT, ANC, PNC, TB-DS/TB-DR
  • Index case tracking
  • Basic outpatient encounter with chief complaint, findings, diagnosis
  • Immunizations
  • Orders: Labs, drugs, radiology
  • Dispensary/prescriptions

Would you or someone else on the core team be interested/willing to discuss this with me? It will reduce the back-and-forth of messaging, though I can do that if need be.


cc @mksd @dkayiwa @wanyee

Arian, Would you also be able to tell the community what you are actually doing in greater detail? It sounds like HIV/TB and primary care/ANC. Where are you planning on working (country/context)? What is the infrastructure situation? etc.?

I know there must be a hundred different examples to look at. Are you the implementation/development support, or is it a larger organization?

For various reasons, I am unable to publicly provide specifics on country at the moment, but I will say that it is country-level, over 300 clinics. Many are connected, 50+ are currently offline (work is progressing to improve this but it’s slow). Sites are permanent structures with mostly stable power. Many connected sites have fairly slow data links at the moment (<1mbps), though that’s improving. Some NGO’s offer care through their own clinics, and we would like to improve data interoperability. I am the senior in-country developer and have been tasked with looking closer at OpenMRS.

The current EMR has been developed in-house and needs work. Clinics offer the gamut of services. Yes, HIV/TB/ANC/primary care. Also circumcision, child immunizations, family planning, and more. The current system also captures prescriptions and allows dispensing, and lab requests with sample information and results entry. On the near-term horizon is adding support for inpatient as well. This would involve standing orders, ongoing order revisions, periodic assessments, and so on. Pretty much all of it. Transfers/referrals are also supported.

I know that the foundation of OpenMRS is flexible for most, if not all, of this, but that doesn’t mean that there’s an add-on to expose it. Our decision will be largely based on the amount of custom work vs the work to bring the in-house one where it needs to be. It would take a lot of work to improve the current system, so the comparison might well be fairly even… Right now it looks like Bahmni might be the closest fit out-of-the-box. Going over more details will help solidify the decision.