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.
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.
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.
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
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.
