How yunmin311/anatomical-symptom-interface works
The product turns a person's description of pain into a confirmed anatomical location, a region-specific interview, deterministic safety flags, and a longitudinal pre-visit record. The web session coordinates the user flow; the server exposes API operations and persists episodes. The README documents offline grounding with optional model-backed candidate suggestions. Some wiring is inferred only where explicitly documented; unsampled internals are represented by their exact enclosing paths.
Main entry points: app.ts HTTP API · App.tsx Session interface · session.ts Session state · index.ts Localisation orchestrator
Components 20
Web experience
- Session interface
apps/web/src/App.tsx - Session state
apps/web/src/state/session.ts - Body map
apps/web/src/anatomy/BodyMap.tsx - 2D anatomy adapter
apps/web/src/anatomy/svg2d.ts - Interview panel
apps/web/src/ui/InterviewPanel.tsx - Safety banner
apps/web/src/ui/SafetyBanner.tsx - Summary panel
apps/web/src/ui/SummaryPanel.tsx - History panel
apps/web/src/ui/HistoryPanel.tsx
API and orchestration
- HTTP API
packages/server/src/app.ts - Localisation orchestrator
packages/server/src/orchestrator/index.ts
Clinical domain
- Anatomy vocabulary
packages/shared/src/anatomy.ts - Text grounding
packages/shared/src/grounding.ts - Interview engine
packages/shared/src/interview/engine.ts - Safety rules
packages/shared/src/rules/redflags.ts - Summary generation
packages/shared/src/summary.ts - Field provenance
packages/shared/src/provenance.ts
Local records
- Episode store
packages/server/src/db/store.ts - Local SQLite
packages/server/src/db/client.ts
Other components
- Person
- Anthropic model
Connections 26
- Person → Session interface: describes symptoms
- Session interface → Session state: dispatches actions
- Session interface → Body map: renders map
- Session interface → Interview panel: renders questions
- Session interface → Safety banner: renders flags
- Session interface → Summary panel: renders summary
- Session interface → History panel: renders history
- Body map → 2D anatomy adapter: issues commands
- Session state → 2D anatomy adapter: updates viewer
- Session state → HTTP API: requests API
- Session state → Safety rules: evaluates record
- Session state → Interview panel: provides session state
- Interview panel → Interview engine: selects questions
- HTTP API → Localisation orchestrator: localises text
- HTTP API → Text grounding: grounds preview
- HTTP API → Episode store: reads and writes episodes
- HTTP API → Summary generation: builds summary
- HTTP API → Safety rules: counts rules
- Localisation orchestrator → Text grounding: runs offline grounding
- Localisation orchestrator → Anatomy vocabulary: validates candidates
- Localisation orchestrator → Anthropic model: requests suggestions
- Episode store → Local SQLite: reads and writes
- Interview engine → Anatomy vocabulary: resolves structures
- Summary generation → Field provenance: uses field attribution
- Safety rules → HTTP API: returns safety flags
- Episode store → HTTP API: returns episode data