Skip to content

Primus waveform gains are wrong in every recording, for CO₂ or for AWP

Recordings store the Primus waveforms with one of three sets of scale factors. Checked against the Primus's own ETCO₂ and PIP numerics in all 6,388 recordings, CO₂ fits only 0.075 mmHg per code and AWP only 0.1 mbar per code with offset −20, so most recordings overstate CO₂ by a third, and the others overstate AWP by about 3% (950 recordings) or understate it about fourfold (26).

Status established: shown on many cases, with a control.
Devices Primus anaesthesia machine
Variables Capnogram (Primus), Airway pressure (Primus), Primus ETCO₂, PIP and RR

What it means

In most recordings the CO₂ waveform overstates CO₂ by a third (a breath at ETCO₂ 35 mmHg peaks at about 47); in 950 recordings AWP reads about 3% high at typical pressures, and in 26 it reads about a quarter of the true value. Anything computed from these waveforms (end-tidal values, capnogram shape, pressures) inherits the error; the Primus numerics are not affected.

What is done about it

The TimeNet import stores the corrected factors by default (VITALDB_SCALE_FIX=on): CO₂ 0.075, AWP 0.1 / −20; the stored counts are unchanged and the file's factors are kept in the Signal's metadata (scale_stored, scale_correction). The Primus device page lists the corrected factors per configuration. Other readers (the vitaldb package, the raw file) still use the stored factors.

Detail

Whole release (19 October 2026), the waveform's maximum or mean over the 7–10 s before each numeric; the median per recording of numeric ÷ waveform, then its median and 10th–90th percentiles over recordings:

Waveform, stored scale Recordings As stored Rescaled to 0.075 (CO₂) or 0.1 / −20 (AWP)
CO₂ at 0.1 5,392 ETCO₂ 0.748 (0.747–0.750) 0.998 (0.995–1.000)
CO₂ at 0.075 950 ETCO₂ 0.998 (0.996–1.000) (as stored)
AWP at 0.1 / −20 5,077 PIP 0.994 (0.989–1.000) (as stored)
AWP at 0.1064 / −22 910 PIP 0.976 (0.965–0.992) 0.995 (0.990–1.000)
AWP at 0.01 / 0 24 PIP 4.49 (3.23–5.36) 0.995 (0.989–1.000)

0.748 is 0.075 / 0.1. Mean airway pressure agrees in the same way (0.992 to 0.993 after rescaling, in every configuration). The code is tools/numeric_vs_wave.py in vitaldb-bench; the device page lists each configuration with its corrected factors.

Evidence

Study Date Status Summary
Value resolution of every signal 2026-10-19 draft How finely every waveform and numeric track in the release records its values. The SNUADC waveforms are 10-bit codes, though VitalRecorder's documentation describes the SNUADC as 12-bit; Primus waveforms use about 10 bits of 12; BIS EEG is a 16-bit grid of 0.05 µV. Numerics are 32-bit floats on decimal grids of 1, 0.1, 0.01 or 0.001, one per track; settings sit on coarser grids of 10 or 100.

References

  • VitalDB. Vital file format specification (format version 3). VitalDB documentation. Accessed 19 October 2026. ↗

Figures

Two log-count histograms of ratios; left, an orange peak at 0.75 and a blue peak at 1, with the rescaled outline at 1; right, overlapping peaks near 0.97 and 0.99 that move to 1 when rescaled.
Per recording, the median of the Primus numeric divided by the waveform's peak over the 7 s before it. Left: ETCO₂ against CO₂: recordings stored with 0.1 sit at 0.75, those with 0.075 at 1; rescaled to 0.075, all sit at 1. Right: PIP against AWP: 0.1064 / −22 sits about 2.5% low; rescaled to 0.1 / −20, all sit at 1. Ratios below 0.6 are drawn in the first bin.