Foundations

Accessibility

An outcome of use, not a checklist. WCAG is the testable floor this system enforces mechanically — the actual requirement is that the widest range of clinicians can do their job, including on the night they are least able to.

Stable · v1.0 WCAG 2.2 AA Framework · ISO 9241-11 IEC 62366-1

Overview

Accessibility is one of the four outcomes that make up human-centred quality: the extent to which a system can be used by people with the widest range of needs, characteristics and capabilities to achieve their goals in their context. That definition is broader than conformance, and the gap between the two is where most clinical software fails.

The gap matters more here than in consumer software for one structural reason: the user population is not self-selecting. A shopper who cannot use a website leaves. A registrar with a red–green deficiency, a consultant with presbyopia and a nurse with a hand injury are all on the rota tonight, and the software is what they have.

Redundant

Every piece of meaning is carried by at least two channels. Anything encoded once — in colour, in position, in sound — is meaning somebody will not receive.

Situational

Capability is a state, not a category. Gloves, glare, one free hand and the twelfth hour of a shift produce the same demands as permanent impairment, in everybody.

Verified

Claims are measured and reproducible. A conformance statement nobody can re-run is an opinion with a version number.

Permanent, temporary, situational

Designing only for permanent impairment underestimates the affected population by an order of magnitude. Each row below has the same interface consequence, so the system does not distinguish them.

CapabilityPermanentTemporarySituational — in this context
VisionLow vision, presbyopiaEye infection, dilated pupils Reading a wall display at 4 m; glare in a bright bay; a darkened reading room
Colour visionDeuteranopia, protanopia Greyscale print in the patient record; a miscalibrated bedside panel
HearingHearing lossEar infection A noisy resuscitation bay; ear protection; alarms competing across four bays
MotorTremor, arthritis, single-handed useFracture, splint Double-gloved; holding an ultrasound probe; a monitor in a moving ambulance
Cognitive / attentionADHD, dyslexiaConcussion, illness Twelfth hour of a night shift; interrupted every ninety seconds; a running arrest
Language Reading a second or third language under time pressure; agency and locum staff
The design consequence

Every rule in this system that looks like an accessibility accommodation is also a night-shift accommodation. Priority words alongside colour help a clinician with a colour vision deficiency and a clinician reading a greyscale printout and a clinician who is simply too tired to discriminate a hue at 3 a.m. That is why they are governed rather than optional.

The testable floor

WCAG 2.2 Level AA is the conformance target, with selected AAA criteria adopted where the clinical case is strong. It is a floor, not the definition — but it is the part that can be measured, so it is the part this system enforces mechanically.

RequirementLevelHow this system meets it
Non-text contrast — controls and stateAA · 1.4.11 --input and --ring gated at ≥ 3:1 against background, card and muted. This is the criterion stock shadcn fails.
Contrast (minimum)AA · 1.4.3 40 token pairs computed in CI, both themes. See Colour.
Use of colourA · 1.4.1 Every alarm priority pairs hue with a distinct glyph and a distinct word. Verified by rendering greyscale.
Focus visible / appearanceAA · 2.4.7, 2.4.13 Governed token. outline: none without replacement fails review.
Target size (minimum)AA · 2.5.8 Exceeded — this system's floor is physical (10 mm, 12 mm gloved), not the 24 px CSS minimum. See Scaling.
Reflow · text spacingAA · 1.4.10, 1.4.12 Operable at 320 px and 200 % zoom with no horizontal scrolling; sticky headers disabled at high zoom.
Status messagesAA · 4.1.3 Alarm priority determines role="alert" versus role="status" inside the component, not at the call site.
Three flashesA · 2.3.1 Flashing is prohibited outright as an urgency signal, not merely rate-limited.
Contrast (enhanced)AAA · 1.4.6 Adopted for body text where achievable; alarm fills sit at AA by necessity and the trade is documented.
Three flashes (no exception)AAA · 2.3.2 Adopted. No exception is available in a clinical display.
Where AAA is not reachable

The IEC 60601-1-8 alarm hues cannot reach 7:1 without ceasing to read as alarm colours. Critical measures 5.64:1 and confirmation 6.07:1 — both AA. This is a deliberate, documented trade between two safety requirements, and it belongs in your accessibility conformance report as such rather than being quietly omitted. See Colour.

Beyond conformance

The criteria above are necessary and nowhere near sufficient. A screen can pass every automated check and still be unusable at 3 a.m. These are the requirements this system adds:

Assistive technology in clinical settings

The mix differs from consumer software and the difference changes priorities.

TechnologyPrevalence hereImplication
OS zoom and magnificationVery common Reflow at 200 % is a daily requirement, not an edge case. Test it first.
OS high-contrast / forced-colours modesCommon Alarm hues must survive forced-colours; never rely on a background image or gradient to carry priority.
Keyboard-only operationCommon Gloved or occupied hands make the pointer slow. Every workflow completes on keyboard.
Screen readersLess common, never zero Still fully supported — and the discipline it imposes (real labels, real tables, live regions) improves the interface for everyone.
Switch access, voiceRare Supported via standard semantics. Never build a custom control where a native one exists.

How it is tested

  1. Automated, every commit. Contrast, token governance, markup integrity, label association, ARIA reference validity. Fast, reproducible — and it finds only the minority of real problems.
  2. Manual, every component. Keyboard traversal, focus order and visibility, greyscale render, 200 % zoom, 320 px reflow, forced-colours mode.
  3. With users, every release. The only method that finds the problems that matter. Recruit for the range in the table above rather than for convenience — and see the validation roadmap for what is not yet done.
Do
Urgent — hs-troponin rising
NSTEMI cannot be excluded.

Hue, glyph and the word "Urgent". Remove any two and the priority still arrives.

Don't
hs-troponin rising
NSTEMI cannot be excluded.

Priority carried by the fill alone. Gone in greyscale, gone in forced-colours, gone for a colour-vision deficiency, gone when printed.

Outcomes of use

What accessibility contributes to, in the terms of Usability & context of use. Accessibility is its own outcome of use, and it also widens the population for whom the other three hold at all.

Do's and don'ts

Do
Critical Urgent
Critical Urgent

Checked in greyscale as routine. The words carry the meaning when the hue cannot.

Don't
. .
. .

Fill only. In greyscale the two priorities are two similar greys, and the printout in the notes carries nothing.

Do
Discard this draft report?
Scrolls internally at high zoom; the action row stays visible.

At 200 % the dialog scrolls inside itself and the actions remain reachable.

Don't
Discard this draft report?
Fixed height — at 200 % zoom the action row falls below the clip.

Fixed height with the actions clipped out of view. The clinician can neither cancel nor confirm.

Clinical safety notes

Risk controls carried by this foundation

Trace these in your risk file (ISO 14971) and usability engineering file (IEC 62366-1). Accessibility failures in clinical software present as use error, not as inconvenience.

NotJustAnyMed.Tech Design System · Accessibility · v1.0 · draft for review