Ships the AAP 2022 phototherapy/exchange nomograms, the Bhutani 1999
risk zones, and the Fenton 2013 preterm weight-for-GA chart as real
React calculators. These were the high-risk "table-driven" ports the
migration checkpoint flagged as needing captured vectors before
landing — the whole vector-capture workflow now exists and can be
reused for BP / BMI / growth-beyond-Fenton next.
Workflow, so future calculator ports have a template:
scripts/capture-calc-vectors.js
Standalone Node script. Data tables + math inlined VERBATIM from
public/js/calculators.js (no rewriting, no reformatting). Picks 83
carefully chosen test cases — edge-of-domain, table-key-exact,
interpolated-between-keys, and clinical-decision-boundary values —
and emits e2e/fixtures/calc-vectors.json with
{ inputs, output } pairs produced by the authoritative math.
e2e/fixtures/calc-vectors.json
12 Bhutani cases, 58 AAP 2022 cases, 13 Fenton cases. Re-run
capture-calc-vectors.js whenever the vanilla file changes.
shared/clinical/bilirubin.ts
• 17 HourTable constants ported byte-for-byte from calculators.js
lines 1489-1512: photo 35w/36w/37w/38w/39w/40+ (low risk) +
35w/36w/37w/38+ (medium risk), same 8 for exchange.
• Bhutani zones (p95/p75/p40) from lines 1644-1651.
• interpolateThreshold helper (lines 1514-1525).
• classifyBhutani + classifyAapBili functions mirror the vanilla
click-handler logic.
shared/clinical/fenton.ts
• 15-week × 2-sex LMS table from lines 1168-1183 preserved entry-
for-entry.
• interpolateLMS + calcZ + zToPercentile (Abramowitz & Stegun
normal CDF, lines 2299-2326) ported byte-for-byte.
• fentonWeightForAge returns { L, M, S, z, percentile };
classifySizeForAge labels SGA/<10 / AGA / LGA/>90.
shared/clinical/bilirubin.test.ts + fenton.test.ts
Vitest suites that import e2e/fixtures/calc-vectors.json and assert
classifyBhutani / classifyAapBili / fentonWeightForAge match
every captured vector to 10 decimal places for threshold values
and 6 decimals for the Fenton M (grams, so 6 is >= 1e-3 g).
All 102 tests pass locally (19 prior + 70 bili + 13 Fenton).
client/src/pages/Calculators.tsx
• BiliPanel with AAP 2022 / Bhutani mode switch, GA + risk-factor
dropdowns, color-coded status / zone badges, both threshold
pairs surfaced in the result grid.
• GrowthPanel runs Fenton with sex + GA + weight inputs, emits
Z-score, percentile, L/M/S reference, and SGA/AGA/LGA label.
• PILLS flags bili + growth as ported: true; ActivePanel routes to
the new components. BP / BMI / vitals / resus / equipment
remain legacy-linked until their own vectors land.
e2e/tests/calculators-react.spec.js
Three new parity tests covering above-phototherapy/above-exchange
transitions (38w 72h TSB 20 → phototherapy; TSB 26 → exchange),
Bhutani high-risk classification at 36h TSB 13, and Fenton 32w
male 1795g landing exactly at 50th percentile AGA.
Backend tsc + client tsc + vite build + vitest (102/102) all green.
Bundle 619 kB / 178 kB gz (+10 kB for the bili tables).
1173 lines
No EOL
24 KiB
JSON
1173 lines
No EOL
24 KiB
JSON
{
|
|
"generatedAt": "2026-04-23T23:44:54.613Z",
|
|
"source": "public/js/calculators.js",
|
|
"bhutani": [
|
|
{
|
|
"name": "Bhutani low-end (6h)",
|
|
"inputs": {
|
|
"hours": 6,
|
|
"tsb": 5
|
|
},
|
|
"output": {
|
|
"p95": 6,
|
|
"p75": 4.5,
|
|
"p40": 3,
|
|
"zone": "High-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani high-end (120h)",
|
|
"inputs": {
|
|
"hours": 120,
|
|
"tsb": 18
|
|
},
|
|
"output": {
|
|
"p95": 19,
|
|
"p75": 16,
|
|
"p40": 13.2,
|
|
"zone": "High-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani exactly p95 at 24h",
|
|
"inputs": {
|
|
"hours": 24,
|
|
"tsb": 9.6
|
|
},
|
|
"output": {
|
|
"p95": 9.6,
|
|
"p75": 7.8,
|
|
"p40": 6.2,
|
|
"zone": "High-Risk"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani exactly p75 at 24h",
|
|
"inputs": {
|
|
"hours": 24,
|
|
"tsb": 7.8
|
|
},
|
|
"output": {
|
|
"p95": 9.6,
|
|
"p75": 7.8,
|
|
"p40": 6.2,
|
|
"zone": "High-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani exactly p40 at 24h",
|
|
"inputs": {
|
|
"hours": 24,
|
|
"tsb": 6.2
|
|
},
|
|
"output": {
|
|
"p95": 9.6,
|
|
"p75": 7.8,
|
|
"p40": 6.2,
|
|
"zone": "Low-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani interpolated 27h",
|
|
"inputs": {
|
|
"hours": 27,
|
|
"tsb": 9
|
|
},
|
|
"output": {
|
|
"p95": 10.399999999999999,
|
|
"p75": 8.5,
|
|
"p40": 6.7,
|
|
"zone": "High-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani interpolated 45h",
|
|
"inputs": {
|
|
"hours": 45,
|
|
"tsb": 13
|
|
},
|
|
"output": {
|
|
"p95": 14.3,
|
|
"p75": 12.1,
|
|
"p40": 9.6,
|
|
"zone": "High-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani interpolated 78h",
|
|
"inputs": {
|
|
"hours": 78,
|
|
"tsb": 16
|
|
},
|
|
"output": {
|
|
"p95": 17.7,
|
|
"p75": 15.2,
|
|
"p40": 12.399999999999999,
|
|
"zone": "High-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani low-risk 36h",
|
|
"inputs": {
|
|
"hours": 36,
|
|
"tsb": 7
|
|
},
|
|
"output": {
|
|
"p95": 12.8,
|
|
"p75": 10.6,
|
|
"p40": 8.4,
|
|
"zone": "Low-Risk"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani low-intermediate 36h",
|
|
"inputs": {
|
|
"hours": 36,
|
|
"tsb": 9
|
|
},
|
|
"output": {
|
|
"p95": 12.8,
|
|
"p75": 10.6,
|
|
"p40": 8.4,
|
|
"zone": "Low-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani high-intermediate 36h",
|
|
"inputs": {
|
|
"hours": 36,
|
|
"tsb": 11
|
|
},
|
|
"output": {
|
|
"p95": 12.8,
|
|
"p75": 10.6,
|
|
"p40": 8.4,
|
|
"zone": "High-Intermediate"
|
|
}
|
|
},
|
|
{
|
|
"name": "Bhutani high-risk 36h",
|
|
"inputs": {
|
|
"hours": 36,
|
|
"tsb": 15
|
|
},
|
|
"output": {
|
|
"p95": 12.8,
|
|
"p75": 10.6,
|
|
"p40": 8.4,
|
|
"zone": "High-Risk"
|
|
}
|
|
}
|
|
],
|
|
"aap": [
|
|
{
|
|
"name": "AAP 35w low-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 8.5,
|
|
"exchangeThreshold": 16.4,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w low-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14.2,
|
|
"exchangeThreshold": 20.7,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w low-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 18.6,
|
|
"exchangeThreshold": 24.5,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w low-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.8,
|
|
"exchangeThreshold": 18.85,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w medium-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 6.9,
|
|
"exchangeThreshold": 14.6,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w medium-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 12.2,
|
|
"exchangeThreshold": 18.5,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w medium-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 16.1,
|
|
"exchangeThreshold": 21.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w medium-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 10,
|
|
"exchangeThreshold": 16.95,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w low-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 9,
|
|
"exchangeThreshold": 17.5,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w low-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14.8,
|
|
"exchangeThreshold": 21.9,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w low-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 19.3,
|
|
"exchangeThreshold": 25.5,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w low-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 12.4,
|
|
"exchangeThreshold": 20.05,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w medium-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 7.4,
|
|
"exchangeThreshold": 15.2,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w medium-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 12.8,
|
|
"exchangeThreshold": 19.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w medium-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 17,
|
|
"exchangeThreshold": 22.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 36w medium-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 36,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 10.6,
|
|
"exchangeThreshold": 17.45,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w low-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 9.6,
|
|
"exchangeThreshold": 18.7,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w low-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 15.4,
|
|
"exchangeThreshold": 23.1,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w low-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 20,
|
|
"exchangeThreshold": 26.6,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w low-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 12.95,
|
|
"exchangeThreshold": 21.25,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w medium-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 8,
|
|
"exchangeThreshold": 15.7,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w medium-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 13.5,
|
|
"exchangeThreshold": 19.7,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w medium-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 17.9,
|
|
"exchangeThreshold": 23.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 37w medium-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 37,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.2,
|
|
"exchangeThreshold": 18.05,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w low-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 10.1,
|
|
"exchangeThreshold": 19.7,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w low-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 16,
|
|
"exchangeThreshold": 24,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w low-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 20.7,
|
|
"exchangeThreshold": 27,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w low-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 13.5,
|
|
"exchangeThreshold": 22.25,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w medium-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 8.5,
|
|
"exchangeThreshold": 16.3,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w medium-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14,
|
|
"exchangeThreshold": 20.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w medium-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 18.2,
|
|
"exchangeThreshold": 23.5,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w medium-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.7,
|
|
"exchangeThreshold": 18.45,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w low-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 10.6,
|
|
"exchangeThreshold": 19.7,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w low-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 16.6,
|
|
"exchangeThreshold": 24,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w low-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 21.5,
|
|
"exchangeThreshold": 27,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w low-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14.1,
|
|
"exchangeThreshold": 22.25,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w medium-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 8.5,
|
|
"exchangeThreshold": 16.3,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w medium-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14,
|
|
"exchangeThreshold": 20.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w medium-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 18.2,
|
|
"exchangeThreshold": 23.5,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 39w medium-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 39,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.7,
|
|
"exchangeThreshold": 18.45,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w low-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.2,
|
|
"exchangeThreshold": 19.7,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w low-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 17.2,
|
|
"exchangeThreshold": 24,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w low-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 22.3,
|
|
"exchangeThreshold": 27,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w low-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14.649999999999999,
|
|
"exchangeThreshold": 22.25,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w medium-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 8.5,
|
|
"exchangeThreshold": 16.3,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w medium-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14,
|
|
"exchangeThreshold": 20.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w medium-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 18.2,
|
|
"exchangeThreshold": 23.5,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 40w medium-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 40,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.7,
|
|
"exchangeThreshold": 18.45,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w low-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.2,
|
|
"exchangeThreshold": 19.7,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w low-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 17.2,
|
|
"exchangeThreshold": 24,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w low-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 22.3,
|
|
"exchangeThreshold": 27,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w low-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14.649999999999999,
|
|
"exchangeThreshold": 22.25,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w medium-risk at 12h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 12,
|
|
"tsb": 10,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 8.5,
|
|
"exchangeThreshold": 16.3,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w medium-risk at 48h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 48,
|
|
"tsb": 15,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14,
|
|
"exchangeThreshold": 20.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w medium-risk at 96h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 96,
|
|
"tsb": 18,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 18.2,
|
|
"exchangeThreshold": 23.5,
|
|
"status": "Below Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 41w medium-risk at 31.5h",
|
|
"inputs": {
|
|
"gaWeeks": 41,
|
|
"hours": 31.5,
|
|
"tsb": 13,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 11.7,
|
|
"exchangeThreshold": 18.45,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 38w low-risk at 72h TSB 19 (above exchange boundary)",
|
|
"inputs": {
|
|
"gaWeeks": 38,
|
|
"hours": 72,
|
|
"tsb": 19,
|
|
"risk": "low"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 18.8,
|
|
"exchangeThreshold": 25.9,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
},
|
|
{
|
|
"name": "AAP 35w medium-risk at 72h TSB 16 (above phototherapy)",
|
|
"inputs": {
|
|
"gaWeeks": 35,
|
|
"hours": 72,
|
|
"tsb": 16,
|
|
"risk": "medium"
|
|
},
|
|
"output": {
|
|
"photoThreshold": 14.6,
|
|
"exchangeThreshold": 20.1,
|
|
"status": "Above Phototherapy"
|
|
}
|
|
}
|
|
],
|
|
"fenton": [
|
|
{
|
|
"name": "Fenton male 22w at 500g",
|
|
"inputs": {
|
|
"sex": "male",
|
|
"gaWeeks": 22,
|
|
"weightGrams": 500
|
|
},
|
|
"output": {
|
|
"L": 0.21,
|
|
"M": 496,
|
|
"S": 0.17,
|
|
"z": 0.047287939204605584,
|
|
"percentile": 51.885833800698336
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton female 22w at 500g",
|
|
"inputs": {
|
|
"sex": "female",
|
|
"gaWeeks": 22,
|
|
"weightGrams": 500
|
|
},
|
|
"output": {
|
|
"L": 0.23,
|
|
"M": 474,
|
|
"S": 0.17,
|
|
"z": 0.316059190595063,
|
|
"percentile": 62.402124398294
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton male 50w at 5500g",
|
|
"inputs": {
|
|
"sex": "male",
|
|
"gaWeeks": 50,
|
|
"weightGrams": 5500
|
|
},
|
|
"output": {
|
|
"L": -0.08,
|
|
"M": 5760,
|
|
"S": 0.12,
|
|
"z": -0.38562355034470663,
|
|
"percentile": 34.988770484472916
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton female 50w at 5500g",
|
|
"inputs": {
|
|
"sex": "female",
|
|
"gaWeeks": 50,
|
|
"weightGrams": 5500
|
|
},
|
|
"output": {
|
|
"L": -0.08,
|
|
"M": 5510,
|
|
"S": 0.12,
|
|
"z": -0.015138857701463284,
|
|
"percentile": 49.39605205989605
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton male 28w at 1124g (M)",
|
|
"inputs": {
|
|
"sex": "male",
|
|
"gaWeeks": 28,
|
|
"weightGrams": 1124
|
|
},
|
|
"output": {
|
|
"L": 0.2,
|
|
"M": 1124,
|
|
"S": 0.15,
|
|
"z": 0,
|
|
"percentile": 49.999985009951
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton female 30w at 1330g (M)",
|
|
"inputs": {
|
|
"sex": "female",
|
|
"gaWeeks": 30,
|
|
"weightGrams": 1330
|
|
},
|
|
"output": {
|
|
"L": 0.19,
|
|
"M": 1330,
|
|
"S": 0.14,
|
|
"z": 0,
|
|
"percentile": 49.999985009951
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton male 33w at 2000g",
|
|
"inputs": {
|
|
"sex": "male",
|
|
"gaWeeks": 33,
|
|
"weightGrams": 2000
|
|
},
|
|
"output": {
|
|
"L": 0.135,
|
|
"M": 2012.5,
|
|
"S": 0.135,
|
|
"z": -0.04613281594088144,
|
|
"percentile": 48.160198738764876
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton female 37w at 2800g",
|
|
"inputs": {
|
|
"sex": "female",
|
|
"gaWeeks": 37,
|
|
"weightGrams": 2800
|
|
},
|
|
"output": {
|
|
"L": 0.06,
|
|
"M": 2770,
|
|
"S": 0.125,
|
|
"z": 0.08620463099375068,
|
|
"percentile": 53.43483259892393
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton male 40.5w at 3600g",
|
|
"inputs": {
|
|
"sex": "male",
|
|
"gaWeeks": 40.5,
|
|
"weightGrams": 3600
|
|
},
|
|
"output": {
|
|
"L": 0.0025000000000000005,
|
|
"M": 3602.5,
|
|
"S": 0.12,
|
|
"z": -0.005785023559079504,
|
|
"percentile": 49.76919596364795
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton male 40w at 3500g",
|
|
"inputs": {
|
|
"sex": "male",
|
|
"gaWeeks": 40,
|
|
"weightGrams": 3500
|
|
},
|
|
"output": {
|
|
"L": 0.010000000000000002,
|
|
"M": 3530,
|
|
"S": 0.12,
|
|
"z": -0.07112115197836313,
|
|
"percentile": 47.16504593912861
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton female 40w at 3200g",
|
|
"inputs": {
|
|
"sex": "female",
|
|
"gaWeeks": 40,
|
|
"weightGrams": 3200
|
|
},
|
|
"output": {
|
|
"L": 0.010000000000000002,
|
|
"M": 3340,
|
|
"S": 0.12,
|
|
"z": -0.3567569227545345,
|
|
"percentile": 36.06368591694203
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton male 36w SGA 2000g",
|
|
"inputs": {
|
|
"sex": "male",
|
|
"gaWeeks": 36,
|
|
"weightGrams": 2000
|
|
},
|
|
"output": {
|
|
"L": 0.08,
|
|
"M": 2710,
|
|
"S": 0.13,
|
|
"z": -2.3087643791484385,
|
|
"percentile": 1.0478301468925577
|
|
}
|
|
},
|
|
{
|
|
"name": "Fenton female 36w LGA 3400g",
|
|
"inputs": {
|
|
"sex": "female",
|
|
"gaWeeks": 36,
|
|
"weightGrams": 3400
|
|
},
|
|
"output": {
|
|
"L": 0.08,
|
|
"M": 2540,
|
|
"S": 0.13,
|
|
"z": 2.269534182832241,
|
|
"percentile": 98.83821062755833
|
|
}
|
|
}
|
|
]
|
|
} |