Clinical timeline
A trend chart shows one quantity changing. A timeline shows unlike things happening — a dose, an observation, a phone call, a transfer — and its central problem is that the spaces between them look like calm and are actually the absence of a record.
A gap means nothing was recorded. It does not mean nothing happened, and a timeline that does not say so is asserting the difference away.
And: recorded time and event time are different quantities. A timeline plots one of them and must say which.
What this is, and what it is not
Trend over time handles one measurement repeated: same units, same method, an axis with a meaning. Everything on it is comparable to everything else on it, which is what makes a line legitimate.
A timeline has none of that. Its items are heterogeneous, its density is set by how busy the ward was rather than by the patient, and there is no quantity on the vertical axis at all. It is a reading surface, not a measurement surface, and almost every visual convention borrowed from charting is wrong on it — starting with the line connecting the points, which asserts continuity between a blood test and a ward round.
It is also the source material for Composed output: a handover brief is a timeline flattened into prose, and every failure below survives that flattening in a less visible form.
The gap problem
Six hours with nothing on the timeline can mean the patient was stable and unremarkable, or that observations were due and not taken, or that a device was disconnected, or that the ward was short-staffed, or that the feed from another system was down. These are wildly different clinical situations and they render identically as empty space.
A timeline cannot resolve them. What it can do is stop presenting the ambiguity as information:
- 21:00 Observations recorded — NEWS 3 K. Osei, nurse
- 21:00 – 02:15 No entries. Observations were due at 01:00 and are not recorded. 5 h 15 min
- 02:15 Pain score 7 recorded K. Osei, nurse
- 02:15 – 06:30 No entries. Nothing was scheduled in this period. 4 h 15 min
The two gaps look the same and are not the same. The first is a missing observation, which is a fact about the record and possibly about the care. The second is an ordinary quiet night. A timeline that can distinguish them — because it knows what was scheduled — owes the reader that distinction, and one that cannot should say so rather than let the blank space imply the reassuring reading.
This is the Key–value pair discipline applied to a duration: not-recorded and nothing-happened are different states, and collapsing them is the system claiming knowledge it does not have.
Two times, and only one of them is on the axis
Every entry has at least two timestamps: when the thing happened, and when somebody wrote it down. In a busy shift these differ by minutes routinely and by hours often — notes are written at the end, a verbal result is entered when someone gets to a terminal, a drug given at 02:40 is charted at 03:20.
- The timeline plots event time and says so, because event time is what clinical reasoning is about. If only recorded time is available for an entry, that entry is marked as positioned by recorded time — not silently placed as though it were the same thing.
- A large gap between the two is shown on the entry, because it changes how much weight the entry carries. A pain score entered four hours later is a recollection.
- Retrospective entries are visible as retrospective. An entry that appeared in the record after a later entry did is a normal, honest occurrence and an important one: it means a reader who looked earlier did not see it.
- Nothing is ever back-dated invisibly. If an event time is corrected, the correction is an event in its own right, per Authorship & the record.
Order is not always known
Two entries stamped 02:15 have no established order. Rendering them stacked puts one above the other and the reader will read that as sequence, because a vertical list is a sequence everywhere else in the interface.
So: entries within the resolution of their timestamps are shown as simultaneous — grouped under one time, not listed as though ordered. Where sequence actually matters clinically and is genuinely unknown, the timeline says it is unknown rather than picking the order that arrived first from the database, which is an artefact of the query.
The one case where order is known without timestamps supporting it is an explicitly recorded causal relation — a drug given in response to an observation. That is a stated link, not an inference from adjacency, and adjacency is never used to imply it.
Compression is lossy, and says so
A week of an admission does not fit on a screen, so a timeline compresses, and compression drops things. The rule is not that it must not; it is that it must never do so silently.
- A compressed position states its count — "6 entries" — rather than rendering the ones that fit. A reader looking at three marks believes there were three.
- Compression is never selective by importance. A timeline that keeps "significant" events and drops routine ones has applied a clinical judgement, using a rule that is not visible and was not validated. Compress by time, or not at all.
- Zoom states its window. The visible period is written out, because the difference between "quiet" and "you are looking at forty minutes" is the entire interpretation.
- Filtering is not compression. If the reader has filtered to medication events, the timeline says what is hidden and how much, per Filter — a filtered timeline that looks like a complete one is the same defect as a truncated worklist.
What the timeline can see
A timeline drawn from three of a hospital's seven systems looks exactly like a timeline drawn from all seven. So it declares its sources and its period, in the same terms and for the same reason as Composed output: the reader cannot detect an absent source by looking harder at what is present.
Drawn from: observations, medication administration,
results, clinical notes · 15 Aug 08:00 – 17 Aug 06:30.
Not included: theatre record — system unreachable at 06:41.
Retry
States
| State | Rendering |
|---|---|
| Populated | Entries at event time, gaps stated, sources and period declared. |
| Gap with an expectation | "No entries. Observations were due at 01:00." A fact about the record, stated neutrally — it is not an alarm and does not become one here. |
| Gap with no expectation | "No entries. Nothing was scheduled." Distinguished from the above, because the reassuring reading is only available for one of them. |
| Source unreachable | Named, with the period it would have covered, and a retry. Never omitted quietly, which would render as an unusually calm admission. |
| Compressed | Counts at each position, and the visible window written out. |
| Empty | An Empty state that proves it looked: which sources, which period, and that both returned nothing. |
| Still loading a source | The timeline is not shown as complete while a source is outstanding. A partial timeline presented as whole is worse than a wait. |
Who holds each rule
A timeline is a list before it is a graphic, and the list is now something the package ships. The graphic is not.
| Rule | Held by | Where |
|---|---|---|
| The timeline is a list before it is a graphic | Event log | An ordered list with its order stated, which is what a screen reader receives whatever is drawn beside it. Asserted: EventLog: the order is stated and the list is ordered markup |
| Nothing is ever back-dated invisibly; retrospective entries are visible as retrospective | Event log | An entry cannot be edited into an earlier position. A correction is a new entry that says what it corrects. Asserted: EventLog: a superseded entry stays, and says it was superseded |
| A compressed position states its count | Event log | A view showing part of the record says how much it is not showing. Asserted: EventLog: a shortened view says how much of the record it is showing |
| The count at a compressed position is exact | Badge | A badge cannot be capped, so “12 events” cannot become “9+”. Asserted: Badge: an exact count, never capped |
| Filtering is not compression, and says what it hides | Filter | A filtered timeline states how many entries the filter is hiding. Asserted: FilterBar: what is hidden is counted on screen |
| The timeline plots event time and says so; a large gap between the two is shown | The implementer | The log renders one time per entry. Plotting event time rather than record time, and showing the gap, is your chart. |
| Compression is never selective by importance | The implementer | Your compression algorithm. |
| Zoom states its window | The implementer | Viewer state, rendered as a string you compose. |
| Gaps are list items, not empty space | The implementer | A gap is an entry you write into the list. The log will render it; it will not notice one is missing. |
| Entry type is not carried by the marker alone | The implementer | The marker is drawn by you. The log carries the type in words if you put it in the action. |
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 10 rules, 5 are held by a component this package ships, and 5 are the implementer’s. Five held, five not. The list half of a timeline is now trustworthy by construction; the graphic half is entirely yours.
Do's and don'ts
21:00 – 02:15 · No entries. Observations were due at 01:00 and are not recorded.
The gap is a statement about the record. The reader can act on it — which is impossible when it is white space.
21:00 · · · 02:15
Five hours of empty track. It reads as an uneventful night and is equally consistent with observations nobody took.
02:40 · Analgesia given — charted 03:20
Placed at event time, with the recording delay visible so the reader can weight it.
03:20 · Analgesia given
Plots when someone reached a keyboard. The forty-minute error lands in exactly the reasoning — did the pain score precede the dose? — that the timeline exists to support.
02:15 · 2 entries, order not recorded
Pain score 7 · Antiemetic given
Groups what is simultaneous as simultaneous. The reader is not handed a sequence the data does not contain.
02:15 · Antiemetic given
02:15 · Pain score 7
A vertical list is a sequence everywhere else on screen. This one is database return order, and it reads as the drug preceding the assessment.
14:00 · 6 entries — zoom to
separate
Showing 15 Aug 08:00 – 17 Aug
06:30
Compression declares what it absorbed, and the window is written out rather than inferred from tick spacing.
14:00 · Three marks, evenly spaced.
There were six. The reader counts what is drawn, and half the afternoon has been dropped by a layout algorithm.
Accessibility
- The timeline is a list before it is a graphic. An ordered list of entries with times and text, navigable by keyboard and by screen reader, is the primary representation; the visual track is a rendering of it. Nothing is available only in the drawing.
- Gaps are list items, not empty space. White space is not announced. A gap that matters clinically has to be an element with words in it, which is why they are entries above rather than a background treatment.
- Entry type is not carried by the marker alone — SC 1.4.1. The dot colour is redundant with the text; the gap marker is hollow and dashed rather than a different colour, so it reads as an absence in greyscale too.
- Zoom and pan have single-pointer equivalents with the window stated as a number — see Touch & gestures.
- Time is announced in full, not as "5h ago" alone. Relative time is a convenience layered on an absolute value, per Date & time picker.
- Nothing depends on horizontal scrolling to be discovered. A timeline that continues off-screen says so and how far, per Grid.
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.
- Effectiveness — a reader's belief about what happened overnight matches what the record can support. The specific error being prevented is reading absence as stability, which is the most consequential thing a timeline can be misread to say.
- Efficiency — the reconstruction that a clinician otherwise does by opening four systems and holding the ordering in their head.
- Satisfaction — a surface that admits what it cannot see. A timeline silently missing the theatre record is discovered exactly once, and never trusted afterwards.
Clinical safety notes
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.
- Gaps are stated, and distinguished by whether something was expected. (a test in your verification file) Mitigates: absence of record read as absence of event, and a missed observation rendered as a quiet night.
- Entries are placed at event time, with recording delay shown. (held by Event log) Mitigates: a reconstructed sequence built from when people reached a keyboard.
- Simultaneous entries are grouped, not stacked. (a test in your verification file) Mitigates: database return order read as clinical sequence.
- Adjacency never implies causation. (design review; no test can see it) Mitigates: an inferred response-to-event relationship that nobody recorded.
- Compression states counts and is never selective by importance. (held by Event log) Mitigates: an unvalidated relevance rule silently deciding what a clinician sees.
- Sources and period are declared; an unreachable source is named. (a test in your verification file) Mitigates: a partial timeline indistinguishable from a complete one.
- A timeline with an outstanding source is not shown as complete. (a test in your verification file) Mitigates: a decision taken on a view that was still filling in.
Related
- Trend over time — one quantity repeated, where a connecting line is legitimate.
- Composed output — the same timeline flattened into prose, and the same declaration of what was not carried.
- Key–value pair — not-recorded as a state distinct from nothing-to-record.
- Date & time picker — where the times on a timeline come from, and how precise they actually are.
- Pending & unreviewed work — the other place this system refuses to let an absence render as calm.
- NightBrief — the reference application, and the reader who was not present.