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

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


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)