Skip to content

Tổng quan hệ thống ​

Cùng mô hình với Nemo12: một monorepo npm workspaces, mỗi miền là một Cloudflare Worker.

                    ┌──────────────────────────┐
  người bệnh /      │  www.hoatieu3.com        │  apps/web — React + Vite, Worker phục vụ assets
  người nhà /  ───▶ │  (hoatieu3.com → 301 www)│
  bác sĩ được mời   └────────────┬─────────────┘
                                 │ fetch (CORS: *.hoatieu3.com)
                    ┌────────────▼─────────────┐
                    │  api.hoatieu3.com        │  workers/api — Hono + zod-openapi
                    │  ┌─────────────────────┐ │
                    │  │  HOATIEU Engine     │ │  hàm thuần, không I/O, có unit test
                    │  └─────────────────────┘ │
                    │  D1 `hoatieu3`  R2 `hoatieu3-documents`  Cron 08:00 VN
                    └──────────────────────────┘
                    ┌──────────────────────────┐
                    │  docs.hoatieu3.com       │  apps/docs — VitePress, assets tĩnh
                    └──────────────────────────┘

Cấu trúc thư mục ​

hoatieu3.com/
├── apps/
│   ├── web/            www.hoatieu3.com
│   └── docs/           docs.hoatieu3.com
├── workers/
│   └── api/            api.hoatieu3.com
│       └── src/engine/ HOATIEU Engine
├── migrations/         D1 schema + seed Service Graph
└── .github/workflows/  CI: typecheck → test → build → migrate → deploy

7 engine ↔ mã nguồn ​

EngineNhiệm vụHiện thực
1. IntakeHiểu bệnh nhân cần gìengine/intake.ts — suy chuyên khoa, dịch vụ chẩn đoán
2. Patient ProfileXây hồ sơpatients, medical_history, medical_documents
3. ContactNgười nhà / người liên hệcontacts + /v1/cases/{id}/contacts
4. NavigationXác định lộ trình, trạng tháinavigation_cases.state, engine/navigate.ts
5. MatchingPatient → servicesengine/matching.ts
6. RecommendationNext Best Actionengine/recommendation.ts
7. Follow-upTheo dõi sau khi rời việnfollow_ups + cron
(Safety)Chặn trước mọi engineengine/safety.ts

Vì sao Cloudflare ​

  • Một tài khoản, ba miền, DNS + TLS tự động qua custom_domain.
  • D1 (SQLite) đủ cho giai đoạn đầu; R2 cho file y tế, không phí egress.
  • Edge gần người dùng Việt Nam.

HOATIEU3 không chẩn đoán và không thay thế bác sĩ. Cấp cứu: gọi 115.