← All work

Continuity Buddy

A free tool that helps GP practices find the most suitable usual GP for each patient and plan reciprocal swaps between lists. The data comes out of EMIS and stays on the practice computer.

Year
2026
Role
Designer, developer
Scope
UX/UI, front end, data logic
Status
Live, free
Continuity results for two fictional GPs: headline continuity figures, a suggested exchange partner and a list of reciprocal swaps for review

Overview

I felt the frustration that patients expressed when they had to repeat their story over and over again. I noticed that some patients that were allocated to me as their usual GP were repeatedly seeing other clinicians, and vice versa, I was frequently following up patients who weren't on my allocated list.

I set up EMIS searches which confirmed that of the 600 patients allocated to me, I had only met around half.

Continuity Buddy takes an appointments export from EMIS, works out which GP each patient saw most often, and suggests reciprocal swaps that keep each GP's list the same size. All of it runs in the browser on the practice computer, and patient data is never sent to a server.

It is part of the RALPH family of free tools, alongside the GP Appraisal Buddy and the GPST Timetable Buddy. Try it live with the built-in fictional data.

Process

1. Getting the data out of EMIS

The first version asked for three EMIS searches per GP (current list, seen 4+ times, not seen) and a CSV of EMIS numbers for each. It was simple, but a practice with ten GPs would need around 30 exports. It also couldn't tell who a patient saw most: knowing they saw one doctor four or more times says nothing about whether another doctor saw them even more often.

The current version uses Dr Neil Paul's prebuilt EMIS searches, credited in the tool. They produce a single practice-wide export of attended appointments, so the tool can count every patient's consultations with every GP. A patient on Dr A's list who saw Dr B six times and Dr A never is a clear candidate. A patient who saw three doctors three or four times each is ambiguous, and the tool leaves them alone. The tool walks you through importing the search, running it and exporting the CSV, step by step.

Continuity Buddy start screen with the privacy notice, a link to the offline version and the EMIS import steps
The start screen. The privacy notice and the offline version come before anything else.

2. An import that fails closed

The importer only accepts the handful of columns the analysis needs: patient identifier, usual GP, date, clinician and appointment type or status. Anything else, including demographic or clinical columns added by accident, rejects the whole file. Before analysing, you also confirm that it is the approved export with nothing extra in it.

3. Checking the clinicians first

Raw appointment data is messy. Booking and admin accounts show up as clinicians, registrars and locums see patients without holding a list, and some doctors have left. So before any results, there is a short review step: mark each clinician's status, merge duplicate names and set the confidence thresholds.

Clinician review table with status and merge options for two fictional GPs, and the confidence thresholds
Clinician review, with the minimum consultations and confidence thresholds below. Fictional data.

4. From continuity figures to swaps

The results open with practice-wide figures: frequent attenders, how often the recorded usual GP matches the most-seen GP, the usual provider continuity (UPC) score, and SLICC based on the RCGP personal lists guide. Below that, "Who should I exchange patients with?" ranks the other GPs by how many patients could move both ways.

Reciprocal swaps pair one patient leaving a list with one joining it, so list sizes stay balanced. Each pair gets a review decision, and the export only includes rows marked as approved. Every suggestion is framed as a proposal, because the data can't show patient preference or clinical complexity.

Per-GP continuity breakdown and individual reallocation suggestions with visit counts, share and confidence, fictional data
Per-GP breakdown and individual suggestions, each with a confidence level. Fictional data.

5. Privacy by design

Patient identifiers are still personal data, so the tool is built so that it can't send them anywhere. Its content security policy blocks every network connection from the page, and it uses no cookies, browser storage, analytics or third-party scripts. The CSV is read inside the tab and disappears when the tab closes. For real data, there is a standalone offline HTML version to save to an approved NHS location and open without an internet connection.

6. Building it

Plain JavaScript modules with no dependencies or build step, about 350 lines across the analysis engine, the import checks and the interface. The analysis logic is kept separate from the interface, so the same code powers both the hosted and the offline versions. A fictional demo data set lets anyone try the full flow without patient data.

Impact

0network requests from the page
0dependencies or third-party scripts
Freelive for any EMIS practice, no sign-in

The tool tracks nothing about its users, by design, so there are no usage numbers yet. The EMIS searches still need validating against more practices' setups.

Developed by Dr Miriam Carone, part of RALPH.