Oracle Health Health Design System Desktop EHR 20+ Teams

EHR Data Presentation
Consistency Initiative

Building one consistent way to show patient data across the Oracle Health EHR, from overview pages to detailed records, for every clinical role and care setting.

Role
Principal UX Designer
Platform
Desktop EHR
Deliverables
Taxonomy · Components · Governance
EHR data consistency hero image

One visual language,
across every surface clinicians touch.

Years of acquisitions left Oracle Health with a fragmented experience. Same data, different behavior, depending on where you were in the product. Teams weren't failing, they were building without a shared foundation.

The Health Design System team's job was to fix that. Creating a shared framework for displaying patient data that was clinically accurate, easy to adopt, and built to last. As the principal UX designer on the team, my work included collaborating with physicians, coordinating across teams, specifying components, running design critiques, and mentoring other designers.

At the center of this work was a physician advisory group involved in every phase. Nothing was final until practicing clinicians had reviewed and confirmed it.

20+
Product teams brought into alignment
14
Card variants consolidated into one system
4
Core data forms defined and governed
3
Charting libraries replaced by a shared standard

Inconsistency isn't a cosmetic problem
in a clinical environment.

A clinician who cannot instantly scan and interpret data is a clinician who pauses, double-checks, and sometimes misses what matters.

An audit across product teams found three problems. Each was manageable on its own, but together they actively worked against the people using the system.

"The same lab value could appear as a chart in one module, a plain list in another, and a dense table in a third. There was no shared grammar."
Pattern audit finding
"Severity was encoded in color or badges in some places and text in others. Clinicians couldn't build a reliable mental model for what danger looked like."
Discovery synthesis
"Components that looked read-only were sometimes actionable. Clinicians were learning module by module which things they could act on."
Cross-team interview finding
Clinical stakes
In a clinical environment, visual inconsistency is not just a UX problem. It causes errors. Mental effort spent decoding the interface is mental effort taken away from the patient.

What the system produced.

The framework wasn't theoretical. It shipped as patient-facing components used across Oracle Health's clinical product suite. Three screens show the system working end to end: the patient context view, the medications list, and the problems list, all governed by the same severity and hierarchy rules.

Patient context view

The patient context view anchors the experience. The center panel surfaces an AI-generated clinical brief: the things a physician needs before walking in the room. The Priority Actions panel on the right translates that information into time-bucketed tasks: what needs to happen today, this week, within two weeks. Information on the left. Context in the center. Action on the right.

Medications list

The medications list applies the severity system directly. Warfarin surfaces as High risk with a red diamond: INR 3.2 supratherapeutic, action needed. Metformin is flagged Non-adherent in amber. Metoprolol carries a Recent change badge. Rows without alerts show a dash. The center column is the severity zone, always the same position, always the same encoding, regardless of which clinician is reading it or which module they're in.

Problems list

The problems list uses the same three-column anatomy. Atrial fibrillation: High risk, anticoagulation ongoing, INR supratherapeutic. Hypertension: Above target, current regimen inadequate. Fall risk: High risk, anticoagulation and polypharmacy. Resolved problems are present but muted, the history is never hidden, just visually subordinate to what's active. The component is the same. The data domain is different.

Five tiers. No exceptions.

Before any component could surface a clinical alert, the team needed a shared definition of what each severity level meant, what behavior it required, and what teams could and could not do with it.

Alert Severity Data Display Guidelines

Five tiers govern every alert across the system. Critical: immediate risk to patient safety, requires action now, not dismissible. Urgent: elevated risk requiring action within the encounter. Advisory: notable condition warranting awareness, timing at clinical discretion. Informational: contextual support, no immediate action required. Ambient: passive context or AI-surfaced insight.

The usage rules are non-negotiable. Critical alerts require explicit acknowledgment before dismissal. Every acknowledgment is logged with full audit metadata. Teams cannot create severity levels outside this system, cannot repurpose severity colors for decorative use, and cannot override the schema-driven tier without logging the change.

This document was the governance artifact teams received before contributing any alert-bearing component. Violations were flagged as governance exceptions, not design preferences.

When to use a list, a card, a table, or a chart, and who decides.

Before building any components, the team needed to answer a core question: what is the right way to show each type of clinical data, and when?

Type When to use it
List Items share membership or sequence but don't need to be compared. Use when presence alone is what matters: problem list, allergy list, surgical history.
Card A discrete entity the clinician might act on or navigate to. Use when identity, priority, or next action is the point: patient summary, active alert, pending order.
Table Values only make sense relative to others in the same set. Use when comparison across rows or columns is the task: lab panel, medication list, order queue.
Chart Data describes change over time or deviation from normal. Use when the pattern matters more than the individual value: vital trend, lab trajectory, glucose over shift.

