TỔNG QUAN THIẾT KẾ CƠ SỞ DỮ LIỆU & QUAN HỆ ERD
Mô hình dữ liệu quan hệ (Relational Database Schema) được chuẩn hóa theo dạng chuẩn 3NF, phân tách rõ ràng giữa dữ liệu hành chính nhân khẩu học, dữ liệu lâm sàng ngoại trú và dữ liệu chuyên sâu của Đơn nguyên Thận Nhân Tạo 30 máy.
1.1. Khóa Chính Trung Tâm (Primary Entities) & Nguyên Tắc Khóa Liên Kết
Hệ thống xoay quanh 4 thực thể cốt lõi:
patient_id.encounter_id. Liên kết với Bác sĩ khám, Phòng khám chuyên khoa, STT tiếp nhận và hóa đơn viện phí.machine_id (M01-M30), patient_id, Điều dưỡng phụ trách, Bác sĩ chỉ định, phiếu 3 pha và dữ liệu Telemetry chu kỳ 2s.sid (Sample Identifier). Chứa danh sách chỉ định xét nghiệm (Ure, Creatinin, Điện giải, HBsAg...) và kết quả 2 chiều từ máy phân tích.1.2. Sơ đồ Quan hệ Thực thể ERD (Entity Relationship Diagram)
KHỐI II: ĐƠN NGUYÊN THẬN NHÂN TẠO (HEMODIALYSIS UNIT - 30 ĐẾN 60 MÁY)
Quy chuẩn kỹ thuật chuyên sâu theo tài liệu RFP: Vận hành buồng lọc Nikkiso, Lập lịch 2-4-6 & 3-5-7, Phiếu theo dõi 3 pha, Kỹ thuật HD/HDF Online Thông tư 23/2024/TT-BYT, Telemetry 2s, Trạm RO ISO 23500 và TV Wall Command Center.
VẬN HÀNH MA TRẬN BUỒNG LỌC MÁU 30–60 MÁY & CHECKLIST AN TOÀN
DOM ID: #pane-buong-loc-mauMàn hình điều khiển ma trận 30 máy lọc máu chia theo Buồng A (M01-M16) và Buồng B (M17-M30), kiểm soát 5 mã màu trạng thái máy và ép buộc thực hiện Checklist 4 bước trước khi gán người bệnh.
1. Quy Trình Nghiệp Vụ & Thao Tác Màn Hình (UI Actions)
ready (Sẵn sàng), click nút "Gán người bệnh". Hệ thống mở modal #modalAssignMachine nạp mã máy đích.#chkSafePatient (Đúng BN & quả lọc), #chkSafeDialysate (Dịch A/B đúng), #chkSafeMachine (Hóa chất khử trùng âm tính), #chkSafeRo (Nước RO < 10 uS/cm). Nhập Cân trước lọc, Cân khô, Target UF. Nếu thiếu checkbox -> Chặn và báo lỗi Toast.error.disinfecting (Khử trùng - Vàng) với thời gian làm sạch 30 phút.alarm (Đỏ nhấp nháy animation). Click "Đã xử lý xong báo động" để đưa máy trở lại trạng thái running.2. Thiết Kế Bảng Cơ Sở Dữ Liệu: dialysis_machines
Bảng quản lý danh mục và trạng thái vận hành tức thời của 30 máy lọc máu Nikkiso:
| Tên Cột (Column) | Kiểu Dữ Liệu (SQL) | Khóa (Key) | Ràng Buộc (Constraints) | Ý Nghĩa Nghiệp Vụ & Quy Tắc |
|---|---|---|---|---|
| machine_id | VARCHAR(10) | PK | NOT NULL | Mã định danh máy lọc máu (Ví dụ: 'M01', 'M02', ..., 'M30') |
| machine_name | VARCHAR(50) | NOT NULL | Tên hiển thị: 'Máy Nikkiso DBB-07 - Giường 01' | |
| zone_id | VARCHAR(10) | NOT NULL | Khu vực buồng máy: 'A' (M01-M16) hoặc 'B' (M17-M30) | |
| serial_number | VARCHAR(50) | UNIQUE | Số sê-ri phần cứng thiết bị do Nikkiso sản xuất | |
| current_status | VARCHAR(20) | NOT NULL DEFAULT 'ready' | 5 trạng thái: 'running', 'ready', 'disinfecting', 'alarm', 'maintenance' | |
| isolation_flag | BOOLEAN | DEFAULT FALSE | Đánh dấu máy dành riêng cho bệnh nhân cách ly (HBV/HCV/HIV) | |
| current_session_id | BIGINT | FK | NULLABLE | ID ca lọc đang vận hành trên máy (Tham chiếu dialysis_sessions) |
| connection_type | VARCHAR(20) | DEFAULT 'RS232' | Chuẩn giao tiếp: 'RS232' (Cổng COM) hoặc 'TCP_IP' (Ethernet) | |
| ip_address | VARCHAR(45) | NULLABLE | Địa chỉ IP bộ chuyển đổi Moxa / Card mạng kết nối | |
| last_disinfected_at | TIMESTAMP | NULLABLE | Thời điểm hoàn tất chu trình khử khuẩn nhiệt gần nhất | |
| total_hours_operated | DECIMAL(10,1) | DEFAULT 0.0 | Tổng số giờ vận hành tích lũy phục vụ bảo trì định kỳ |
3. API Payload Mẫu: Khởi Động Ca Lọc & Gán Máy (POST /api/dialysis/assign)
LẬP LỊCH CHẠY THẬN CHU KỲ (2-4-6, 3-5-7; 3 CA/NGÀY)
DOM ID: #pane-lich-chay-thanQuản lý lịch lọc máu cố định hàng tuần, điều phối 3 ca lọc trong ngày và thuật toán quét chống trùng ca, bảo vệ an toàn cách ly lây nhiễm HBV/HCV.
1. Quy Trình Nghiệp Vụ & Thao Tác Màn Hình
hbv_positive = true, BẮT BUỘC máy phải có cờ isolation_flag = true. Nếu vi phạm, hiển thị thẻ cảnh báo màu cam và chặn lưu.2. Thiết Kế Bảng Cơ Sở Dữ Liệu: dialysis_schedules
| Tên Cột (Column) | Kiểu Dữ Liệu | Khóa | Ràng Buộc | Ý Nghĩa Nghiệp Vụ |
|---|---|---|---|---|
| schedule_id | BIGSERIAL | PK | NOT NULL | Khóa chính tự tăng của lịch điều trị |
| patient_id | VARCHAR(20) | FK | NOT NULL | Mã người bệnh suy thận mạn (Tham chiếu patients) |
| machine_id | VARCHAR(10) | FK | NOT NULL | Mã máy Nikkiso phân bổ (Tham chiếu dialysis_machines) |
| cycle_pattern | VARCHAR(10) | NOT NULL | Chu kỳ tuần: '2_4_6' hoặc '3_5_7' | |
| shift_number | SMALLINT | NOT NULL | Ca lọc trong ngày: 1 (07:00-11:00), 2 (11:30-15:30), 3 (16:00-20:00) | |
| modality | VARCHAR(20) | DEFAULT 'HD' | Phương thức: 'HD_HIGH_FLUX', 'HDF_POST', 'HDF_PRE' | |
| is_isolated | BOOLEAN | DEFAULT FALSE | Yêu cầu lọc cách ly buồng riêng do nhiễm virus viêm gan | |
| effective_from | DATE | NOT NULL | Ngày bắt đầu áp dụng lịch chu kỳ | |
| is_active | BOOLEAN | DEFAULT TRUE | Trạng thái hiệu lực của lịch lọc máu |
PHIẾU THEO DÕI LỌC MÁU ĐIỆN TỬ 3 PHA & KÝ SỐ PKI
DOM ID: #pane-phieu-chay-thanVăn bản pháp lý số hóa chuẩn Thông tư 46/2018/TT-BYT thay thế bản giấy: Quản lý 3 pha khép kín (Trước lọc -> Theo dõi trong ca mỗi 30-60 phút -> Sau lọc) và ký số PKI SmartCA.
1. Quy Trình Nghiệp Vụ & Thao Tác Màn Hình
2. Thiết Kế Bảng: dialysis_sessions (Ca Lọc Máu Chính)
| Tên Cột | Kiểu Dữ Liệu | Khóa | Ràng Buộc | Ý Nghĩa Nghiệp Vụ |
|---|---|---|---|---|
| session_id | VARCHAR(30) | PK | NOT NULL | Mã phiên lọc máu (Ví dụ: 'DS-20261009-M01-01') |
| patient_id | VARCHAR(20) | FK | NOT NULL | Mã bệnh nhân lọc máu |
| machine_id | VARCHAR(10) | FK | NOT NULL | Mã máy Nikkiso thực hiện |
| pre_weight_kg | DECIMAL(4,1) | NOT NULL | Cân nặng trước lọc (kg) | |
| dry_weight_kg | DECIMAL(4,1) | NOT NULL | Cân nặng khô chuẩn quy định (kg) | |
| target_uf_ml | INTEGER | NOT NULL | Mục tiêu rút nước siêu lọc UF Goal (mL) | |
| actual_uf_ml | INTEGER | NULLABLE | Tổng lượng dịch rút thực tế sau khi kết thúc ca (mL) | |
| post_weight_kg | DECIMAL(4,1) | NULLABLE | Cân nặng đo sau khi tháo kim lọc (kg) | |
| vascular_access | VARCHAR(20) | DEFAULT 'AVF' | Đường vào mạch máu: 'AVF' (Cầu tay), 'AVG', 'CATHETER' | |
| dialyzer_model | VARCHAR(50) | Model màng lọc (VD: 'Fresenius FX CorDiax 80', 'Elisio 19H') | ||
| heparin_total_iu | INTEGER | DEFAULT 3000 | Tổng liều chống đông Heparin sử dụng trong ca (IU) | |
| doctor_signed | BOOLEAN | DEFAULT FALSE | Trạng thái ký số của Bác sĩ trưởng ca | |
| nurse_signed | BOOLEAN | DEFAULT FALSE | Trạng thái ký số của Điều dưỡng phụ trách | |
| digital_signature_hash | TEXT | NULLABLE | Chuỗi mã băm SHA-256 kèm chứng thư số PAdES bất biến |
3. Thiết Kế Bảng: dialysis_flowsheet_logs (Nhật Ký Theo Dõi Theo Giờ)
| Tên Cột | Kiểu Dữ Liệu | Khóa | Ý Nghĩa Nghiệp Vụ & Giới Hạn Lâm Sàng |
|---|---|---|---|
| log_id | BIGSERIAL | PK | Khóa chính tự tăng của mốc theo dõi |
| session_id | VARCHAR(30) | FK | Tham chiếu đến phiên lọc dialysis_sessions |
| timepoint | TIME | Giờ ghi nhận (VD: '07:00', '08:00', '09:00', '10:00', '11:00') | |
| bp_systolic | SMALLINT | Huyết áp tâm thu (mmHg) - Cảnh báo nếu < 90 mmHg (Tụt HA) | |
| bp_diastolic | SMALLINT | Huyết áp tâm trương (mmHg) | |
| pulse_bpm | SMALLINT | Tần số mạch (lần/phút) | |
| blood_flow_qb | SMALLINT | Tốc độ bơm máu Qb (mL/min) - Thường từ 250 - 350 mL/min | |
| dialysate_flow_qd | SMALLINT | Lưu lượng dịch lọc Qd (mL/min) - Thường cố định 500 mL/min | |
| venous_pressure_vp | SMALLINT | Áp lực tĩnh mạch VP (mmHg) - Bình thường: 80 - 150 mmHg | |
| tmp_pressure | SMALLINT | Áp lực xuyên màng TMP (mmHg) - Cảnh báo nếu > 200 mmHg (Đông màng) | |
| hourly_uf_ml | INTEGER | Lượng dịch rút trong giờ (mL) | |
| accumulated_uf_ml | INTEGER | Tổng lượng dịch rút lũy kế từ đầu ca (mL) | |
| clinical_notes | VARCHAR(255) | Ghi chú điều dưỡng: Thuốc tiêm, dịch bù, xử trí triệu chứng |
TELEMETRY IOT MÁY NIKKISO & GIÁM SÁT TRẠM NƯỚC RO ISO 23500
DOM ID: #pane-telemetry-nikkiso & #pane-tram-nuoc-roGiao thức thu thập dữ liệu thời gian thực 2s/lần qua RS-232/Ethernet và hệ thống cảm biến IoT giám sát trạm nước RO 2 cấp y tế đạt chuẩn ISO 23500 kèm chu trình khử khuẩn nhiệt 85°C.
1. Giao Thức Giao Tiếp Telemetry Nikkiso DBB-07/27 (RS-232 / TCP)
Cấu hình cổng nối tiếp chuẩn công nghiệp: Baudrate: 9600 bps | Data Bits: 8 | Parity: None | Stop Bits: 1. Chu kỳ phát gói tin: 2000ms.
2. Thiết Kế Bảng CSDL: ro_system_logs (Giám Sát Nước RO Chuẩn ISO 23500)
| Tên Cột | Kiểu Dữ Liệu | Tiêu Chuẩn ISO 23500 | Ý Nghĩa Nghiệp Vụ & Ngưỡng An Toàn |
|---|---|---|---|
| log_id | BIGSERIAL PK | - | Mã định danh log đo tự động |
| recorded_at | TIMESTAMP | - | Thời điểm cảm biến ghi nhận dữ liệu |
| permeate_tds_ppm | DECIMAL(5,2) | TDS < 5 ppm | Tổng chất rắn hòa tan đầu ra sau màng RO Cấp 2 (Thực tế: 1.1 ppm) |
| loop_conductivity_us | DECIMAL(5,2) | ≤ 10 μS/cm | Độ dẫn điện nước cấp vòng Loop PEX (Thực tế: 1.2 μS/cm - Đạt chuẩn) |
| supply_pressure_bar | DECIMAL(4,2) | 2.5 - 3.0 bar | Áp lực đường cấp đến 30 máy (Thực tế: 2.8 bar) |
| return_pressure_bar | DECIMAL(4,2) | > 1.5 bar | Áp lực đường hồi về bồn RO (Thực tế: 1.6 bar - Đảm bảo dòng chảy liên tục) |
| flow_velocity_mps | DECIMAL(3,1) | > 1.0 m/s | Vận tốc dòng hoàn lưu (1.2 m/s - Ngăn chặn hình thành màng biofilm) |
| is_hot_disinfection | BOOLEAN | 85°C x 40 min | Cờ đánh dấu đang trong chu trình khử trùng nhiệt ban đêm |
| endotoxin_eu_per_ml | DECIMAL(5,3) | < 0.25 EU/mL | Kết quả kiểm định nội độc tố định kỳ (Thực tế: < 0.01 EU/mL) |
| bacteria_cfu_per_ml | INTEGER | < 100 CFU/mL | Kết quả cấy vi khuẩn hiếu khí định kỳ (Thực tế: 0 CFU/mL) |
TV WALL COMMAND CENTER & ĐỊNH MỨC NHÂN SỰ BUỒNG THẬN (1:4)
DOM ID: #pane-tv-wall-buong-than & #pane-nhan-su-buong-thanMàn hình giám sát tập trung trên TV lớn 55-75 inch với Dark Theme #090d16 và thuật toán giám sát tỷ lệ an toàn y tế bắt buộc 1 Điều dưỡng / 4-5 máy Nikkiso.
1. Thao Tác Giao Diện TV Wall (#pane-tv-wall-buong-than)
Màn hình được thiết kế tối ưu hiển thị không giật lag ở tốc độ 60 FPS:
- Bật toàn màn hình: Click nút "Mở TV Wall Toàn Màn Hình" hoặc phím F11. Hệ thống tự động ẩn menu sidebar và thanh footer.
- Hiệu ứng Báo động (Alarm Pulse): Khi có máy gửi tín hiệu lỗi qua WebSocket, thẻ máy trên TV Wall tự động bật CSS class
.alarmcó hiệu ứng chớp đỏ viền@keyframes alarmPulsekèm phát còi âm thanh. - Đếm lùi thời gian tự động: Mỗi giây hệ thống giảm thời gian đếm lùi của ca lọc và đổi màu chữ vàng khi còn dưới 15 phút.
2. Thuật Toán Kiểm Soát Định Mức Nhân Sự Y Tế (Ratio Algorithm)
BÁO CÁO CHẤT LƯỢNG LỌC MÁU: KT/V, URR & QUYẾT TOÁN BHYT XML 4210
DOM ID: #pane-bao-cao-thanHệ thống phân tích chất lượng điều trị lâm sàng tự động tính liều lọc máu Daugirdas và xuất dữ liệu đối soát bảo hiểm y tế.
1. Công Thức Tính Toán Lâm Sàng: Kt/V (Daugirdas Tự Nhiên) & URR
KHỐI I: LÂM SÀNG, TIẾP NHẬN & CỔNG NGƯỜI BỆNH (MODULES 01 - 04)
TIẾP NHẬN BỆNH NHÂN & QR CCCD
DOM ID: #pane-tiep-nhanBảng Cơ Sở Dữ Liệu: patients & encounters
| Tên Cột | Kiểu Dữ Liệu | Khóa | Ràng Buộc | Ý Nghĩa Nghiệp Vụ |
|---|---|---|---|---|
| patient_id | VARCHAR(20) | PK | NOT NULL | Mã PID duy nhất của bệnh nhân (VD: 'DEMO001') |
| national_id | VARCHAR(12) | UNIQUE | Số CCCD gắn chip 12 số đọc từ mã QR chuẩn Bộ Công An | |
| bhyt_card_number | VARCHAR(15) | NULLABLE | Mã số thẻ Bảo hiểm y tế (10 hoặc 15 ký tự) | |
| full_name | VARCHAR(100) | NOT NULL | Họ và tên đầy đủ viết hoa | |
| date_of_birth | DATE | NOT NULL | Ngày tháng năm sinh | |
| gender | VARCHAR(10) | Giới tính: 'MALE', 'FEMALE', 'OTHER' | ||
| phone_number | VARCHAR(15) | Số điện thoại liên lạc / nhận OTP cổng bệnh nhân | ||
| address | VARCHAR(255) | Địa chỉ thường trú theo CCCD |
KHÁM BỆNH NGOẠI TRÚ & KÊ ĐƠN THUỐC
DOM ID: #pane-kham-benhBảng Cơ Sở Dữ Liệu: clinical_examinations & prescriptions
Lưu trữ triệu chứng cơ năng, sinh hiệu (Mạch, Nhiệt độ, Huyết áp, BMI theo chuẩn WPRO), chẩn đoán bệnh theo mã danh mục quốc tế ICD-10 và danh mục thuốc kê đơn.
| Tên Cột | Kiểu Dữ Liệu | Khóa | Ý Nghĩa Nghiệp Vụ |
|---|---|---|---|
| exam_id | BIGSERIAL PK | PK | Mã đợt khám bệnh lâm sàng |
| encounter_id | BIGINT FK | FK | Liên kết lượt tiếp nhận |
| icd10_code | VARCHAR(10) | Mã bệnh ICD-10 (Ví dụ: 'N18.5' - Suy thận mạn giai đoạn 5) | |
| icd10_name | VARCHAR(255) | Tên bệnh chẩn đoán xác định | |
| bmi_value | DECIMAL(4,1) | Chỉ số khối cơ thể = Cân nặng / (Chiều cao ^ 2) | |
| pulse_rate | SMALLINT | Nhịp tim (lần/phút) | |
| blood_pressure | VARCHAR(10) | Huyết áp tâm thu/tâm trương (Ví dụ: '130/80') |
KHỐI III: CẬN LÂM SÀNG, XÉT NGHIỆM LIS & PACS (MODULES 13 - 20)
QUẢN TRỊ XÉT NGHIỆM LIS 2 CHIỀU
DOM ID: #pane-ket-qua-xnBảng Cơ Sở Dữ Liệu: lis_test_results
Kết nối 2 chiều với máy xét nghiệm tự động (Cobas 6000, Sysmex XN-550) qua chuẩn ASTM E1381/E1394 và HL7 v2.5:
| Tên Cột | Kiểu | Khóa | Ý Nghĩa Nghiệp Vụ |
|---|---|---|---|
| result_id | BIGSERIAL | PK | Mã kết quả xét nghiệm chi tiết |
| order_id | VARCHAR(20) | FK | Mã phiếu chỉ định xét nghiệm |
| test_code | VARCHAR(20) | Mã xét nghiệm (VD: 'GLU', 'UREA', 'CREA', 'HGB') | |
| test_value | DECIMAL(10,3) | Giá trị đo được từ máy | |
| unit | VARCHAR(20) | Đơn vị đo (VD: 'mmol/L', 'g/L', 'μmol/L') | |
| reference_range | VARCHAR(50) | Khoảng tham chiếu sinh học bình thường (VD: '3.9 - 6.4') | |
| flag | VARCHAR(5) | Cờ cảnh báo bất thường: 'N' (Bình thường), 'H' (Cao), 'L' (Thấp), 'C' (Nguy kịch) | |
| delta_check_status | VARCHAR(20) | Độ biến thiên so với kết quả lần trước: 'PASSED' hoặc 'WARNING' |
NỘI KIỂM IQC & BIỂU ĐỒ LEVEY-JENNINGS (WESTGARD)
DOM ID: #pane-noi-kiem-qcBảng Cơ Sở Dữ Liệu: qc_runs & qc_violations
Thuật toán tự động kiểm tra vi phạm đa quy tắc Westgard chuẩn ISO 15189:2022:
- Quy tắc 1-3s (Ngẫu nhiên - Cảnh báo Đỏ): 1 điểm vượt ngoài $pm 3SD$ -> Hủy lô xét nghiệm, khóa kênh máy.
- Quy tắc 2-2s (Hệ thống): 2 điểm liên tiếp vượt cùng phía ngoài $pm 2SD$ -> Báo lỗi hiệu chuẩn Calibrator.
- Quy tắc R-4s: Chênh lệch giữa 2 mức nồng độ cùng mẻ vượt quá $4SD$.
- Quy tắc 4-1s & 10x: Trôi dạt hệ thống (Systematic Drift).
KHỐI IV & V: DƯỢC, VIỆN PHÍ & BỆNH ÁN EMR (MODULES 21 - 25)
KHO DƯỢC & TỰ ĐỘNG TRỪ KHO VẬT TƯ CA LỌC MÁU (FEFO)
DOM ID: #pane-kho-duoc1. Thuật Toán Tự Động Trừ Kho Vật Tư Ca Lọc Máu
Ngay khi phiên lọc máu kết thúc (session_status = 'completed'), hệ thống kích hoạt transaction trừ kho tự động theo định mức kỹ thuật:
VIỆN PHÍ, VIETQR ĐỘNG & XUẤT XML 4210 BHYT
DOM ID: #pane-vien-phi1. Tích Hợp VietQR Động EMVCo & Đối Soát Giao Dịch
Sinh mã VietQR động tích hợp số tiền chính xác từng ca lọc và mã hóa nội dung thanh toán chuẩn: VP [MÃ HÓA ĐƠN] [TÊN BN]. Lắng nghe webhook IPN từ ngân hàng tự động khớp phiếu thu.
BỆNH ÁN ĐIỆN TỬ EMR & PHÂN QUYỀN RBAC
DOM ID: #pane-emr & #pane-phan-quyenBảng Nhật Ký Kiểm Toán Bất Biến: audit_trail_logs (Append-Only)
Ghi nhận 100% thao tác của bác sĩ, điều dưỡng theo yêu cầu an ninh y tế Bộ Y tế: user_id, action_type (CREATE, READ, UPDATE, DELETE, SIGN), target_table, target_id, ip_address, timestamp.