O3 Appointment Management

 

Summary of the Problem

  • Centres using OpenMRS need a way to manage appointments: to organize what appointments are available, who is serving at that time, who is coming, and to help monitor & optimize care consistency.

  • Appointments need to go beyond just "date & time" - need to optimize for things like: Group Appointments, Patient Notifications/Messaging, Prevent Over-booking, and prevent forcing patients (eg Mom/Child) to travel far when everything could be done in 1 day (eg Drug Pickup + Next Clinical Checkup). 

 

Links to Know

  • Key Contacts: @Lousa Sheenaz Yogo UX Lead (Palladium-Kenya) & @Cynthia Kamau Technical Lead (Palladium-Kenya)

  • Communication: Slack channel, #appointments (most discussion and updates are happening in slack; related posts in the separate OpenMRS Talk forum are tagged appointments)

  • Designs: described here

  • Code: frontend: github.com/openmrs/openmrs-esm-patient-management/tree/main/packages/esm-appointments-app (note the ____ module has also been adapted here to support necessary endpoints)

  •  Timeline: Needed for real-world use by end of Sept in KenyaEMR. 

 

In this page: 

In this wiki:

Sample Visual

 

Use Cases

How do we expect Appointments to be used?

Kick-off Pitch Video from April 2022:

General Plan

Adopt Bahmni Appointments into 3.x as a micro-frontended, carbonized application. The appointments backend for version 1.4.0 of the Bahmni Appointments module has no Bahmni-specific dependencies anymore. The frontend part isn’t part of the dev3 build and it may have Bahmni-specific dependencies.

 

Why Bahmni Appointments

  • It's easy to integrate - it's a separate (React) web app also running on the OpenMRS backend. This means that with O3 one needs to run two frontends on the same backend (this is done with Nginx typically):

  •  

    • Frontend 1: O3

    • Frontend 2: Bahmni Appointments

    • Backend: OpenMRS

  • It's a bridge with the Bahmni Coalition. A way to come together with Bahmni.

  • It is the OpenMRS appointments app of MSF-OCP and ICRC, and will remain as such, so that also increases the chance of ongoing maintenance. 

  • Iniz already provides support for some of its metadata.

  • It has been tested and used in the real-world and it does the job (and it is in production virtually on all Bahmni impls out there that are recent enough to have it).

Appointment Solution Comparison Across Existing EMRs

See sub page: https://openmrs.atlassian.net/wiki/x/9D9UAQ

Other Reference Resources

Questions

Is it clear for us how each of these should appear in 3.x UI/how they should be "carbonized"? https://bahmni.atlassian.net/wiki/spaces/BAH/pages/32604198/Appointment+Scheduling 
We will need ability to book appointment for a day OR a time. Bahmni currently forces a time be picked. 
 

 

Why isn't Bahmni Appointment module working on spa?

Adding it triggered crash of Admin page:

Archive of Requirements Brainstorming

Pieces of Appointments: 

  • Book an Appointment

    • Outside of Patient Chart (e.g. Via a General Schedule interface)

    • Inside Patient Chart: “Add Appointment” via Appointment page

    • Inside Patient Chart: In Form workflow, set next appointment date (and see any clashing appointments)

    • By Patient themselves (out of scope)

      • Support for just date OR date and time

      • Support for no provider OR specific provider

    • Handle walk-ins or folks who come before or after their scheduled date

  • See Booked Appointments: Daily View, Weekly View, Monthly View

    • Outside of Patient Chart: Filter by Location, by Provider

    • Inside Patient Chart: Appointments widget

  • Find and Change a Booked Appointment (e.g. change date, time, provider…)

    • Outside of Patient Chart: General Schedule interface → Edit individual item

    • Inside Patient Chart: Appointments widget → Edit individual item

  • Settings & Config (Admin-facing)