
Role
Solo Product Designer, User research, Interaction design, Design system contribution
Team
2 Engineers, 1 PM, 1 Designer, Clinical reviewers
Timeline
4 months
Confidentiality Notice
To respect confidentiality agreements, certain visuals have been blurred or omitted. If you'd like to learn more, I'd be happy to walk you through the original screens, design decisions, and outcomes during 1:1 conversation.
Problem
Context








Research

Every action blocked the table - blocking sidesheets cut care managers off from their data mid-task.

No structured view of changes - a flat list forced mental tracking of what was new, modified, or carried over.

The same drug appearing twice - different names from different sources, no detection, no merge.

Zero safety net - no drug interaction or allergy alerts of any kind.

Data that existed but wasn't surfaced - dose, route, frequency all typed manually despite living in the EMR.
What was shipped
From last review / New medications / Modified medications / Discontinued - color-coded, always visible. Care managers see what changed the moment they open a review.
Our table component didn't support editable cells. I pushed for it. Fields now edit in place - no forms, no round trips, no lost context. This required working with the DS team to build the pattern from scratch.
Every action used to darken the table. Now the table stays live while a panel is open. Care managers can reference existing medications while adding a new one - the way they think during a patient call.

The button opened the history table. To actually add a medicine, you needed a second click inside the sidesheet. History now lives inline below the active table. The button opens the add form.

Dose, route, frequency now auto-fill: EMR table first → NDC lookup → clean blank. Never a zero, never a placeholder.
In clinical tools, a wrong default is more dangerous than an empty field. A care manager will fill in a blank. They might trust a pre-filled "0" and move on. This looks like a backend decision. Deciding what the user sees in every possible data state is a design decision.
customer adoption post-launch
products using the 12px component library
No more manual data entry. Working without constant context switching.
Understanding that Review and Reconciliation serve different purposes - and designing for both from day one - made every subsequent decision clearer. The architecture came before the screens.
When the table couldn't fit regular components, the right move wasn't a workaround. It was fixing it for everyone. What started as a personal problem became infrastructure for the whole company.
Duplicate medications, missing data, silent gaps - care managers had adapted to all of it. Finding what they'd normalised mattered more than fixing what they'd flagged.






