# 03 — Danh mục tính năng NCV DCIMS 0.2.30

## Những điểm cần biết trong 0.2.30-r2

Ứng dụng là **0.2.30**; **r2** là revision bộ cài sửa quyền đọc mã chương trình trong image NAS. Tài liệu chốt ngày **30/09/2026**. NAS hiện tại đã cập nhật và đăng nhập bình thường; nhận tài liệu này không cần chạy cập nhật lại.

- Danh sách bệnh nhân lấy dữ liệu từ server, **25 hồ sơ mỗi trang**. Xem tổng số hồ sơ, dùng nút trang trước/trang sau; không kết luận bệnh nhân không tồn tại chỉ vì chưa thấy ở trang hiện tại. Tìm kiếm, lọc và sắp xếp áp dụng trên toàn bộ phạm vi được phép. Các số ca/cần bổ sung trong trang phản ánh trang hiện tại; tổng hồ sơ phản ánh kết quả tìm/lọc.
- Khi chọn đồng thời Bác sĩ và Dịch vụ, kết quả phải có **cùng một ca điều trị** thỏa cả hai điều kiện. Muốn tìm ca khác, điều chỉnh bộ lọc thay vì mở rộng quyền tài khoản.
- Back/Forward khôi phục hồ sơ đã mở kể cả khi hồ sơ không ở trang danh sách hiện tại; quyền truy cập vẫn được kiểm lại.
- Xóa ca điều trị sẽ thu hồi các link chia sẻ của ca. **Khôi phục ca không phục hồi link cũ**; người có quyền phải tạo link mới và gửi lại cho người nhận được phép.
- Nếu đăng nhập báo quá nhiều yêu cầu, chờ rồi thử lại; không bấm liên tục hoặc mở nhiều phiên đăng nhập cùng lúc.
- Trong Cài đặt, tiêu đề các khối không còn icon đứng trước. Icon trên menu và các nút vẫn được giữ. Các quyền nghiệp vụ của ADMIN, DOCTOR, LABO không đổi.

Ảnh trong PDF được chụp lại từ frontend build 0.2.30 ngày 30/09/2026, API mô phỏng và dữ liệu giả. Ảnh minh họa cách thao tác; không chứng nhận ghi dữ liệu, authorization hay UAT trên NAS.

## 1. Tổng quan

**NCV DCIMS — NCV Dental Clinical Image Management System** quản lý hồ sơ bệnh nhân, ca điều trị, checklist ảnh/phim/hợp đồng, chia sẻ preview và vận hành dữ liệu lâm sàng trên NAS. Frontend hỗ trợ trải nghiệm; mọi ranh giới quyền, phạm vi dữ liệu và quan hệ đối tượng đều được backend kiểm tra.

## 2. Xác thực và tài khoản

- Đăng nhập bằng username/mật khẩu Argon2id, session cookie riêng tư và CSRF.
- Ô mật khẩu có nút mắt xem/ẩn cục bộ; thao tác không lưu, log hoặc thay đổi request đăng nhập.
- Giới hạn thử đăng nhập, khóa tài khoản, đăng xuất phiên hiện tại hoặc tất cả phiên.
- Đổi mật khẩu bắt buộc cho tài khoản tạm.
- Quản trị tài khoản, vai trò, cơ sở, trạng thái và phạm vi dữ liệu.
- Secret của API Client chỉ hiển thị một lần; không lưu plaintext để xem lại.

## 3. Hồ sơ bệnh nhân và ca điều trị

- Tạo, tìm kiếm, cập nhật, lưu trữ và khôi phục hồ sơ theo quyền/scope.
- Ảnh đại diện private, có lịch sử/xóa mềm/khôi phục trong hạn cho phép.
- Tạo ca Implant, Răng sứ, Chỉnh nha mắc cài và Chỉnh nha Invisalign.
- Tái khám riêng cho Chỉnh nha; assignment bác sĩ và quan hệ cơ sở.
- Lưu trữ/khôi phục ca không xóa dữ liệu con.

## 4. Checklist theo loại điều trị

### Implant v6

Thứ tự responsive trên tablet/điện thoại:

1. Hợp đồng.
2. Kết quả xét nghiệm.
3. Ảnh trước điều trị 01–12.
4. Phim trước.
5. Phim phân tích.
6. Ảnh trụ sử dụng.
7. Phim sau cắm trụ.
8. Ảnh phục hình tạm 01–12.
9. Ảnh thiết kế răng phục hình.
10. Ảnh phôi sứ.
11. Phim sau phục hình.
12. Ảnh sau điều trị 01–12.
13. Thông tin bảo hành Implant.
14. Thông tin bảo hành răng sứ.

Ca Implant cũ được mở rộng qua lớp tương thích khi đọc. Snapshot/hash, media, manifest, storage key và byte tệp cũ không bị ghi lại.

### Răng sứ v4

Thứ tự responsive:

1. Hợp đồng.
2. Ảnh trước điều trị 01–12.
3. Ảnh thiết kế DSD.
4. Ảnh thiết kế răng phục hình.
5. Ảnh phôi sứ.
6. Ảnh sau điều trị 01–12.
7. Thông tin bảo hành răng sứ.

