Clinical patterns

Therapy recommendation

Every other output in this system is information to think with. This one is an instruction to change the body, entered by the person it will change, without a clinician present. It carries the highest per-event hazard of anything documented here.

Stable · v1.0 SteadyLine ISO 14971 IEC 62366-1

Overview

A decision-support tool that is wrong produces a clinician who disagrees with it. A dosing tool that is wrong produces a dose. The gap between those two sentences is the entire subject of this page, and it is why almost every convenience that is correct elsewhere in this system is wrong here.

Pre-filling a field saves a clinician three seconds and is good practice on most forms. On a dose field it converts an act of judgement into an act of confirmation, performed by someone whose blood sugar is 3.1 mmol/L and who is reading at a level well below their usual one — see Lay & patient-facing design.

The rule that carries the risk

No therapy-affecting value is ever pre-filled, pre-selected, or committed in a single gesture. The recommendation, the limit that constrained it, the inputs it assumed and the way to stop all live on one surface — and the stop is reachable without reading anything.

Nothing pre-filled

A recommendation is shown; it is never already entered. Accepting it is a deliberate act distinguishable from tapping through.

Bounded by construction

Values outside the safety envelope are refused, not warned about. A warning that can be dismissed is a limit that does not exist.

Always a way to stop

Stopping is available from every screen, needs no reading, and never asks the person to justify it.

Anatomy

Try to give more than your maximum

Suggested dose

glucose 2 min ago

4 units is suggested for this meal.

Worked out from
Glucose now7.8 mmol/L, steady
Carbohydrate you entered45 g
Insulin still active1.2 units from 11:40
Your ratio1 unit per 12 g
units

Empty until you set it. The most you can give at once is 8 units.

"Use 4 units" fills the field; it does not give the dose. Two deliberate actions, one of which is the one the person would have taken anyway — and the stop is the last thing on the card, always in the same place. Try typing 12, or holding the + key past 8: the field refuses and names the limit, rather than warning you and accepting it anyway.

PartRule
The recommendation Stated in words and figures, at the top. It is a suggestion, and the wording says so.
The assumptions Required. Every input the calculation used, with its age. A person who entered 45 g when they meant 4.5 g can only catch it here.
Active therapy What is already on board. Stacking doses is a common and dangerous error, and the interface is the only thing that can show it.
The entry field Empty. Not zero, not the recommendation, not the last dose.
The bound The maximum, stated before the person types, in the same units. See below.
The stop Present on every screen, in the same position, large, and never disabled.

Why nothing is pre-filled

A pre-filled dose is accepted at a rate close to one. That is not carelessness; it is what pre-filling is for, and it works exactly as designed on every other kind of form.

The safety envelope

Refuse, do not warn

A value outside the safe range is not accepted. It does not produce a dismissible warning, an "are you sure?", or a confirmation with the word override in it. Every one of those is a limit that a frightened or impaired person will pass through, and the population that passes through them is exactly the population the limit exists for.

Where a clinician has set a wider bound for this individual, the wider bound is the envelope. The device does not offer a way to exceed the envelope it was given.

When a limit binds, the limit is named
Suggested dose reduced to 6 units
The calculation suggested 7.5 units. Your maximum for one dose is 6 units, set by your diabetes team on 4 Mar 2026.

The device gives less than it calculated, and says that it did. Silently delivering a constrained amount teaches the person a limit exists only when they eventually notice the numbers do not add up.

Which mode am I in

Where the device also acts on its own between decisions, a second hazard appears that has nothing to do with arithmetic: the person does not know who is in control. Mode confusion is the classic automation failure, and it is a design problem rather than a training one.

Mode stated continuously, with one action back to manual
Automatic insulin is on since 06:40 today

The device is adjusting your background insulin by itself. You still enter doses for meals.

Automatic insulin stopped at 03:22
The sensor stopped reporting, so the device returned to your usual background rate. You are now dosing manually.
Not restarted automatically — you decide when to resume

The stop

The most important control in the product is the one that makes it do nothing. It is designed for a person who is frightened, possibly wrong about why, and not reading.

PropertyRequirement
PositionThe same place on every screen. Motor memory is the only thing that works under panic.
ReadingReachable without reading anything. Its label is a verb and a noun.
AvailabilityNever disabled, never behind a menu, never requiring sign-in.
ConfirmationAt most one, stating the consequence plainly — and biased toward stopping. A mis-tapped stop is recoverable; a mis-tapped dose is not.
JustificationNever requested. Not before, not after.
AftermathWhat is happening now that it has stopped, and what the person should do instead. Stopping is not the end of the interaction.

States

StateRendering
Recommendation available Suggestion, assumptions, active therapy, empty field, bound, stop.
Inputs stale or missing No recommendation. What is missing and how to supply it. Never a hedged suggestion.
Limit binding Constrained value, calculated value, and who set the limit.
Dose in progress Progress shown with the amount, and stoppable mid-delivery, with the amount already delivered stated.
Delivery failed or partial Exactly how much was delivered, stated first. Ambiguity here causes a second dose.
Stopped Unambiguous, persistent, with what is happening instead and how to resume.

Who holds each rule

This is the pattern where a wrong number reaches a body, and it is also the one where the package holds the most: the numeric input was rebuilt around exactly these rules. What it cannot hold is anything about time, mode or what happens after the number is entered.

