pediatric-ai-scribe-v3/public/js
Daniel d859c8c5a9 feat(extensions): personal Pagers & Extensions directory with soft-delete
New top-level tab positioned after Physical Exam Guide. Per-user
directory of hospital phone extensions and pagers — grouped by location
then type, searchable, soft-deleted.

Data:
- New table user_phone_extensions (id, user_id, location, name, number,
  type CHECK (extension|pager), notes, trashed_at, timestamps).
  Partial indexes on active vs trashed rows for fast filtering.
- Not PHI — hospital internal phone directory. Plaintext.

API (all user-scoped, all params validated):
- GET    /api/extensions?trash=1&q=text  — list active or trash, optional search
- POST   /api/extensions                  — create
- PUT    /api/extensions/:id              — update (requires all three core fields)
- DELETE /api/extensions/:id              — soft-delete (sets trashed_at)
- POST   /api/extensions/:id/restore      — un-trash
- DELETE /api/extensions/:id/purge        — hard-delete (only if trashed)

All :id params parsed + validated (positive integer) before query.
All queries parameterized, every WHERE includes user_id scoping.

UI (public/js/extensions.js + components/extensions.html):
- Search bar with 200ms debounce, server-side LIKE on location/name/number/notes
- Add button expands inline form — location (with datalist of existing
  locations for autocomplete), name/dept, number, type, optional notes
- Each entry renders as a card: big monospace number, dept, type badge,
  edit + delete inline
- Grouped by location → type (Extensions / Pagers subheaders)
- Trash view: toggle shows trashed items with Restore + Purge actions
- Trash count badge on the Trash button updates after every delete/restore
- Delete requires confirm() dialog, then soft-delete (easy to undo)
- Purge from trash requires a second confirm() ("cannot be undone")
- Esc closes the form; form resets between Add and Edit
2026-04-22 18:54:26 +02:00
..
bedside fix(neonatal): replace rounded Fenton 2013 LMS with peditools-validated values 2026-04-22 05:52:00 +02:00
admin.js fix(admin): restore SSO settings loading on admin panel 2026-04-21 22:19:50 +02:00
adminMilestones.js Replace all browser dialogs with modern modal, add OIDC admin UI 2026-04-09 02:43:23 +02:00
app.js Security hardening: low-risk easy wins 2026-04-14 02:42:32 +02:00
audioBackup.js v6.1: Turnstile bot protection, LiteLLM provider, PPTX tables, audio backup fixes, docs 2026-04-04 22:56:24 +02:00
auth.js Hide APK download link on the native Android app 2026-04-14 22:47:59 +02:00
authFetch.js Batch of security + scale fixes 2026-04-14 05:24:40 +02:00
browserWhisper.js FIX: Browser Whisper - 100% self-hosted, zero CDN dependencies 2026-03-31 23:12:21 +00:00
calc-math.js feat: Bedside clinical reference module + age→weight estimator + dose-math unit tests 2026-04-20 02:49:42 +02:00
calculators.js fix(bilirubin): AAP 2022 per-week thresholds, exact match to peditools 2026-04-22 12:41:15 +02:00
chartReview.js Add automatic ICD-10 and CPT billing code suggestions 2026-04-11 01:50:17 +02:00
correctionTracker.js v9: Major feature update — audio backup, SOAP save, Dragon memory, S3 docs, CI/CD, APK 2026-03-28 21:08:32 +00:00
documents.js Hybrid auth: cookie-only on web, Keychain Bearer on mobile 2026-04-14 04:11:55 +02:00
drugs-loader.js feat: B — extract drug data to public/data/drugs.json (schema v1.0) 2026-04-20 04:23:24 +02:00
e2e-bootstrap.js feat: A1+A2 — Playwright smoke suite + index.html mtime-based caching 2026-04-20 03:51:22 +02:00
encounters.js Cache-busting version stamps + client-side encounter version tracking 2026-04-14 05:40:42 +02:00
extensions.js feat(extensions): personal Pagers & Extensions directory with soft-delete 2026-04-22 18:54:26 +02:00
hospitalCourse.js Add automatic ICD-10 and CPT billing code suggestions 2026-04-11 01:50:17 +02:00
learningHub.js Security hardening: PHI encryption, argon2, DOMPurify, SRI 2026-04-14 02:49:38 +02:00
liveEncounter.js Native Android: biometric auth, foreground service bridge, mic fix 2026-04-11 03:42:23 +02:00
memories.js Replace all browser dialogs with modern modal, add OIDC admin UI 2026-04-09 02:43:23 +02:00
milestones.js v6.2: Session management, password change, audit logging, refine context, UI fixes 2026-04-08 20:27:45 +02:00
milestonesData.js v4: Fix milestones display + add OpenID auth + 100MB PDF support 2026-04-01 17:59:51 +00:00
nextcloud.js Fix WebDAV selection, pdf-parse, prompt(), CSP, security issues 1/2/4/5 2026-03-24 02:28:43 -04:00
pediatricScheduleData.js feat(wellvisit): add Expected Reflexes section to By Visit Age 2026-04-21 22:20:07 +02:00
peGuide.js chore(pe-guide): restore source-citation comment block 2026-04-22 18:08:19 +02:00
secureStorage.js Add hardware-backed secure storage for mobile auth token 2026-04-14 02:33:32 +02:00
shadess.js Add automatic ICD-10 and CPT billing code suggestions 2026-04-11 01:50:17 +02:00
sickVisit.js Add automatic ICD-10 and CPT billing code suggestions 2026-04-11 01:50:17 +02:00
soap.js Add pause/stop buttons to SOAP note recording 2026-04-11 05:19:12 +02:00
speechRecognition.js Add Web Speech Recognition option for real-time streaming 2026-03-31 21:57:24 +00:00
transcriptionSettings.js Replace all browser dialogs with modern modal, add OIDC admin UI 2026-04-09 02:43:23 +02:00
voiceDictation.js Add automatic ICD-10 and CPT billing code suggestions 2026-04-11 01:50:17 +02:00
voicePreferences.js Fix TTS preview for 'Server default' voice option 2026-03-31 16:15:41 +00:00
wellVisit.js feat(wellvisit): add Expected Reflexes section to By Visit Age 2026-04-21 22:20:07 +02:00
whisperWorker.js FIX: Browser Whisper - 100% self-hosted, zero CDN dependencies 2026-03-31 23:12:21 +00:00
whisperWorkerV2.js v16: Make Browser Whisper CDN failure graceful with clear warnings 2026-03-31 16:18:46 +00:00