Skip to content

Enterprise healthcare · 2024 to present

Clarix

Replacing the software five pharmacies run on with a platform built in-house.

Role
Research, design, and front-end prototyping
Team
5 designers, a design lead who also PMs, a product manager
Scope
Build vs buy evaluation Research, design, prototype
Status
Ongoing I joined for discovery onward

Scope. Clarix is a team effort at Clarest Health. I work on research and interaction design under a design lead, alongside a PM, engineering, and pharmacy staff. What follows is my part of it: the discovery research, the synthesis, and a set of design decisions I owned. Screens shown are cleared for sharing; the rest of the platform is not.

Clarix · Rx verification

Rx verification in Clarix, mid-fidelity and still in design. Patient, prescriber and facility details are demo data.

The short version

The question

Clarest licenses FrameworkLTC across five pharmacies. Is an internally built platform worth the investment, or does the license stay? Nobody could answer that without knowing how the current system is actually used.

What we did

Documented the real process and its friction across 50 participants and four states, then designed against it. On-site observation under HIPAA constraints, a standards audit, and a working React prototype.

Where it landed

The research became both the case for building and the specification for what the new system had to preserve. Development is underway.

Act I

Discovery

A build decision this size cannot be made from a feature comparison. It needed an accurate picture of how the software is actually used, by whom, and at what cost.

01The question

Not how to fix it. Whether to keep paying for it.

Clarest Health grows by acquisition. Remedi SeniorCare, ProCare and others now run on one network, and all of them run on FrameworkLTC, a third-party platform with a steep learning curve and a total cost of ownership that keeps climbing.

So the company put a genuine question on the table: continue paying for a system that frustrates the people using it every day, or build an internal platform purpose-built for this network. That is a build versus buy decision, and it cannot be answered from a feature matrix. It needs to know what the current software actually costs in time, errors, and training.

The cost is also not evenly distributed. A pharmacist with ten years in the system has built a vocabulary of shortcuts that makes it feel like second nature, so a replacement reads as a threat to hard-earned fluency. A technician on day one faces a dense, menu-heavy interface with no starting point. Technicians are the highest-turnover role in the building, which means learnability is a recurring cost, not a one-time investment.

The system isn’t broken. It was never built for everyone who has to use it.
Donna GorkaDirector of Pharmacy, ProCare
02Research

Seeing the real workflow

0

participants across the network

0

hours of 1-to-1 sessions

0

findings documented

0

user roles represented

Where I was

On the pharmacy floor every day.

I am on site at the Massachusetts pharmacy daily, which is the highest performing of the five and the one we centered the study on. I also traveled to the New York location with the pharmacy supervisor, who is separately working on standardizing process across newly acquired pharmacies. Being embedded rather than scheduled is why the workarounds surfaced at all. Nobody performs their sticky notes for a visitor.

How we ran it

Two one-hour sessions per participant, split across the shift.

Mornings captured fulfillment and corrections, the highest-volume work of the day. Afternoons captured order finalization and delivery prep. We used naturalistic observation, directing nothing, and logged every hesitation, every verbalized frustration, and every workaround, including the printed notes and the coworker standing nearby.

The constraint that shaped it

HIPAA and company policy protect live patient data, so no session could be recorded.

We went in person instead, and revisited pain points on screens with patient information removed. That is why this research is observational rather than session-replay based.

12 structured interviews on-site · 6 remote screen-share sessions · 32 network-wide questionnaire responses. Interview participants were excluded from the questionnaire to avoid duplicate data.

03The users

Four groups who each need something different

Pharmacists

Years of muscle memory in FrameworkLTC, often across several pharmacies and several versions of it. The most resistant to change, because relearning a mastered system costs real productivity.

Pharmacy Technicians

The highest-turnover role in the building. Many arrive from retail pharmacy with no long-term care experience, and learn the software by asking the person next to them.

Clinical Hub

Remote pharmacists and technicians working alongside our nurses. Several people can edit the same prescription at once, and nothing in the interface signals that anyone else is in it.

Billing and Inventory

A small dedicated team, out of sight of daily fulfillment until inventory counts and back orders, when everything routes through them. The pharmacy director depends on their numbers being right.

Photography is not permitted on the pharmacy floor, so these are stock portraits standing in for the four groups. Everything described is from the research.

04Synthesis

The five findings I designed against, and what each one changed

01

The most-used screen is not the default view

The delivery dashboard needs a multi-step menu path or a manually pinned shortcut. Experienced pharmacists could not recall how to open it without the shortcut.

02

Urgency signals had gone dead

Wait-time indicators render red regardless of actual urgency. Because some medications are simply slow, red stopped meaning anything and every user group ignored it.

03

People navigate by memory, not understanding

Asked why they did a step, the consistent answer was “that’s how I was shown.” Printed reminder notes were taped across the pharmacy floor.

04

Batch management is the highest-friction workflow in the building

