Xử lý sự cố thường gặp

Bảng quick-fix cho những vấn đề phổ biến. Nếu không tìm thấy, liên hệ support.

Đăng nhập & truy cập

Triệu chứngNguyên nhân thường gặpCách checkCách fix
Không login được: "Invalid email/password"Nhập sai password, hoặc tài khoản chưa activatedThử reset password (quên mật khẩu?). Kiểm tra email xác nhậnClick "Quên mật khẩu" → nhập email → reset link → set password mới
Login thành công nhưng "403 Forbidden" trên mọi pageTài khoản không gán role/permission, hoặc clinic scope lỗiContact admin: "Tôi có role gì không?" trong user managementAdmin gán role + permission cho account. User logout rồi login lại
"You don't have permission to access this clinic"Người dùng bị xoá khỏi clinic hoặc multi-clinic setup lỗiXem admin → users → [user] → clinic assignmentAdmin thêm user vào clinic scope. Hoặc user switch clinic ở header
Network timeout khi login (page hang)WiFi yếu, hoặc API downPing server, xem network tab in DevToolsRefresh page, thử lại. Nếu persistent, check server status hoặc network

Bệnh nhân & Visit

Triệu chứngNguyên nhânCách checkCách fix
Không tìm thấy BN cũ khi searchSĐT ghi sai, hoặc BN chưa importSearch bằng tên hoặc ID. Xem Patient list total countThử search "keyword" đơn giản, hoặc kiểm tra import log
BN duplicate: 2 record cùng SĐTImport sạch sẽ, hoặc lệnh tạo 2 lầnPatients → sort by phoneMở BN mới (sai) → Menu → Merge into… → chọn BN gốc
Tạo visit nhưng branchId sai (ghi nhánh A thay B)Active branch lỗi hoặc UI mặc định wrongMở visit detail → check branch fieldNếu chưa charge: xoá + tạo lại. Nếu có charge: contact admin (need migration)
Patient 360 timeline không hiển thị visit cũCache chưa refresh, hoặc permission missing (CI-04, CI-08)Refresh page. Check permission: bạn có visit.read không?Refresh. Nếu vẫn mất, contact admin (cache invalidation issue)

Thanh toán & Tiền

Triệu chứngNguyên nhânCách checkCách fix
Ghi nhận payment nhưng không thấy phiếu thuMáy in lỗi, hoặc payment ghi nhầm branchMở payment detail. Xem print historyIn lại từ payment detail, hoặc in từ browser (backup PDF)
Cash session không close được: "Balance mismatch"Có entry ghi sai, hoặc quên ghi expenseXem cash ledger hôm nay, check tất cả entryTìm entry sai, edit/delete nó. Rồi close lại. Nếu cần unlock: admin reopen
Payment bị hủy nhưng outstanding không khôi phụcCache chưa invalidate (CI-04)Refresh Patient 360. Xem payment history detailRefresh page. Nếu vẫn sai, contact admin
"Permission denied" khi ghi paymentBạn không có payment.manage, chỉ có payment.readXem role settings. Admin check user permission codeAdmin gán payment.manage permission. User re-login

E-invoice

Triệu chứngNguyên nhânCách checkCách fix
E-invoice timeout: "Failed to issue after 3 retries"Provider API down (VNPT/MISA/Viettel), hoặc sandbox/production config saiCheck e-invoice setting → provider status. Ping provider URL. Xem API logsVerify provider connection string. Switch sandbox ↔ production setting. Retry issue
E-invoice phát hành thành công nhưng không lưu số HĐDB insert lỗi sau provider response, hoặc cache missCheck e-invoice detail: số HĐ có ghi không?Manual re-fetch từ provider, hoặc contact admin (need DB fix)
"Cannot issue e-invoice: payment not found"E-invoice gắn payment không tồn tại, hoặc payment bị xoáMở payment detail. Xem link sang e-invoiceNếu payment bị xoá: không thể reissue. Ghi payment mới + reissue e-invoice
E-invoice status "REJECTED" từ providerProvider data validation fail: thông tin BN/hóa đơn không hợp lệXem e-invoice error message chi tiết từ providerFix data (số điện thoại, địa chỉ BN, amount), rồi retry

In ấn & Phiếu tư vấn

