Because of our business needs, we have made some modifications to the program design of openLMIS, but this has caused some conflicts after the openLMIS upgrade. Our team hopes to find a reasonable way to solve our current dilemma.
- R&R report:
- Multiple Programs(PULL process, based on the requisition), requisition supports emergency reports
- malaria program (usage report), but its’ product will be requested by Multiple Programs.
- ARV && Rapid Test (PUSH process, based on usage report)
- Usage report does not support emergency reports, but authorize and approve processes are similar to requisition
- stock management:
- Physical inventory needs to inventory all products.
- Stock management needs to manage all products.
- stock overview can be classified according to All products program, Multiple Programs, ARV Program, Rapid Test Program, and Malaria Program.
- User permissions are also used by category program for stock management and requisition.
- malaria’s virtual program is Multiple programs, but it belongs to a type shown in the stock overview and usage report
In order to classify the statistics of the real program on the stock management page, R&R page, we add the concepts of all Product and virtual programs. all product can be understood as grandpa, he contains all virtual programs. The virtual program can be understood as the parents, it contains the real program. Virtual program and all product programs will be shown in the stock overview page and usage report page.But we have a special program : malaria program is a real program which virtual program is multiple programs, but it belongs to a type shown in the stock overview and usage report .
In order to meet the above requirements, the following related fields were added to the program table in DB:
- parentId: each real program belongs to a virtual program, which is easy to summarize according to the report and stock management program types in Mozambique.
- isSupportEmergency : emergency is allowed by specific program
- isVirtual: only the virtual program is displayed in the program list of stock management && requisition.
- isReport: admin can configure template only if isReport is true , Except the virtual program can be fulfilled , malaria can also be fulfilled in the usage report which belongs to the real program.
This table is the binding relationship between the stock management and program categories in our design.
|database table||Program Category|
|physical_inventories||ALL Products porgram|
|stock_events||ALL Products porgram|
In order to upgrade smoothly, our team gets the advice of the expert team: We will build a new customization layer on the code. Designed a new design:
To make our structure clearer, we will remove the all product program. But in order to meet our needs for stock management of all products at the same time, we will wrap a new layer on top of the existing code. If it is all products, we will group products according to the virtual program and then call the original interface.
For our newly added field isReport in the program table .isReport is determines which program will be displayed in the R & R report category. We will remove it. But the Malaria program is a special real program which needs to appear in the stock manage category and requisition report type and its medicine needs to be requested in the requisition of the multi-program. We will upgrade the malaria program to a virtual program that will have one malaria real program and all virtual programs will be displayed in categories so that we don’t have to add the isreport field. In order to requests the Malaria program in multi-program, we can add extra data to the requisition template, and add the associated program in it.
Our newly added field isvirtual in the program table, we still need to add this field. In our system, we will use the virtual program, which will not cause great changes to our original system. We will use the virtual program as an openLmis real program collection, and the real program is just a sign of the virtual program. To meet Mozambique’s business requirements: first: a product can belong to multiple real programs and can only belong to one virtual program. second: the stock card will be bound to the virtual program.
Please everyone help us confirm our new design is reasonable. Or you have better suggestions, hope you can contact us.