# 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.