RuleHeld by Where
Zero is not emptyNumeric input value is number | null and null is never rendered as 0. A rate of zero and an unset rate are opposite instructions.
Asserted: NumericInput: empty stays empty and is never coerced to zero
Out-of-envelope values refused, not warnedNumeric input With kind="setting" a value outside the envelope is never committed. It stays on screen as typed with the refusal beside it.
Asserted: NumericInput: an out-of-envelope setting is not committed
Units are in the accessible name of the valueNumeric input unit is required and sits with the number, so a bare figure is never shown.
Asserted: AX tree: a numeric field's unit is in its accessible name
What is on screen is what was typedNumeric input The draft is held apart from the committed value. This control used to turn 1.5 into 15.
Asserted: NumericInput: typing a decimal produces the decimal
Pressing decrease never raises the doseNumeric input The steppers act on the committed value. With 40 committed and 250 typed and refused, Decrease committed the ceiling — a decrease that more than doubled the setting, found by driving the control in a browser. It now steps down from 40.
Asserted: NumericInput: decrease never raises the committed value
Nothing is rewritten when the field is leftNumeric input No clamping on blur. 250 used to become 99 with nothing said.
Asserted: NumericInput: a refused entry stays on screen as typed
Targets are at least 44 px on this entire pathButton The touch floor is the default size. The smaller tiers exist and are opt-ins; on a therapy path, do not opt in.
Asserted: Button: the documented sizes exist and default to the touch floor
Filling and committing are separate actionsButton A commit is a button, and a pending button refuses a second activation while it names what it is waiting for.
Asserted: Button: pending names what it is waiting for
Mode is text, never colour or an icon aloneStatus chip A chip cannot be rendered without its word, and there is no icon set.
Asserted: StatusChip: the state is a word, not only a colour
A single gesture cannot be interrupted — so a confirmation is not a single gestureDialog The destructive confirm is disabled for a short arming delay, so a press already in flight cannot land on it.
Asserted: Dialog: confirmation is disarmed on appearance, then arms
Reversion is always one action, and it comes firstDialog cancel is required and precedes confirm in reading order.
Asserted: Dialog: cancel precedes confirm in reading order
Never remember the last doseThe implementer Whether the field opens empty or pre-filled is what you pass as value. The component accepts null; it cannot stop you passing yesterday.
No pre-filled or pre-selected therapy valueThe implementer Same row, wider: nothing in a controlled input can refuse an initial value.
Confirmation states the consequenceThe implementer description is a string you write. “Give 6 units — glucose 7.8 at 14:26” and “Confirm dose?” are both expressible.
Never act on stale inputs; refuse on missing inputsThe implementer The component does not know what a glucose is or how old it is. The withholding is your calculation's.
Assumed inputs displayed with their ageThe implementer Key–value can render an age you pass as provenance; it does not compute one.
Bounds are set by a clinician, not by the person dosingThe implementer Who may change min and max is a permissions question — see Safety configuration.
The mode is stated continuously, and every mode change is announcedThe implementer There is no mode component. A chip can show a mode; keeping one on every screen and announcing transitions is your application's.
Automatic exit is an alarm, not a notificationThe implementer Raising an alarm condition is your alarm system's. The banner will render it; nothing here decides that an exit from automation qualifies.
Never silently re-enter automationThe implementer State machine logic, entirely yours.
The stop is the last element in reading order on every screenThe implementer Layout. Nothing here places a control; nothing here can notice it is missing.
Stop is always available, one action, no justificationThe implementer Whether a stop exists on a given screen is whether you put one there.
Never a drag or a long-pressThe implementer There is no slider in this package, which removes the commonest drag. It cannot remove one you add.
Partial delivery states the amount deliveredThe implementer The delivered amount is device state; the renderer shows what it is told.
No timed dismissal anywhereThe implementer The dialog has no timeout. The toast queue does, by design, which is why nothing on a therapy path may be a toast — and only you can keep it off one.
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 24 rules, 10 are held by a component this package ships, and 14 are the implementer’s. Ten of these are held by components, which is more than any other pattern here. The fourteen that are not include every rule about mode, time and the stop — the ones that decide whether a pump keeps running after the person walks away.

Do's and don'ts

Do
units

Empty until the person sets it. Accepting the suggestion is a separate, deliberate act.

Don't
units

Pre-filled. If the carbohydrate entry was wrong by a factor of ten, this dose is delivered without anyone having decided anything.

Do

Suggested dose reduced to 6 units. The calculation suggested 7.5. Your maximum is 6, set by your diabetes team.

The limit bound, and the device said so. The person learns the envelope exists before an emergency teaches them.

Don't

Suggested dose: 6 units

Silently constrained. The arithmetic no longer matches the inputs, and the person will eventually notice and stop trusting the calculation.

Do

No suggestion right now. Your glucose reading is 41 minutes old. Check your sensor, or dose from a finger-prick test.

Withheld rather than caveated, with a route to acting safely anyway.

Don't

Suggested: 4 units (based on an older reading)

A dose computed from data that no longer describes the person, with the caveat in the smallest text on the screen.

Do

Automatic insulin stopped at 03:22 — the sensor stopped reporting. You are dosing manually. Not restarted automatically.

A mode change the device made itself, alarmed rather than notified, with the current state stated plainly.

Don't

(mode icon changes from filled to outline)

A mode change conveyed by a glyph, overnight, to a sleeping person. In the morning they will dose as though automation is still running.

Do

Same place on every screen, large, a verb and a noun, never disabled. Usable without reading the rest of the page.

Don't

Settings → Therapy → Automation → Suspend delivery → confirm → give a reason

Five steps and an interrogation between a frightened person and stopping. They will remove the pump instead, which is worse and unrecorded.

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 · Therapy recommendation · v1.0 · draft for review
Reference applications named in this system are fictional. All doses, ratios, limits and values shown are fabricated and illustrative, and are not clinical guidance.