Lab work order
Lab work order (phiếu labo) là công việc được gửi đến phòng lab bên ngoài (hoặc lab nội bộ). Bác sĩ tạo phiếu từ stage của treatment plan, ghi chi tiết công việc (loại mão, vật liệu, shade, ảnh…), theo dõi progress, và nhận lại từ lab.
Quản lý danh mục lab (providers)
Vào /settings → Lab Providers → tạo danh sách phòng lab hợp tác:
- Lab name: tên phòng lab (ví dụ: "Nha-Lab Center").
- Contact: SĐT, email, địa chỉ.
- Services: loại công việc nhân lab (mão sứ, khay tẩy trắng, niềng…).
- Turnaround time (TTL): dự tính thời gian hoàn thành (ví dụ: 7 ngày).
Danh mục lab này riêng biệt với inventory — nó chỉ dùng cho workflow tracking phiếu labo, không tạo doanh thu hay tồn kho.
Tạo phiếu labo
Bước 1 — Mở treatment plan detail
Patient 360 → tab Treatment → chọn plan → scroll đến stage cần gửi lab.
Bước 2 — Bấm Create Lab (hoặc View Lab nếu đã có)
Trên stage card, bấm Create Lab (nếu chưa có) hoặc View Lab (nếu đã có lab active).
Bước 3 — Chọn provider & ghi chi tiết
- Provider: chọn lab từ danh mục.
- Lab service: loại công việc (ví dụ: "Mào sứ full").
- Related teeth: răng liên quan (11, 21…) — phải là subset của stage scope.
- Material: chất liệu (sứ, zirconia, composite…).
- Shade: màu sắc chuẩn (ví dụ: "A2").
- Occlusion / Notes: yêu cầu đặc biệt (ví dụ: "Gắp cao hơn 0.5mm").
- Expected delivery date: dự tính nhận (mặc định = hôm nay + TTL).
- Images: tải ảnh minh hoạ (shade guide, ảnh x-ray…).
Bước 4 — Lưu (draft) hoặc gửi
- Bấm Save as Draft nếu chưa sẵn sàng gửi lab.
- Bấm Send to Lab → phiếu được khóa snapshot + server sinh document number tự động.
Phiếu labo được tạo từ treatment plan stage, không thể tạo trực tiếp từ Lab Orders queue. Nếu muốn create phiếu mới, quay về treatment plan detail và làm từ đó.
Theo dõi & nhận labo
Status flow
Enum LabWorkOrderStatus gồm 8 trạng thái:
- DRAFT: chưa gửi, có thể chỉnh sửa.
- SENT_TO_LAB: đã gửi labo, chờ hoàn thành.
- IN_PROGRESS: labo xác nhận đang làm.
- READY: labo báo sẵn sàng giao (tuỳ provider có notify).
- RECEIVED: đã nhận lại tại phòng khám (receptionist hoặc bác sĩ đánh dấu).
- DELIVERED_TO_DOCTOR: bác sĩ đã lấy phôi/lab để dùng trên ghế.
- CANCELED: phiếu bị huỷ trước khi nhận.
- REWORK_REQUIRED: phát hiện lỗi sau khi nhận — yêu cầu labo làm lại.
OVERDUE không phải status — là trạng thái suy ra khi expected_delivery_date đã qua mà status chưa chuyển RECEIVED. UI tô màu cảnh báo, không lưu trong enum.
Đánh dấu đã nhận (Received)
Khi labo về phòng khám, receptionist (hoặc staff có quyền lab_work_order.manage) mở lab detail → bấm Mark as Received. Hệ thống ghi timestamp, staff name, status chuyển RECEIVED. Khi bác sĩ lấy phôi để dùng trên ghế, chuyển DELIVERED_TO_DOCTOR.
Rework — tạo version mới
Nếu labo có lỗi, bác sĩ không sửa phiếu cũ mà bấm Continue (từ detail hoặc queue) → tạo phiếu mới (version 2) cùng tooth scope. Phiếu cũ giữ lại trong timeline audit.
In phiếu labo
Preview & Print
- Preview: xem nội dung phiếu trước khi in (yêu cầu
lab_work_order.read). - Print: mở browser print dialog → in qua máy in phòng khám (yêu cầu
document.print). - Download PDF: tải file PDF có branding phòng khám, lưu vào máy tính (yêu cầu
document.export).
Phiếu LAB_WORK_ORDER ghi: mã phiếu, patient, doctor, provider, service, teeth, material, shade, notes, images, expected date, signature line.
Lab Orders queue (tổng quan phiếu)
Vào Lab Orders để xem toàn bộ phiếu đang chạy:
- Summary cards: tổng số phiếu, overdue count, filter option.
- Anchors: "Hàng đợi" (SENT_TO_LAB / IN_PROGRESS / READY), "Quá hạn" (suy ra từ
expected_delivery_date), "Danh mục lab", "Hướng dẫn". - Compact filters: theo provider, status, teeth, expected date range.
- Quick actions: từ queue row, bấm "View", "Continue", "Mark Received".
Lab Orders có help icon trên filter legend giải thích stage source, snapshot, source branch, overdue rule, document gates — để operator không nhầm queue filter với data owner.
Lab numbering (Document numbering counter)
Mỗi phiếu labo được cấp document number tự động khi Send to Lab (sử dụng DocumentNumberingType counter chung). Number này:
- Tự động tạo — staff không cần nhập.
- Được khóa transaction — không trùng hoặc reuse (CI-05).
- Riêng biệt với e-invoice numbering — không liên quan đến hóa đơn hợp pháp (CI-07).
Quyền & phân quyền
| Quyền | Cho phép |
|---|---|
lab_work_order.read | Xem phiếu labo, detail, timeline |
lab_work_order.manage | Tạo, chỉnh, gửi, mark received, continue |
document.print | In phiếu LAB_WORK_ORDER |
document.export | Download PDF phiếu |
Overdue alert & stage blocking
Khi lab chưa nhận (status ≠ RECEIVED) + past expected date → phiếu hiển thị OVERDUE badge trong Lab Orders queue. Bác sĩ được nhắc liên hệ lab, hoặc tạo Continue phiếu mới nếu cần rework.
Stage sẽ blocked UI nếu có lab active chưa RECEIVED (yêu cầu bác sĩ giải quyết lab trước khi hoàn thành stage).
Lưu ý & giới hạn
- Phiếu labo không tạo charge, payment hay revenue (CI-07) — nó chỉ là document tracking.
- Danh mục lab là riêng biệt với inventory — không tạo tồn kho hay xuất vật tư.
- Snapshot được khóa khi gửi → không thể sửa chi tiết, phải tạo version mới (Continue).
- Tooth list trên phiếu labo phải là subset của stage scope — không thể gửi lab cho răng không trong stage plan.
- Tạo phiếu chỉ từ treatment plan stage — không thể tạo trực tiếp từ Lab Orders queue.