pediatric-ai-scribe-v3/docs/features-explained.md
Daniel 025290d64a
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
feat: retire Learning Hub
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
2026-09-12 20:14:20 +02:00

5.3 KiB

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.

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.

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.