# CarePath Architecture CarePath is one FastAPI deployment with two separately named clinical workflows. The combined entrypoint is `scribe/carepath/main.py`; it owns the Scribe API, imports the Interpreter routers from `interpreter/app`, and mounts both built Vite frontends after API routes. ## Product Boundaries | Workflow | Backend boundary | Browser surface | | --- | --- | --- | | Ghi chép bệnh án AI | `scribe/carepath`, `/api/v1/*` | `scribe/frontend/` at `/`, including `/ghi-chep-lam-sang/` | | Phiên dịch khám bệnh trực tiếp | `interpreter/app`, `/api/*` and `/ws/*` | `interpreter/frontend/` at `/phien-dich-y-khoa/` | `/console/` redirects to the canonical interpreter path for compatibility. The two API namespaces intentionally do not overlap. `scribe/training/` is exclusively the Scribe's offline DARAG/GEC training and quality track. It does not train or serve the Interpreter. `interpreter/eval/` is a separate deterministic translation-safety harness that stays with the Interpreter. ## Boundaries That Must Stay Explicit - Scribe output is a clinician-reviewed draft; it does not replace clinical judgment. - Interpreter output is translation only. High or critical risk stays blocked from patient display and TTS until clinician confirmation. - Interpreter audio is memory-only: no raw-audio persistence, no microphone capture before consent, and failures fail closed. - Risk lexicons and glossary seeds are editable JSON/CSV data, not code. - Providers, environment variables, HTTP/WebSocket payloads, uploaded files, and database rows are trust boundaries and must be parsed before use. ## Delivery and Proof The shared process serves built static assets in production; Vite dev servers remain the development path. Existing Python, eval, frontend, browser, build, and Lighthouse commands are the validation ladder. Do not add a second service, state framework, or test runner unless a selected story proves the need.