Dear all – let’s speak about O3 packages
The concept of O3 care or functional packages has been touched upon in our discussions before, perhaps a bit prematurely in regards to what our tech stack was allowing then. However, I believe now is a good time to revisit this conversation with fresh perspectives and more defined needs.
I’d like to use this thread to dive deeper into what we all envision when discussing “O3 packages”, “content packages” or “content templates”. These terms seem to resonate with many within our community, and it’s crucial we unpack what they mean to each of us.
As an example I’ll try to give a summary of what this would mean for an OpenMRS service provider like @Mekom. I would hope to hear the same from you all.
At Mekom, we assemble distributions for the projects we support, focusing on sustainable maintenance of these systems. Our goal is to avoid forking any software. Instead, we rely on officially released components to create our software suites. This approach ensures that the responsibility for the release lifecycle of these components does not fall on us, allowing us to concentrate on integration and support (rather than mitigating the negative impact of tech debt).
In OpenMRS, traditionally, this involved creating so-called (Maven) distros that depended on released OMODs. With the introduction of O3, the approach has evolved to assembling distros that incorporate both released ESMs and released OMODs. These O3 distros consist of:
- OMODs
- and a backend config
- ESMs
- and a frontend config
It’s important to note that the backend configuration also includes forms and concepts, so the medical questionnaires and their associated clinical terminology.
This approach is fine, but quite granular in the way we pick and choose what goes into a distro. There may be an opportunity to bundle these elements more effectively to maximize impact and improve maintainability. Now that we have fully embraced configuration over customization (the latter essentially equates to forking) perhaps can we focus on creating impactful binaries & configuration bundles.? These could then be shared across different groups and countries.
Sample use-case: If we look at our work in Cambodia within the NCD space, it would have been beneficial to segregate all NCD-specific elements into a comprehensive package for the Cambodia distribution to depend on it. Such segregation not only clarifies the distribution from an implementer’s perspective when examining the distro manifest (the POM file), but it also allows for the NCD package to be decoupled from the Cambodia national distro. This decoupling could facilitate its reuse in other regions, enhancing overall utility and impact.
Having said all this as a way of an introduction into the subject, what’s your view on what those bundles could be, and how would you make use of them?
Cc @AMPATH @Brown @METS @Mekom @OpenMRSInc @PalladiumKenya @PIH @Sonder @UCSF @UWash