Observation table
Shows observations over time as a flowsheet, with the band each value was given, its change since the value before, and a total for each round.
| Observation | Yesterday | Today | |||||
|---|---|---|---|---|---|---|---|
| Respiratory ratebreaths/min | Respiratory rate, 16 breaths/min, Within the synthetic range, Tuesday 22 September 2026, 02:00 | Respiratory rate, 23 breaths/min, Synthetic level 1, Tuesday 22 September 2026, 06:00, up 7 since 02:00 | Respiratory rate, 24 breaths/min, Synthetic level 1, Tuesday 22 September 2026, 10:00, up 1 since 06:00 | Respiratory rate, 20 breaths/min, Within the synthetic range, Tuesday 22 September 2026, 14:00, down 4 since 10:00 | Respiratory rate, 17 breaths/min, Within the synthetic range, Tuesday 22 September 2026, 22:00, down 3 since 14:00 | Respiratory rate, 16 breaths/min, Within the synthetic range, Wednesday 23 September 2026, 06:00, down 1 since Yesterday 22:00 | Respiratory rate, 16 breaths/min, Within the synthetic range, Wednesday 23 September 2026, 10:00, no change since 06:00 |
| SpO₂% | SpO₂, 97 %, Within the synthetic range, Tuesday 22 September 2026, 02:00 | SpO₂, 92 %, Synthetic level 1, Tuesday 22 September 2026, 06:00, down 5 since 02:00 | SpO₂, 93 %, Synthetic level 1, Tuesday 22 September 2026, 10:00, up 1 since 06:00 | SpO₂, 95 %, Within the synthetic range, Tuesday 22 September 2026, 14:00, up 2 since 10:00 | SpO₂, 96 %, Within the synthetic range, Tuesday 22 September 2026, 22:00, up 1 since 14:00 | SpO₂, 97 %, Within the synthetic range, Wednesday 23 September 2026, 06:00, up 1 since Yesterday 22:00 | SpO₂, 97 %, Within the synthetic range, Wednesday 23 September 2026, 10:00, no change since 06:00 |
| Oxygen flowL/min | Oxygen flow, 2 L/min, Synthetic level 1, Tuesday 22 September 2026, 06:00 | Oxygen flow, 4 L/min, Synthetic level 2, Tuesday 22 September 2026, 10:00, up 2 since 06:00 | Oxygen flow, 2 L/min, Synthetic level 1, Tuesday 22 September 2026, 14:00, down 2 since 10:00 | ||||
| Heart ratebeats/min | Heart rate, 84 beats/min, Within the synthetic range, Tuesday 22 September 2026, 02:00 | Heart rate, 108 beats/min, Synthetic level 1, Tuesday 22 September 2026, 06:00, up 24 since 02:00 | Heart rate, 114 beats/min, Synthetic level 1, Tuesday 22 September 2026, 10:00, up 6 since 06:00 | Heart rate, 96 beats/min, Within the synthetic range, Tuesday 22 September 2026, 14:00, down 18 since 10:00 | Heart rate, 86 beats/min, Within the synthetic range, Tuesday 22 September 2026, 22:00, down 10 since 14:00 | Heart rate, 80 beats/min, Within the synthetic range, Wednesday 23 September 2026, 06:00, down 6 since Yesterday 22:00 | Heart rate, 79 beats/min, Within the synthetic range, Wednesday 23 September 2026, 10:00, down 1 since 06:00 |
| Systolic blood pressuremmHg | Systolic blood pressure, 126 mmHg, Within the synthetic range, Tuesday 22 September 2026, 02:00 | Systolic blood pressure, 112 mmHg, Within the synthetic range, Tuesday 22 September 2026, 06:00, down 14 since 02:00 | Systolic blood pressure, 106 mmHg, Within the synthetic range, Tuesday 22 September 2026, 10:00, down 6 since 06:00 | Systolic blood pressure, 118 mmHg, Within the synthetic range, Tuesday 22 September 2026, 14:00, up 12 since 10:00 | Systolic blood pressure, 124 mmHg, Within the synthetic range, Tuesday 22 September 2026, 22:00, up 6 since 14:00 | Systolic blood pressure, 129 mmHg, Within the synthetic range, Wednesday 23 September 2026, 06:00, up 5 since Yesterday 22:00 | Systolic blood pressure, 127 mmHg, Within the synthetic range, Wednesday 23 September 2026, 10:00, down 2 since 06:00 |
| Diastolic blood pressuremmHg | Diastolic blood pressure, 78 mmHg, Within the synthetic range, Tuesday 22 September 2026, 02:01 | Diastolic blood pressure, 68 mmHg, Within the synthetic range, Tuesday 22 September 2026, 06:01, down 10 since 02:01 | Diastolic blood pressure, 64 mmHg, Within the synthetic range, Tuesday 22 September 2026, 10:01, down 4 since 06:01 | Diastolic blood pressure, 70 mmHg, Within the synthetic range, Tuesday 22 September 2026, 14:01, up 6 since 10:01 | Diastolic blood pressure, 76 mmHg, Within the synthetic range, Tuesday 22 September 2026, 22:01, up 6 since 14:01 | Diastolic blood pressure, 79 mmHg, Within the synthetic range, Wednesday 23 September 2026, 06:01, up 3 since Yesterday 22:01 | Diastolic blood pressure, 78 mmHg, Within the synthetic range, Wednesday 23 September 2026, 10:01, down 1 since 06:01 |
| Temperature°C | Temperature, 37.1 °C, Within the synthetic range, Tuesday 22 September 2026, 02:01 | Temperature, 38.3 °C, Synthetic level 2, Tuesday 22 September 2026, 06:01, up 1.2 since 02:01 | Temperature, 38.6 °C, Synthetic level 2, Tuesday 22 September 2026, 10:01, up 0.3 since 06:01 | Temperature, 37.6 °C, Within the synthetic range, Tuesday 22 September 2026, 14:01, down 1 since 10:01 | Temperature, Not recorded, Tuesday 22 September 2026, 22:01 | Temperature, 36.9 °C, Within the synthetic range, Wednesday 23 September 2026, 06:01, down 0.7 since Yesterday 14:01 | Temperature, 36.8 °C, Within the synthetic range, Wednesday 23 September 2026, 10:01, down 0.1 since 06:01 |
| Glasgow Coma Scale | Glasgow Coma Scale, 15, Within the synthetic range, Tuesday 22 September 2026, 02:01 | Glasgow Coma Scale, 15, Within the synthetic range, Tuesday 22 September 2026, 06:01, no change since 02:01 | Glasgow Coma Scale, 14, Synthetic level 1, Tuesday 22 September 2026, 10:01, down 1 since 06:01 | Glasgow Coma Scale, 15, Within the synthetic range, Tuesday 22 September 2026, 14:01, up 1 since 10:01 | Glasgow Coma Scale, 15, Within the synthetic range, Tuesday 22 September 2026, 22:01, no change since 14:01 | Glasgow Coma Scale, 15, Within the synthetic range, Wednesday 23 September 2026, 06:01, no change since Yesterday 22:01 | Glasgow Coma Scale, 15, Within the synthetic range, Wednesday 23 September 2026, 10:01, no change since 06:01 |
| Synthetic total score | Synthetic total score 0, Within the synthetic range | Synthetic total score 6, Synthetic level 3, Respiratory rate 1, SpO₂ 1, Oxygen flow 1, Heart rate 1, Temperature 2 | Synthetic total score 8, Synthetic level 3, Respiratory rate 1, SpO₂ 1, Oxygen flow 2, Heart rate 1, Temperature 2, Glasgow Coma Scale 1 | Synthetic total score 1, Synthetic level 1, Oxygen flow 1 | Synthetic total score: Incomplete, Missing: Temperature | Synthetic total score 0, Within the synthetic range | Synthetic total score 0, Within the synthetic range |
Synthetic data. The bands, scores and total are arbitrary and are not clinical thresholds.
Use it for
- Reviewing a patient's observations over hours or days, round by round.
- The rows beside an observation chart: the same values, readable by a screen reader.
- Showing a total score for each round, such as an early warning score, that an observation schema defines.
Do not use it for
- A list of records to sort, filter or select. Use the Data table.
- A trend at a glance. A chart shows the shape of a series better. Offer the table beside it.
- Working out a band or a score. The table shows the bands and totals it is given. They come from an observation schema you choose, as Clinical safety explains.
Apply a schema before you show the table
The table holds no threshold. An observation schema says which band each value is in and what each band scores, and applyObservationSchema and scoreRounds in @cadence-clinical/core apply it before the table sees the data. Cadence ships no clinical schema: yours comes from your organisation, or from a Region package that cites its source. Code shows the steps.
Read a round down its column
A set of vital signs is recorded over a minute or two, and each value carries its own time. The table puts readings taken within five minutes of a round's first reading in one column, headed by that first time. The newest round is on the right, and the table opens there.
When a round has two values for one row, such as a heart rate from a monitor and one counted by hand, the cell shows both. Neither is dropped.
Show every band in words as well as colour
A value in a band has four signs of it: a fill and an edge from the fixed severity scale, the level's short label in a box before the value, and bold figures. Its tooltip and a screen reader give the level in words. Keep each level's short label to a character or two, such as 2, so it reads apart from the number.
Trust Incomplete over a number
A total is shown only when every observation the schema requires is in the round. When one is missing, the cell says Incomplete and its tooltip names what is missing. The sum of what is there would read lower than the round is, so it is never shown.
A schema can say that one observation at a level, such as an emergency level, raises the round whatever the sum. That round shows the raised level even when it is incomplete.
Look at what the schema could not judge
A value with a dashed edge and a question mark is one the schema could not place in a band. Its tooltip says why:
- Another unit. The value shows its own unit, and is never compared with bands written in another.
- A bound, such as less than 95, that could be in more than one band.
- An answer the schema does not list. Answers are matched exactly, never guessed.
- Outside every band the schema has.
A value that was not recorded says Not recorded, rather than leaving the cell empty.
Name rows by their short names in a dense view
Rows are named by the short names a schema gives, such as RR for respiratory rate, unless you set labelStyle to "full". A short name shows its full name on hover, and a screen reader reads the full name rather than the letters. Use the short names your organisation already uses. Medicines are never abbreviated: the national guidelines for showing medicines on screen do not allow it.
Hide rows, not rounds
The Rows menu shows and hides rows, including the total. Hiding a row never moves a column, so a round stays in the same place.
Accessibility
- Give the table a
label, such as "Vital signs". It names the table and its scrolling region. - Tell people the arrow keys work. The values are one stop for the Tab key, and the arrow keys, Home and End move between them, each showing its tooltip.
Form
A group of fields with one error summary. A failed attempt to send lists every problem at the top, each linked to its field, and moves focus there.
Observation table examples
Vital signs with a total, two values in one round, values the schema could not judge, hidden rows and an empty period, each with its code.