I’m wondering if there’s any module, which supports saving user-related data in the same Encounter-Obs fashion as for the patients?
For example, if a project wants users to fill a daily summary of their work like patients visited, number of specimen samples collected, and number of radiology tests ordered, etc. one way is to conform with the patient data, but what if the project isn’t saving specific data in patient records? In that case, we’ll have to store these observations as User-obs instead of Patient-obs.
There could be numerous cases like these. We have had to develop a separate service for multiple projects in Pakistan due to lack of this feature in OpenMRS.
If someone is working on anything like it, then we’d be willing to contribute. Alternatively, we can start developing a module to support this scenario.
Yes. Let’s just say a program has a user role “Monitor”. The job of this user is to visit health facilities and measure the flow of patients, so that the program can decide whether or not to integrate this facility in their program. He would usually collect the following data from facility staff in his notes:
Facility name
Name of general physician
No. of walk-ins in a day
No. of active in-patients
Has a chest ward
Performs radiology tests
GPS coordinates of the facility, etc.
This data has no direct relationship with the patients themselves. I know a lot of the above can be saved as a combo of location and location attributes, but it is not practical to push every facility in OpenMRS, and also every question as location attribute.
We (IntelliSOFT) might be interested in discussing more with you about this. We just got some work to build an electronic tool to support Quality Management (QM) and processes based on an existing quality model which focuses on assessment of facilities and collects data almost similar to what you’ve listed. Some of the facilities are already using OpenMRS (KenyaEMR mainly) and we are in design stage thinking of how to leverage existing digital health solution investments.
Can I get access to the work that you have already done? I suppose a custom module that will extent/implement functionality of HFE(given that we will be using that for saving encounters and obs, so custom tags will be needed) having a additional tables that will store such information will suffice, other than adding those to HFE. It is subject to discussion though! But many implementations I have seen, they save those as patient obs/ person attributes, I agree with you 100%, that there would be a need to separate those. Let connect next week for discussion
Also, note that although encounters link to Patients, obs link to Persons, so it is possible currently to at least link an Obs to User via their Patient record (though I don’t know if this would really be the “right” way to do what you are trying to accomplish).
Thanks Mark. I’ll look into the Facility module.
The idea to link Obs to people is also something to look into. Although it’ll be another overhead to already data intense Obs table, so won’t it be good idea to separate the users’ observations?
Yes, I’m thinking in the same direction. I’ve created a new module in private repo, but haven’t done anything yet worth sharing. I have an abstract design though. We can discuss next week. Please suggest a suitable time (GMT)…
Yeah, my gut is that Obs isn’t the right thing for this use case, but I haven’t thought it through fully so wanted to put it out their as a possibility.
Let me make a suggestion wearing my software architect hat: you should consider capturing this data outside of OpenMRS, e.g. using ODK or ONA or some equivalent. Then you can merge the data together later on as-needed.
(Basically, think of OpenMRS as your microservice that you use to store all patient-related data, and then you’d use a survey data collection tool for what’s effectively survey data.)
Thanks for the suggestion Darius. Microservice architecture would be the preferred way to go in this scenario. My concern is about reusing the existing metadata. What if the same users, providers, concepts, etc. are being reused to fill this data? Importing them into a separate DB, and keeping them in sync is another pain. This is exactly what we tried here in one of our projects and it’s causing a major overhead.
@maimoonak You spoke about some cohort module in OpenSRP, which does something similar. Some feedback here would be great.