McKesson

2025-2026

Unlocking Prescription Routing

Only McKesson could change the rules that decided where prescriptions got filled. I led design of the tool that lets pharmacy chains set those rules themselves.

+29%

More Central Fill Eligibility

+29%

More Central Fill Eligibility

46%

Less Time Linking NDCs

46%

Less Time Linking NDCs

2X

Faster Rule Configuration

2X

Faster Rule Configuration

Lead Product Designer

Lead Complexity Fighter

Team of 12

6 Engineers, 4 Product Folks

1 Year, 5 Months

Total Project Timeline

Overview

What was this project about?

Traditional local fill

Central fill is more complex

What this platform controls

The Problem

McKesson's routing engine decides whether a prescription is filled at the local pharmacy or sent to a central fill site. The logic worked, but it lived in code, so every change a pharmacy chain wanted became a request to McKesson.

The Solution

I led design of Central Fill Manager, a web admin tool inside McKesson's pharmacy platform (EnterpriseRx) that turned that legacy logic into intuitive configurations that pharmacy chains can see and change themselves.

How it Works

Inside the Rules Check ( )

In a pharmacy chain, there are 3 levels of groupings. Each determine the associated quantity of pharmacies and permissions.

01

Corporate

The chain's head office. Rules set here reach every pharmacy below.

02

Node

A regional group of pharmacies. Changes here stay within the node.

03

Pharmacy

A single store. It follows the rules above unless an admin deliberately overrides them.

Who uses it?

Admins at the chain decide which drugs can go to central fill, which sites can fill them, and in what order. Pharmacists never open the tool. They fill as usual and the routing happens behind them.

Example

A prescription for atorvastatin arrives at a store.

One prescription, four questions. CF Manager is where admins set the answers.

Research

Nobody could see how routing was decided.

Goal

Understand how routing decides before designing a screen, because I couldn't design controls for logic nobody could explain.

What I did

  • Ran working sessions with McKesson's product owners

  • Reviewed the old admin screens and configuration files

  • Mapped a prescription's path through the system

What I learned

The engine re-checks every prescription four times, and nobody outside McKesson could see that.

What it changed

01

Admins changed settings at the wrong level.

So the tool shows how far a change will reach before you make it.

02

Admins couldn't trust what a rule caught.

They built drug lists by hand, so every row says why it matched.

03

Site data already lived in the main platform.

So each piece of data gets one home, and CF Manager only configures routing.

Process

Design Process

Two workshops to set direction, then one loop on repeat.

2

Kickoff Workshops

2

Kickoff Workshops

6

Product Sessions

6

Product Sessions

4

Customer Admins

4

Customer Admins

3

Day Iteration Cycles

3

Day Iteration Cycles

I led two workshops with every stakeholder to agree on what had to be built.

Working session with users and the product team, design in Figma, test with four pharmacy chain admins, revise within three days

Why this cadence?

Routing rules are too complex to get right in one pass, so I kept each round small enough to test and fix inside a week.

Design

Two key decisions that shaped the platform.

Decision 1: Corporate sets the rules. Pharmacies keep their exceptions.

Problem

Chains needed the same routing rules across every store, but rules had to be configured one location at a time.

Hypothesis

If changes flow down from corporate, an admin sets a rule once and every pharmacy follows.

Testing

Customers liked it, but individual pharmacies had local exceptions that a pure top-down model would erase. The nuance had to be respected.

Shipped

Each pharmacy keeps a Retain Locally Rx List, so its exceptions stay local and everything else still follows corporate.

Decision 2: Match prescriptions to what a site can do.

Problem

Prescriptions needing specialty labels, like braille or large print, almost never went to central fill.

Hypothesis

If each fulfillment center lists what it can handle, the system can send those prescriptions to a capable site instead of ruling them out.

Testing

Customers liked it and named other criteria worth attaching to a site.

Shipped

Each center's profile now carries all prescription criteria, and the system matches on all of them.

Final Design

Complex rules: easily self-configurable.

Rule Configuration

Easily edit rule configurations and view clearly how far your change will reach.

Formulary Adjustment

Testing revealed that drugs need an "active" and "on-shelf" (standby) status.

Rank Modification

If 2 fulfillment centers are eligible, which one should the prescription go to? Admins can set clear boundaries.

Final Design

Complex rules: easily self-configurable.

Rule Configuration

Easily edit rule configurations and view clearly how far your change will reach.

Formulary Adjustment

Testing revealed that drugs need an "active" and "on-shelf" (standby) status.

Rank Modification

If 2 fulfillment centers are eligible, which one should the prescription go to? Admins can set clear boundaries.

Final Design

Complex rules: easily self-configurable.

Results

More prescriptions going to central fill. Less manual work for all.

+29%

More Central Fill Eligibility

+29%

More Central Fill Eligibility

46%

Less Time Linking NDCs

46%

Less Time Linking NDCs

2X

Faster Rule Configuration

2X

Faster Rule Configuration

Before Project

After Project

Before Project

After Project

After Project

Lessons

What i'd carry into the future

Learn the logic before drawing screens

With rules this complex, I dug into the details early and kept going back to them. That shared foundation is what keeps new complexity and scope from surfacing late in a project.

Bring engineers into design early

Leading design on a project this size can feel like development is waiting on you. Bringing engineers into our design conversations cleared technical concerns early and made the handoff smoother.

Shape the component library before it shapes the product

We built on Material Design and a limited component library, and the visuals landed somewhere I didn’t love. I put my effort into making the functionality and core UX hold up. Next time, I’d advocate for a more robust libary to match the needs of heavy enterprise software like this.

Jack Bannon

Product Design leader focused on untangling complexity in beautiful ways.

Contact

jackryan.bannon@gmail.com

Jack Bannon

Product Design leader focused on untangling complexity in beautiful ways.

Contact

jackryan.bannon@gmail.com

Jack Bannon

Product Design leader focused on untangling complexity in beautiful ways.

Contact

jackryan.bannon@gmail.com