65 lines
3.4 KiB
Markdown
65 lines
3.4 KiB
Markdown
# Clinical Note Workflows
|
|
|
|
Clinical note workflows share the same broad lifecycle:
|
|
|
|
1. User enters text or records audio.
|
|
2. Audio, when used, is transcribed by the configured server-side STT provider.
|
|
3. The frontend gathers demographics, structured form data, and optional user
|
|
template context.
|
|
4. The route wraps user-derived text with `wrapUserText` and appends
|
|
`INJECTION_GUARD` before calling `callAI`.
|
|
5. The generated note is inserted as safe text/sanitized output.
|
|
6. Post-note helpers can offer refine/shorten/clarify, billing suggestions,
|
|
don't-miss review, and parent-facing patient handouts.
|
|
7. Users can save/load encounter drafts through the shared encounter system.
|
|
|
|
## Main Workflows
|
|
|
|
| Workflow | Frontend | Route | Notes |
|
|
|---|---|---|---|
|
|
| Live Encounter HPI | `public/js/liveEncounter.js` | `POST /api/generate-hpi-encounter` | Recording/transcript to HPI. |
|
|
| Dictation | `public/js/voiceDictation.js` | `POST /api/generate-hpi-dictation` or `POST /api/generate-soap` | Dictated summary to HPI or SOAP. |
|
|
| SOAP | `public/js/soap.js` | `POST /api/generate-soap` | Transcript/dictation to SOAP. |
|
|
| Sick Visit | `public/js/sickVisit.js` | `POST /api/sick-visit/note` | Chief complaint, transcript/dictation, ROS/PE, diagnosis context. |
|
|
| Well Visit | `public/js/wellVisit.js`, `public/js/shadess.js` | `POST /api/well-visit/note`, `POST /api/well-visit/shadess` | Schedule data, ROS/PE, SSHADESS, milestones, vaccines/screenings. |
|
|
| Hospital Course | `public/js/hospitalCourse.js` | `POST /api/generate-hospital-course` | Pasted notes/labs to course summary. |
|
|
| Chart Review | `public/js/chartReview.js` | `POST /api/generate-chart-review` | Pasted chart content to outpatient review. |
|
|
| ED Encounter | `public/js/ed-encounters.js` | `src/routes/edEncounters.js` | Multi-stage ED workflow; see `ed-encounters.md`. |
|
|
| Milestones | `public/js/milestones.js` | `POST /api/generate-milestone-narrative`, `POST /api/generate-milestone-summary` | Developmental milestone narratives. |
|
|
|
|
## User Templates
|
|
|
|
Settings saves templates/preferences in `user_memories`. The frontend calls
|
|
`getUserMemoryContext()` before generation and passes the result as
|
|
`physicianMemories`. Server routes wrap that context as low-priority
|
|
style/template guidance. `custom` memories and legacy `correction_*` rows are
|
|
not injected into prompts.
|
|
|
|
## Encounter Persistence
|
|
|
|
Shared save/load behavior lives in `public/js/encounters.js` and
|
|
`src/routes/encounters.js`.
|
|
|
|
- Encounters are scoped by `user_id`.
|
|
- Rows expire by `site.auto_delete_days`.
|
|
- `idempotency_key` prevents duplicate creates.
|
|
- `version` supports optimistic locking when clients send `expected_version`.
|
|
- Text fields are encrypted at rest for new writes.
|
|
|
|
## Patient Education
|
|
|
|
`attachPatientEducation` adds a Handout panel beside supported note outputs.
|
|
`POST /api/patient-education` generates a parent-facing plain-text draft from
|
|
the edited clinician note plus optional diagnosis, medication, age, language,
|
|
and reading-level context. The clinician remains responsible for review before
|
|
sharing.
|
|
|
|
## Safety Rules
|
|
|
|
- Do not insert generated clinical output with raw `innerHTML` unless it is
|
|
intentionally sanitized.
|
|
- Do not add browser-native `prompt`, `alert`, or `confirm` workflows.
|
|
- Do not add inline DOM event handlers.
|
|
- Do not reintroduce browser Whisper/browser-local model downloads.
|
|
- Do not cache clinical answer text in Redis.
|
|
- Keep source transcript/context available for refine actions where relevant.
|