Some checks failed
Forgejo Android APK / Root app tests (push) Successful in 47s
Forgejo Docker Build / Root app tests (push) Successful in 45s
Forgejo Android APK / Build signed APK (push) Successful in 2m1s
Forgejo Docker Build / Build Docker image (push) Successful in 9s
Forgejo Docker Build / Deploy to the host (push) Failing after 0s
My Resources generates better slides than Learning Hub ever did — a typed deck the model fills in, rendered by python-pptx with fit-to-slide text, figures, a vision review and themes, against Learning Hub's markdown-through-pandoc — and the articles and quizzes now live in the quiz app. Keeping a second, weaker generator and a whole CMS beside it was not earning its maintenance. Removed: three routers, the Learning Hub and Content Manager tabs, their components and frontend modules, the five database tables, the WebDAV browser, the content embedding column and its vector index. Content was exported first — every article as markdown plus a full SQL dump of all five tables — to ops-backups/learning-hub-export-*. That export is the restore path; the migration's down() can recreate the shape but never the rows, and says so. Two things this simplifies rather than merely deletes: generated_image_links existed only to record which published content an image appeared in, and it was the sole reason a generated image could be read by someone who did not make it. Images are now owner-only — the visibility rule is one WHERE clause instead of a join across two tables and a published flag. embeddings.js keeps the model discovery the admin panel uses and loses searchSimilar and generateContentEmbedding, which queried a table that no longer exists. Kept deliberately: Nextcloud connect, disconnect and export, which are how a generated note reaches a real filesystem and have nothing to do with Learning Hub; learningRetrieval, which despite its name is the clinical corpus search My Resources depends on; and the pandoc reference deck, still the fallback when the python renderer fails, moved from assets/learning to assets/deck now that the old name misleads. Tests: four Learning-Hub-only files removed, and the individual cases inside shared files that asserted its behaviour. Where a test used a Learning endpoint only as a convenient example — the account-boundary token test, the policy matrix — it now uses one that still exists, so the property it proves is unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dv6sqaY6Vq3ChZHMem3cnU
99 lines
5.3 KiB
Markdown
99 lines
5.3 KiB
Markdown
# Features Explained
|
|
|
|
This file is a practical operator-oriented overview of major Ped-AI features. It intentionally describes the current fork, not historical browser Whisper behavior.
|
|
|
|
## Clinical Documentation
|
|
|
|
Ped-AI generates pediatric clinical notes from typed input, dictation, or recorded audio. Major workflows include live encounters, dictation cleanup, sick visits, well visits, SOAP notes, hospital courses, chart review, ED documentation, and developmental milestones.
|
|
|
|
Model selection is available per task where the UI exposes a tab-level selector. Admin defaults provide the baseline model and user/task choices can override that baseline.
|
|
|
|
Generated notes can expose post-note helper panels. Billing suggestions and don't-miss review are clinician-facing. Patient education handouts are parent-facing drafts generated from the edited note, with optional diagnosis, medication, and preferred-language context. The clinician must verify the handout before sharing it.
|
|
|
|
## Phone Extensions And Pagers
|
|
|
|
The bedside tools include a per-user phone extension and pager directory. Entries support active/trash views, search, soft delete/restore, permanent purge, ZIP export, and JSON/ZIP import. Import preview flags exact active duplicates, exact trashed matches that can be restored, and possible duplicates before committing changes.
|
|
|
|
## Speech
|
|
|
|
Final transcription is server-side through LiteLLM. Configure upstream STT providers in LiteLLM rather than in Ped-AI.
|
|
|
|
Browser-native Web Speech is only an explicit opt-in preview path. It is not the final clinical transcript and may use browser-vendor cloud services.
|
|
|
|
Browser Whisper and browser-local model workers are removed. Do not expect a pre-download model button, public Whisper worker, or bundled Xenova model path.
|
|
|
|
## Text To Speech
|
|
|
|
The voice preview button calls LiteLLM TTS and plays the returned audio in the browser. If preview is silent, check that a LiteLLM voice is selected, the gateway is configured, the user is authenticated, and browser autoplay has not blocked playback.
|
|
|
|
## Nextcloud WebDAV
|
|
|
|
Users can connect a Nextcloud account with an app password and export generated notes to it.
|
|
|
|
## Documents And S3
|
|
|
|
Document upload is optional and depends on S3-compatible storage configuration. Treat uploaded documents as PHI unless you have a separate deployment reason not to.
|
|
|
|
## Audio Backups
|
|
|
|
Audio backups exist to recover failed transcription attempts.
|
|
|
|
- They are created when transcription fails.
|
|
- They are encrypted before persistent storage.
|
|
- They expire automatically.
|
|
- Users can retry or delete them from Settings.
|
|
|
|
## My Resources
|
|
|
|
Personal teaching material a user generates for themselves: a presentation or a
|
|
document, built from a subject and optional instructions, optionally grounded in
|
|
PubMed, web search, and the clinical corpus, and optionally carrying generated
|
|
figures.
|
|
|
|
Decks are stored as a typed deck rather than as markdown, and
|
|
`scripts/render_pptx.py` (python-pptx) renders that deck to PowerPoint;
|
|
`scripts/render_docx.py` (python-docx) renders the same typed source to Word.
|
|
Export also offers PDF, via Gotenberg, and plain markdown. An optional vision
|
|
review pass renders the deck, looks at the slides, and returns layout fixes; it
|
|
is off by default.
|
|
|
|
Full detail in [`my-resources.md`](my-resources.md).
|
|
|
|
## Clinical Assistant
|
|
|
|
Answers clinical questions against the indexed corpus rather than from model
|
|
memory: Ped-AI asks the MCP retrieval service for sources, builds a grounded
|
|
prompt, and renders the answer with citations and source cards. Answers are
|
|
deliberately never cached. Full detail in
|
|
[`clinical-assistant.md`](clinical-assistant.md).
|
|
|
|
## Admin Panel
|
|
|
|
Admins can manage users, roles, registration, security settings, model defaults, prompts and logs. Production deployments should enable SSO/2FA and restrict admin access.
|
|
|
|
## Feature Status
|
|
|
|
| Feature | Status | Notes |
|
|
|---|---|---|
|
|
| Clinical note generation | Active | Provider depends on `AI_PROVIDER`, defaulting to LiteLLM when a gateway is configured. |
|
|
| Server transcription | Active | Routed through LiteLLM; the upstream vendor is a gateway choice. |
|
|
| Browser Web Speech preview | Optional | Explicit opt-in only. |
|
|
| Browser Whisper | Removed | No public worker or model download path. |
|
|
| Nextcloud WebDAV | Active | Used for file browsing/content import. |
|
|
| Patient handouts | Active | Parent-facing, note-derived, preferred-language draft. |
|
|
| Extension transfer | Active | ZIP export plus JSON/ZIP import preview. |
|
|
| Audio backups | Active | Failure recovery only. |
|
|
| TTS preview | Active | Depends on configured provider. |
|
|
| Clinical Assistant | Active | Grounded answers over MCP retrieval, with citations and source cards. |
|
|
| My Resources | Active | Personal teaching decks and documents, rendered by python-pptx / python-docx. |
|
|
| Deck vision review | Optional | Off by default; one pass, admin-configurable model. |
|
|
| Passwordless sign-in codes | Active | Emailed 6-digit code; password sign-in always stays available. |
|
|
| Personal notes | Active | Including dictation, with trash and restore. |
|
|
|
|
## Troubleshooting
|
|
|
|
- Check browser console for frontend errors.
|
|
- Check `docker logs pediatric-ai-scribe -f` for backend errors.
|
|
- Check `/api/health` for service status.
|
|
- Check provider credentials and model names before debugging UI state.
|
|
- For Nextcloud export failures, verify the URL, username, app password, and folder path.
|