# Bedside Tools And Calculators This doc describes the current responsibilities of the bedside/reference area without hardcoded line numbers. The source of truth is the code plus the calculator test suite. ## Areas | Area | Files | Notes | |---|---|---| | Bedside emergencies | `public/js/bedside/*` | ES-module pocket for emergency reference sections. | | Core calculators | `public/js/calc-math.js`, `public/js/calculators.js`, `public/js/drugs-loader.js` | `calc-math.js` keeps a dual browser/CommonJS wrapper so tests can `require()` the same formulas used in browser. | | Drug data | `public/data/drugs.json` | Loaded by `drugs-loader.js`; fallback constants remain in some UI modules for resilience. | | PE Guide | `public/js/peGuide.js`, `src/routes/peGuide.js`, `public/components/pe-guide.html` | Structured PE reference plus AI narrative endpoint. | | Well-visit schedule | `public/js/wellVisit/scheduleData.js`, `public/data/well-visit/schedule.json`, `public/js/wellVisit.js` | Schedule JSON is loaded and applied to legacy globals used by the UI. | | Milestones | `public/js/milestonesData.js`, `public/js/milestones.js`, `src/routes/milestones.js`, `src/routes/adminMilestones.js` | DB-backed milestone data with static fallback. | ## Calculator Accuracy Rule Do not change clinical formulas or reference data without tests. Add or update test vectors first, then change data/code, then run `npm test`. Protected examples include: - APLS and Best Guess weights. - Maintenance fluids. - Parkland burn fluids and Lund-Browder TBSA. - PRAM, Westley croup, GCS, Apgar, bilirubin, BMI, BP, growth, Fenton, and equipment sizing. - Emergency medication dosing in resuscitation, anaphylaxis, seizure, sedation, agitation, emesis, trauma, and NRP modules. ## Schedule Data Well-visit schedule data now lives in JSON: - `public/data/well-visit/schedule.json` - loader: `public/js/wellVisit/scheduleData.js` - consumer: `public/js/wellVisit.js` - server enrichment: `src/routes/wellVisit.js` The loader exposes the legacy names expected by the existing UI, including `VISIT_AGES`, `PERIODICITY`, `CATCH_UP_SCHEDULE`, `GROWTH_REFERENCE`, and BMI classification data. ## Bedside ES Modules The bedside tab is intentionally split by emergency/reference topic. Keep new sections small and self-contained. Shared formatting/helpers should stay in the bedside support modules rather than growing `calculators.js` again. ## PE Guide The PE Guide is partly deterministic reference UI and partly AI-assisted narrative generation: - Browser code collects assessed systems, selected normals/abnormals, and clinician notes. - `POST /api/generate-pe-narrative` wraps user-derived text with `wrapUserText` and applies `INJECTION_GUARD` before `callAI`. - The route returns a generated narrative plus summary metadata. ## Extension Checklist When adding or changing a bedside/calculator feature: 1. Add test vectors for any clinical formula or reference boundary. 2. Keep UI state local unless persistence is explicitly required. 3. Avoid PHI storage in reference/calculator-only areas. 4. Prefer small files for new bedside sections. 5. Run `node --check` on touched scripts and `npm test` before deploy.