171 lines
6.8 KiB
Markdown
171 lines
6.8 KiB
Markdown
# Ped-AI
|
|
|
|
Ped-AI is a pediatric clinical documentation, education, and bedside decision-support app. This fork has moved well beyond the original scribe app: it now combines encounter documentation, clinical workflows, Learning Hub CMS, admin controls, MCP-backed clinical assistant integration, Redis-backed operational state, and hardened deployment defaults.
|
|
|
|
The app runs as an authenticated Express/Postgres service with a browser frontend and optional integrations for LiteLLM, Vertex/Gemini, AWS, OpenAI-compatible APIs, Nextcloud WebDAV, S3-compatible storage, OpenBao, Redis, OIDC, TOTP, and Cloudflare Turnstile.
|
|
|
|
## Current Scope
|
|
|
|
### Clinical Documentation
|
|
|
|
- Live encounter capture with structured pediatric HPI generation.
|
|
- Dictation cleanup for narrative notes.
|
|
- SOAP, sick visit, well visit, hospital course, chart review, precharting, and ED encounter workflows.
|
|
- Pediatric developmental milestone tooling.
|
|
- Templates, physician memory, and per-tab model overrides.
|
|
- Server-side speech-to-text routing through configured providers.
|
|
|
|
### Bedside Tools
|
|
|
|
- Pediatric calculators and emergency dosing helpers.
|
|
- PE guide and clinical reference content.
|
|
- Vaccines, catch-up schedules, growth/vitals, bilirubin, BSA, GCS, equipment, and resuscitation helpers.
|
|
- Mobile-friendly PWA layout for bedside use.
|
|
- Per-user phone extension and pager directory with soft-delete, search, ZIP export, and JSON/ZIP import for handoff between users.
|
|
|
|
### Learning Hub
|
|
|
|
- CMS for articles, clinical pearls, quizzes, and presentations.
|
|
- Tiptap article editor, quiz builder, category management, and draft/publish flow.
|
|
- AI-assisted content generation from topic text, uploaded files, or connected Nextcloud WebDAV files.
|
|
- Marp slide editing with preview and PPTX export.
|
|
- Keyword, semantic, and hybrid search using Postgres/pgvector where configured.
|
|
|
|
### Clinical Assistant
|
|
|
|
- Optional MCP-backed clinical assistant integration.
|
|
- Prompt suggestions backed by Redis operational cache.
|
|
- No clinical answer response caching.
|
|
- Designed to retrieve from indexed clinical material while keeping provider selection explicit.
|
|
|
|
### Admin And Security
|
|
|
|
- Local auth, role-based access, TOTP 2FA, OIDC/SSO, email verification, and optional Turnstile.
|
|
- Admin panel for users, settings, prompts, models, logs, and Learning Hub content.
|
|
- Audit, API, access, and client-error logs with redaction hardening.
|
|
- OpenBao secret loading support at container startup.
|
|
- S3-compatible document storage support.
|
|
|
|
## Removed Browser STT
|
|
|
|
Browser Whisper has been removed from the runtime. The app should not ship browser Whisper workers, browser-local Whisper model downloads, Transformers.js browser STT, or Browser Whisper setup docs.
|
|
|
|
Speech-to-text is handled server-side through configured providers such as Google/Gemini, AWS Transcribe, LiteLLM, or OpenAI Whisper. Browser-native Web Speech remains gated behind an explicit user setting when present in the browser.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
docker compose up -d --build
|
|
```
|
|
|
|
The default compose exposes the app on `127.0.0.1:3552` and starts:
|
|
|
|
- `pediatric-ai-scribe` for the Node app.
|
|
- `pedscribe-db` for Postgres with pgvector.
|
|
- `ped-ai-redis` for operational Redis state.
|
|
|
|
Health check:
|
|
|
|
```bash
|
|
curl -fsS http://127.0.0.1:3552/api/health
|
|
```
|
|
|
|
Prometheus metrics are exposed at `GET /metrics` with the `ped_ai_` metric prefix.
|
|
|
|
The first registered user becomes an admin unless registration has already been configured differently.
|
|
|
|
## Core Environment
|
|
|
|
Set real values in `.env` before production use.
|
|
|
|
```env
|
|
APP_URL=https://your-domain.example
|
|
JWT_SECRET=<64-char-random-secret>
|
|
DB_PASSWORD=<strong-database-password>
|
|
|
|
AI_PROVIDER=litellm
|
|
LITELLM_API_BASE=https://your-litellm.example/v1
|
|
LITELLM_API_KEY=<key>
|
|
|
|
TRANSCRIBE_PROVIDER=litellm
|
|
LITELLM_STT_MODEL=whisper-1
|
|
|
|
REDIS_URL=redis://ped-ai-redis:6379
|
|
```
|
|
|
|
Supported text AI providers include LiteLLM, OpenRouter, AWS Bedrock, Azure OpenAI, and Google Vertex AI. Supported STT routing includes Google/Gemini, AWS Transcribe, OpenAI Whisper, and LiteLLM. Supported TTS routing includes Google Cloud TTS, LiteLLM/OpenAI-compatible audio, and ElevenLabs where configured.
|
|
|
|
## Admin CLI
|
|
|
|
```bash
|
|
docker exec pediatric-ai-scribe node admin-cli.js list-users
|
|
docker exec pediatric-ai-scribe node admin-cli.js create-admin admin@example.com password123 "Dr. Admin"
|
|
docker exec pediatric-ai-scribe node admin-cli.js make-admin user@example.com
|
|
docker exec pediatric-ai-scribe node admin-cli.js reset-password user@example.com newpassword
|
|
docker exec pediatric-ai-scribe node admin-cli.js toggle-registration
|
|
docker exec pediatric-ai-scribe node admin-cli.js stats
|
|
```
|
|
|
|
## Maintenance
|
|
|
|
The app checks Postgres collation drift on startup and can reindex text indexes after image or OS-library changes.
|
|
|
|
```bash
|
|
docker exec pediatric-ai-scribe npm run maint:check
|
|
docker exec pediatric-ai-scribe npm run maint:reindex
|
|
```
|
|
|
|
Run the reindex command after major Postgres image changes, restoring a dump from another distro, or seeing lookup behavior that suggests collation/index drift.
|
|
|
|
## Testing
|
|
|
|
Run the Node test suite:
|
|
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
Run syntax checks for touched files when doing focused backend work:
|
|
|
|
```bash
|
|
node --check server.js
|
|
node --check src/routes/transcribe.js
|
|
```
|
|
|
|
Run the Playwright smoke suite against the e2e compose stack:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.yml -f docker-compose.e2e.yml up -d pediatric-scribe-e2e
|
|
npm run e2e
|
|
```
|
|
|
|
## Deployment Notes
|
|
|
|
- Put the app behind HTTPS before clinical use.
|
|
- Use only AI/STT/TTS providers covered by your BAA and data-processing requirements.
|
|
- Configure OIDC/SSO and 2FA for production users.
|
|
- Keep `JWT_SECRET`, database credentials, provider keys, S3 keys, SMTP credentials, and OpenBao tokens out of git.
|
|
- Treat logs as sensitive operational data even with redaction enabled.
|
|
- Use the Caddy/reverse-proxy layer to expose only intended public routes.
|
|
|
|
## Documentation
|
|
|
|
Primary references:
|
|
|
|
- `docs/architecture.md` for high-level architecture.
|
|
- `docs/api-reference.md` for API routes.
|
|
- `docs/authentication.md` for auth, OIDC, and security configuration.
|
|
- `docs/ai-providers.md` for model/provider setup.
|
|
- `docs/speech.md` for server-side STT/TTS setup.
|
|
- `docs/learning-hub.md` for the CMS and education workflow.
|
|
- `docs/configuration.md` for environment variables.
|
|
- `docs/deployment.md` for production deployment.
|
|
- `docs/mobile-build.md` for the Capacitor wrapper and app-store build notes.
|
|
- `docs/logic/README.md` for the deeper code walkthrough.
|
|
|
|
Some deep `docs/logic/` files still describe historical implementation details. Prefer runtime code and tests when documentation conflicts with current behavior.
|
|
|
|
## Clinical Safety
|
|
|
|
Ped-AI is documentation and education support software. It does not replace clinical judgment, local policy, medication verification, or attending review. Validate generated notes, calculations, and recommendations before use in patient care.
|