One pharmacist spent three hours undoing a single accidental batch merge.

05

Permissions fail silently

A policy change restricting NDC edits to pharmacists was never reflected in the interface. Users hit dead ends with no explanation and had to find a supervisor.

+36

further findings documented, not shown here

Forty-one findings in total, across inventory, waste and disposal, kit tracking, NDC matching, permissions, and training. The five above are the ones I can show. Others are still in design, or not mine to share yet. This is an ongoing project and findings are still surfacing.

Clarix delivery dashboard, mid-fidelity

Finding 01 in the design: the screen people could not find is now the landing view. STAT sits first and red, batch fill rates are visible without opening anything, and the day's exceptions are on the same surface as the work. Demo data throughout.

Act II

Design

Findings only matter if they survive contact with a screen. These are three worked examples from my part of the build.

05The constraint

Build something new. Don't make it feel new.

The loudest finding was not a feature gap. It was that the people most affected by a replacement are the ones with the most to lose from it. Pharmacists in long-term care are tenured, frequently across several pharmacies and several versions of this same class of software. Their fluency took years to build and the company paid for every one of them.

That reframed the design problem. A system that is better on paper but unfamiliar in practice does not save money, it spends it, in retraining and in errors during the months it takes people to stop reaching for the old shortcut. So Clarix deliberately models itself on the structure staff already know, and spends its novelty budget only where the research showed the old model actively causing harm.

Kept on purpose

Their vocabulary and their shortcuts

MOP, SIG, HOA, DAW, Ro#, Price Code, Cycle Fill, and batch codes like 3FIXAB all stay exactly as they are, and so do the keyboard shortcuts tenured staff already use. Renaming them would be a cleaner information architecture and a worse product. Every renamed term is retraining with no operational payoff.

Changed on purpose

Only where it was costing something

A three-hour recovery from an accidental merge. A dashboard nobody could find. A red urgency signal everyone had learned to ignore. Each change had to point back to an observed cost, not to a preference.

Specified, not yet built

The shortcut teaches itself

When someone completes a task the long way, a quiet prompt names the shortcut for it: do this next time with one keystroke. Veterans keep the fluency they already have, and a technician in week one starts building the same fluency instead of waiting years for someone to pass it on.
06Decision 01

The modal wasn't slow. It was in the wrong place.

FrameworkLTC makes you pick a batch before the order entry screen will open. The obvious read is that the modal is a speed problem. It isn’t. It’s a sequencing problem.

FrameworkLTC Select Batch modal, photographed on the pharmacy floor

The gate itself. A flat, undifferentiated list: 3FIXAB, 3CPABE, ASH, PREPV1. The columns show Rx Count and Allow Auto Submit, and nothing at all about when a batch closes, which is the one fact the decision actually turns on.

Before · the sticky session

0 misrouted

One click, at the gate

Batch 32AM

Pick a batch before the entry screen opens and every prescription that follows inherits it. The error happens upstream of all the work, so one wrong click at the start is twenty wrong records by the end of the session.

After · inferred per record

no shared upstream decision

32AM
32PM
32AM
STAT
32AM
32PM
32AM
STAT
32AM
32PM
32AM
STAT
32AM
32PM
32AM
STAT
32AM
32PM
32AM
STAT

Batch becomes an attribute of the prescription rather than a prerequisite for entering one. Each record infers its own from facility, delivery route, prescription type, and time of day, and shows that reasoning on screen so a wrong one is visible at the moment it happens.

The decision

Batch is an attribute, not a prerequisite

No modal. The technician lands directly in entry with the batch inferred from facility, delivery route, prescription type, and time of day.

What makes it safe

The reasoning is the feature, not the default

A silent default makes a wrong batch worse, because the technician never gets a chance to notice. So the routing block states what it inferred from, and draws the cutoff as a bar that turns amber in the last fifteen minutes. If that evidence is ever cut for space, the decision stops working.

Seven cases force an explicit choice instead of inferring: STAT · new admit · multiple routes for one facility · past cutoff · prior auth pending · controlled substances · batch at capacity.

07Decision 02

Designing an undo for an action that never had one

0

prescriptions movable in one unfiltered click

0 hrs

to recover from a single accidental merge

0

steps per prescription to put it back

The Move button relocates selected prescriptions between batches. If a user forgets to filter first, the selection can be every script in the week. There is no undo. Recovery means opening each prescription, identifying its origin batch, and moving it back by hand.

This is a case where the interaction cost of the fix is trivially small and the cost of not fixing it is measured in hours of pharmacist time on a floor moving 5,000 scripts a day.

The safety layer

01

Filter confirmation. Shows exactly how many scripts are selected and which filter is active before anything proceeds.

02

Destination selection. A simplified today-only list rather than the full undifferentiated batch table.

03

