Scheduling plugin for Capture app

Hi everyone,

I’ve noticed a difference between Capture (web) and Android. On Android, after completing a visit (event), users get a pop-up asking them to schedule the next visit. This comes from the option “Display generate event box when completed” when the program stage is repeatable.

In Capture, this doesn’t happen.

Since scheduling the next visit is really important for programs like NCD, ANC, etc. (especially for tracking overdue patients), I built a small plugin that lets users schedule the next visit directly within the visit form.

Right now, in Capture, users have to complete the event, go back to the enrollment dashboard, and then click to schedule the next visit. It’s a bit clunky and easy to forget.

This plugin also uses a program rule to require scheduling the next visit before completing the event.

We’ve been using it for some time, so I thought I’d share it here in case it’s useful for others.

Hi @msilva

Thank you for sharing this with the community! It’s great that the plugin is working. I’ve triaged your topic to the tracker team as well. :+1:

Thank you so much for sharing example plugins with the community! :raising_hands: This one looks great and could be helpful to enforce strict scheduling before actually completing the event.

I do want to follow up on what you said with Capture web and Android behavior differing - there are actually two “legacy” options (In Maintenance) for generating a new event after completing the previous one. There is the one you mention, “Display generate event box when completed”, but also the option “Ask user to create new event when stage is complete”. In Android, both options map to the same behavior, but in web the first option has no effect, as you said. There is this JIRA issue to remove that option completely, and in the new Metadata Management app there is only the “Ask user to create a new event after completion” option.

So if you enable that option, you will get a modal about whether to create a new event, and then taken to the page which you can choose in which stage, and then you will be taken to the new event. (Note - it currently lands on the “Report” tab, but we plan to change this to the “Schedule” tab to align with Android behavior, ref Jira

Here is a video to show the workflow too.

Let me know if I have misunderstood anything!

Hi Karo!!

Thanks for the explanation and the video.

I tried all the available options, but unfortunately the approach of asking users to create a new event is still not sufficient, even if they can technically click on “Schedule.” First, the popup does not really guide users toward the intended action, which is scheduling a new appointment. Second, users would need specific training to understand that they should click on “Schedule,” ignore the form presented to them, and proceed with the scheduling flow. Overall, it does not feel intuitive from a user perspective.

To address this, we completely redesigned the enrollment dashboard and added a patient dashboard to make the workflow simpler and more intuitive for users.

Another major issue in Capture is that once a visit has been scheduled, users must manually locate the scheduled event and open it in order to enter the next visit against the due date, which is critical for calculating overdue indicators. If they do not do this correctly, the scheduled event remains incomplete indefinitely, and the patient continues to appear as overdue in the system forever.


However, users tend to click on the buttons which will make them create new visits.

Our patient dashboard looks like this:


Now there is a clear button for users where it clearly says “Start Scheduled Visit”. Also, they have a button next to the appointment where they can reschedule everything in 2 clicks:


If for any reason, nothing has been scheduled, you can schedule a visit in the same place:

Users need to be able to do basic actions like the ones described, without needing to be taken to an entirely new form or screen. This is confusing. At present if you want to change a current scheduled visit, you need to click on the scheduled visit (not obvious), click on Scheduled tab, modify the date, click on Save. Too many clicks, time waiting for the page to load, etc… With the design we are using it is clear the concept of starting a scheduled visit VS one that is not scheduled and all possible actions happen in the same place (Quick actions is not easy to find and its position not linked to the history of visits).