← Back

Tamanu EMR
Scheduling

Replacing complex paper-based appointment systems in low-resource hospitals with a flexible unified UI

Tamanu scheduling interface

Case study overview

How I redesigned an underperforming MVP scheduling feature into an intuitive system that handles three fundamentally different scheduling needs under one unified umbrella.

Deliverables

  • Design research
  • Low fidelity wireframes
  • High fidelity mockup
  • Prototypes & user flows
  • User testing & iteration

Role

Product Designer

Timeframe

8 weeks

Team

  • Product Owner x 1
  • Engineers x 3
  • Testers x 2

Status

Shipped

Context & Challenges

Tamanu is an open-source Electronic Medical Record system deployed across hospitals and clinics in remote and low-income countries. It handles patient health records, admissions, labs, imaging, medications, and more. Scheduling was identified as a gap in the current feature set.

In these settings, clinical appointments and theatre bookings are still largely paper-based. Patient appointments are managed with handwritten ticket systems, wall calendars, and physical logbooks. Some facilities had adopted Tamanu's existing MVP scheduling feature, but adoption was low as the feature was clunky, overly simple, and missed critical workflows.

The overarching main challenge was that the system needed to handle multiple competing appointment types for the varying needs of different clinics and hospitals. Those included:

1. Facility scheduling needs differ greatly between entities.

Facilities had different scheduling needs for clinics, clinicians, and specific physical locations such as beds in wards or operating theatres. For example, a clinic could have overlapping appointment times, but a theatre bed could not.

2. The feature needed to handle more than two axes of information.

For outpatient appointments, the ability to view appointments across multiple clinics or clinicians for the day was necessary. For location bookings, there was a need to view multiple locations across multiple days for planning purposes, but also see granular location details for operational purposes.

3. Clinical staff need flexibility, speed and clarity all at once.

A receptionist managing a waiting room needs to glance at a screen and immediately know who's here, who's next and who hasn't arrived. Staff managing location bookings need to move appointments around quickly without accidentally double-booking.

The fundamental question: How do you design a scheduling system flexible enough to handle more than two axes of information, across fundamentally different booking types, while being simple enough that a receptionist in a busy facility can quickly access the information she needs?

Research & Discovery

Learning from the MVP's Failure

The most valuable research asset was the existing MVP. I audited the feature against real clinical workflows and noted the friction points. Things that came up included missing actions e.g no way to admit a patient directly from an appointment, no visual language e.g no status colours, and it only handled clinician/area views without the additional complex needs of the facility.

Competitive & Cross-Industry Analysis

I studied scheduling across three categories the solved analogous problems with tested patterns:

  • Booking systems: How other booking-specific systems handle scheduling to understand conventions and avoid reinventing patterns.
  • Digital calendars: Google Calendar, Outlook, Calendly for date picking, multi-axis views, and booking flows.
  • Project management tools: Trello, Linear, Asana for status colours, kanban-style views, and drag-and-drop reordering.

Digital calendars had proven patterns for axis views and booking flows. Project management tools handled drag-and-drop and colour-coded status tracking.

Understanding the Workflow Variations

Through conversations with clinical staff across multiple deployment sites, I mapped two distinct scheduling categories that needed to independently coexist within the one feature:

  • Outpatient appointments: Handles outpatient appointments in clinic settings such as eye appointments or general check-ups. A single receptionist managing appointments across multiple clinics and clinicians needs to view the day's appointments grouped by either area or clinician.
  • Location bookings: Handles more granular booking needs such as beds in wards or operating theatres. Staff need two distinct views: a daily view for operations, showing a single location's availability schedule (with drag-and-drop reordering as patient priority shifts), and a weekly view for planning, showing multiple locations' availability across days.

The critical insight was that these two categories required fundamentally different axes, yet needed to live under the same scheduling umbrella.

Outpatient Appointments

Outpatient appointments wireframe showing clinic and clinician views Outpatient appointments wireframe showing clinic and clinician views

Location Bookings

Location bookings wireframe showing weekly and daily views Location bookings wireframe showing weekly and daily views

Design Principles

Must be faster than paper

If any common task takes more steps digitally than it did on paper, the design has failed.

Show the current state of the clinic.

The schedule should communicate the live situation at a glance. Who's waiting, who's been seen, how full the day is.

Treat all key workflows equally.

Outpatient appointments and location bookings must coexist without context-switching or configuration.

Appointments should have gateways.

From any appointment, users should be able to view the patient record, admit the patient, reschedule, cancel, or change the status of the appointment.

Exploration & Design

The challenge was to bridge three fundamentally different scheduling views with a visual language that made it feel like a single unified system.

Status Colours & Icons

A colour-coded status system that applies consistently across every scheduling view.

Staff can scan any view and instantly read the situation. These status colours, applied identically across outpatient appointments, daily location bookings, and weekly location bookings make the whole feature feel unified despite the different view structures.

Appointment Details

Clicking an appointment tile displays an appointment detail card with appointment information. Here the user can continue on with linked or parallel workflows. They can change the status of the appointment, visit the patient record, modify, cancel, create a new appointment for that patient, email the appointment, and start an inpatient or outpatient encounter. These actions create handy gateways for the user reducing clicks and cognitive load.

Outpatient Appointments

The solution that worked best was a column-based list as appointment length, overlaps and end times were less of an issue than understanding the live situation - who's been seen, who's waiting to be seen and who are we still expecting to see.

Each column represents a clinic/area or a clinician, showing that entity's appointments in a clear, colour-coded scannable list. Iconography was used to support the colour component and adhere to accessibility standards. A toggle allows the user to flip between Area or Clinician views while still viewing the same data. A persistent date picker with scrollable month rows makes jumping between days easy.

Outpatient Appointments view showing clinic columns with colour-coded appointments

Location Bookings

Location bookings differed from outpatient appointments in that it needed two very distinct views within it.

Daily View

The daily view needed to handle a visually clear depiction of who was booked in each location and for how long with the flexibility to move bookings to different timeslots while automatically taking into account other bookings so as to not double book a location. Drag-and-drop lets staff make these changes quickly while also reordering later bookings to accommodate.

Location bookings daily view with drag-and-drop scheduling

Weekly View

The weekly view is used for longer term planning of location bookings. Staff need to see availability across multiple days and multiple locations simultaneously as these users are managing a multitude of locations at once. This view utilises the single click to book functionality where users can click a cell to pre-fill the booking drawer.

Location bookings weekly view showing availability across days

Results & Impact

Project Outcomes

  • Clinical staff reported the scheduling view gave them a better real-time picture of clinic activity than paper
  • Receptionists highlighted the benefits of the drag and drop reordering for quick on-the-go location management
  • Facilities have utilised both outpatient bookings and location bookings rather than favouring one or the other proving the original user need thesis translated into the real world

Reflection & Learnings

Notable Achievements

  • Solving the multi-axis problem fitting outpatient appointments and location bookings (with two sub-views) into one coherent feature.
  • Including flow-on actions keeping users seamlessly within their natural workflows.
  • Turning an incredibly complex feature into an easy tool clinics actually want to use.

Key Learnings

This project taught me how to be dynamic in my design process and systematically work through multiple competing workflows. Being able to create an interface where one requirement explicitly contradicts another was incredibly rewarding and made me realise that there is always a solution to the problem.

← Back