Triệu chứngNguyên nhânCách checkCách fix
Máy in không nhận jobDriver lỗi, WiFi disconnect, hoặc in port sai configCheck system settings → printers. Network → ping printerRestart printer + computer. Update driver. Re-add printer to system
In ra khi không phải A4: "paper size wrong"Printer setting mặc định khác A4, hoặc job config saiSystem preferences → printers → default paper sizeSet paper size = A4. Hoặc print từ browser (manual setting per job)
Phiếu tư vấn (KHĐT) in ra không đẹp: text lệch, hình bị cắtCSS print responsive issue, hoặc browser zoom level saiMở phiếu preview → check layout. Browser zoom = 100%?Reset zoom (Cmd+0). Clear browser cache. Thử in từ trình duyệt khác
"Print bridge offline" alertLocal print daemon down, hoặc network lostCheck print bridge app running? Network connected?Start print bridge app (if installed). Fallback: browser print. Reconnect network

Lab order

Triệu chứngNguyên nhânCách checkCách fix
Lab order "PENDING" quá lâu, không update statusLab chưa nhận order, hoặc SMS/email không đếnXem order detail: SMS sent? Lab contact thông báo?Contact lab trực tiếp. Hoặc manual update status nếu lab xác nhận đã nhận
Lab order gửi không đến (SMS/email fail)Provider SMS/email config sai, hoặc lab number saiXem lab setting → provider. Check lab phone/emailVerify provider API key. Update lab contact info. Resend order
Lab order kết quả không match BN (sai sample)Lab comment ghi sai sample ID, hoặc order tạo sai BNXem order vs result detail. So sánh BN name, toothContact lab xác nhận. Nếu thực sự sai: tạo order mới, old order mark "CANCELED"

Notification & CRM

Triệu chứngNguyên nhânCách checkCách fix
Notification bell không hiển thị badge countBadge cache stale, hoặc new notification không syncRefresh page. Xem notification detailManual refresh. If persistent: admin check outbox processor running
Customer Care task không tự tạo (plan chưa ký quá 3 ngày)BullMQ scheduler job lỗi, hoặc customer_care feature disabledCheck app logs: "scheduler started", "task created". Settings: CC disabled?Restart worker role (APP_ROLES=worker). Enable CC feature in settings. Manual trigger job
Task outcome saved nhưng queue vẫn show activeCache invalidation chậm (CI-04)Refresh CC queue. Check task detail statusRefresh. Wait 30 sec. If stuck: admin invalidate cache manually

Nhân sự & vị trí chuyên môn

Triệu chứngNguyên nhânCách checkCách fix
Bác sĩ không hiện trong ô "Chọn bác sĩ"Vị trí chuyên môn không phải DENTIST (đang OTHER hoặc bỏ trống)Tổ chức → Nhân sự → mở nhân viên → xem trường Vị trí chuyên mônĐặt vị trí = DENTIST. Dropdown "Chọn bác sĩ" chỉ hiện DENTIST
Phụ tá / KTV không hiện trong ô "Chọn phụ tá"Vị trí = OTHER (bị loại) hoặc bỏ trốngMở nhân viên → xem Vị trí chuyên mônĐặt vị trí = ASSISTANT / HYGIENIST / TECHNICIAN (hoặc DENTIST). Vị trí OTHER không hiện ở ô chọn phụ tá
Lưu nhân viên báo "Mã số nhân viên đã tồn tại"Mã số (staffCode) trùng với nhân viên khác trong phòng khám (HTTP 409)Nhân sự → search mã số đang nhậpĐổi sang mã khác chưa dùng, hoặc để trống mã số (cho phép trùng rỗng)
2 nhân viên trùng tên, khó phân biệt trong dropdownChưa đặt mã số nên dropdown chỉ thấy tênMở dropdown → xem dòng phụ dưới tênĐặt mã số riêng cho mỗi người (VD DOC-001, DOC-002) → dropdown hiện mã để phân biệt

Performance

Triệu chứngNguyên nhânCách checkCách fix
Patient 360 load chậm (5+ giây)N+1 query, hoặc BN có visit/charge nhiều quáDevTools → Network. Check API call time. Patient visit count?Refresh. If persistent: Admin check database index. Or contact support (need query optimization)
Danh sách BN search kết quả chậmSearch keyword vô tình trigger full table scan, hoặc filter complexCheck search query, filter input. Try simpler keywordUse shorter search term. Filter by fewer criteria. Admin add database index if needed
Browser crash khi mở big appointment calendarJavaScript render chậm, 1000+ appointment 1 screenCheck calendar date range. Appointment count?Narrow date range (2 weeks instead of 3 months). Or switch to table view