Healthcare

Spreadsheet work for healthcare providers

Rota and capacity planning that reflects real availability, and reporting that keeps identifiable data out of the spreadsheet.

Get your Excel job done

Send the file, not a brief. No call required.

Healthcare has a constraint the other sectors do not: much of the interesting data cannot go in a spreadsheet at all. So the work divides in two — planning and capacity models, which need no patient identifiers, and reporting over data that has been aggregated or pseudonymised before it reaches us. We will tell you which side of that line your request falls on before quoting.

What we build for this sector

The four engagements that come up most often

Capacity and rota models

  • Sessions planned against availability after leave, admin and training.

Waiting-list analytics

  • Percentile waits and breach risk by pathway, from pseudonymised extracts.

Resource utilisation

  • Room, equipment and staff utilisation with the constraint made visible.

Budget and staffing models

  • Establishment cost against activity, by site and speciality.

What the worksheet looks like

The columns that carry the argument

Capacity sheet: sessions available against demand, with no identifiable data present.
ABCDEFG
1ClinicStaff FTESessionsBookedUtilisationGap
2General – Mon3.0363494.4%2
3General – Tue2.53030100.0%0
4Follow-up – Wed2.0241770.8%7
5General – Thu3.03638105.6%-2

The calculations behind it

Why each one is written the way it is

  • =[@[Staff FTE]]*SessionsPerFTE*(1-LeaveRate-AdminRate) Available sessions after leave and non-clinical time. Planning against headcount rather than availability is the most common cause of a rota that looks fine and does not hold.
  • =IF([@Sessions]=0,"",[@Booked]/[@Sessions]) Utilisation. Sustained above about 95% there is no absorption capacity, and a single absence cascades into the following week.
  • =PERCENTILE.INC(Waits[Days],0.9) The 90th percentile wait, not the mean. Access is judged by the patients who wait longest, and an average conceals exactly those.
  • =COUNTIFS(Appts[Status],"DNA",Appts[Clinic],[@Clinic])/COUNTIFS(Appts[Clinic],[@Clinic]) Did-not-attend rate by clinic, which is what turns a capacity gap into an actionable one — overbooking policy should follow the measured rate, not a national average.

A rota built on hours that did not exist

A worked case from this sector

A multi-site practice planned clinics against contracted FTE and could not understand why the schedule slipped every month. Subtracting leave, administrative time and training left about 78% of the assumed capacity; two clinics were being planned above 100% of real availability. Nobody was underperforming — the plan had been allocating sessions that did not exist. Rebalancing two half-days restored the schedule without adding staff.

Templates to start from

Free, and adaptable to your own data

Need it built around your data?

  • We work in your existing workbook
  • Fixed scope agreed before we start
  • Delivered within 24 hours

Questions from this sector

Specific to this work, not generic

Can you work with patient data?

We work with aggregated or pseudonymised extracts, never with identifiable records, and we say so before quoting. For most planning and reporting work the identifiers are not needed — what is needed is the shape of the data, which an anonymised sample preserves.

Do you sign a data processing agreement?

Yes, alongside an NDA. Where the data cannot leave your environment we build against a structurally identical sample with the values replaced, which is sufficient for the large majority of projects.

Is a spreadsheet appropriate for clinical reporting?

For planning, capacity and management reporting, yes. For anything that forms part of a clinical record it is not, and we will tell you that rather than build it.