Usual GP Continuity Analyser

Who do patients actually see — and is the Usual GP field right? Runs entirely in this browser — no data is uploaded anywhere
1Load export
2Map columns
3Clinicians
4Settings
5Results

Load your EMIS export

Works with both exports from the prebuilt EMIS searches: the consultation export (full continuity analysis) or the list-sizes export (a simple list-size report — detected automatically). CSV or Excel both work. The file is read locally by your browser and never leaves this computer. New to this? Step-by-step EMIS instructions.

Choose a file or drag it here
.csv, .xlsx or .xls  ·  one row per consultation

About this tool — and why it's built the way it is

Built by Dr Neil Paul, GP, with Claude (Anthropic's AI coding assistant), for clients of Howbeck Healthcare. Other practices are welcome to use it — comments, problems and suggestions to . It's intended both as a useful tool and as a worked example of using AI coding tools well in general practice.

A note from Claude on the security design

This page handles patient-identifiable data, so it was designed so that data compromise is not just unlikely but structurally impossible: your export is read locally by your browser and analysed in memory on this computer. There are no uploads, no server, no accounts, no analytics, and nothing is stored — close the tab and everything is gone. The browser itself enforces this: the page carries a security policy that blocks every network connection. The one exception is anything you choose to download: the recode CSV contains patient identifiers, so treat it like any other patient-level export.

One subtle risk remained. Most web pages fetch their supporting code libraries from a content-delivery network every time they load — which means a page is only as trustworthy as whatever that network serves today. A page handling patient data shouldn't depend on code fetched at load time. To prevent that possibility, everything this app needs — including its three open-source libraries (PapaParse, SheetJS and Chart.js, at pinned, checksum-verified versions) — is embedded in this single file. Once you have the file, it makes no network requests at all and works identically on an offline machine.

The analysis itself is deliberately verifiable: the core algorithm was independently replicated in Python, both implementations are checked against two real datasets, and every new version must reproduce those benchmark numbers exactly before release. A bundled EMIS search means every practice feeds the tool the same, known data.

And the most important safeguard is human: this tool only ever suggests. Recoding a patient's Usual GP is a decision for the practice, through its normal governance.