### Chỉnh nha

- Mắc cài và Invisalign giữ checklist, dữ liệu và quy trình hiện hành.
- Ảnh lần khám, phim pano/cephalo theo template.
- Xác nhận/mở lại theo phiên; tái khám không làm mất lịch sử phiên trước.

## 5. Media và hợp đồng

- Ảnh lâm sàng/avatar JPEG/PNG tối đa 10 MiB.
- Hợp đồng JPEG/PNG tối đa 10 MiB hoặc PDF tối đa 5 MiB.
- Upload vào quarantine, kiểm kích thước, MIME/chữ ký, decode an toàn và tạo preview.
- PDF được xử lý cô lập, giới hạn tài nguyên/trang, chặn active content; original chỉ tải dạng attachment theo quyền.
- PDF có trường chữ ký `/Sig` có thể vượt kiểm tra cấu trúc, nhưng hệ thống không tuyên bố chữ ký đã được xác thực pháp lý.
- Replace giữ phiên bản cũ; bản mới chỉ thành current sau khi xử lý hợp lệ.
- Xem preview/lightbox, tải từng original hoặc ZIP theo quyền.

Lưu ý: runtime production từ 0.1.19 không có malware scanner. Quarantine và kiểm định dạng không tương đương quét antivirus.

## 6. Xác nhận, chia sẻ và bảo hành

- ADMIN/DOCTOR có thể xác nhận dù checklist thiếu vị trí ảnh.
- Vẫn chặn khi có tệp pending/rejected, sai quyền/scope/relationship hoặc thiếu trường bảo hành bắt buộc.
- Mở lại cần lý do và tạo lịch sử/audit; manifest xác nhận bất biến.
- Chia sẻ chỉ preview được chọn, có watermark, link 3 ngày và khả năng thu hồi.
- Thông tin bảo hành Implant/răng sứ có mã, ngày, trạng thái và quy tắc theo ca.

## 7. Xóa mềm, retention và khôi phục

- Hồ sơ, ca, avatar, hợp đồng và media dùng luồng lưu trữ/xóa mềm phù hợp.
- Khôi phục trong hạn 30 ngày khi integrity, scope và slot không xung đột.
- Purge là thao tác hệ thống có legal-hold/backup/receipt gate, mặc định tắt.
- Deletion ledger tách biệt; không tuyên bố filesystem và PostgreSQL rollback nguyên tử.

## 8. Quản trị hệ thống

- Dashboard theo phạm vi dữ liệu.
- Thống kê cơ sở chỉ đếm bệnh nhân ACTIVE chưa xóa; ca điều trị loại ca đã xóa/lưu trữ và ca thuộc bệnh nhân không còn hoạt động. Ca COMPLETED chưa lưu trữ vẫn được tính.
- Quản lý cơ sở, tài khoản, checklist template và tích hợp API.
- External Customer API có feature flag, client credential, IP allowlist, scope và revoke/rotation.
- Audit cho hành động quan trọng; không trả storage path/key cho UI.

## 9. Bảo mật và vận hành

- Default-deny; permission + data scope + relationship + field policy.
- PostgreSQL/API nội bộ/media original/hợp đồng/backup không public trực tiếp.
- Gateway HTTPS, host allowlist, CORS, CSP nonce, HSTS và security headers.
- Secret qua tệp riêng; không nằm trong `.env` hoặc image.
- Backup hằng ngày, receipt/checksum, retention và restore drill; RAID/snapshot không thay backup.
- Storage mount guard/watchdog ngăn app chạy khi shared folder chưa mount.

## 10. Responsive và popup

- Desktop 1440 px, tablet dọc/ngang và điện thoại dọc/ngang có bố cục riêng.
- Tablet/điện thoại: mỗi khối media một hàng full-width; nhóm 12 ảnh dùng lưới theo breakpoint đã chốt.
- Desktop Implant dùng bố cục ba cột theo mẫu.
- Popup đóng bằng X, Esc hoặc click nền; popup lồng nhau đóng lớp trên cùng trước. Trạng thái đang xử lý không bị đóng ngoài ý muốn.
- Back/Forward và thao tác vuốt của trình duyệt đi qua lịch sử màn hình nội bộ: menu chính, hồ sơ bệnh nhân, ca/lần khám và tab con Cài đặt.
- Lịch sử được lưu trong `history.state`; URL không chứa ID bệnh nhân, ca hoặc dữ liệu nhận diện.

## Đính chính theo source 0.2.30

- LABO được seed dashboard.view; DOCTOR được seed warranty.archive theo scope.
- Chia sẻ có thể gồm preview ảnh/hợp đồng và thông tin bảo hành được chọn; không có tải original qua link chia sẻ.
- Tiêu đề tab: DCIMS - Nụ Cười Việt.
- Gói là source build trên NAS, không kèm image offline. FINAL là bộ bàn giao, không phải tuyên bố đã đạt UAT NAS.
