Program Data Requirements

For OpenLMIS, there is a certain need to collect programmatic data during the requisition process (and possibly other processes); this is called "program data". In order for OpenLMIS to support program data, several requirements need to be fulfilled:

Ideal Solution and MVP

For implementing Program Data in OpenLMIS, there is a difference between an ideal solution and a minimum-viable product (MVP). An ideal solution would fulfill all of the above requirements and:


However, the ideal solution will take multiple iterations to accomplish, and the first iteration should focus on an MVP. This would fulfill the requirements in the previous section and:

MVP Proposal with DHIS2

DHIS2 has features to facilitate both form design and data capture. Forms can be designed through the Tracker web app, or form metadata can be imported through the APIs. Data can be collected using the robust Data Entry web app (and potentially others in the DHIS2 ecosystem), which has some offline support. A user, as part of their requisitioning process, could enter programmatic data into DHIS2. As part of the same requisitioning process, that user uses OpenLMIS to perform the requisition. In order for OpenLMIS not to complete the requisition unless the dependent program data has been completed, OpenLMIS needs to query DHIS2 to check for completeness.

Therefore, an MVP for Program Data with OpenLMIS and DHIS2, would require creating a new Program Data microservice. It would look as such:

A diagram with the interactions:

Component Diagram for the Program Data Microservice:


A look at how this proposal fulfills the Program Data requirements:

Post-MVP Iterations

Future iterations would satisfy more of the requirements in the ideal solution. In particular,