Treatment plan
Treatment plan (KHĐT — Kế hoạch điều trị) là báo giá + lịch trình của các dịch vụ sẽ cung cấp cho bệnh nhân. Nó được chia thành stages (giai đoạn), mỗi giai đoạn có warranty riêng, doctor assignment, và charge khi hoàn thành.
Lifecycle của plan — từ báo giá đến hoàn thành
Plan đi qua các trạng thái (status):
- DRAFT: bác sĩ vừa tạo, BN chưa ký (báo giá). CRM có thể auto follow-up nếu clinic cấu hình (chờ ~3 ngày).
- APPROVED: BN ký phê duyệt, sẵn sàng bắt đầu điều trị.
- IN_PROGRESS: đang chạy, ít nhất 1 stage đã bắt đầu.
- COMPLETED: tất cả stage hoàn thành.
- CANCELED: plan huỷ hoặc BN từ chối (gộp cả hai trường hợp; enum không có
REJECTEDriêng).
Khi plan ở trạng thái DRAFT, nó chỉ là báo giá — không tạo charge hay revenue cho đến khi BN ký và chuyển APPROVED.
Treatment plan là clinical context. Finance (charge, payment, cash) là riêng. E-invoice không thay đổi payment, cash, revenue hay earnings. Khi stage hoàn thành, charge được tạo; khi charge được thu, payment được ghi lại. Hai luồng này độc lập.
Cấu trúc plan — Items & Stages
Items (dòng dịch vụ)
Mỗi item là 1 dịch vụ trong plan (ví dụ: "Mào sứ răng 11"). Item có:
- Service: tên dịch vụ từ catalog.
- Expected charge: giá dịch vụ tại thời điểm tạo plan (snapshot).
- Related teeth: các răng liên quan (11, 21, 31…).
- Notes: ghi chú kỹ thuật (loại mão, vật liệu, yêu cầu đặc biệt).
Stages (giai đoạn)
Mỗi stage là 1 bước trong quá trình làm. Ví dụ: "Chuẩn bị chân gốc" → "Dán chân gốc" → "Lắp mão". Mỗi stage có:
- Doctor assignment: ai sẽ làm stage này.
- Warranty period: bảo hành từ ngày hoàn thành (ví dụ: 5 năm cho mão).
- Process list: danh sách công đoạn con (ví dụ: "Gây tê", "Cấy trụ", "Dán chân gốc").
- Status: Pending → In Progress → Completed.
Cách tạo treatment plan
Bước 1 — Mở Patient 360 → Treatment tab
Nếu bệnh nhân chưa có plan, bấm + Create Plan.
Bước 2 — Chọn dịch vụ
Thêm từng item: tìm dịch vụ từ catalog (search hoặc scroll), chọn, nhập expected charge (mặc định từ service, có thể override), ghi chú, chọn răng liên quan.
Bước 3 — Kiểm tra stage templates
DentIQ tự tạo stages dựa trên service template. Nếu service chưa có template, hệ thống tạo 1 stage fallback (tất cả items của dịch vụ làm trong 1 stage).
Bước 4 — Gán bác sĩ & warranty
Bấm vào từng stage, chỉ định bác sĩ (search hoặc "Assign to me"). Warranty period thường mặc định từ service catalog — bạn có thể override.
Bước 5 — Lưu & preview
Bấm Save Plan. Nếu muốn xem phiếu tư vấn trước khi cho BN ký, bấm Preview Plan Document (mở phiếu KHĐT đề xuất).
In phiếu tư vấn (KHĐT đề xuất)
Phiếu tư vấn (Phiếu KHĐT đề xuất) là document loại TREATMENT_PLAN. Nó:
- Được in trước khi BN ký (status
DRAFThoặcAPPROVED). - Không hiển thị doanh thu thực tế, cash, earnings, hoặc e-invoice (CI-02, CI-07).
- Bao gồm clinic header, dòng dịch vụ, tổng cộng, chữ ký của bác sĩ + bệnh nhân.
- Yêu cầu quyền:
treatment_plan.read+document.print.
Bấm Print → browser print dialog. Bấm Download PDF → tải file PDF có branding phòng khám.
Theo dõi & cập nhật stage
Bắt đầu làm stage
Mở stage detail → chọn 1 hoặc nhiều chip răng từ related teeth → bấm Bắt đầu làm. Hệ thống tạo process (công đoạn) đầu tiên; bác sĩ ghi chú nếu cần.
Ghi nhận sub-step (công đoạn con)
Nếu service có sub-step template (cấu hình trong Clinic Settings), stage sẽ hiển thị checklist các bước. Bác sĩ bấm Ghi nhận mỗi bước khi hoàn thành (tự điền doctor + timestamp). Cùng 1 bước có thể ghi nhiều lần (ví dụ: gây tê lần 1, lần 2).
Hoàn thành stage
Điều kiện: stage phải có doctor assignment + ít nhất 1 process. Bấm Hoàn thành stage → stage chuyển COMPLETED, charge được tạo (nếu plan là APPROVED).
Doctor earning chỉ tính khi stage hoàn thành (nếu clinic bật compensation). Earning không đổi theo sub-step — nó tính cho doctor assigned trên stage, không phụ thuộc ai update process hay ai click hoàn thành.
Warranty & CRM follow-up
Warranty
Khi stage hoàn thành, BN có quyền bảo hành trong warranty period (ví dụ: 5 năm cho mão sứ). Nếu vấn đề phát sinh trong thời hạn, BN liên hệ phòng khám — staff mở Warranty alert trong Patient 360 tab Warranty.
CRM follow-up cho plan unaccepted
Nếu plan ở status DRAFT lâu (thường >3 ngày), CRM worker tự động tạo task follow-up cho nhân viên chăm sóc khách hàng (qua BullMQ job queue, không phải @nestjs/schedule). Task này chỉ tạo khi:
- Plan là
DRAFT(chưa ký). - Clinic bật customer-care service.
- Plan không trong danh sách exemption (đã hoàn thành, hủy, từ chối…).
Task key = (clinicId, branchId, treatmentPlanId, reason) → đảm bảo không tạo duplicate dù job chạy lại (CI-06).
Quyền & phân quyền
| Quyền | Cho phép |
|---|---|
treatment_plan.read | Xem plan + stage detail |
treatment_plan.manage | Tạo, chỉnh, hoàn thành stage |
document.print | In phiếu KHĐT |
Lưu ý & giới hạn
- Nếu service chưa có stage template, plan vẫn được tạo với 1 stage fallback.
- Charge được tạo khi stage hoàn thành + plan status ≥ APPROVED.
- Không thể sửa expected charge một khi stage đã started.
- Warranty counter chỉ tính từ ngày stage hoàn thành — không tính từ ngày BN ký plan.