Who do your patients actually see? A free continuity tool for GP practices
Drafted with Claude, the AI assistant that helped build the tool — edits and comments welcome to .
Every GP practice has a Usual GP field in EMIS. Almost every practice knows, deep down, that it’s wrong for a lot of patients. It matters more than it used to: continuity of care is associated with lower mortality, fewer admissions and lower costs, the GP contract cares about it, and you can’t improve — or even measure — continuity while the field that’s supposed to record it is fiction.
So I built a tool to check it. Or more honestly: I described the problem to an AI, argued with it about the details, tested what it produced against real data, and out the other end came something genuinely useful. It’s free, it’s live at drneilpaul.blog/usualgp, and any practice can use it.
What it does
You export a year of appointments from EMIS (there’s a prebuilt search to import, so every practice extracts exactly the same data) and drop the file onto the page. The tool then:
- Scores the practice on three numbers: Usual GP accuracy (of patients with a clear seeing-pattern, how many have the right GP recorded — ours was 34%), mean UPC (what share of each patient’s GP appointments are with their most-seen GP — real continuity, which recoding alone won’t shift), and consultations with the recorded Usual GP.
- Produces a ranked recode list — patients who repeatedly and consistently see one GP who isn’t their recorded Usual GP, safest changes first, exportable for your admin team. Patients with genuinely fragmented care are kept separate: assigning them a Usual GP is a clinical decision, not a data fix.
- Shows each GP’s frequent attenders three ways: patients who are registered to them and see them; patients on their list who mostly see someone else; and patients who mostly see them but are registered elsewhere. Those last two groups are different patients — they don’t cancel out, and seeing them separately is what turns a data-quality exercise into a workload conversation.
- Handles the real-world mess: merge duplicate spellings of the same clinician, exclude locums and booking “systems” that masquerade as clinicians, and mark departed GPs with a rule for reassigning their patients.
- Doubles as a list-size tool: drop in the companion list-sizes export and it shows registered patients per GP — type in each GP’s weekly sessions and it computes patients-per-session, the fairest starting point for a balance discussion.
There’s a step-by-step guide written for any member of the practice team — including the one export setting that catches everyone out.
The practice scorecard — synthetic demo data with invented GPs and patients.
Each GP’s frequent attenders split three ways: the right patients (green), on their list but seen elsewhere (orange), and seen by them but registered elsewhere (blue). Orange and blue are different patients — they don’t cancel out.
The ranked recode list — every screenshot here is synthetic demo data.
The part I care most about: where the data goes
Nowhere. This is the bit I’d want to know as a data controller, so here it is plainly: the page runs entirely in your browser. The export file is read locally on your computer, nothing is uploaded, nothing is stored, and closing the tab discards everything. The page makes no internet requests at all — even the charting libraries are embedded in the file, precisely so that a page handling patient-identifiable data never depends on code fetched from someone else’s server at load time. You can save the page and run it on a machine with no internet connection; it behaves identically.
Why bother? The evidence is startling
Continuity isn’t a nostalgia project. The Pereira Gray systematic review (BMJ Open, 2018) found that in the large majority of studies, patients who see the same doctor over time have lower mortality. A huge Norwegian registry study (Sandvik et al, BJGP 2022) showed the effect is dose-dependent: compared with a relationship of a year or less, patients who’d had the same GP for over 15 years had roughly 25% lower odds of dying, with fewer out-of-hours contacts and acute admissions too. In England, Barker and colleagues (BMJ, 2017) found higher continuity in older patients was associated with fewer avoidable admissions. Few things in medicine have an evidence base like this while being, in principle, free.
And continuity matters most where illness is: it’s more important that 80-year-old Ethel with heart failure sees her usual GP than that a fit 30-year-old does. Models like the NAPC’s primary care home make exactly this move — stratify the population, case-manage the frailest with a named GP and team. This tool doesn’t yet weight by age or frailty (its minimum-consultations threshold partly self-selects for it, since frequent attenders skew older and sicker) — but a frailty-weighted view is the obvious next step if practices ask for it.
Where it fits — and where it doesn’t
Honesty section. This tool is aimed at traditional practices running — or believing they’re running — usual-GP care for routine work. Some known limitations:
- Total-triage and duty-heavy models will confuse it. If a triaging GP speaks to half the practice every week, the tool will see them as many patients’ “most-seen clinician” — but that’s throughput, not relational continuity, and they can’t be everyone’s Usual GP. You can mitigate by excluding triage/duty clinicians on the Clinicians page, but if your whole routine model is triage-first, the numbers need careful interpretation.
- It only sees the appointment book. Continuity delivered through tasks, medication reviews, docman, and corridor knowledge is invisible to it.
- Part-time GPs are structurally disadvantaged at being “most-seen”; a two-session GP can deliver excellent continuity to a small list and still lose the count to a full-timer.
- Registrars and supervision aren’t understood: the patient who saw the registrar the trainer was supervising counts for the registrar.
- It measures visit concentration, not relationship quality — UPC is the standard proxy, but it is a proxy.
- A 12-month window penalises GPs who joined, left, or took leave mid-year, and patients who joined recently.
- It deliberately only judges frequent attenders (4+ GP appointments) — patients with too little data to call are left alone.
None of these break the core use — finding patients whose recorded Usual GP is simply wrong, and fixing the field so continuity can be managed at all — but they’re the difference between using the output as a conversation and mistaking it for a verdict.
What this is really a story about
I’m a GP, not a software company. This tool exists because AI coding assistants have got good enough that a clinician who understands the problem can now build the solution — if they bring the same discipline they’d bring to anything clinical. The things that made this work weren’t clever prompts:
- Validation before trust. The algorithm was replicated independently in a second language and both versions checked against a known historical dataset before anything was released.
- Regression testing. Every change since must reproduce those benchmark numbers exactly. When the tool met a fresh live export, its patient count matched EMIS’s own population count to the patient.
- Security by design, not by promise. “No data leaves the practice” is an architectural property you can verify, not a privacy-policy sentence.
- A human in the loop. The tool only ever suggests. Recoding goes through practice governance, and the fragmented patients are explicitly flagged as clinical decisions.
That, I think, is the honest template for AI in primary care right now: not magic, not a threat — a very fast, very capable collaborator that still needs a clinician who knows what good looks like.
The tool was built for Howbeck Healthcare client practices, but any practice is welcome to use it. If you try it, I’d genuinely like to hear what happened — numbers, problems, suggestions: .