Every data field was assigned a visibility tier: what data is always shown, shown by default, or available on request. Each assignment required physician sign-off before it was final. Tiers were then mapped across different roles and care settings to set the defaults for shared components.

The role distinction mattered because care is a team effort. A physician reviewing morning labs needs different things than a nurse managing medications for the same patient. Showing both the same data in the same way doesn't serve either of them.

Design principle
Tier assignments weren't left to design instinct. Every one was reviewed by physicians before it was final. Designers proposed; clinicians confirmed or changed.

What teams could configure
and what they couldn't.

Building the right components was the easy part. Getting them actually used was the real job.

The hardest governance decision was drawing the line between what teams could change and what they couldn't. Every request for more flexibility was weighed against one question: would this hurt consistency for clinicians?

Teams could configure
Which columns appeared in tables
Data fields in card secondary rows
Time window for trend charts
Action labels in alert banners
Empty state copy
Teams could not configure
How table headers were styled
Structure and order of the card primary row
Reference range rendering behavior
Alert severity color coding
Component spacing and density defaults

Teams were owners of their data and their copy. The design system team was the owner of the visual and behavioral contract.

Governance documentation example

Every component shipped with anatomy docs, a full state inventory, a configuration guide, and an anti-pattern library with clinical rationale behind each constraint.

On the anti-pattern library
Instead of telling teams they were wrong, we could point to a shared document explaining why a specific approach caused problems for clinicians, grounded in physician input. That is a different conversation than a designer pushing back on a design choice.

Four principles for getting 20+ teams to adopt components they didn't build.

Design system work has a built-in tension. The teams you are asking to adopt new components are the same teams whose work you are replacing.

Pattern audit findings example

Pattern audit findings were shared with teams before any component proposals were made, creating shared ownership of the problem before the design system team had any asks.

01
Framing
Make the problem visible before proposing the solution
The pattern audit was shared with every product team before any component work began, framed as a question rather than a verdict. Every team recognized the problem. Every team had stories about clinician confusion and workarounds that had quietly become permanent. The audit built shared awareness before we had anything to ask of them.
02
Participation
Involve teams in the work, not just the output
Product teams were invited into working sessions during the taxonomy and hierarchy phases. Teams who helped shape the framework were more willing to use it, and they made it better. They surfaced edge cases we would not have found on our own.
03
Adoption cost
Reduce migration cost wherever possible
Every design specification shipped with ready-to-use component code. Migration office hours, step-by-step onboarding, and legacy documentation were all part of the rollout. Any adoption conversation blocked by an engineering concern would just come back later, so it was better to solve it upfront.
04
Leverage point
Governance, not police work
The design system team's influence was at design review, not code review. Teams were responsible for their own adherence. New pattern requests were reviewed before they were built, not after, which kept the relationship with product teams collaborative instead of combative.

Designers proposed.
Clinicians confirmed or corrected.

Physician input did not refine the system at the margins. It changed it substantively.

A physician advisory group from multiple specialties and care settings was part of every phase, not just brought in at the end. No tier assignment, form decision, or behavioral specification was considered stable until at least two physicians with relevant clinical experience had reviewed it. Physicians were in the room from discovery through component review.

PhaseInput soughtWhat changed
DiscoveryConfirmation that observed inconsistencies created real workflow frictionElevated scope from cosmetic to clinical-safety initiative
Data hierarchyTier assignment review for every data field in scope32% of proposed tier assignments were revised
TaxonomyValidation of form-to-context mapping for clinical workflowsChart form scoped more narrowly; card permitted in specific medication workflows
Component reviewEvaluation of prototype components against real clinical tasksAlert banner dismiss redesigned with role-based permissions
Anti-pattern libraryReview of proposed anti-patterns for clinical accuracyThree anti-patterns added based on physician-identified failure modes
Credibility as leverage
Several physician advisors ended up advocating for the design system in conversations where product teams were resistant. A physician explaining why something was clinically necessary carried more weight than a designer making the same case. That credibility wasn't assumed. It was built through the work.

What held, what grew, and what's next.

What worked

Running the audit before proposing anything created shared ownership of the problem. Teams came to us, not the other way around.
Having physicians in every phase meant the work was grounded in clinical reality from the start, not patched in at the end.
Drawing a clear line (content is yours, structure is ours) gave teams real ownership while protecting consistency where it mattered.
The anti-pattern library was the most effective cross-team tool we produced. Written clinical rationale lands differently than verbal pushback.

What's next

Role-based personalization at the component level: the tier framework needs to move from fixed defaults to dynamic configuration as EHR personalization develops.
AI-generated data will introduce new types and formats the governance model needs to handle alongside traditional structured EHR data.
A formal accessibility audit of data presentation components, particularly charts and tables at high density, against WCAG 2.1 AA standards.
Let's talk about your
next big idea.

I'm currently open to new design leadership roles. Whether you're building something ambitious or improving what you already have, I'd love to connect.

Get in touch