Bhutani: replace unsourced values with image-read Stanford nomogram

The previous bhutaniZones table was introduced in the initial
calculator commit (61cf096, 2026-04-09) without any source citation
and was systematically ~0.5-1 mg/dL below the published Bhutani 1999
curves — borderline patients got pushed into the next-higher zone.

New values read directly from the Stanford Medicine Newborn Nursery
reproduction of Bhutani 1999 Figure 2:
  https://med.stanford.edu/newborns/professional-education/jaundice-and-phototherapy/bhutani-nomogram.html

Uncertainty: ±0.3 mg/dL (values eyeballed from a 556 px rendered
graph, not a published table). This is called out explicitly in
both the in-code comment and the Bhutani tab footer, which also
points clinicians to the AAP 2022 tab for actual phototherapy
decisions.

Spot-check: 41h of life, TSB 9.7 mg/dL
  Before: p75=9.33 → High-Intermediate Zone (wrong)
  After:  p75=10.1 → 9.7 below p75, above p40 → Low-Intermediate ✓

No interpolation or decision logic changed — only the lookup data
and its citation.
This commit is contained in:
Daniel 2026-04-14 13:02:26 +02:00
parent 8fefae84a6
commit 40afa70e3c

View file

@ -1571,15 +1571,23 @@
var bc = document.getElementById('bili-chart-container'); if (bc) bc.classList.add('hidden');
});
// Bhutani nomogram zones (approximate hour-specific TSB boundaries)
// High-risk zone: >= 95th percentile
// High-intermediate: 75th-95th
// Low-intermediate: 40th-75th
// Low-risk: < 40th
// Bhutani 1999 hour-specific risk nomogram — 40th / 75th / 95th
// percentile TSB boundaries read from the Stanford Medicine Newborn
// Nursery reproduction of the original Figure 2 (Bhutani VK et al.,
// Pediatrics 1999;103(1):6-14):
// https://med.stanford.edu/newborns/professional-education/jaundice-and-phototherapy/bhutani-nomogram.html
// Uncertainty: ±0.3 mg/dL — source is a rendered graph, not a table.
// For phototherapy / exchange decisions use the AAP 2022 tab (verified).
//
// Zone semantics:
// High-risk: >= 95th percentile
// High-intermediate: 75th-95th
// Low-intermediate: 40th-75th
// Low-risk: < 40th
var bhutaniZones = {
p95: { 24:8.0, 36:10.5, 48:12.5, 60:14.0, 72:15.0, 84:15.5, 96:16.5, 108:17.5, 120:18.0, 132:18.5, 144:19.0 },
p75: { 24:6.0, 36:8.5, 48:10.5, 60:12.0, 72:13.0, 84:13.5, 96:14.0, 108:14.5, 120:15.0, 132:15.5, 144:15.5 },
p40: { 24:4.5, 36:6.5, 48:8.5, 60:10.0, 72:11.0, 84:11.5, 96:12.0, 108:12.0, 120:12.5, 132:12.5, 144:12.5 }
p95: { 24:8.0, 36:11.5, 48:13.0, 60:14.0, 72:15.0, 84:15.5, 96:16.0, 108:16.5, 120:17.0, 132:17.2, 144:17.5 },
p75: { 24:6.5, 36:9.5, 48:11.0, 60:12.0, 72:13.0, 84:13.5, 96:14.0, 108:14.0, 120:14.5, 132:14.5, 144:14.5 },
p40: { 24:4.5, 36:7.0, 48:8.5, 60:9.5, 72:10.5, 84:11.0, 96:11.5, 108:12.0, 120:12.0, 132:12.0, 144:12.0 }
};
document.getElementById('btn-calc-bhutani').addEventListener('click', function() {
@ -1609,7 +1617,7 @@
'<div class="calc-result-item"><div class="calc-result-label">75th %ile</div><div class="calc-result-value" style="font-size:16px;color:#f97316;">' + p75.toFixed(1) + '</div><div class="calc-result-sub">High-intermediate</div></div>' +
'<div class="calc-result-item"><div class="calc-result-label">40th %ile</div><div class="calc-result-value" style="font-size:16px;color:#f59e0b;">' + p40.toFixed(1) + '</div><div class="calc-result-sub">Low-intermediate</div></div>' +
'</div>' +
'<p style="font-size:11px;color:var(--g400);margin:12px 0 0;">Bhutani hour-specific nomogram for infants &ge; 35 weeks GA. Bhutani et al., Pediatrics 1999.</p>';
'<p style="font-size:11px;color:var(--g400);margin:12px 0 0;">Bhutani hour-specific nomogram for infants &ge; 35 weeks GA. Values approximated from the Stanford Medicine Bhutani nomogram (reproduces Bhutani et al., Pediatrics 1999). Uncertainty &plusmn;0.3 mg/dL &mdash; use the AAP 2022 tab for phototherapy decisions.</p>';
// Chart: Bhutani zone curves with patient
renderBiliChart(hours, tsb, [