---
title: "ClinicalStatus"
description: "What a reading means and what, if anything, to do about it."
url: "https://opsinjs.pensievelabs.org/reference/api/ClinicalStatus"
source: "https://opsinjs.pensievelabs.org/reference/api/ClinicalStatus.md"
section: "Reference"
kind: "reference"
reviewed: "2026-09-02"
reviewer: "engineering"
aliases: ["status type", "status union"]
---

> Elements written as `<PascalCase … />` below are opsinjs documentation
> components. Their attributes are the content: the values they render are
> generated from `tokens/*.json` and `registry/catalogue.ts` and are
> published separately at https://opsinjs.pensievelabs.org/r/index.json and under the Reference
> section.
> Nothing is missing from this page. The data simply does not live in
> the prose.

<PageTemplate kind="reference" />

`ClinicalStatus` is the type of the status axis. Anything that renders urgency
takes a value of this type and nothing else, and that means a pill, a banner, a
range or a result card. It is a closed union with four members, and it is closed on purpose: a
system that lets a product add a fifth level has no ordinal scale, and an
alarm-fatigue budget you can extend is not a budget.

## How this is generated [#how-this-is-generated]

**Source:** the published declaration of the `@opsinjs/react` package.
&#x2A;*Script:** `scripts/build-reference.mts`. &#x2A;*Command:** `pnpm run generate`.

The package does not exist yet, so the block below is a **specification**, written
by hand and marked as one. It is here because links point at it and a broken link
is a worse answer than an honest stub. It is not an API, it has not been
implemented, and generating code against it will produce an import that does not
resolve.

```ts
/**
 * SPECIFICATION. Not implemented, not published.
 * The four ordinal clinical status levels, defined in
 * health/clinical-status-semantics.
 */
export type ClinicalStatus = "steady" | "watch" | "attention" | "urgent"
```

The values are ordinal and ordered as written; comparison helpers, if any ship,
will be documented on their own pages rather than added to this union. The
meanings, the tone each level requires, the sentence patterns and the list of
things each level must never be read as are doctrine and live on
[Clinical status semantics](../../health/clinical-status-semantics.mdx). The
reason this type may never be combined with a category on one element is
[The two colour axes](../../health/two-colour-axes.mdx).

{/* opsinjs:generated:begin - everything below is replaced by scripts/build-reference.mts */}

## ClinicalStatus [#clinicalstatus]

What a reading means and what, if anything, to do about it.

Four levels, ordered. This is the ONLY status vocabulary in the system: the documentation chrome's callouts, the product's status pills and the dev warnings all use these four words, so a developer reading a Callout in these docs is reading the same vocabulary they will ship.

A level is assigned by the consuming product from a reference range or a threshold that the product owns. opsinjs never assigns one, because opsinjs does not know the reader.

| Kind | Declared in     |
| ---- | --------------- |
| type | `lib/status.ts` |

```ts
export type ClinicalStatus = (typeof CLINICAL_STATUSES)[number]
```

{/* opsinjs:generated:end */}