Final confirmation. “Move 47 prescriptions? From 32AM to 32PM, Tuesday afternoon run, closes 18:30.” The count is stated three times and broken down by wing.

04

Reversal window. A persistent toast with a countdown and a single Undo button, live for fifteen minutes.

Move confirmation, showing scope before the action runs

The count appears three times, and the breakdown by wing is there so a technician who meant to move one wing sees the sixteen scripts they did not intend to touch. 47 of 154 is the line that stops someone who forgot to filter.

The reversal window, live on the list

After the move, a persistent bar holds the countdown, names who moved what, and keeps Undo one click away. The window is visible rather than promised, and nothing underneath it is blocked.

08Decision 03

The screen that didn't know what it was

I made an early call to have one screen serve both new prescription entry and read-only viewing. State would handle the difference.

The result had an Edit button, which implies the record is immutable. It had dropdowns, checkboxes and a batch selector, which imply it is editable. It had a Submit button, which implies you are creating something. Every individual control felt subtly misplaced, and I spent real time adjusting spacing to fix a problem that was not a spacing problem.

v1 · one screen, two states · Edit + Submit + inputs, all at once
v2 · read-only rendering · label and value, no input chrome

Before: every control contradicted another. No amount of spacing would have fixed it, because the problem was conceptual.

After: two renderings, same information architecture. Cycle fill becomes a value instead of a control, which dissolved the awkward-checkbox problem rather than solving it.

The tell

A competitor audit, not a critique session

Axys uses genuinely different renderings for the two cases. Same information architecture, completely different chrome. Its view screen is plain label and value text with no input affordances at all. That is what showed me the problem was conceptual.
09Rigor

Auditing the design against the standards it has to survive

Before high fidelity, I audited the prescription record against NCPDP SCRIPT, NCPDP Telecommunication D.0, and HL7 FHIR. The headline: the screen modeled dispensing well and origination not at all.

No prescriber appeared anywhere. No name, no NPI, no DEA number. A prescription without an identified prescriber is not a prescription. That was the largest single gap and it would have shipped.

Missing prescriber identity, NPI, DEA

Missing refills, written date, DAW code

Payer identity incomplete: BIN present, PCN, Group and Cardholder ID absent

No claim rejection state, pricing could only express success

PDMP absent, despite already existing in the pharmacy workflow

“Route” used for delivery route, colliding with route of administration in every clinical standard

And then

I chose not to add most of them.

Adding twenty fields would have recreated exactly the wall-of-inputs density the redesign exists to remove. The audit became a prioritized handoff document for the integration team instead of a checklist to satisfy on one screen. Finding the gaps and then making a call about them is the actual work.

10 · The screens

What it became

01 / 03

The prescription record

Everything a pharmacist verifies against, on one screen, with no scrolling on the pharmacy’s dual-monitor setup.

02 / 03

Inferred batch routing

No modal. The batch is inferred from facility, delivery route, prescription type and time of day, and the block shows the evidence it used. A default that explains itself is self-correcting.

03 / 03

Move, with a way back

Three confirmations and a fifteen-minute undo window on the action that previously had none. The dialog’s job is disclosure, not a second guess: it states what is moving, and from where.

The prescription record
Inferred batch routing
Move, with a way back
11Outcomes

Where it stands

Clarix is in active development. Rather than claim outcomes the platform hasn’t produced yet, here is what is decided and built against, and how we instrumented it so the impact is measurable rather than asserted.

Decided and in build

  • Batch gate removed from Clinical Hub order entry, replaced by inferred routing with visible reasoning
  • Three-step confirmation and fifteen-minute undo window on all batch moves
  • Batch selector regrouped into Today, Upcoming, and Special or Archived
  • Must-Go and New Admission converted from separate batches to system-applied tags
  • Read-only and entry renderings separated
  • Existing keyboard shortcuts preserved, with an in-context prompt that teaches them

How we’ll know it worked

Every batch assignment records whether it was inferred and accepted, overridden, or later reassigned. That gives us a tuning signal for the inference rules and a real before-and-after on misrouting rate.

Secondary measures in the usability test plan: time to first correct order entry for a new technician, accidental merge frequency, and unassisted task completion on the delivery dashboard.

12Reflection

The domain knowledge was the design work

When I first raised redesigning batch management, the pharmacists pushed back. It works in theory but not in application, they said, and one added that it would seem like a lot of work for us to design and build. I told them that figuring out the hard things is the job. That conversation set the tone for everything after it, because it made clear that credibility with these users would come from understanding their work, not from showing them nicer screens.

None of what made this design possible is discoverable from a screenshot. Blister packs hold 30 units, but cold seal blisters hold 31. A short label is label 1 of x, so the remainder comes first. A partial fill is a judgment call, not a rule: nine homes, seven residents on one drug, thirty tablets left, and it’s Friday with no delivery until Monday.

The interviews are what made the design possible. The screens were the easy part.

Next project

Balance→
All work