Bảo mật & dữ liệu

Dữ liệu một labo không bao giờ rò sang labo khác — đó là ranh giới cứng, không phải cấu hình bạn phải tự bật.

Bảo mật trong DentIQ Lab dựa trên ba trụ: cô lập dữ liệu theo tenant (mỗi labo là một ranh giới cứng), đăng nhập bằng loginId, và quyền theo labo permission giải theo cạnh clinic-labo graph. Mô hình này được thiết kế để "mặc định từ chối" — bạn không thấy gì ngoài phạm vi mình thuộc về.

Cô lập theo tenant

Đơn vị thuê (tenant) chính là một labo. Labo là ranh giới dữ liệu cứng: dữ liệu một labo không rò sang labo khác. Phòng khám là thực thể nhẹ, có thể "không tài khoản" — tồn tại như đối tác của labo (đặt đơn qua QR/web link) kể cả khi chưa từng đăng nhập; khi tự đăng ký thì danh tính nhẹ này được nâng cấp.

  • Ranh giới cứng theo labo. Mọi truy vấn được lọc theo labId của người dùng — không có đường đọc chéo sang labo khác.
  • Superadmin nền tảng tách tuyến. User vận hành nền tảng có labId = null, chỉ chạm được bề mặt quản trị hệ thống, và bị từ chối mọi tuyến của tenant labo — không lẫn vào dữ liệu labo.

Truy cập theo cạnh clinic-labo graph

Quan hệ labo ↔ phòng khám là mạng nhiều-nhiều: một labo nối nhiều clinic, một clinic nối nhiều labo. Quyền nhìn theo cạnh, không theo tenant đơn lẻ: một work order thuộc về đúng một cạnh (labo X ↔ clinic Y), và chỉ hai đầu cạnh đó thấy cùng một bản ghi case realtime. Labo khác / clinic khác không thấy.

Nguyên tắcNghĩa là
Mặc định từ chốiKhông thấy gì ngoài các cạnh mình thuộc về.
Clinic chỉ thấy case của mìnhVới labo đó — không thấy hàng đợi nội bộ, giá vốn, hay technician nào làm.
Labo thấy toàn bộ vận hành nội bộ+ thông tin clinic cần để làm đúng (Rx, ảnh, shade…).
Tối thiểu hoá dữ liệu bệnh nhânLabo cần thông tin kỹ thuật (răng, vật liệu), không cần hồ sơ y tế đầy đủ — chỉ lưu cái cần để chế tác + bảo hành.

Danh tính & quyền

User đăng nhập bằng loginId (tên đăng nhập) + mật khẩu, không bằng email; loginId duy nhất toàn hệ thống, lưu chuẩn hoá chữ thường. Mỗi user thuộc đúng một labo và mang một hoặc nhiều labo role; quyền thao tác được giải ra từ tập labo permission của các role đó và đính vào phiên để gác từng thao tác. Quyền phạm vi nền tảng (scope='system') không bao giờ lộ cho một labo — cơ chế ẩn khiến tenant không thể thấy, xin hay được cấp quyền nền tảng.

Nhật ký & riêng tư

Mọi truy cập case được ghi log để audit. Bệnh nhân là dữ liệu của phòng khám; labo là bên xử lý theo mục đích chế tác. Log được lưu tách khỏi cơ sở dữ liệu nghiệp vụ, có thời gian giữ giới hạn (TTL — tự hết hạn để không phình vô hạn), và không chứa dữ liệu nhạy cảm / bí mật trong nội dung log.

Lưu ý

Việc một người "không thấy" dữ liệu của labo/phòng khám khác không phải lỗi — đó là cô lập tenant hoạt động đúng. Muốn hai bên cùng thấy một case, phải tồn tại cạnh hợp tác giữa labo và phòng khám đó (xem phân quyền). Dữ liệu bệnh nhân chỉ lưu ở mức tối thiểu cần cho chế tác + bảo hành.