A clinical team shared one patient record but couldn't see who else was in it. Notes got overwritten and lost, with no audit trail and a real patient-safety risk. I rebuilt it alone over six months, on a legacy backend that ruled out the obvious fix.
All screens in this case study are representative. The product itself is under NDA.
A shared record for a whole clinical team
Ultramed builds the software UK hospitals use for pre-operative assessments: the checks before surgery. Patient answers land in a clinical portal where a multi-disciplinary team (nurses, pharmacists, clinicians, anaesthetists) works each assessment, and Clinical Notes is where they document observations against a patient: shared, collaborative, several roles touching the same record minutes apart.
Multiple trusts had flagged the module's limited functionality and the patient risk it created. The wider customer base felt the same problem.
An unauditable form that lost people's work
The old Clinical Notes was a simple form (text fields, radios, multi-selects) wedged into the bottom of a narrow side rail. Anyone could add, edit, or delete an answer, with no history and no audit trail. Several clinical roles rely on that record, so the gap put patients at risk.
Clinicians had started keeping their notes in a separate file and pasting them in. Hitting save locked the other person out and discarded their work. When clinicians keep a shadow copy of clinical documentation in a text file, the tool has failed them.
Why the obvious answer was off the table
The obvious fix is live co-editing. The backend ruled it out, so every decision below had to invent an alternative that still made collaboration feel safe.
- A legacy form builder at the core. It put hard limits on what could change.
- No design system. Dev-first Tailwind, three different "primary" blues in the product.
- No UI designer. I owned visual consistency from scratch.
- Reuse, don't rebuild components, to protect a hard deadline.
- No product analytics. No instrumentation of user behaviour.
- Make collaboration safe and visible with no real-time backend.
- Build the audit trail at the interaction layer instead of the database.
- Fit the existing component set and ship on time.
- Resolve visual inconsistency as part of the work instead of as a separate project.
The pain points
Before designing, I needed to know where the current module failed users. The research phase combined three sources:
-
Live workshops with clinical teamsRan sessions with nurses, anaesthetists, and clinicians to observe workflows and capture frustrations first-hand.
-
Outstanding tickets from LinearCollected all pending bug reports and feature requests related to Clinical Notes. The same complaints kept repeating.
-
Competitive analysisReviewed comparable clinical documentation tools to see how they handled the same problems.
Collating the three sources into one prioritised list of must-haves gave me the direction for the design.
Ideation
Exploration highlights
Extensive sketching and feedback sessions narrowed the note editor down to three high-fidelity directions.
Individual Notes
- The first direction was to have 3 tabs, Updates, History and New Notes
- Individual Notes did not help with continuous documentation and chain of thought

Floating Notes Panel
- Needed a new component and extra development time
- New user interaction might have needed extra effort.

Dedicated Tab
- Visible in the main navigation at all times
- Familiar pattern for users

From a side-rail form to an auditable workspace
A text form with a single Edit button became an auditable, role-based workspace. The constraints never changed: no real-time backend, no design system, and a hard deadline.
From a single crowded form to role-based templates
Each role works its own template: Clinical Examination, Nurse Review, Anaesthetic Note, Pharmacist Note. That cuts how often two people land on the same field. A side-by-side View Report panel keeps source data and note-taking on one screen.
Every answer stays in place, with a name and a time
Answers render beneath the question, each carrying who wrote it and when. The next contributor reads with full context instead of facing a blank field.
An amendment that can't happen without a reason
To change an answer, a clinician strikes it through. The original stays visible, and nothing commits until the clinician enters a reason. That builds the audit trail at the interaction layer, since the backend has none.
The hardest case: when one answer invalidates four others
Some questions only exist because of a parent answer. Amend the parent and its children are orphaned, and deleting them without a trace would break the audit trail. One amendment, one container: the parent and every invalidated child, still attributed and timestamped.
Warned, not blocked: awareness instead of a hard lock
The backend can't support real-time locking, and clinical workflow shouldn't tolerate one anyway. A banner warns you when someone's editing; publish while a colleague writes, and the app prompts them to refresh before they finalise.
Honest, and still strong
The commercial driver fell away for reasons outside design, and the project paused. I can still speak to whether the design solved the problem. It did, on every axis that was mine to own.
- Validated & accepted. Four trusts confirmed the direction; it cleared feasibility, and one slice reached development.
- Outlived its driver. The designs are now live in sales demos to new prospects, and the project is back in development as the MVP, generalised from one trust's needs to serve all of them.
My first project with real constraints
Earlier work assumed developers could build anything, in any timeframe. This taught me to design for the system and the deadline that exist.
MVP discipline was the biggest lesson
"These are great. Now learn to cut down to what makes a deliverable MVP," my manager told me. I now categorise every feature as core-functional, cosmetic, or add-on, and defend the line.
Designing without a design system is its own project
I had to find, understand, and adapt every reused component for consistency. As the only person doing UI, I came out of it operating as UX, UI, and tooling at once.
What's next
With the MVP back in development, I'm planning usability testing, using Claude Code to build functioning prototypes. That moves me from directional buy-in to testing whether people understand the model.