Module to collect data from user-related forms

Hi all,

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.

Just to get a broader understanding of the problem, is there any reason why the project isn’t saving this specific data in patient records?

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:

  1. Facility name
  2. Name of general physician
  3. No. of walk-ins in a day
  4. No. of active in-patients
  5. Has a chest ward
  6. Performs radiology tests
  7. 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.

We’ll ping you after we think more through this.


Let’s team up on this. Can we talk sometime next week?

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

One thing to perhaps look into would be the Facility Data Module:

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).

Take care, Mark

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?

Hi Nicholas,

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.

Take care, Mark

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.)

1 Like

Say 4pm to 5pm(EAT) on Wednesday this week?

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.

This would be 6:00pm to 7:00pm in Pakistan. Works for me. Let’s Skype on Wednesday: owais.a.hussain