Interpreting Scores
Every panel returns three related numbers. Understanding how they fit together is the difference between noise and signal — Voxtar is built around each patient's own norm, not a population average.
The three values
score — a 0–1 panel severity for this single sample, useful for a quick read. baseline_z — how many standard deviations this sample sits from the patient's own established baseline; this is the number that matters. drift — a categorical bucket derived from baseline_z, summarized below.
Drift bands
| Drift | baseline_z | Meaning |
|---|---|---|
| nominal | |z| < 1.0 | In line with the patient's baseline. No action. |
| watch | 1.0 ≤ |z| < 2.0 | A mild departure. Worth a repeat sample. |
| elevated | 2.0 ≤ |z| < 3.0 | A meaningful departure. Raises a review flag. |
| critical | |z| ≥ 3.0 | A large, unusual departure. Raises an urgent flag. |
Before a baseline exists
The first few enrollment samples build the baseline. Until GET /patients/{id}/baseline reports ready, analyses still return score and raw features, but drift is insufficient_baseline and no flags are raised.
Acting on flags
Flags roll drift into an actionable severity you can route on:
for (const flag of analysis.flags) {if (flag.severity === "urgent") escalate(flag);else if (flag.severity === "review") queueForClinician(flag);}
These are screening and monitoring signals to support triage — not a diagnosis. Keep a clinician in the loop for any flagged result.