Scheduling Appointments

Hi there! I am a graduate student working on a consulting team with a client to produce an mHealth application to support the appointment-making workflow of reproductive health care workers in Guatemala.

Here's a summary of the workflow we are trying to support:

Step 1: Nursing Supervisors call health facilities at the beginning of each month to figure out which facilities have availability for different procedures. This appointment availability changes every month and will vary based on the needs of the health facility and the demand for appointments by patients.

Step 2: The client hopes the Nursing Supervisors will be able to enter this information about appointment availability into CommCare into a form.

Step 3: The client hopes that nurses and other health workers can use a separate form to schedule appointments based on what the Nursing Supervisors decided. (i.e A nurse opens a "registration form" to schedule a patient's appointment, but the nurse will only see the days that the Nursing Supervisor decided should be available.) The client hopes that when a nurse opens the app to schedule an appointment, she would be able to see (based on the Nursing Supervisor's entry in the previous form) how many appointments are still available at the health site. After a nurse selects the health site, the app would say "there are 4 timeslots left at this regional hospital" based not only on what the Nursing Supervisors decided was available, but also what other users are entering into the app in terms of appointments.

Can anyone think of a feature that would support this workflow? Our team has been brainstorming how we can use Case Management, Lookup Tables, or Child Cases to support this workflow, but it is becoming very complicated.

Any advice would be sincerely appreciated! Thanks in advance.

Hi Cassidy,

It definitely seems like there could be a lot of complexity around how you could build this interaction into CommCare.

The most straightforward data model I can think of would consist of a case for each health facility, which contains child cases representing an appointment slot (be it filled or not).

At the beginning of the month, the supervisors would create an appointment slot for each potential time for each facility using a form which contains a repeat for each potential appointment time.

When scheduling appointments, a user can choose a facility first to filter, then see a list of appointment slots in the cases list, with occupied slots filtered out. The form can then set the visit to be occupied, which will filter it out for future selections.

You can use an auto-case-close rule:

https://confluence.dimagi.com/display/commcarepublic/Automatically+Close+Cases

To then "clear out" any unused (or now irrelevant) appointment slots (filled or not filled) on the first day of the next month, to ensure that the data is up to date.

-Clayton