Skip to content

Rounding and heaping of intraoperative crystalloid

Recorded intraoperative crystalloid is a mixture of 3 rounding modes (100 mL, 50 mL, 10 mL (base)); the model gives the true value's distribution for each record.

Date 2026-10-18
Status current
Methods Rounding, heaping and value resolution
Variables Intraoperative crystalloid

Background

  • Crystalloid volume (intraop_crystalloid) is a hand-entered intraoperative total.
  • The first screen found 98% of values on multiples of 50 mL, which suggested bag sizes plus partial bags.
  • In the end it is the simplest value variable so far.

Data

  • 5,980 values; 408 missing (short cases, median 1.7 h against 3.1 h); no zeros; maximum 23,800 mL.
  • Only 6 values are off the 10 mL grid, so the resolution is 10 mL.
  • The fit uses 5,974 values on the 10 mL grid.

Method

  • Log-spline latent with K = 6.
  • Constant 100 and 50 mL propensities were compared with volume-dependent ones.
  • 500 and 1,000 mL bag-size modes were added and tested.

Results

Spike histogram of recorded values with model predictions overlaid; spikes on round numbers.
Every recorded value (blue lines) against what the fitted model predicts (orange dots): its rounding rules applied to its true-value density. Heaps on round numbers are the rounding modes.
  • Values are written to the nearest 100 mL about half the time and to the nearest 50 mL the other half, the same at every volume.
  • Volume-dependent propensities fit no better than constant ones (BIC 47,384 against 47,374).
  • Bag-size modes do not help (BIC 47,416). There is no special heaping at bag sizes.
  • A recorded multiple of 100 mL is uncertain by about ±50 mL; any other multiple of 50 by about ±25 mL.
  • Since vitaldb-resolution v0.6.0 (18 October; model version 2): anaesthesia duration is a covariate of the latent volume (BIC better by 6,254). Department on the rounding propensities made the fit worse (BIC +22) and is not used. Rounding to the nearest anchor beats floor rounding by BIC.

Discussion

  • Crystalloid volume is very strongly tied to case duration (Spearman 0.82).
  • Conditioning the latent on duration narrows the posteriors considerably; model version 2 does so (see results).

Model

Model file: …/models/intraop_crystalloid.model.json. Read from the pinned snapshot of vitaldb-resolution at commit bb03ddfc8a (2026-10-18).

How a true value becomes the recorded one. The rules are tried in order: a record not taken by an earlier rule is taken by this one with the probability shown (where its condition holds); the last rule takes the rest. With no conditions, the shares follow directly.

Order Rule Rounds to Probability if reached Share of records
1 100 mL 100 mL (nearest) 47.8 % 47.8 %
2 50 mL 50 mL (nearest) 96.1 % 50.1 %
3 10 mL (base) 10 mL (nearest) the rest 2.1 %
Recorded resolution 1 (modelled at 10)
True-value density log_spline
Fitted on 5,863 records (VitalDB clinical_data.csv (intraop_crystalloid), positive values on the 10 mL grid with a usable anaesthesia duration)
BIC 40,379
Fitted 2026-10-18
  • Only 6 of 5,980 values are not multiples of 10; flagged off_grid.

Worked examples

Example Side Status Summary
Intraoperative fluid balance as a distribution value draft Fluids in minus fluids out, each a heaped charted volume, as a distribution per case: the recording alone makes a balance uncertain by about ±60 mL, and by ±190 mL when the blood loss was written as a round 500 mL.

Code

Tags: generated, vitaldb-resolution