(I am hoping that @burke is in this list)
We had a busy call. I wanted to talk about a few things related to what should OpenMRS as a platform focus on next.
While I do understand that moving up the technical stack and providing more above the layer of REST API seems one possible thing platform could do. e.g. Providing reusable web components which can be used by different front end applications developed by different products. I do not like this idea for couple of reasons:
- It starts to bleed into objective 2 (reference application). I know the distinction between platform providing reusable components and reference application being a complete application; but it does feel like duplicating work. Even if we go this route objective 2 team would be more suited to develop reusable web components rather than objective 1.
- While reusable web components in theory sounds like a good idea, lets look around, has this been done successfully by many people? UI and reusability has not gone well together in general in the industry.
Instead I believe that we have unfinished business below the API layer, on the server side in OpenMRS. I strongly feel we should focus on that and improve our offering there. Concretely I have following in my mind. (I am keeping in mind our goal of “being a individual’s medical record system” - paraphrasing what I think Burke mentioned in the call too)
Scalability - I feel OpenMRS should cater to much bigger volumes of data that just for a single hospital. It should almost be horizontally scaleable by adding more hardware. Even for the volumes that it manages, the reporting runs much slower than we would expect in 2016. This would help create new kinds of work done on top of OpenMRS. (Technical I think we have a small problem in this area. This boils down to Obs table. While this was the appropriate way of solving the schema less problem, today we have better options, even in traditional databases like Postgres with JSONB support. Don’t want to do in much detail here.)
Support multi-tenancy (hope this is obvious)
Allow more than one application server in front of the database at a time in production.
We should perhaps provide more types in the core domain than we do today. e.g. We should have diagnosis as an entity in the system; we should support referrals better; lab results, etc. To me it feels like FHIR has more types than OpenMRS. Without these types we are dependent on different implementations layering their own schema on top of Obs table. Obs has become a platform.
We perhaps should also provide good user interface for managing the master data in OpenMRS as part of the platform as a product.
We can perhaps look at some of the backend contrib modules which are used quite frequently and should include them in platform add-on distribution.
We should provide better support for infrastructure tools that is showing up in the industry like docker.