Parkland formula: 4 mL × kg × %TBSA = ' + total + ' mL LR over 24 hours' +
' First 8 h (from time of burn): ' + first8 + ' mL (~' + rateFirst + ' mL/hr)' +
' Next 16 h: ' + next16 + ' mL (~' + rateNext + ' mL/hr)
';
html += '
Plus maintenance fluids (4-2-1): ' + maint + ' mL/hr (D5 1/2NS ± 20 mEq KCl/L once UOP established). Consider dextrose in children <30 kg.
';
}
});
if (breakdown) {
html += 'Region breakdown
' + breakdown + '
';
}
html += '
Other pearls
';
html += '
';
html += 'Rule of palm: Patient\'s palm + fingers ≈ 1% TBSA — good for scattered burns. ';
html += 'First-degree burns DO NOT count toward TBSA or Parkland. ';
html += 'Analgesia: Morphine 0.05-0.1 mg/kg IV q2h, or fentanyl 1-2 mcg/kg IV q30-60 min. ';
html += 'Tetanus prophylaxis if indicated. Tdap/Td ± tetanus immunoglobulin.';
html += '
';
html += '
Burn center referral (ABA)
';
html += '
Partial-thickness >10% TBSA; any full-thickness; face/hands/feet/genital/perineum/major joints; electrical/chemical/inhalation; associated trauma; significant comorbidities; pediatric burns in non-pediatric center.
';
html += S.ref('ABA Advanced Burn Life Support (ABLS) 2018. Parkland formula: Baxter 1968. Lund-Browder 1944 chart (age-adjusted regions).');
el.innerHTML = html;
}
export function init() {
document.addEventListener('click', function(e) {
if (e.target.id === 'btn-burn-calc' || e.target.closest('#btn-burn-calc')) calcBurn();
if (e.target.id === 'btn-burn-reset' || e.target.closest('#btn-burn-reset')) resetParts();
// Render body-parts table the first (or any) time the Burns sub-pill is activated
var bp = e.target.closest && e.target.closest('[data-em="burns"]');
if (bp) setTimeout(renderBodyParts, 0);
// Also render if the top-level Bedside tab is clicked (ensures table ready before user navigates)
var nav = e.target.closest && e.target.closest('[data-calc="bedside"]');
if (nav) setTimeout(renderBodyParts, 50);
});
document.addEventListener('change', function(e) {
if (e.target && e.target.id === 'burn-age') renderBodyParts();
});
document.addEventListener('input', function(e) {
if (e.target && e.target.dataset && e.target.dataset.burnRegion) updateLive();
});
// Also attempt render on these events in case component mounts later
document.addEventListener('DOMContentLoaded', renderBodyParts);
document.addEventListener('tabChanged', function() { setTimeout(renderBodyParts, 100); });
if (document.readyState !== 'loading') setTimeout(renderBodyParts, 0);
}