Clinical patterns

Sign in / sign out

Identity on a workstation twelve people share, in a corridor, mid-shift, with gloves on. Every attributed action in the system — every acknowledgement, every override — depends on this being both correct and fast.

Stable · v1.0 Pattern Attribution WCAG 2.2 AA AcuteLine

Overview

Clinical authentication has an unusual property: the security control and the safety control point in opposite directions. Security wants short sessions and frequent re-authentication. Safety wants a clinician never to be locked out of a patient's data during a resuscitation.

This pattern resolves that by separating reading from attributing. Access to view is protected but generous; the ability to write something into a patient's record with your name on it is protected strictly. Nothing here ever stands between a clinician and information they need to act.

Fast

Sign-in on a shared workstation is measured in seconds and works with gloves. Anything slower gets defeated by shared logins, which destroys attribution entirely.

Unambiguous

Who is signed in is visible at all times, not buried in a menu. A clinician acting under a colleague's session is an attribution failure with clinical consequences.

Never obstructive

No authentication state ever hides clinical information already on screen or blocks an emergency pathway. Locking degrades to read-only, never to blank.

Sign in

Shared workstation sign-in
Sign in to AcuteLine
ED workstation 4 · tap your badge, or sign in below
Caps Lock is on

Emergency access

Break-glass

Every clinical system needs a path for the case where authentication is broken, the directory is unreachable, or the clinician in front of the patient is not the one with an account. The design question is never whether to have it, but how to make it fully available and fully visible.

Emergency access · granted and declared

Locking, not logging out

Idle timeout is where most clinical systems get this wrong. Blanking the screen during a resuscitation is a safety failure; leaving a writable session open in a corridor is a security one. The system does neither.

Locked — readable, not writable
HARLAND, Arthur J.
MRN 44 812 907
Date of birth
1964-03-11 · 61 y
Location
ED · Bay 4
Session locked — viewing only
S. Whitfield's session locked after 10 minutes idle. Clinical data stays visible. Tap a badge to resume, or sign in as someone else.
While lockedBehaviour
Clinical data on screenStays visible. Never blanked, never blurred.
AlarmsFully visible and audible. Locking never suppresses a signal.
Navigation and viewingPermitted — reading is not an attributed action.
Any attributed writeBlocked until identity is re-established.
ResumeBadge tap or credentials. Same user returns to the same context.
Switch userNew identity, and the patient context is re-confirmed.
Why blanking is the wrong default

A blanked screen during an arrest costs seconds that matter, and reliably produces the workaround that defeats the whole control: a shared account nobody logs out of. Read-only locking protects attribution — which is the actual clinical risk — without ever putting a login prompt between a clinician and the information in front of them.

Switching user

The highest-risk transition in this pattern, because the person changes while the patient context does not.

Do
You have an unsaved assessment
S. Whitfield started an assessment on HARLAND, A. It cannot be recorded under your name.

The draft cannot cross an identity boundary without a decision.

Don't
Signed in as A. Bergström
Your previous work has been restored.

Someone else's draft, silently re-attributed. The audit trail now says Bergström wrote something Whitfield wrote.

Showing who is signed in

Who holds each rule

Sign-in is almost entirely behaviour, and almost none of it is a component. What the package can hold is what the screen says while it happens.

RuleHeld by Where
Name and role, never initials, whenever the masthead is given themMasthead user takes a name and a role and renders both. It cannot know whether the session they belong to is still the one at the keyboard.
Asserted: Masthead: the product and the signed-in identity are both named
…at all timesThe implementer user is optional, so a masthead rendered without it shows no one. This row used to hold “at all times” for the component. Passing the signed-in identity on every screen is yours.
Never mask the usernameText field A text field is a text field; only the password control masks. Using one for the identifier is a choice the type makes easy.
Asserted: TextField: the label is bound to the input by id
The audit records both the outgoing and incoming identityEvent log Two entries, two actors, both attributed. The record cannot hold an unattributed switch.
Asserted: EventLog: every entry names an actor, and says whether it was software
The new user re-confirms the patientDialog A confirmation with a way out as well as a way on; the question it asks is yours.
Asserted: Dialog: cancel precedes confirm in reading order
Badge or proximity firstThe implementer Hardware integration.
The workstation identifies itselfThe implementer The masthead can render a workstation name if you pass one. Knowing which workstation this is comes from your deployment.
Caps Lock is surfacedThe implementer A keyboard-state listener you write. The text field does not watch the modifier keys.
Failures state what to doThe implementer The error string is yours; Text field only guarantees it is added to the hint rather than replacing it.
Never denied, never delayed; full access, not degradedThe implementer Authorisation policy. A break-glass path is a feature of your identity provider.
Time-boxed and notifiedThe implementer A timer and a notification. The package has neither for a session.
Unsaved work is never silently carried across identitiesThe implementer The textarea holds no draft state at all — see its table — so the draft that must not cross a user switch is one you are holding somewhere else.
Switching is one action from the locked stateThe implementer Screen flow.
Why this is written down

A pattern page has no component underneath it, so a rule stated here is held by whoever builds against it unless a component already holds it. Of these 12 rules, 4 are held by a component this package ships, and 8 are the implementer’s. Four held, eight not. The rule with the largest consequence — that a draft never crosses an identity boundary — is one the package cannot see, because it holds no drafts.

Do's and don'ts

Do
Session locked — viewing only
Clinical data stays visible. Tap a badge to resume.

Locking degrades to read-only. Nothing is hidden; only attributed writes are suspended.

Don't
Screen locked — sign in to continue

A blanked screen during an arrest. This is what produces the shared account nobody logs out of.

Do

Signed in as S. Whitfield. Draft note for HARLAND, A. found from the previous session.

Claim it   Discard it

The draft is named, its previous owner is implied, and the new user decides. Nothing is adopted silently.

Don't

Signed in as S. Whitfield.

Clinical note: “Patient reports chest pain since …” (unsaved)

The previous user’s half-written note is now in this user’s session, and will be committed under their name.

Accessibility

Outcomes of use

What this contributes to, in the terms of Usability & context of use. These are attributes believed to contribute to an outcome; the outcome itself is settled by observing real use in a specified context, not by this page.

Clinical safety notes

Risk controls this pattern specifies, and what checks each

Trace these in your risk file (ISO 14971) and usability engineering file (IEC 62366-1). Each bullet says what checks it: a component that holds the rule, a test in your verification file, deployment configuration, post-market surveillance, or a design review where no test can see it. A control checked by nothing is a sentence.

NotJustAnyMed.Tech Design System · Sign in / sign out · v1.0 · draft for review
Reference applications named in this system are fictional; all patient data shown is fabricated.