{"codes": [{"code": "XML001", "severity": "CHAN", "layer": "XML", "title": "File XML vượt giới hạn 12MB", "meaning": "File tải lên lớn hơn 12MB — không kiểm được.", "trigger": "Kích thước nội dung > 12MB.", "basis": "Giới hạn kỹ thuật (phòng thủ DoS).", "sample": "File quá lớn (>12MB) — vượt giới hạn kiểm.", "action": "Tách hồ sơ hoặc nén; mỗi lần gửi 1 hồ sơ.", "chua_quan_sat": "ngưỡng 12MB — không dựng ca tiêm vì phải sinh file khổng lồ; đã kiểm bằng đọc mã"}, {"code": "XML002", "severity": "CHAN", "layer": "XML", "title": "File chứa DOCTYPE/ENTITY (rủi ro XXE)", "meaning": "XML BHYT không dùng DTD; có DOCTYPE/ENTITY = từ chối vì rủi ro bảo mật (XXE/billion-laughs).", "trigger": "Xuất hiện '<!doctype' hoặc '<!entity' trong file.", "basis": "An toàn xử lý XML (chuẩn QĐ130 không dùng DTD).", "sample": "File chứa DOCTYPE/ENTITY — không hợp lệ với XML BHYT (từ chối vì rủi ro bảo mật).", "action": "Xuất lại XML từ HIS không kèm khai báo DTD/ENTITY."}, {"code": "XML003", "severity": "CHAN", "layer": "XML", "title": "Không phải XML hợp lệ", "meaning": "Nội dung không phân tích được thành XML.", "trigger": "Trình phân tích XML báo lỗi.", "basis": "Chuẩn XML QĐ130.", "sample": "File KHÔNG phải XML hợp lệ: <chi tiết lỗi>.", "action": "Kiểm mã hoá UTF-8, thẻ đóng/mở, ký tự đặc biệt."}, {"code": "XML004", "severity": "CHAN", "layer": "XML", "title": "Thẻ gốc không phải <GIAMDINHHS>", "meaning": "Hồ sơ giám định phải bọc trong thẻ gốc <GIAMDINHHS>.", "trigger": "root.tag != 'GIAMDINHHS'.", "basis": "QĐ130/QĐ-BYT.", "sample": "Thẻ gốc phải là <GIAMDINHHS> (đang là <...>) — không đúng chuẩn QĐ130.", "action": "Bọc dữ liệu trong <GIAMDINHHS><THONGTINHOSO/><HOSO/></GIAMDINHHS>."}, {"code": "XML005", "severity": "CHAN", "layer": "XML", "title": "SOLUONGHOSO ≠ số HOSO thực tế", "meaning": "Số hồ sơ khai trong THONGTINHOSO khác số thẻ <HOSO> đếm được.", "trigger": "SOLUONGHOSO là số nhưng != số phần tử HOSO.", "basis": "QĐ130/QĐ-BYT.", "sample": "SOLUONGHOSO khai N ≠ số HOSO thực tế (M).", "action": "Cập nhật SOLUONGHOSO cho khớp số hồ sơ đóng gói."}, {"code": "XML006", "severity": "GHICHU", "layer": "XML", "title": "Chưa gắn chữ ký số đơn vị (bước cuối trước khi nộp)", "meaning": "Hồ sơ chưa có chữ ký số của đơn vị. Đây là TRẠNG THÁI BÌNH THƯỜNG với bản xuất để kiểm tra (ký số là bước cuối, ngay trước khi truyền cổng) — KHÔNG phải lỗi nội dung hồ sơ.", "trigger": "Thẻ CHUKYDONVI thiếu/rỗng (thường gặp ở file xuất để đối chiếu, đã ẩn danh).", "basis": "QĐ4750/QĐ-BYT (liên thông ký số) — ký số bắt buộc khi NỘP cổng, không bắt buộc ở bản kiểm tra.", "sample": "CHUKYDONVI chưa có chữ ký số — bình thường với bản xuất để kiểm tra; khi nộp cổng cần ký số bằng chứng thư số của đơn vị.", "action": "Không cần xử lý nếu đang kiểm tra. Khi NỘP cổng: ký số hồ sơ bằng chứng thư số của cơ sở KCB."}, {"code": "XML007", "severity": "CHAN", "layer": "XML", "title": "Thiếu XML1 (TONG_HOP)", "meaning": "Hồ sơ bắt buộc phải có bảng tổng hợp XML1.", "trigger": "Không tìm thấy phần tử TONG_HOP.", "basis": "QĐ130/QĐ-BYT (XML1 bắt buộc).", "sample": "Thiếu XML1 (TONG_HOP) — hồ sơ bắt buộc phải có bảng tổng hợp.", "action": "Xuất kèm bảng XML1 TONG_HOP."}, {"code": "XML008", "severity": "CHAN", "layer": "XML", "title": "XML1 thiếu trường khoá bắt buộc (MA_LK/MA_BENH_CHINH)", "meaning": "Thiếu mã liên kết hồ sơ hoặc mã bệnh chính — không giám định được.", "trigger": "MA_LK hoặc MA_BENH_CHINH trống.", "basis": "QĐ130/QĐ-BYT.", "sample": "XML1 thiếu/để trống trường bắt buộc <MA_LK|MA_BENH_CHINH>.", "action": "Điền MA_LK (mã hồ sơ) và MA_BENH_CHINH.", "deprecated": true, "uu_tien": 10}, {"code": "XML009", "severity": "CHAN", "layer": "XML", "title": "XML1 thiếu MA_THE_BHYT/MA_CSKCB", "meaning": "Thiếu mã thẻ BHYT hoặc mã cơ sở KCB (cần cho quyền lợi/định danh nơi KCB).", "trigger": "MA_THE_BHYT hoặc MA_CSKCB trống.", "basis": "QĐ130/QĐ-BYT.", "sample": "XML1 thiếu/để trống trường bắt buộc <MA_THE_BHYT|MA_CSKCB>.", "action": "Điền mã thẻ BHYT và mã cơ sở KCB.", "deprecated": true, "uu_tien": 10}, {"code": "XML010", "severity": "CHAN", "layer": "XML", "title": "Dòng thuốc có MA_LK khác hồ sơ", "meaning": "Dòng chi tiết thuốc trỏ sai mã liên kết hồ sơ.", "trigger": "CHI_TIET_THUOC.MA_LK != TONG_HOP.MA_LK.", "basis": "QĐ130/QĐ-BYT (liên kết XML1↔XML2).", "sample": "Dòng thuốc STT i có MA_LK='...' KHÁC hồ sơ ('...') — sai liên kết.", "action": "Đồng bộ MA_LK trên mọi dòng chi tiết với XML1."}, {"code": "XML011", "severity": "CHAN", "layer": "XML", "title": "Dòng thuốc thiếu MA_THUOC", "meaning": "Chi tiết thuốc không có mã thuốc.", "trigger": "CHI_TIET_THUOC.MA_THUOC trống.", "basis": "QĐ130/QĐ-BYT (XML2).", "sample": "Dòng thuốc STT i thiếu MA_THUOC.", "action": "Điền MA_THUOC (mã bộ mã dùng chung, vd 40.xxxx).", "deprecated": true}, {"code": "XML012", "severity": "CHAN", "layer": "XML", "title": "T_THUOC không cân với tổng dòng thuốc", "meaning": "Tổng tiền thuốc khai ở XML1 khác tổng tiền các dòng XML2.", "trigger": "|T_THUOC - Σ THANH_TIEN_BH| > 1đ.", "basis": "QĐ130/QĐ4750 (thống nhất số liệu bảng kê).", "sample": "T_THUOC khai X đ ≠ tổng tiền các dòng thuốc Y đ.", "action": "Rà lại T_THUOC hoặc từng dòng THANH_TIEN cho khớp."}, {"code": "XT001", "severity": "CHAN", "layer": "XML", "title": "Sai liên kết hồ sơ (MA_LK không đồng nhất)", "meaning": "Có bản ghi ở một bảng mang MA_LK khác mã liên kết của hồ sơ — các bảng của cùng một lượt KCB phải cùng một MA_LK (khoá liên kết).", "trigger": "Bản ghi bất kỳ (CHI_TIET_*/CHI_TIEU_*) có MA_LK khác MA_LK của TONG_HOP.", "basis": "QĐ130/QĐ-BYT (MA_LK là khoá liên kết mọi bảng XML1–XML15).", "sample": "Sai liên kết hồ sơ: có bản ghi mang MA_LK X KHÁC mã hồ sơ Y.", "action": "Đồng bộ MA_LK trên mọi bảng cho khớp XML1.", "deprecated": true}, {"code": "XT002", "severity": "CHAN", "layer": "XML", "title": "Ngày ra viện trước ngày vào viện", "meaning": "NGAY_RA sớm hơn NGAY_VAO — mốc thời gian điều trị phi lý. ⚠️ TRÙNG NỘI DUNG với FLD003 của tầng engine: hồ sơ gửi qua API /v1 sẽ nhận CẢ HAI mã cho cùng một sự việc (FLD003 do engine phát, XT002 do lớp đối soát liên bảng của API phát). Giữ cả hai để đối tác đã tích hợp không vỡ; khi đếm lỗi thì tính là MỘT.", "trigger": "NGAY_RA < NGAY_VAO (cả hai có giá trị).", "basis": "QĐ130/QĐ-BYT (chỉ tiêu ngày vào/ra XML1).", "sample": "Ngày phi lý: NGAY_RA (...) TRƯỚC NGAY_VAO (...).", "action": "Kiểm lại ngày vào/ra viện."}, {"code": "XT003", "severity": "CHAN", "layer": "XML", "title": "Lệch ngày giữa các bảng (XML1 vs giấy ra viện/tóm tắt)", "meaning": "Ngày vào/ra trên giấy ra viện (XML7) hoặc tóm tắt bệnh án (XML8) khác XML1 — số liệu giữa các bảng phải nhất quán.", "trigger": "NGAY_VAO/NGAY_RA ở XML7/XML8 khác XML1 (cả hai có giá trị).", "basis": "QĐ130/QĐ4750 (thống nhất số liệu liên bảng).", "sample": "Lệch ngày liên bảng: NGAY_RA trên giấy ra viện (...) KHÁC XML1 (...).", "action": "Đồng bộ ngày vào/ra giữa XML1, giấy ra viện và tóm tắt bệnh án."}, {"code": "XT004", "severity": "CHAN", "layer": "XML", "title": "T_VTYT không cân với tổng dòng vật tư", "meaning": "Tổng tiền vật tư y tế khai ở XML1 khác tổng thành tiền các dòng VTYT ở XML3.", "trigger": "|T_VTYT - Σ THANH_TIEN_BV các dòng có MA_VAT_TU| > 1.000đ.", "basis": "QĐ130/QĐ4750 (thống nhất số liệu bảng kê).", "sample": "T_VTYT khai X đ ≠ tổng thành tiền các dòng vật tư Y đ.", "action": "Rà lại T_VTYT hoặc từng dòng vật tư cho khớp."}, {"code": "XT005", "severity": "CHAN", "layer": "XML", "title": "Tổng chi (T_TONGCHI_BV) không cân với tổng các dòng", "meaning": "Tổng chi phí khai ở XML1 khác tổng thành tiền mọi dòng thuốc + DVKT/VTYT. (Chỉ đối soát TỔNG; KHÔNG kiểm phần chia đồng chi trả BN/BH vì cần dữ liệu thẻ.)", "trigger": "|T_TONGCHI_BV - Σ THANH_TIEN_BV (thuốc + DVKT)| > 1.000đ.", "basis": "QĐ130/QĐ4750 (thống nhất số liệu bảng kê — trục đối soát chi phí).", "sample": "T_TONGCHI_BV khai X đ ≠ tổng thành tiền mọi dòng thuốc+DVKT Y đ.", "action": "Rà lại T_TONGCHI_BV hoặc các dòng chi tiết cho khớp."}, {"code": "XT006", "severity": "GHICHU", "layer": "XML", "title": "Kết quả cận lâm sàng (XML4) không khớp chỉ định XML3", "meaning": "Có kết quả cận lâm sàng (XML4) mang mã dịch vụ không nằm trong DVKT đã chỉ định (XML3). Bản chất: kết quả 'mồ côi' = viện làm mà không khai/không gắn chỉ định = VIỆN THIỆT, KHÔNG phải rủi ro quỹ → chỉ ghi chú đối chiếu dữ liệu. (Mã đã chuẩn hoá bỏ hậu tố ghép/liên viện; nếu toàn bộ mã CLS mồ côi = HIS mã hoá khác hệ thì bỏ qua.)", "trigger": "CHI_TIET_CLS.MA_DICH_VU (chuẩn hoá) không có trong tập MA_DICH_VU XML3, và không phải toàn bộ mồ côi.", "basis": "QĐ130 (XML4 kết quả CLS mã QĐ7603 gắn DVKT chỉ định XML3).", "sample": "Có N mã kết quả cận lâm sàng (XML4) không khớp dịch vụ chỉ định XML3 (...) — đối chiếu dữ liệu.", "action": "Đối chiếu dữ liệu; bổ sung dòng chỉ định XML3 nếu thiếu (không bắt buộc — không ảnh hưởng quỹ)."}, {"code": "XT007", "severity": "GHICHU", "layer": "XML", "title": "Bệnh chính là lao — cần bảng XML15 nếu có điều trị lao", "meaning": "Bệnh chính thuộc nhóm lao (A15–A19) nhưng hồ sơ chưa có bảng XML15 (chi tiết điều trị lao). Nếu đợt này có điều trị lao thì cần bổ sung; nếu chỉ theo dõi/không điều trị thì bỏ qua.", "trigger": "MA_BENH_CHINH ∈ A15–A19 và không có bảng XML15.", "basis": "QĐ4750/QĐ-BYT (bổ sung XML15 chi tiết điều trị bệnh lao).", "sample": "Bệnh chính là lao (A15.x) — nếu đợt này CÓ điều trị lao thì hồ sơ cần bảng XML15.", "action": "Bổ sung bảng XML15 nếu có điều trị lao; bỏ qua nếu không."}, {"code": "FLD001", "severity": "CHAN", "layer": "FIELD", "title": "Thiếu trường bắt buộc theo QĐ4750", "meaning": "Thiếu một trong các trường bắt buộc (vd NGAY_VAO/NGAY_RA/MA_LOAI_KCB/KET_QUA_DTRI).", "trigger": "Trường bắt buộc trống.", "basis": "QĐ130/QĐ4750/QĐ-BYT.", "sample": "XML1 thiếu trường bắt buộc <...> (chuẩn QĐ130/QĐ4750).", "action": "Điền đủ trường bắt buộc theo chuẩn dữ liệu đầu ra."}, {"code": "FLD002", "severity": "CHAN", "layer": "FIELD", "title": "Sai định dạng ngày (yyyyMMddHHmm)", "meaning": "Trường ngày/giờ không đúng 12 số yyyyMMddHHmm.", "trigger": "Giá trị ngày không khớp ^\\d{12}$.", "basis": "QĐ4750/QĐ-BYT.", "sample": "<...>='...' sai định dạng — phải yyyyMMddHHmm (12 số, QĐ4750).", "action": "Chuẩn hoá ngày giờ về 12 số yyyyMMddHHmm."}, {"code": "FLD003", "severity": "CHAN", "layer": "FIELD", "title": "NGAY_RA trước NGAY_VAO (sai logic thời gian)", "meaning": "⚠️ Trùng nội dung với XT002 (lớp API) — cùng một sự việc, đếm là MỘT. Ngày ra viện sớm hơn ngày vào viện.", "trigger": "NGAY_RA < NGAY_VAO.", "basis": "QĐ4750/QĐ-BYT.", "sample": "NGAY_RA (...) TRƯỚC NGAY_VAO (...) — sai logic thời gian.", "action": "Sửa NGAY_VAO/NGAY_RA cho đúng trình tự."}, {"code": "K1006OK", "severity": "GHICHU", "layer": "DANHMUC", "title": "Điều kiện TT20 theo ngưỡng xét nghiệm — ĐẠT, đối chiếu ngay trên hồ sơ", "meaning": "Thuốc có điều kiện thanh toán ràng theo ngưỡng xét nghiệm, và bảng XML4 (CHI_TIET_CLS) của chính hồ sơ có kết quả đạt ngưỡng — không phải lưu thêm chứng từ. Chỉ dùng để GỠ việc, không có nhánh nào dẫn tới chặn.", "trigger": "Điều kiện TT20 nêu ngưỡng xét nghiệm, và GIA_TRI của chỉ số tương ứng trong XML4 đạt ngưỡng đó.", "basis": "TT20/2022/TT-BYT cột 8 (điều kiện thanh toán); QĐ130/QĐ-BYT bảng XML4 các chỉ tiêu MA_CHI_SO · TEN_CHI_SO · GIA_TRI · DON_VI_DO; QĐ1227/QĐ-BYT danh mục mã chỉ số cận lâm sàng (đơn vị chuẩn của từng chỉ số).", "sample": "Thuốc Albumin: ĐẠT điều kiện thanh toán TT20 — xét nghiệm Albumin = 21,8 …", "action": "Không phải làm gì — điều kiện đã đối chiếu được trên chính hồ sơ."}, {"code": "K6017", "severity": "CHAN", "layer": "DANHMUC", "title": "Khai MÃ NỘI BỘ của cơ sở sau hạn chuyển đổi 01/8/2025", "meaning": "MA_DICH_VU là mã nội bộ của phần mềm bệnh viện, không thuộc danh mục mã dùng chung. Từ 01/8/2025 việc trích chuyển dữ liệu điện tử phải dùng mã danh mục dùng chung; engine vẫn giữ bảng ánh xạ để ĐỌC được dữ liệu trước mốc.", "trigger": "MA_DICH_VU không có trong danh mục QĐ2010 nhưng tra được trong bảng mã nội bộ của chính cơ sở, và NGAY_VAO >= 01/8/2025.", "basis": "QĐ2010/QĐ-BYT ngày 19/6/2025 Điều 5: các cơ sở KBCB… \"có trách nhiệm cập nhật, chuyển đổi các danh mục mã dùng chung ban hành kèm theo Quyết định này vào phần mềm để áp dụng trong trích chuyển dữ liệu điện tử chi phí khám bệnh, chữa bệnh bảo hiểm y tế chậm nhất kể từ ngày 01 tháng 8 năm 2025\".", "sample": "Dịch vụ 02.1896 (Khám Nội tổng hợp): đây là MÃ NỘI BỘ của cơ sở…", "action": "Khai lại MA_DICH_VU bằng mã thuộc danh mục dùng chung QĐ2010."}, {"code": "FLD029", "severity": "CHAN", "layer": "FIELD", "title": "Ngày y lệnh nằm NGOÀI đợt điều trị", "meaning": "Thời điểm ra y lệnh (NGAY_YL) hoặc thực hiện y lệnh (NGAY_TH_YL) của một dòng thuốc/dịch vụ rơi TRƯỚC ngày vào viện — dòng chi phí đó không thuộc đợt KCB này.", "trigger": "NGAY_YL hoặc NGAY_TH_YL < NGAY_VAO của chính hồ sơ.", "basis": "QĐ130/QĐ-BYT Bảng 2/3 — NGAY_YL là thời điểm ra y lệnh trong đợt KCB đang đề nghị thanh toán; QĐ4750 yêu cầu số liệu giữa các bảng nhất quán.", "sample": "thuốc STT 1 (...): <NGAY_YL>=20/06/2025 TRƯỚC ngày vào viện 01/07/2025.", "action": "Sửa NGAY_YL/NGAY_TH_YL của chính dòng đó về trong đợt điều trị, hoặc bỏ dòng chi phí không thuộc đợt này. KHÔNG sửa NGAY_VAO/NGAY_RA của hồ sơ."}, {"code": "FLD004", "severity": "CHAN", "layer": "FIELD", "title": "MA_KHOA không thuộc danh mục QĐ1804", "meaning": "Mã khoa không có trong danh mục mã khoa dùng chung.", "trigger": "MA_KHOA đúng định dạng nhưng không thuộc danh mục.", "basis": "QĐ1804/QĐ-BYT.", "sample": "MA_KHOA '...' KHÔNG có trong danh mục mã khoa dùng chung (QĐ1804) ⇒ SỬA <MA_KHOA> về mã thuộc danh mục.", "action": "Ánh xạ khoa nội bộ HIS sang mã khoa dùng chung QĐ1804.", "deprecated": true}, {"code": "FLD005", "severity": "CHAN", "layer": "FIELD", "title": "MA_KHOA sai định dạng", "meaning": "Mã khoa phải theo dạng 'K'+số.", "trigger": "MA_KHOA không khớp K\\d+.", "basis": "QĐ1804/QĐ-BYT.", "sample": "MA_KHOA '...' sai định dạng (chuẩn mã 'K'+số, QĐ1804).", "action": "Sửa MA_KHOA về dạng K + số (vd K02)."}, {"code": "FLD006", "severity": "CHAN", "layer": "FIELD", "title": "MA_KHOA để trống (bắt buộc từ 01/8/2026)", "meaning": "Từ 01/8/2026 MA_KHOA là trường bắt buộc.", "trigger": "MA_KHOA trống.", "basis": "QĐ1804/QĐ-BYT (hiệu lực 01/8/2026).", "sample": "MA_KHOA để trống — bắt buộc khai từ 01/8/2026 theo QĐ1804/QĐ-BYT.", "action": "Bổ sung MA_KHOA cho mỗi bản ghi."}, {"code": "FLD007", "severity": "CHAN", "layer": "FIELD", "title": "GIOI_TINH không hợp lệ", "meaning": "Giới tính chỉ nhận 1 (Nam) / 2 (Nữ) / 3 (Chưa xác định).", "trigger": "GIOI_TINH không ∈ {1,2,3}.", "basis": "QĐ130/QĐ-BYT.", "sample": "GIOI_TINH='...' không hợp lệ — chuẩn QĐ130 chỉ nhận 1 (Nam) / 2 (Nữ) / 3 (Chưa xác định).", "action": "Chuẩn hoá GIOI_TINH về 1/2/3."}, {"code": "FLD008", "severity": "CHAN", "layer": "FIELD", "title": "MA_THE_BHYT sai cấu trúc 15 ký tự", "meaning": "Mã thẻ BHYT gồm 15 ký tự (2 chữ mã đối tượng/mức hưởng + 13 số).", "trigger": "MA_THE_BHYT không đúng cấu trúc 15 ký tự.", "basis": "QĐ1351/QĐ-BHXH.", "sample": "MA_THE_BHYT='...' sai cấu trúc — mã thẻ BHYT gồm 15 ký tự (2 chữ + 13 số) theo QĐ1351/QĐ-BHXH.", "action": "Kiểm lại mã thẻ (2 chữ đầu + 13 số).", "deprecated": true}, {"code": "FLD009", "severity": "CHAN", "layer": "FIELD", "title": "XML1 có trường lạ ngoài chuẩn", "meaning": "Có thẻ không thuộc danh mục chỉ tiêu XML1 của QĐ130 Bảng 1 ⇒ bỏ thẻ lạ hoặc ánh xạ vào đúng chỉ tiêu chuẩn.", "trigger": "Xuất hiện thẻ ngoài danh mục trường XML1.", "basis": "QĐ130/QĐ-BYT.", "sample": "XML1 có trường LẠ (ngoài chuẩn QĐ130): ... — không thuộc danh mục chỉ tiêu QĐ130 Bảng 1.", "action": "Bỏ các thẻ ngoài chuẩn khỏi XML1."}, {"code": "FLD010", "severity": "CHAN", "layer": "FIELD", "title": "XML2 có trường lạ ngoài chuẩn", "meaning": "Có thẻ không thuộc chuẩn XML2 (thuốc).", "trigger": "Xuất hiện thẻ ngoài danh mục trường XML2.", "basis": "QĐ130/QĐ-BYT.", "sample": "XML2 (thuốc) có trường LẠ ngoài chuẩn: ... — không thuộc danh mục chỉ tiêu QĐ130 Bảng 2.", "action": "Bỏ các thẻ ngoài chuẩn khỏi XML2."}, {"code": "FLD011", "severity": "CHAN", "layer": "FIELD", "title": "XML3 có trường lạ ngoài chuẩn", "meaning": "Có thẻ không thuộc chuẩn XML3 (DVKT/VTYT).", "trigger": "Xuất hiện thẻ ngoài danh mục trường XML3.", "basis": "QĐ130/QĐ-BYT.", "sample": "XML3 (DVKT/VTYT) có trường LẠ ngoài chuẩn: ... — không thuộc danh mục chỉ tiêu QĐ130 Bảng 3.", "action": "Bỏ các thẻ ngoài chuẩn khỏi XML3."}, {"code": "KS001", "severity": "GHICHU", "layer": "K2", "title": "Thuốc phải kiểm soát đặc biệt (gây nghiện/hướng thần/tiền chất)", "meaning": "Thuốc thuộc danh mục phải kiểm soát đặc biệt (gây nghiện, hướng thần, tiền chất dùng làm thuốc) — cần đơn thuốc và sổ theo dõi đúng quy định kê đơn/cấp phát thuốc kiểm soát đặc biệt.", "trigger": "Tên thuốc khớp hoạt chất trong danh mục kiểm soát đặc biệt (TT18/2026/TT-BYT PL1/2/3).", "basis": "TT18/2026/TT-BYT (hiệu lực 16/7/2026) — thuốc, nguyên liệu làm thuốc phải kiểm soát đặc biệt.", "sample": "Thuốc kiểm soát đặc biệt (gây nghiện): \"Morphin 10mg\" thuộc danh mục thuốc phải kiểm soát đặc biệt (TT18/2026/TT-BYT).", "action": "Đối chiếu đơn thuốc gây nghiện/hướng thần + sổ theo dõi theo quy định; đảm bảo đúng thủ tục kê đơn."}, {"code": "EX23", "severity": "CHAN", "layer": "K5", "title": "Chẩn đoán ngoài phạm vi hưởng BHYT (Điều 23)", "meaning": "Chẩn đoán chính thuộc trường hợp Điều 23 Luật BHYT loại trừ: dịch vụ thẩm mỹ (khoản 6), khám sức khỏe (khoản 3), hoặc điều trị lác/tật khúc xạ quá mốc tuổi (khoản 7).", "trigger": "MA_BENH_CHINH thuộc DIEU23_khoan3_khoan6.csv với mức CHAN tại mốc của lượt KCB; hoặc lác/tật khúc xạ CÓ điều trị và quá mốc tuổi.", "basis": "Luật BHYT Điều 23, nguyên văn theo VBHN 40/VBHN-VPQH ngày 16/3/2026 — khoản 6 \"Sử dụng dịch vụ thẩm mỹ.\" (không sửa từ 2008); khoản 3 bản 25/2008 \"Khám sức khỏe.\", từ 01/7/2026 theo Luật Phòng bệnh 114/2025/QH15 \"Khám sức khỏe, TRỪ khám sức khỏe định kỳ và khám sàng lọc\"; khoản 7 \"Điều trị lác và tật khúc xạ của mắt đối với người từ đủ 18 tuổi trở lên\" (Luật 51/2024, trước đó Luật 46/2014 mốc 6 tuổi).", "sample": "Chẩn đoán chính Z41.1 (Phẫu thuật tạo hình do diện mạo bên ngoài không như mong muốn).", "action": "CHUYỂN chi phí sang nguồn ngoài BHYT, hoặc sửa <MA_BENH_CHINH> nếu lượt KCB thực tế là khám chữa bệnh."}, {"code": "B4", "severity": "CHAN", "layer": "B", "title": "Cấp thuốc ngoại trú vượt trần số ngày kê đơn", "meaning": "Thuốc kê cho lượt ngoại trú đủ dùng nhiều ngày hơn trần cho phép; số ngày do CƠ SỞ KHAI THẲNG trong LIEU_DUNG.", "trigger": "MA_LOAI_KCB=1 và số ngày ghi thẳng trong LIEU_DUNG lớn hơn trần của mã bệnh trong lượt.", "basis": "TT26/2025/TT-BYT Điều 6 khoản 8 điểm a: số ngày sử dụng của mỗi thuốc trong đơn ngoại trú TỐI ĐA 30 ngày; riêng bệnh thuộc Phụ lục VII được kê tới 90 ngày (điểm b). Trần lấy mức CAO NHẤT trong các mã bệnh của lượt (bệnh chính và bệnh kèm) — cách tính có lợi cho cơ sở, nên phần vượt là chắc chắn.", "sample": "[B4] 12 thuốc điều trị ngoại trú cấp VƯỢT trần số ngày kê đơn.", "action": "GIẢM số lượng thuốc về đúng trần số ngày kê đơn, hoặc tách thành nhiều đơn."}, {"code": "B4U", "severity": "GHICHU", "layer": "B", "title": "Nghi vượt trần số ngày kê đơn — số ngày do ƯỚC LƯỢNG", "meaning": "Như B4 nhưng số ngày KHÔNG do cơ sở khai thẳng; hệ thống ước lượng bằng số lượng chia liều dùng mỗi ngày.", "trigger": "MA_LOAI_KCB=1, LIEU_DUNG không ghi số ngày, ước lượng SO_LUONG / liều-mỗi-ngày vượt trần.", "basis": "TT26/2025/TT-BYT Điều 6 khoản 8 điểm a: số ngày sử dụng của mỗi thuốc trong đơn ngoại trú TỐI ĐA 30 ngày; riêng bệnh thuộc Phụ lục VII được kê tới 90 ngày (điểm b). Số ngày là ƯỚC LƯỢNG từ LIEU_DUNG (chữ tự do) nên KHÔNG tuyên xuất toán — CLAUDE.md §3: phép so của mình có thể sai thì không kết luận.", "sample": "[B4U] 3 thuốc ngoại trú nghi vượt trần số ngày kê đơn (số ngày ước lượng).", "action": "ĐẠT — nêu để cơ sở tự đối chiếu số ngày kê thực tế."}, {"code": "K1006A", "severity": "GHICHU", "layer": "K1", "title": "Điều kiện TT20 theo dạng bào chế — ĐẠT", "meaning": "Thuốc thuộc dòng TT20 có tỷ lệ thanh toán theo DẠNG BÀO CHẾ; dạng của thuốc này không bị giảm tỷ lệ.", "trigger": "Số đăng ký tra được trong bảng TT20_TYLE_THEO_SDK.csv với ty_le = 100.", "basis": "TT20/2022/TT-BYT cột 8 — 4 dòng quy định tỷ lệ theo dạng: 40.359 Doxorubicin, 40.375 L-asparaginase, 40.387 Paclitaxel, 40.805 Insulin analog trộn. Dạng tra theo SỐ ĐĂNG KÝ từ cột dangbaoche của bảng giá trúng thầu BHXH.", "sample": "[K1006A] Thuốc Doxorubicin: dạng Dung dịch đậm đặc ... được thanh toán 100%. ĐẠT.", "action": "ĐẠT — thuốc không thuộc dạng bị giảm tỷ lệ."}, {"code": "K1006B", "severity": "CHAN", "layer": "K1", "title": "Dạng bào chế bị giảm tỷ lệ thanh toán theo TT20", "meaning": "Dạng bào chế của thuốc thuộc nhóm chỉ được thanh toán một phần theo cột 8 TT20.", "trigger": "Số đăng ký tra được trong bảng TT20_TYLE_THEO_SDK.csv với ty_le < 100.", "basis": "TT20/2022/TT-BYT cột 8 — vd 40.359 Doxorubicin: thanh toan 50% doi voi dang liposome; 100% doi voi cac dang khac.", "sample": "[K1006B] Thuốc CHEMODOX: dạng Thuốc tiêm liposome chỉ được thanh toán 50%.", "action": "SỬA TYLE_TT_BH của dòng thuốc về đúng tỷ lệ theo dạng bào chế."}, {"code": "K6010A", "severity": "GHICHU", "layer": "K6", "title": "NGAY_TH_YL ghi sau NGAY_KQ — dấu thời gian của phần mềm", "meaning": "Thời điểm thực hiện y lệnh ghi sau thời điểm có kết quả; thường do HIS đóng dấu bằng giờ xuất dữ liệu.", "trigger": "NGAY_TH_YL > NGAY_KQ trên dòng DVKT, trong khi NGAY_YL <= NGAY_KQ.", "basis": "QĐ130/QĐ-BYT Bảng 3 chỉ tiêu 36 và 37 chỉ định nghĩa định dạng chuỗi 12 ký tự, KHÔNG quy định thứ tự bắt buộc. NĐ188/2025 Điều 51 khoản 1 chỉ từ chối chi phí xác định không đúng quy định — dấu thời gian lệch không làm chi phí sai.", "sample": "[K6010A] Định nhóm máu ABO: NGAY_TH_YL 20250512 SAU NGAY_KQ 20250501.", "action": "ĐẠT về thanh toán — chỉnh phần mềm HIS ghi đúng thời điểm thực hiện."}, {"code": "EX001OK", "severity": "GHICHU", "layer": "K5", "title": "SĐK bị rút SAU lượt KCB — vẫn hợp lệ", "meaning": "Thuốc có số đăng ký đã bị Cục QLD rút, nhưng lượt khám chữa bệnh diễn ra TRƯỚC ngày rút.", "trigger": "SO_DANG_KY thuộc danh sách rút, và NGAY_VAO sớm hơn ngày rút.", "basis": "Không áp danh sách rút số đăng ký ngược về quá khứ — thuốc còn lưu hành hợp pháp tại thời điểm sử dụng.", "sample": "Thuốc X (SĐK VD-12345-20) bị RÚT số đăng ký ngày 20250801 — NHƯNG lượt KCB ngày 20250601 diễn ra TRƯỚC mốc đó.", "action": "ĐẠT — thuốc còn hợp lệ tại thời điểm khám chữa bệnh."}, {"code": "THU001OK", "severity": "GHICHU", "layer": "K5", "title": "SĐK bị thu hồi SAU lượt KCB — vẫn hợp lệ", "meaning": "Thuốc có số đăng ký bị thu hồi/đình chỉ, nhưng lượt khám chữa bệnh diễn ra TRƯỚC ngày quyết định.", "trigger": "SO_DANG_KY thuộc danh sách thu hồi, và NGAY_VAO sớm hơn ngày quyết định.", "basis": "Không áp quyết định thu hồi ngược về quá khứ — thuốc còn lưu hành hợp pháp tại thời điểm sử dụng.", "sample": "Thuốc Y (SĐK VD-67890-19) bị thu hồi ngày 20250901 — NHƯNG lượt KCB ngày 20250701 diễn ra TRƯỚC quyết định.", "action": "ĐẠT — thuốc còn hợp lệ tại thời điểm khám chữa bệnh."}, {"code": "EX23OK", "severity": "GHICHU", "layer": "K5", "title": "Lác/tật khúc xạ nhưng lượt CHỈ đi khám — ĐẠT", "meaning": "Chẩn đoán chính là lác/tật khúc xạ ở người quá mốc tuổi, nhưng hồ sơ CHỈ có tiền khám: không thuốc, không dịch vụ điều trị.", "trigger": "MA_BENH_CHINH thuộc {H49,H50,H52}, tuổi quá mốc, và hồ sơ KHÔNG có dòng điều trị nào.", "basis": "Luật BHYT Điều 23 khoản 7 đặt loại trừ trên việc ĐIỀU TRỊ lác/tật khúc xạ — không đặt trên chẩn đoán hay việc khám.", "sample": "Chẩn đoán chính H52.6 (tật khúc xạ) ở người 50 tuổi — ĐẠT: hồ sơ CHỈ có tiền khám.", "action": "ĐẠT — lượt chỉ đi khám không thuộc diện loại trừ."}, {"code": "K6015", "severity": "GHICHU", "layer": "K6", "title": "MA_KHOA khai kèm hậu tố nội bộ — chuẩn hoá định dạng", "meaning": "Mã khoa ghi kèm hậu tố riêng của cơ sở (vd K0251 thay vì K02). Là việc chuẩn hoá ĐỊNH DẠNG, không ảnh hưởng số tiền đề nghị thanh toán.", "trigger": "MA_KHOA khớp một mã danh mục sau khi cắt hậu tố số.", "basis": "QĐ130/QĐ-BYT Bảng 1 trường MA_KHOA (Chuỗi 50): độ dài 50 dành cho NHIỀU MÃ ngăn bởi dấu chấm phẩy, không phải để nối thêm hậu tố.", "sample": "[K6015] LƯU Ý ĐỊNH DẠNG: 1 MÃ KHOA khai kèm HẬU TỐ NỘI BỘ (K0251 -> K02).", "action": "ĐẠT — chỉ nên chuẩn hoá định dạng MA_KHOA trước khi gửi cổng."}, {"code": "K6016", "severity": "GHICHU", "layer": "K6", "title": "TT_THAU có mã nhóm thầu ngoài danh mục (N0)", "meaning": "Mã nhóm thầu trong TT_THAU không thuộc N1-N6 của QĐ5937. Có thể là hàng mua sắm không qua đấu thầu.", "trigger": "TT_THAU chứa mã bắt đầu bằng N, độ dài tối đa 3, ngoài danh mục.", "basis": "QĐ3176/QĐ-BYT dẫn Phụ lục 6 (thuốc G1-G5 x N1-N5) và Phụ lục 7 (VTYT N1-N6) QĐ5937 — không có mã N0. Lô 10061 có 12.912 dòng dùng N0 nên chưa đủ căn cứ kết luận sai.", "sample": "[K6016] TT_THAU có mã nhóm thầu ngoài danh mục QĐ5937 (N0).", "action": "ĐẠT — nêu để cơ sở tự kiểm mã nhóm thầu."}, {"code": "K7002", "severity": "GHICHU", "layer": "K7", "title": "Tương tác thuốc CÓ ĐIỀU KIỆN — điều kiện KHÔNG thoả", "meaning": "QĐ5948 xếp cặp này chống chỉ định CÓ ĐIỀU KIỆN, và điều kiện đã xác định được từ chính hồ sơ là không thoả (tuổi, nhóm bệnh nhân, dạng bào chế).", "trigger": "Cặp hoạt chất thuộc QĐ5948 nhưng ràng buộc kèm theo không thoả trên hồ sơ này.", "basis": "QĐ5948/QĐ-BYT — Danh mục tương tác thuốc chống chỉ định, cột điều kiện áp dụng.", "sample": "[K7002] Tương tác có điều kiện (KHÔNG thuộc diện chống chỉ định): ceftriaxon + dịch chứa calci.", "action": "ĐẠT — ghi nhận, không phải điểm cần sửa."}, {"code": "EX24", "severity": "GHICHU", "layer": "K5", "title": "Khám SÀNG LỌC trước 01/7/2026 — chưa kết luận", "meaning": "Chẩn đoán chính là khám sàng lọc, lượt KCB diễn ra trước 01/7/2026 khi khoản 3 còn ghi trống \"Khám sức khỏe.\"", "trigger": "MA_BENH_CHINH thuộc nhóm SANG_LOC của DIEU23_khoan3_khoan6.csv và NGAY_VAO sớm hơn 20260701.", "basis": "Luật BHYT 25/2008 Điều 23 khoản 3 chỉ ghi \"Khám sức khỏe.\" — KHÔNG nói khám sàng lọc có thuộc diện này hay không. Từ 01/7/2026 (Luật Phòng bệnh 114/2025/QH15) khoản 3 ghi rõ TRỪ khám sàng lọc.", "sample": "Chẩn đoán chính Z12.5 (Khám sàng lọc chuyên khoa u tân sinh tiền liệt tuyến), vào viện 01/6/2025.", "action": "ĐẠT — hệ thống chưa kết luận vì văn bản áp cho mốc này không nói rõ."}, {"code": "FLD012", "severity": "CHAN", "layer": "FIELD", "title": "Trường mã hoá sai giá trị (ngoài danh mục QĐ130)", "meaning": "Trường mã hoá enum (MA_TAI_NAN, KET_QUA_DTRI, MA_LOAI_RV, MA_KHUVUC, PHAM_VI) có giá trị không thuộc danh mục giá trị hợp lệ theo chuẩn QĐ130/QĐ-BYT.", "trigger": "Giá trị trường nằm ngoài tập enum quy định (vd KET_QUA_DTRI=9, MA_LOAI_RV=0, PHAM_VI=5).", "basis": "QĐ130/QĐ-BYT (bảng mã danh mục dùng chung XML1/XML2/XML3).", "sample": "Trường KET_QUA_DTRI='9' không thuộc danh mục giá trị hợp lệ [1–7...] (QĐ130/QĐ-BYT Bảng mã).", "action": "Sửa giá trị trường về đúng danh mục mã QĐ130 trước khi nộp cổng."}, {"code": "PV001", "severity": "CHAN", "layer": "MH", "title": "Dòng ngoài phạm vi BHYT (PHAM_VI=2) nhưng vẫn có tiền BHYT", "meaning": "Dòng thuốc/DVKT khai PHAM_VI=2 (ngoài phạm vi hưởng BHYT — người bệnh tự trả) nhưng lại có THANH_TIEN_BH > 0 (quỹ BHYT thanh toán) → mâu thuẫn, nghi thu BHYT cho khoản ngoài phạm vi.", "trigger": "Dòng chi phí có PHAM_VI=2 và THANH_TIEN_BH > 0.", "basis": "QĐ130/QĐ-BYT (PHAM_VI) + nguyên tắc thanh toán phạm vi quyền lợi BHYT.", "sample": "Dòng \"...\" khai PHAM_VI=2 (NGOÀI phạm vi hưởng BHYT) nhưng có tiền BHYT thanh toán ...đ — mâu thuẫn.", "action": "Rà lại: nếu đúng ngoài phạm vi thì THANH_TIEN_BH=0 (người bệnh tự trả); nếu trong phạm vi thì sửa PHAM_VI."}, {"code": "MN001", "severity": "CHAN", "layer": "FIELD", "title": "MA_NHOM (nhóm chi phí) không hợp lệ", "meaning": "Nhóm chi phí của dòng thuốc/DVKT/VTYT không thuộc 14 giá trị chuẩn (Xét nghiệm/CĐHA/TDCN/Thuốc/Máu/Phẫu thuật/VTYT/Vận chuyển/Khám/Giường/Thủ thuật...).", "trigger": "MA_NHOM có giá trị ngoài danh mục 14 nhóm chi phí.", "basis": "QĐ5937/QĐ-BYT Phụ lục 3 (mã nhóm chi phí XML2/XML3), chuẩn dữ liệu QĐ130/QĐ-BYT.", "sample": "Sai nhóm chi phí: ... MA_NHOM='...' không thuộc danh mục 14 nhóm chi phí (QĐ5937/QĐ-BYT PL3).", "action": "Sửa MA_NHOM về đúng nhóm chi phí của dòng chi phí (tra bảng 14 nhóm QĐ5937 PL3)."}, {"code": "MN002", "severity": "CHAN", "layer": "FIELD", "title": "MA_NHOM xếp sai loại chi phí (thuốc↔dịch vụ)", "meaning": "Dòng THUỐC (XML2) khai nhóm dịch vụ, hoặc dòng DỊCH VỤ KỸ THUẬT (XML3) khai nhóm Thuốc → xếp sai nhóm chi phí, ảnh hưởng phân nhóm DRG và báo cáo quyết toán.", "trigger": "Dòng thuốc MA_NHOM ∉ {4,7,17}; hoặc dòng DVKT MA_NHOM = 4 (Thuốc).", "basis": "QĐ5937/QĐ-BYT Phụ lục 3 + cấu trúc XML2 (thuốc) / XML3 (DVKT) QĐ130/QĐ-BYT.", "sample": "Sai nhóm chi phí: dòng thuốc \"...\" khai MA_NHOM='1' (Xét nghiệm) — dòng thuốc phải thuộc nhóm 4/7/17.", "action": "Sửa MA_NHOM cho khớp loại chi phí của dòng (thuốc = 4/7/17; dịch vụ kỹ thuật ≠ 4)."}, {"code": "MH001", "severity": "GHICHU", "layer": "MH", "title": "Mức hưởng dòng khác mức cơ sở của thẻ (đối chiếu quyền lợi)", "meaning": "Tỷ lệ hưởng khai trên dòng khác mức CƠ SỞ suy từ ký tự thứ 3 mã thẻ. Cao hơn cơ sở là BÌNH THƯỜNG với diện miễn/giảm đồng chi trả (đủ 5 năm liên tục + chi vượt ngưỡng, hoặc nhóm quyền lợi cao) — công cụ không có lịch sử thẻ để xác nhận nên chỉ ghi chú để đối chiếu.", "trigger": "MUC_HUONG dòng != mức hưởng cơ sở theo thẻ (QĐ1351).", "basis": "QĐ1351/QĐ-BHXH (ký tự 3 = mức cơ sở); miễn/giảm đồng chi trả theo Luật BHYT.", "sample": "Mức hưởng dòng 100% cao hơn mức cơ sở của thẻ (80%) — hợp lệ nếu miễn/giảm đồng chi trả. Đối chiếu thẻ nếu cần.", "action": "Đối chiếu quyền lợi thẻ (miễn/giảm đồng chi trả, 5 năm liên tục) nếu cần — không bắt buộc."}, {"code": "MH003", "severity": "GHICHU", "layer": "MH", "title": "Mức hưởng 100% hợp lệ — đã đối chiếu miễn cùng chi trả", "meaning": "Hồ sơ có NGAY_MIEN_CCT (ngày miễn cùng chi trả) → người bệnh đã đủ 5 năm liên tục + chi vượt ngưỡng, mức hưởng 100% là HỢP LỆ. Engine xác nhận để giám định viên yên tâm, KHÔNG phải cảnh báo.", "trigger": "MUC_HUONG dòng = 100% cao hơn mức cơ sở thẻ VÀ có NGAY_MIEN_CCT.", "basis": "Luật BHYT (miễn cùng chi trả khi đủ 5 năm liên tục + chi vượt 6 lần mức tham chiếu) + QĐ130 (NGAY_MIEN_CCT).", "sample": "Mức hưởng 100% KHỚP diện MIỄN CÙNG CHI TRẢ (có NGAY_MIEN_CCT ...) — HỢP LỆ.", "action": "Không cần xử lý — thông tin xác nhận."}, {"code": "MH004", "severity": "GHICHU", "layer": "MH", "title": "Mức hưởng 100% đúng do chi phí dưới 15% lương cơ sở", "meaning": "Dòng chi ghi mức hưởng 100 trong khi ký tự thứ 3 mã thẻ cho mức thấp hơn, NHƯNG tổng chi trong phạm vi được hưởng của lượt KCB thấp hơn 15% mức lương cơ sở — luật cho hưởng 100%. Hệ thống TỰ kết luận, cơ sở không phải đối chiếu gì.", "trigger": "MUC_HUONG dòng = 100, mức thẻ < 100, và T_TONGCHI_BH < 351.000đ (15% × 2.340.000đ).", "action": "Không phải sửa gì.", "basis": "NĐ188/2025/NĐ-CP Điều 17 khoản 1 (mức chi phí một lần KCB để hưởng 100% là thấp hơn 15% mức lương cơ sở); QĐ3176/QĐ-BYT hướng dẫn trường MUC_HUONG: tổng chi trong phạm vi được hưởng dưới 15% mức lương cơ sở thì ghi mức hưởng 100. Lương cơ sở 2.340.000đ trích từ NĐ188/2025/NĐ-CP và TT24/2025/TT-BYT.", "sample": "Mức hưởng 100% ĐÚNG QUY ĐỊNH: tổng chi trong phạm vi được hưởng 128.000đ THẤP HƠN 15% mức lương cơ sở (351.000đ)."}, {"code": "MH002", "severity": "GHICHU", "layer": "MH", "title": "Mức hưởng — khác cấp/trái tuyến (rà theo thông cấp)", "meaning": "Mã đối tượng KCB cho thấy khám khác cấp chuyên môn → mức hưởng có thể giảm. LƯU Ý: từ 01/7/2025 Luật BHYT 51/2024/QH15 áp dụng THÔNG CẤP — nhiều trường hợp trước là 'trái tuyến' nay hưởng đủ tại cấp ban đầu/cấp cơ bản toàn quốc; đối chiếu theo cấp chuyên môn kỹ thuật thay vì 'tuyến' cũ ⇒ ĐẠT, không phải trái tuyến.", "trigger": "MA_DOITUONG_KCB thuộc nhóm khác cấp/trái tuyến (QĐ2010 PL5).", "basis": "QĐ2010/QĐ-BYT PL5 + Luật BHYT 51/2024/QH15 (thông cấp 01/7/2025) + NĐ188/2025/NĐ-CP (thay NĐ146/2018).", "sample": "Mức hưởng — KHÁC CẤP/TRÁI TUYẾN: MA_DOITUONG_KCB=... → ĐẠT: từ 01/7/2025 Luật BHYT 51/2024/QH15 thông cấp, trường hợp này hưởng đủ.", "action": "Đối chiếu cấp chuyên môn kỹ thuật + quy định thông cấp (Luật 51/2024, NĐ188/2025); kiểm giấy chuyển cấp nếu là cấp chuyên sâu."}, {"code": "TC001", "severity": "GHICHU", "layer": "MH", "title": "Thông cấp: bệnh được đi thẳng cấp chuyên sâu (100%)", "meaning": "Bệnh chính thuộc Danh mục 62 bệnh được KCB tại cấp chuyên sâu (TT01/2025 Phụ lục I): người bệnh được khám thẳng cấp chuyên sâu, hưởng 100%, KHÔNG cần giấy chuyển cơ sở.", "trigger": "MA_BENH_CHINH thuộc Phụ lục I TT01/2025 (62 bệnh).", "basis": "TT01/2025/TT-BYT Phụ lục I + Điều 22 khoản 4 Luật BHYT 51/2024/QH15.", "sample": "THÔNG CẤP: bệnh chính ... thuộc Danh mục 62 bệnh (TT01/2025 Phụ lục I) — được khám thẳng cấp chuyên sâu, hưởng 100%, KHÔNG cần giấy chuyển cơ sở.", "action": "Không cần xử lý — ghi chú xác nhận quyền lợi (tránh hiểu nhầm là trái tuyến)."}, {"code": "RX001", "severity": "CHAN", "layer": "RX", "title": "Kê đơn ngoại trú dài ngày không đúng danh mục/thời hạn", "meaning": "Đơn thuốc ngoại trú kê trên 30 ngày chỉ áp dụng cho 252 bệnh mạn tính (TT26/2025 Phụ lục VII), tối đa 90 ngày. Đơn vượt 90 ngày hoặc bệnh ngoài danh mục ⇒ GIẢM số ngày kê đơn về trần của bệnh.", "trigger": "Ngoại trú SO_NGAY_DTRI > 30 và bệnh chính ngoài Phụ lục VII TT26/2025, hoặc > 90 ngày.", "basis": "TT26/2025/TT-BYT (thay TT52/2017) Điều 8 + Phụ lục VII (252 bệnh).", "sample": "Kê đơn dài ngày: N ngày > 30 ngày nhưng bệnh chính ... KHÔNG thuộc Danh mục 252 bệnh mạn tính (TT26/2025 Phụ lục VII).", "action": "Đối chiếu bệnh chính với Danh mục 252 bệnh mạn tính (/v1/benh-mantinh) hoặc giảm số ngày kê đơn ≤ 30."}, {"code": "DN001", "severity": "CHAN", "layer": "RX", "title": "Điều trị dài ngày nhưng bệnh ngoài danh mục TT25/2025", "meaning": "Loại hình KCB điều trị dài ngày (MA_LOAI_KCB 05/08) chỉ áp cho 282 bệnh cần chữa trị dài ngày (TT25/2025 Phụ lục I). TRÙNG NỘI DUNG với K5012 — engine chỉ phát K5012, mã này giữ lại để tra cứu ngược.", "trigger": "MA_LOAI_KCB ∈ {05,08} và MA_BENH_CHINH ngoài 282 bệnh TT25/2025 PL I.", "basis": "TT25/2025/TT-BYT Phụ lục I + QĐ1804/QĐ-BYT (mã loại hình 05/08).", "sample": "Điều trị dài ngày (MA_LOAI_KCB=05) nhưng bệnh chính ... KHÔNG thuộc Danh mục 282 bệnh cần chữa trị dài ngày (TT25/2025 Phụ lục I).", "action": "Đối chiếu bệnh chính với Danh mục 282 bệnh dài ngày (/v1/benh-dai-ngay) hoặc sửa mã loại hình KCB.", "deprecated": true}, {"code": "TV001", "severity": "CHAN", "layer": "MH", "title": "Mã chỉ dùng mã hoá tử vong làm bệnh chính", "meaning": "Một số mã ICD-10 (cột 27 TT06) chỉ dùng để mã hoá nguyên nhân tử vong, không được làm bệnh chính của hồ sơ điều trị.", "trigger": "MA_BENH_CHINH là mã có cờ 'chỉ mã hoá tử vong' (cột 27 TT06/2026).", "basis": "TT06/2026/TT-BYT (nguyên tắc mã hoá + cột 27).", "sample": "Mã ... CHỈ dùng để mã hoá nguyên nhân tử vong (TT06/2026 cột 27), KHÔNG được làm bệnh chính hồ sơ điều trị.", "action": "Thay bằng mã bệnh điều trị phù hợp cho bệnh chính."}, {"code": "CS001", "severity": "GHICHU", "layer": "FIELD", "title": "MA_CSKCB sai định dạng 5 ký tự", "meaning": "Mã cơ sở KCB gồm 5 ký tự số (2 số mã tỉnh + 3 số thứ tự cơ sở) theo QĐ384/QĐ-BYT.", "trigger": "MA_CSKCB có giá trị nhưng không phải 5 ký tự số.", "basis": "QĐ384/QĐ-BYT (30/01/2019, nguyên tắc cấp mã cơ sở KCB).", "sample": "MA_CSKCB='...' sai định dạng — mã cơ sở KCB gồm 5 ký tự số (2 số mã tỉnh + 3 số thứ tự, QĐ384/QĐ-BYT).", "action": "Kiểm mã cơ sở KCB đúng 5 ký tự số theo QĐ384/QĐ-BYT."}, {"code": "DRG001", "severity": "GHICHU", "layer": "DRG", "title": "Sẵn sàng DRG: thiếu mã ICD-9-CM (MA_PTTT_QT)", "meaning": "Ca nội trú/ban ngày có phẫu thuật/thủ thuật nhưng bỏ trống mã phẫu thuật/thủ thuật quốc tế ICD-9-CM (MA_PTTT_QT) — đây là đầu vào bắt buộc để phân nhóm thanh toán theo chẩn đoán DRG.", "trigger": "MA_LOAI_KCB nội trú/ban ngày + có MA_PTTT + MA_PTTT_QT trống.", "basis": "NĐ188/2025/NĐ-CP (thanh toán DRG nội trú+ban ngày) + QĐ387/QĐ-BYT (bảng ICD-9-CM).", "sample": "SẴN SÀNG DRG: ca có phẫu thuật/thủ thuật nhưng CHƯA điền mã ICD-9-CM (MA_PTTT_QT trống) — cần cho thanh toán theo nhóm chẩn đoán DRG.", "action": "Điền MA_PTTT_QT bằng mã ICD-9-CM QĐ387 tương ứng (tra /v1/icd9) để sẵn sàng thanh toán DRG."}, {"code": "DRG002", "severity": "GHICHU", "layer": "DRG", "title": "Sẵn sàng DRG: mã ICD-9-CM không thuộc QĐ387", "meaning": "Giá trị MA_PTTT_QT không khớp bảng phân loại phẫu thuật, thủ thuật ICD-9-CM (QĐ387/QĐ-BYT).", "trigger": "MA_PTTT_QT có giá trị nhưng không thuộc bảng ICD-9-CM QĐ387.", "basis": "QĐ387/QĐ-BYT (05/02/2026, thay QĐ4440/2020).", "sample": "SẴN SÀNG DRG: mã ICD-9-CM (MA_PTTT_QT: ...) không thuộc bảng QĐ387/QĐ-BYT ⇒ SỬA <MA_PTTT_QT> về mã thuộc bảng ICD-9-CM.", "action": "Tra mã ICD-9-CM đúng tại /v1/icd9 và sửa MA_PTTT_QT."}, {"code": "YHCT001", "severity": "GHICHU", "layer": "YHCT", "title": "Thuốc cổ truyền/dược liệu BHYT (hợp lệ)", "meaning": "Thuốc mã 05C (chế phẩm) / 05V (vị thuốc) thuộc danh mục thuốc cổ truyền, thuốc từ dược liệu, vị thuốc YHCT được BHYT chi trả — KHÁC danh mục hoá dược TT20/2022.", "trigger": "Mã thuốc 05C/05V khớp danh mục YHCT (TT05/2015 + TT27/2025, VBHN15/2025).", "basis": "TT05/2015/TT-BYT + TT27/2025/TT-BYT (VBHN 15/VBHN-BYT 2025). Danh mục YHCT áp dụng theo thời điểm KCB: TT05/2015 (và các văn bản hợp nhất) trước 01/9/2025, TT27/2025 từ 01/9/2025.", "sample": "Thuốc cổ truyền/dược liệu BHYT (hợp lệ): ... — chi trả theo danh mục YHCT, không phải hoá dược TT20.", "action": "Không cần xử lý — ghi chú xác nhận thuốc YHCT hợp lệ (tránh báo nhầm ngoài danh mục TT20)."}, {"code": "YHCT002", "severity": "CHAN", "layer": "YHCT", "title": "Thuốc YHCT ngoài danh mục BHYT", "meaning": "Thuốc có dạng mã cổ truyền/dược liệu (05C/05V) nhưng KHÔNG thuộc danh mục thuốc YHCT được BHYT chi trả.", "trigger": "Mã 05C/05V không khớp danh mục YHCT (TT05/2015 + TT27/2025).", "basis": "TT05/2015/TT-BYT + TT27/2025/TT-BYT. Danh mục YHCT áp dụng theo thời điểm KCB: TT05/2015 trước 01/9/2025, TT27/2025 từ 01/9/2025.", "sample": "Thuốc YHCT ngoài danh mục BHYT: mã ... không thuộc danh mục thuốc cổ truyền/dược liệu (TT05/TT27).", "action": "Đối chiếu danh mục thuốc YHCT (/v1/yhct) hoặc chuyển chi phí ngoài BHYT."}, {"code": "K1001", "severity": "CHAN", "layer": "K1", "title": "Thuốc ngoài danh mục BHYT (TT20/2022)", "meaning": "Hoạt chất không thuộc danh mục thuốc được BHYT chi trả.", "trigger": "Mã/tên thuốc không khớp danh mục TT20 (so khớp theo mã, fallback theo tên).", "basis": "TT20/2022/TT-BYT.", "sample": "\"<tên thuốc>\" KHÔNG thuộc danh mục thuốc BHYT (TT20/2022).", "action": "Thay bằng thuốc trong danh mục (xem /v1/drugs/alternatives) hoặc chuyển chi phí ngoài BHYT.", "chua_quan_sat": "so khớp danh mục TT20 theo MÃ đã phủ 100% ⇒ nhánh fallback theo TÊN không còn lối vào; giữ làm lưới an toàn cho mã chưa rà soát"}, {"code": "K2001", "severity": "CHAN", "layer": "K2", "title": "Thuốc có điều kiện thanh toán TT20", "meaning": "Thuốc được BHYT chi trả CÓ ĐIỀU KIỆN (hạng BV/chỉ định cụ thể/chứng từ).", "trigger": "Thuốc thuộc dòng TT20 có ghi chú điều kiện thanh toán.", "basis": "TT20/2022/TT-BYT (cột điều kiện), TT37/2024/TT-BYT.", "sample": "<tên thuốc>: có điều kiện thanh toán TT20 — cần chứng từ.", "action": "Bổ sung chứng từ/hồ sơ chứng minh đủ điều kiện theo ghi chú TT20.", "chua_quan_sat": "ràng buộc HẠNG BỆNH VIỆN — chỉ phát khi xác định được hạng cơ sở; điều kiện gắn CHẨN ĐOÁN của cùng dòng TT20 đã do DK001 kết luận (ca tiêm rơi vào DK001 trước)"}, {"code": "K2003", "severity": "CHAN", "layer": "K2", "title": "Thuốc không được dùng ở hạng bệnh viện này", "meaning": "Phụ lục I TT20/2022 đánh dấu từng thuốc theo HẠNG BỆNH VIỆN được sử dụng và thanh toán (cột 4 hạng đặc biệt+I · cột 5 hạng II · cột 6 hạng III+IV · cột 7 trạm y tế xã). Dòng đường dùng tương ứng của thuốc này KHÔNG đánh dấu cho hạng mà cơ sở khai.", "trigger": "Xác định được cả hạng bệnh viện lẫn đường dùng, và ô hạng tương ứng trong Phụ lục I để trống.", "action": "Đối chiếu hạng bệnh viện đã khai và đường dùng thực tế; nếu đúng thì chuyển chi phí ra ngoài BHYT.", "basis": "TT20/2022/TT-BYT Điều 2 khoản 1 điểm d: “Cột 4, 5, 6, 7: Ghi hạng bệnh viện được sử dụng và thanh toán bảo hiểm y tế” — “Bệnh viện hạng đặc biệt và hạng I sử dụng các thuốc quy định tại cột 4; Bệnh viện hạng II … cột 5; Bệnh viện hạng III và hạng IV … cột 6; … trạm y tế xã sử dụng các thuốc quy định tại cột 7”. Cờ hạng dựng từ bản toàn văn (số dấu) + tính lồng nhau, đã kiểm 1.113 dòng bằng vị trí dấu trên PDF gốc (0 ngoại lệ) và soi ảnh scan cho các dòng OCR đọc sót.", "sample": "[K2003] Thuốc Piracetam: TT20/2022 Phụ lục I STT 949 (đường dùng “Dung dịch tiêm”) chỉ đánh dấu cho hạng đặc biệt/I, hạng II, hạng III/IV — KHÔNG có trạm y tế xã.", "chua_quan_sat": "cần xác định ĐỒNG THỜI hạng bệnh viện và đường dùng; thiếu một trong hai thì engine cố ý im lặng (không suy đoán)"}, {"code": "DK001", "severity": "CHAN", "layer": "K2", "title": "Điều kiện thanh toán TT20 gắn chẩn đoán chưa thoả", "meaning": "Thuốc mà TT20/2022 quy định CHỈ được Quỹ BHYT thanh toán cho một chẩn đoán cụ thể (vd succimer=ngộ độc chì, oseltamivir=cúm, alendronat=loãng xương) nhưng hồ sơ không có chẩn đoán phù hợp.", "trigger": "Thuốc thuộc bảng cổng chẩn đoán TT20 (route-đơn-nghĩa, đã kiểm 0 trùng canon) mà không có mã ICD nào của hồ sơ (bệnh chính+kèm) thuộc nhóm chẩn đoán TT20 yêu cầu.", "basis": "TT20/2022/TT-BYT Phụ lục I cột 8 — TT20 Điều 2 khoản 1 điểm đ: \"Cột 8: Ghi điều kiện, tỷ lệ thanh toán và ghi chú cụ thể của một số thuốc\". Phụ lục I VẪN CÒN HIỆU LỰC: TT37/2024 Điều 20 khoản 4 chỉ bãi bỏ \"Các Điều 3, 4, 5 và 6 Thông tư số 20/2022/TT-BVT hết hiệu lực thi hành từ ngày Thông tư này có hiệu lực thi hành\" (01/01/2025) [trích theo đúng bản lưu; bản OCR ghi TT-BVT, số hiệu đúng là TT-BYT] — KHÔNG bãi bỏ Phụ lục I; và TT37/2024 Điều 20 khoản 2: \"Không áp dụng quy định tại Điều 7 Thông tư này trong thanh toán chi phí khám bệnh, chữa bệnh bảo hiểm y tế cho đến khi Bộ trưởng Bộ Y tế ban hành văn bản mới về Danh mục và tỷ lệ, điều kiện thanh toán đối với thuốc hóa dược, sinh phẩm, thuốc phóng xạ và chất đánh dấu\" — tức danh mục TT20 vẫn là danh mục đang dùng", "sample": "Thuốc \"Succimer\": Điều kiện TT20 CHƯA thoả: thuốc CHỈ được Quỹ BHYT thanh toán khi ngộ độc chì (cần chẩn đoán nhóm [...]) nhưng hồ sơ không có chẩn đoán phù hợp (đã tra CẢ bệnh chính LẪN bệnh kèm) — ...", "action": "Đối chiếu bệnh án: bổ sung mã chẩn đoán đúng nếu có, hoặc chuyển chi phí ngoài phạm vi BHYT."}, {"code": "HC001", "severity": "GHICHU", "layer": "K2", "title": "Thuốc phải hội chẩn trước khi dùng (dấu * TT20)", "meaning": "Thuốc có ký hiệu dấu sao (*) trong danh mục TT20/2022 — phải được hội chẩn trước khi sử dụng (trừ cấp cứu). Kháng sinh dự trữ (*) chỉ được quỹ BHYT thanh toán khi thực hiện đúng quy trình quản lý sử dụng kháng sinh trong bệnh viện.", "trigger": "Hoạt chất thuộc nhóm có dấu (*) trong TT20/2022 (kháng sinh/kháng nấm/kháng virus dự trữ, dinh dưỡng tĩnh mạch...).", "basis": "TT20/2022/TT-BYT Điều 2 khoản 7 (dấu *) + QĐ5631/QĐ-BYT (quản lý sử dụng kháng sinh).", "sample": "Thuốc \"Meropenem\": Thuốc phải HỘI CHẨN trước khi dùng (dấu * — TT37/2024/TT-BYT Điều 10 khoản 5...) — cần biên bản hội chẩn.", "action": "Đính kèm biên bản hội chẩn theo quy trình quản lý sử dụng kháng sinh (QĐ5631) để quỹ BHYT thanh toán.", "deprecated": true}, {"code": "K3001", "severity": "CHAN", "layer": "K3", "title": "Mức hưởng theo mã đối tượng KCB — không chi trả hoặc giảm tỷ lệ", "meaning": "Mã đối tượng KCB tại thời điểm vào viện thuộc trường hợp KHÔNG được quỹ BHYT chi trả, hoặc chi trả với tỷ lệ giảm.", "trigger": "Đối chiếu MA_DOITUONG_KCB với bảng mức hưởng theo thời điểm vào viện và nội/ngoại trú.", "basis": "QĐ3276/QĐ-BYT ngày 17/10/2025 Phụ lục 1 — mã đối tượng KCB và mức hưởng; NĐ188/2025/NĐ-CP.", "sample": "[K3001] Mức hưởng — MA_DOITUONG_KCB=1.18 (…) tại thời điểm vào viện … KHÔNG được quỹ BHYT chi trả …", "action": "Đối chiếu lại mã đối tượng KCB và mức hưởng áp cho thời điểm khám.", "muc_do_thuc_te": ["CANHBAO"]}, {"code": "K3002", "severity": "GHICHU", "layer": "K3", "title": "Mã đối tượng KCB không khớp nội/ngoại trú — nên cập nhật", "meaning": "Mã đối tượng KCB chỉ áp cho nội trú (hoặc ngoại trú) nhưng hồ sơ lại thuộc loại còn lại.", "trigger": "So MA_DOITUONG_KCB với MA_LOAI_KCB / NGAY_VAO_NOI_TRU của hồ sơ.", "basis": "QĐ3276/QĐ-BYT ngày 17/10/2025 Phụ lục 1 và Điều 2 — cơ sở được trích xuất lại và gửi hồ sơ thay thế.", "sample": "[K3002] Mã đối tượng KCB nên cập nhật: MA_DOITUONG_KCB=1.18 chỉ áp cho NGOẠI trú … nhưng hồ sơ là NỘI trú …", "action": "Cập nhật mã đối tượng KCB đúng theo QĐ3276 PL1 rồi gửi hồ sơ thay thế."}, {"code": "K4001", "severity": "GHICHU", "layer": "K4", "title": "Thuốc chống chỉ định với chẩn đoán", "meaning": "Thuốc chống chỉ định với một trong các mã bệnh của hồ sơ.", "trigger": "Mã bệnh hồ sơ thuộc tập chống chỉ định của thuốc.", "basis": "MAPPING_chongchidinh (DrugCentral) / HDSD.", "sample": "Chống chỉ định với [<mã bệnh>].", "action": "Ngừng/thay thuốc; nếu có lý do lâm sàng đặc biệt phải giải trình."}, {"code": "K5001", "severity": "CHAN", "layer": "K5", "title": "Mã ICD lạ / không có trong danh mục TT06", "meaning": "Mã bệnh chính không có trong danh mục ICD-10 TT06 — mã lạ/sai định dạng.", "trigger": "Mã (và mã cha 3 ký tự) không thuộc VALID_ICD.", "basis": "TT06/2026/TT-BYT (danh mục 15.844 dòng).", "sample": "<mã>: KHÔNG có trong danh mục ICD TT06 — mã lạ/sai định dạng, cần rà soát thủ công.", "action": "Sửa mã bệnh chính về mã hợp lệ TT06 (dùng /v1/icd/suggest)."}, {"code": "K5002", "severity": "CHAN", "layer": "K5", "title": "Mã cấm làm bệnh chính (cột 24 TT06)", "meaning": "Mã ICD bị cấm dùng làm chẩn đoán chính.", "trigger": "Cột 24 = x.", "basis": "TT06/2026/TT-BYT (cột 24).", "sample": "<mã> KHÔNG được dùng làm bệnh chính (cột 24 — mã KHÔNG được dùng làm chẩn đoán chính).", "action": "Chuyển mã này thành bệnh kèm; chọn mã bệnh chính phù hợp."}, {"code": "K5003", "severity": "CHAN", "layer": "K5", "title": "Mã chỉ dùng mã hoá nguyên nhân tử vong (cột 27)", "meaning": "Mã chỉ dùng để mã hoá nguyên nhân tử vong, không làm bệnh chính khi còn điều trị.", "trigger": "Cột 27 = x.", "basis": "TT06/2026/TT-BYT (cột 27).", "sample": "<mã> KHÔNG được dùng làm bệnh chính (cột 27 — mã CHỈ dùng để mã hóa nguyên nhân tử vong).", "action": "Dùng mã lâm sàng phù hợp làm bệnh chính.", "deprecated": true}, {"code": "K5004", "severity": "CHAN", "layer": "K5", "title": "Chương ngoại nhân V–Y làm bệnh chính", "meaning": "Mã nguyên nhân ngoại sinh (V/W/X/Y) chỉ bổ sung cho mã tổn thương S–T, không làm bệnh chính.", "trigger": "Ký tự đầu ∈ {V,W,X,Y}.", "basis": "TT06/2026/TT-BYT (chương XX).", "sample": "<mã> KHÔNG được dùng làm bệnh chính (chương XX (V-Y) — mã nguyên nhân ngoại sinh).", "action": "Đặt mã tổn thương (S–T) làm bệnh chính, V–Y làm bệnh kèm.", "deprecated": true}, {"code": "K5005", "severity": "GHICHU", "layer": "K5", "title": "Không khuyến khích làm bệnh chính (cột 25)", "meaning": "Mã không khuyến khích dùng làm chẩn đoán chính.", "trigger": "Cột 25 = x (và không bị cấm cột 24/27).", "basis": "TT06/2026/TT-BYT (cột 25).", "sample": "<mã> KHÔNG khuyến khích dùng làm chẩn đoán chính (cột 25) — ĐẠT, đây là khuyến nghị mã hoá của TT06.", "action": "Cân nhắc mã cụ thể hơn làm bệnh chính."}, {"code": "K5006", "severity": "CHAN", "layer": "K5", "title": "Sai giới: mã chỉ Nữ nhưng BN Nam (cột 28)", "meaning": "Mã bệnh chỉ có/chủ yếu ở Nữ nhưng bệnh nhân là Nam.", "trigger": "Cột 28 = x và GIOI_TINH = 1.", "basis": "TT06/2026/TT-BYT (cột 28).", "sample": "<mã> chỉ có/chủ yếu ở NỮ (cột 28) nhưng BN là Nam.", "action": "Kiểm lại mã bệnh hoặc giới tính bệnh nhân."}, {"code": "K5007", "severity": "CHAN", "layer": "K5", "title": "Sai giới: mã chỉ Nam nhưng BN Nữ (cột 29)", "meaning": "Mã bệnh chỉ có/chủ yếu ở Nam nhưng bệnh nhân là Nữ.", "trigger": "Cột 29 = x và GIOI_TINH = 2.", "basis": "TT06/2026/TT-BYT (cột 29).", "sample": "<mã> chỉ có/chủ yếu ở NAM (cột 29) nhưng BN là Nữ.", "action": "Kiểm lại mã bệnh hoặc giới tính bệnh nhân."}, {"code": "K5008", "severity": "CHAN", "layer": "K5", "title": "Giới hạn tuổi (QĐ4469)", "meaning": "Mã bệnh có giới hạn tuổi (TT06 không có cột tuổi → lấy từ QĐ4469).", "trigger": "Mã có gioi_han_tuoi trong QĐ4469.", "basis": "QĐ4469/QĐ-BYT (bổ sung tuổi).", "sample": "<mã> có giới hạn tuổi (QĐ4469): ... (BN ...t — ngoài giới hạn tuổi của mã).", "action": "Đối chiếu tuổi bệnh nhân với giới hạn của mã.", "deprecated": true}, {"code": "K5009", "severity": "GHICHU", "layer": "K5", "title": "Mã cha có mã con — nên ghi mã con (cột 26)", "meaning": "Đang ghi mã 3 ký tự trong khi có mã con 4–5 ký tự cụ thể hơn.", "trigger": "Cột 26 = x hoặc mã 3 ký tự có mã con.", "basis": "TT06/2026/TT-BYT (cột 26) + CV4059/BYT-BH.", "sample": "<mã> là mã cha CÓ mã con (cột 26) — nên ghi mã con cụ thể (4-5 ký tự).", "action": "Ghi mã con 4–5 ký tự cụ thể thay vì mã cha 3 ký tự."}, {"code": "K6001", "severity": "CHAN", "layer": "K6", "title": "DVKT ngoài danh mục dùng chung QĐ2010", "meaning": "Mã dịch vụ kỹ thuật 9 số hoặc mã giường không có trong danh mục QĐ2010.", "trigger": "Mã đúng định dạng DVKT/giường nhưng không thuộc danh mục.", "basis": "QĐ2010/QĐ-BYT (2025).", "sample": "mã DVKT ... KHÔNG có trong danh mục dùng chung QĐ2010/2025 | DVKT ...: ngoài danh mục QĐ2010.", "action": "Ánh xạ mã DVKT nội bộ HIS sang mã dùng chung QĐ2010."}, {"code": "K6002", "severity": "CHAN", "layer": "K6", "title": "Mã DVKT không có trong danh mục dùng chung", "meaning": "Mã dịch vụ kỹ thuật khai trong hồ sơ không đối chiếu được với bộ mã danh mục dùng chung.", "trigger": "MA_DICH_VU không thuộc danh mục DVKT của QĐ2010/QĐ-BYT.", "basis": "QĐ2010/QĐ-BYT ngày 19/6/2025 — bộ mã danh mục dùng chung (DVKT); TT48/2017/TT-BYT Điều 4 khoản 2.", "sample": "[K6002] mã DVKT \"XX.YYYY.ZZZZ\" KHÔNG có trong danh mục dùng chung QĐ2010/2025", "action": "Chuẩn hoá mã dịch vụ kỹ thuật theo bộ mã dùng chung trước khi gửi cổng."}, {"code": "K6003", "severity": "CHAN", "layer": "K6", "title": "DVKT ngoài danh mục kỹ thuật ĐƯỢC DUYỆT của cơ sở", "meaning": "Mã DVKT trên hồ sơ KHÔNG nằm trong danh mục kỹ thuật đã được cấp có thẩm quyền PHÊ DUYỆT cho chính cơ sở KCB đó — cơ sở chưa được phép thực hiện/thanh toán kỹ thuật này.", "trigger": "MA_DICH_VU (XML3) không thuộc danh mục kỹ thuật duyệt của cơ sở (do cơ sở đăng ký qua POST /v1/co-so/danh-muc).", "basis": "Luật KCB 15/2023 + NĐ96/2023 (mỗi cơ sở chỉ làm kỹ thuật đã được phê duyệt) — cần DỮ LIỆU CƠ SỞ.", "sample": "DVKT <mã> NGOÀI danh mục kỹ thuật ĐƯỢC DUYỆT của cơ sở <MA_CSKCB> — cơ sở chưa được phép thực hiện.", "action": "Bổ sung kỹ thuật vào DMKT được phê duyệt của cơ sở, hoặc rà lại mã DVKT trên hồ sơ.", "chua_quan_sat": "chỉ phát khi cơ sở đã nạp DANH MỤC KỸ THUẬT ĐƯỢC DUYỆT của mình (qua API key cơ sở)"}, {"code": "K6004", "severity": "CHAN", "layer": "K6", "title": "DVKT thực hiện ngoài phạm vi/khoa được phép", "meaning": "Kỹ thuật được thực hiện ở khoa KHÔNG thuộc phạm vi hành nghề/phân tuyến kỹ thuật đã đăng ký cho khoa đó (proxy cho CCHN người thực hiện).", "trigger": "MA_DICH_VU không thuộc danh sách DVKT được phép của MA_KHOA (cơ sở đăng ký dvktTheoKhoa).", "basis": "Luật KCB 15/2023 (CCHN + phạm vi hành nghề) — cần DỮ LIỆU CƠ SỞ (phân công kỹ thuật theo khoa/người).", "sample": "DVKT <mã> thực hiện ở khoa <MA_KHOA> NGOÀI phạm vi được phép của cơ sở — kiểm CCHN/phân tuyến kỹ thuật.", "action": "Rà phân công kỹ thuật theo khoa/CCHN người thực hiện, hoặc cập nhật phạm vi được phép.", "chua_quan_sat": "chỉ phát khi cơ sở đã nạp DANH MỤC DVKT THEO KHOA của mình (qua API key cơ sở)"}, {"code": "K7001A", "severity": "GHICHU", "layer": "K7", "title": "An toàn người bệnh — tương tác thuốc chống chỉ định", "meaning": "Hồ sơ có cặp thuốc thuộc danh mục tương tác CHỐNG CHỈ ĐỊNH của QĐ5948. Là cảnh báo CHUYÊN MÔN, không phải kết luận thanh toán.", "trigger": "Hai dòng CHI_TIET_THUOC mang cặp hoạt chất có trong QĐ5948 với cột Xử trí ghi Chống chỉ định phối hợp.", "basis": "QĐ5948/QĐ-BYT danh mục tương tác thuốc chống chỉ định. Danh mục CHUYÊN MÔN, không căn cứ Luật BHYT, không quy định thanh toán — nên KHÔNG tuyên xuất toán (CLAUDE.md muc 1).", "sample": "[K7001A] AN TOÀN NGƯỜI BỆNH — tương tác CHỐNG CHỈ ĐỊNH: ...", "action": "ĐẠT về thanh toán — đề nghị bác sĩ xem lại cặp thuốc."}, {"code": "K7001", "severity": "GHICHU", "deprecated": true, "layer": "K7", "title": "Tương tác thuốc chống chỉ định (QĐ5948)", "meaning": "Hai thuốc trong đơn là cặp tương tác chống chỉ định.", "trigger": "Cặp hoạt chất thuộc danh mục QĐ5948.", "basis": "QĐ5948/QĐ-BYT.", "sample": "Tương tác chống chỉ định: <A> + <B> (QĐ5948).", "action": "Bỏ 1 trong 2 thuốc hoặc hội chẩn/thay thế.", "muc_do_thuc_te": ["CHAN", "CANHBAO", "GHICHU"]}, {"code": "K8001", "severity": "CHAN", "layer": "K8", "title": "Nghi trùng khai DVKT (cùng giờ + cùng người thực hiện)", "meaning": "Cùng một DVKT có ≥2 dòng CÙNG giờ thực hiện (NGAY_KQ) và CÙNG người thực hiện trong ngày — trùng một lần làm. (DVKT làm nhiều lần KHÁC giờ trong ngày là bình thường ở nội trú, KHÔNG tính trùng.)", "trigger": "≥2 dòng XML3 cùng MA_DICH_VU + cùng NGAY_KQ + cùng NGUOI_THUC_HIEN trong 1 ngày.", "basis": "Nguyên tắc giám định trùng (trùng dịch vụ + trùng THỜI ĐIỂM thực hiện) — TT12/2026/TT-BTC; tiền thân QĐ3618/QĐ-BHXH.", "sample": "Trùng khai DVKT mã <mã> — <tên> ngày <ngày> có <n> dòng CÙNG giờ thực hiện lúc HH:MM, CÙNG người thực hiện.", "action": "Kiểm y lệnh & sổ thực hiện; nếu đúng là 1 lần làm bị khai 2 dòng thì gộp còn 1; nếu thực sự làm nhiều lần thì bổ sung giờ/người thực hiện khác nhau.", "muc_do_thuc_te": ["CANHBAO", "GHICHU"]}, {"code": "K8003", "severity": "GHICHU", "layer": "K8", "title": "DVKT thực hiện nhiều lần trong ngày — đã đối chiếu, hợp lệ", "meaning": "Có DVKT được thực hiện nhiều lần trong ngày nhưng KHÁC giờ thực hiện / khác người — bình thường ở nội trú (theo dõi, chăm sóc); engine đã đối chiếu mốc thực hiện và KHÔNG tính là trùng khai. Chỉ báo để minh bạch.", "trigger": "DVKT lặp trong ngày nhưng các dòng có NGAY_KQ hoặc NGUOI_THUC_HIEN khác nhau.", "basis": "Nguyên tắc giám định trùng (TT12/2026/TT-BTC; QĐ3618/QĐ-BHXH) — chỉ trùng khi trùng thời điểm thực hiện.", "sample": "<n> lượt DVKT được thực hiện NHIỀU LẦN trong ngày (khác giờ / khác người) — KHÔNG tính trùng khai.", "action": "Không cần xử lý — thông tin đối chiếu."}, {"code": "K8004", "severity": "GHICHU", "layer": "K8", "title": "Nghi trùng DVKT nhưng thiếu mốc thực hiện để xác nhận", "meaning": "Có ≥2 dòng cùng DVKT trong ngày giống nhau nhưng hồ sơ THIẾU mốc thực hiện (NGAY_KQ/người/vị trí) nên KHÔNG xác nhận được là trùng khai hay nhiều lần làm thật. Chỉ ghi chú để đối chiếu — không kết luận trùng khi thiếu bằng chứng (tránh báo oan HIS không xuất trường thực hiện).", "trigger": "≥2 dòng cùng MA_DICH_VU + cùng ngày, tất cả thiếu NGAY_KQ/NGAY_TH_YL/NGUOI_THUC_HIEN/VI_TRI_TH_DVKT.", "basis": "Nguyên tắc giám định trùng (TT12/2026/TT-BTC; QĐ3618) — chỉ kết luận trùng khi có trùng THỜI ĐIỂM thực hiện.", "sample": "Nghi trùng DVKT mã ... ngày ... có <n> dòng giống nhau nhưng THIẾU mốc thực hiện — đối chiếu y lệnh nếu cần.", "action": "Đối chiếu y lệnh & sổ thực hiện nếu cần; bổ sung trường thực hiện (NGAY_KQ/người) để phân biệt.", "chua_quan_sat": "chỉ phát khi có dòng DVKT nghi trùng mà THIẾU mốc thực hiện; đo 6.000 hồ sơ + ca tiêm đều rơi vào K8003/K8001 trước"}, {"code": "K8002", "severity": "GHICHU", "layer": "K8", "title": "Tách dịch vụ — mục đã gồm trong dịch vụ/định mức khác", "meaning": "Một DVKT/VTYT được tính RIÊNG trong khi đã nằm trong định mức/gói của một dịch vụ khác cùng hồ sơ (tách để thu thêm).", "trigger": "Cả 'dịch vụ chính' và 'mục con không tách' cùng xuất hiện (cơ sở đăng ký khongTach).", "basis": "TT04/2017 Điều 3 (VTYT trong giá không thanh toán riêng) + định mức KTKT (TT19/2022) + ghi chú gói giá — cần DỮ LIỆU CƠ SỞ.", "sample": "Tách dịch vụ: DVKT <con> đã bao gồm trong <chính> (định mức/gói) — không thanh toán riêng.", "action": "Bỏ dòng tính riêng của mục đã nằm trong định mức/gói, hoặc giải trình.", "muc_do_thuc_te": ["GHICHU"]}, {"code": "EX001", "severity": "CHAN", "layer": "K1", "title": "Thuốc có SĐK đã bị rút (không còn lưu hành)", "meaning": "Số đăng ký của thuốc đã bị Cục Quản lý Dược rút — thuốc không còn được phép lưu hành, không thuộc phạm vi thanh toán BHYT.", "trigger": "SO_DANG_KY của dòng thuốc thuộc danh sách SĐK đã bị rút (Cục QLD).", "basis": "Cục Quản lý Dược — công văn rút số đăng ký (dichvucong.dav.gov.vn).", "sample": "Thuốc SĐK đã bị rút: \"...\" (SĐK ...) đã bị RÚT số đăng ký — không còn lưu hành.", "action": "Đối chiếu số đăng ký thuốc; thay bằng thuốc còn hiệu lực SĐK."}, {"code": "THU001", "severity": "CHAN", "layer": "K1", "title": "Thuốc bị thu hồi/đình chỉ do vi phạm chất lượng", "meaning": "Thuốc có SĐK bị Cục QLD thu hồi/đình chỉ lưu hành TOÀN BỘ do vi phạm chất lượng → không được thanh toán BHYT. (Thu hồi theo LÔ riêng lẻ không tự cảnh báo vì hồ sơ BHYT thường không có số lô — chỉ tra cứu ở /v1/thuoc-thu-hoi.)", "trigger": "SO_DANG_KY thuộc danh sách thu hồi TOÀN BỘ (loai=SDK) trong thuoc_thu_hoi_dav.", "basis": "Cục Quản lý Dược — công văn/QĐ thu hồi thuốc (dav.gov.vn/cong-van-thu-hoi-thuoc).", "sample": "Thuốc BỊ THU HỒI chất lượng: \"...\" (SĐK ...) đã bị thu hồi/đình chỉ TOÀN BỘ — không được thanh toán BHYT.", "action": "Đối chiếu SĐK; không thanh toán thuốc đã bị thu hồi toàn bộ."}, {"code": "YHCT003", "severity": "GHICHU", "layer": "YHCT", "title": "MA_BENH_YHCT ngoài danh mục mã bệnh YHCT", "meaning": "Mã bệnh Y học cổ truyền không thuộc danh mục mã bệnh YHCT (QĐ2782/QĐ-BYT).", "trigger": "MA_BENH_YHCT có giá trị nhưng không khớp danh mục QĐ2782.", "basis": "QĐ2782/QĐ-BYT (danh mục mã bệnh YHCT — Phụ lục 07 bộ mã dùng chung).", "sample": "MA_BENH_YHCT='...' không thuộc danh mục mã bệnh Y học cổ truyền (QĐ2782/QĐ-BYT) — đối chiếu.", "action": "Tra mã bệnh YHCT đúng tại /v1/benh-yhct (QĐ2782/QĐ-BYT)."}, {"code": "YHCT004", "severity": "GHICHU", "layer": "YHCT", "title": "MA_BENH_YHCT lệch chương ICD-10 tương ứng", "meaning": "Mã bệnh YHCT theo QĐ2782 có ICD-10 tương ứng (ánh xạ 1:1), nhưng chẩn đoán YHHĐ của hồ sơ (bệnh chính+kèm) khác chương ICD hoàn toàn → nghi lệch mã hoá giữa YHCT và YHHĐ.", "trigger": "ICD-10 ánh xạ của MA_BENH_YHCT không cùng chương/mã 3 ký tự với bất kỳ chẩn đoán hồ sơ nào.", "basis": "QĐ2782/QĐ-BYT Phụ lục 07.1 (cột ICD-10 tương ứng của từng mã bệnh YHCT).", "sample": "MA_BENH_YHCT='U50.011' (Bách nhật khái) theo QĐ2782 tương ứng ICD-10 'A37' nhưng chẩn đoán YHHĐ hồ sơ (E11.9) khác chương — đối chiếu mã hoá bệnh án.", "action": "Đối chiếu bệnh án: kiểm mã bệnh YHCT hoặc mã ICD-10 chính đã nhập đúng chưa (mức ghi chú, không xuất toán)."}, {"code": "GIA001", "severity": "GHICHU", "layer": "K9", "title": "Giá thuốc cao hơn giá kê khai (Cục QLD)", "meaning": "Đơn giá thuốc trên hoá đơn vượt >20% giá kê khai (giá bán buôn dự kiến do doanh nghiệp công bố với Cục Quản lý Dược). Trần tham chiếu độc lập, phủ cả thuốc chưa có dữ liệu trúng thầu.", "trigger": "DON_GIA thuốc > 120% giá kê khai cùng SĐK (gia_kekhai_dav).", "basis": "Giá kê khai công khai — dichvucong.dav.gov.vn/congbogiathuoc (Cục QLD).", "sample": "Giá thuốc cao bất thường: \"...\" (SĐK ...) đơn giá ... > giá kê khai ... (bán buôn dự kiến, Cục QLD).", "action": "Đối chiếu giá mua/giá trúng thầu với giá kê khai công bố; kiểm quy cách/đơn vị tính."}, {"code": "K9001", "severity": "GHICHU", "layer": "K9", "title": "Giá DVKT: viện thu > BH duyệt", "meaning": "Đơn giá viện thu (DON_GIA_BV) cao hơn đơn giá BH duyệt (DON_GIA_BH).", "trigger": "DON_GIA_BV > DON_GIA_BH > 0.", "basis": "Nội hoá đơn (đối chiếu giá viện thu vs BH duyệt).", "sample": "K9 giá: DVKT <mã> — đơn giá thu ...đ > đơn giá BH duyệt ...đ (chênh ...đ) — ĐẠT: phần chênh do người bệnh tự trả, không thuộc phần quỹ BHYT chi trả.", "action": "Đối chiếu giá dịch vụ; điều chỉnh đơn giá hoặc giải trình chênh lệch."}, {"code": "K9002", "severity": "GHICHU", "layer": "K9", "title": "Giá thuốc cao hơn giá trúng thầu ≥10%", "meaning": "Đơn giá thuốc trên hoá đơn cao hơn giá trúng thầu công bố cùng SĐK ≥10%.", "trigger": "DON_GIA (theo SĐK) > giá trúng thầu max ×1.1.", "basis": "KQ trúng thầu (cổng BHXH VSS) đối chiếu theo SĐK.", "sample": "Giá thuốc: <tên> (SĐK ...) — đơn giá HĐ ...đ cao hơn giá trúng thầu ...", "action": "Đối chiếu giá trúng thầu theo SĐK; điều chỉnh hoặc giải trình.", "muc_do_thuc_te": ["GHICHU"]}, {"code": "K9003", "severity": "GHICHU", "layer": "K9", "title": "Đơn giá DVKT vượt giá cơ sở đã duyệt", "meaning": "Đơn giá DVKT trên hồ sơ CAO HƠN mức giá do cấp có thẩm quyền phê duyệt cho cơ sở (bảng giá do cơ sở đăng ký).", "trigger": "DON_GIA_BV (XML3) > giá duyệt của cơ sở cho mã DVKT đó.", "basis": "Giá DVKT do HĐND cấp tỉnh/Bộ chủ quản quyết định (Điều 110 Luật KCB 15/2023; TT21/2024 phương pháp) — cần DỮ LIỆU CƠ SỞ.", "sample": "Đơn giá DVKT <mã> ...đ VƯỢT giá cơ sở đã duyệt ...đ (chênh ...đ) — ĐẠT trên hồ sơ: bảng giá duyệt riêng của cơ sở không nằm trong chuẩn QĐ130.", "action": "Điều chỉnh đơn giá về mức đã duyệt hoặc giải trình chênh lệch.", "chua_quan_sat": "chỉ phát khi cơ sở đã nạp BẢNG GIÁ DVKT ĐƯỢC DUYỆT của mình"}, {"code": "API-AUTH-401", "severity": "CHAN", "layer": "API", "title": "Chưa xác thực", "http": 401, "meaning": "Thiếu hoặc sai API key / access token.", "trigger": "Không có X-API-Key hợp lệ hoặc Bearer token hết hạn.", "basis": "RFC 9457.", "sample": "{\"type\":\".../unauthorized\",\"status\":401}", "action": "Gửi header X-API-Key hoặc lấy token qua POST /v1/auth/token.", "chua_quan_sat": "lỗi lớp giao thức HTTP, không phát sinh từ nội dung hồ sơ"}, {"code": "API-REQ-400", "severity": "CHAN", "layer": "API", "title": "Yêu cầu không hợp lệ", "http": 400, "meaning": "Body JSON/XML sai định dạng hoặc thiếu trường bắt buộc.", "trigger": "Phân tích body thất bại / thiếu trường.", "basis": "RFC 9457.", "sample": "{\"type\":\".../bad-request\",\"status\":400,\"errors\":[...]}", "action": "Kiểm lại schema request theo API Reference.", "chua_quan_sat": "lỗi lớp giao thức HTTP"}, {"code": "API-REQ-413", "severity": "CHAN", "layer": "API", "title": "Payload quá lớn", "http": 413, "meaning": "Kích thước body vượt giới hạn (JSON 10MB / XML 12MB).", "trigger": "Content-Length vượt ngưỡng.", "basis": "RFC 9457.", "sample": "{\"type\":\".../payload-too-large\",\"status\":413}", "action": "Giảm kích thước / tách hồ sơ.", "chua_quan_sat": "lỗi lớp giao thức HTTP"}, {"code": "API-REQ-415", "severity": "CHAN", "layer": "API", "title": "Content-Type không hỗ trợ", "http": 415, "meaning": "Endpoint XML cần application/xml; endpoint JSON cần application/json.", "trigger": "Content-Type không khớp endpoint.", "basis": "RFC 9457.", "sample": "{\"type\":\".../unsupported-media-type\",\"status\":415}", "action": "Đặt đúng Content-Type.", "chua_quan_sat": "lỗi lớp giao thức HTTP"}, {"code": "API-RATE-429", "severity": "CHAN", "layer": "API", "title": "Vượt giới hạn tần suất", "http": 429, "meaning": "Gọi quá rate limit của API key.", "trigger": "Vượt hạn mức (Micro 20rps / Core 5rps).", "basis": "RFC 9457.", "sample": "{\"type\":\".../rate-limited\",\"status\":429} + Retry-After", "action": "Chờ theo Retry-After rồi thử lại.", "chua_quan_sat": "lỗi lớp giao thức HTTP"}, {"code": "API-IDEMP-409", "severity": "CHAN", "layer": "API", "title": "Xung đột Idempotency-Key", "http": 409, "meaning": "Cùng Idempotency-Key nhưng body khác lần trước.", "trigger": "Key đã dùng với body khác.", "basis": "RFC 9457.", "sample": "{\"type\":\".../idempotency-conflict\",\"status\":409}", "action": "Dùng key mới cho request khác nội dung.", "chua_quan_sat": "lỗi lớp giao thức HTTP"}, {"code": "API-NOTFOUND-404", "severity": "CHAN", "layer": "API", "title": "Không tìm thấy", "http": 404, "meaning": "Đường dẫn hoặc tài nguyên (job/mã) không tồn tại.", "trigger": "Route/ID không khớp.", "basis": "RFC 9457.", "sample": "{\"type\":\".../not-found\",\"status\":404}", "action": "Kiểm lại đường dẫn/ID.", "chua_quan_sat": "lỗi lớp giao thức HTTP"}, {"code": "API-SRV-500", "severity": "CHAN", "layer": "API", "title": "Lỗi máy chủ", "http": 500, "meaning": "Lỗi nội bộ không mong đợi (đã ghi traceId để hỗ trợ).", "trigger": "Ngoại lệ chưa xử lý.", "basis": "RFC 9457.", "sample": "{\"type\":\".../internal\",\"status\":500,\"traceId\":\"...\"}", "action": "Gửi traceId cho hỗ trợ kỹ thuật.", "chua_quan_sat": "lỗi lớp giao thức HTTP"}, {"code": "K1002", "severity": "CHAN", "layer": "K1", "title": "Mã thuốc chưa đối chiếu được với Bộ mã danh mục dùng chung", "meaning": "Mã thuốc khai trên hồ sơ không tra được trong Bộ mã danh mục dùng chung nên cổng giám định chưa đối chiếu được với danh mục thuốc BHYT. Phần lớn là BIỆT DƯỢC của hoạt chất CÓ trong danh mục (mã con/mã cha khác nhau) nên KHÔNG kết luận vi phạm — cơ sở khai lại đúng mã hoạt chất là hết.", "trigger": "MA_THUOC không có trong Bộ mã danh mục dùng chung (QĐ7603 và các quyết định bổ sung).", "basis": "TT48/2017/TT-BYT Điều 4 khoản 2 (bắt buộc dùng bộ mã danh mục dùng chung khi trích chuyển dữ liệu); QĐ7603/QĐ-BYT ngày 25/12/2018 — Bộ mã danh mục dùng chung, áp dụng từ 15/01/2019.", "sample": "\"Reamberin\" (mã 40.125, SĐK VN-19527-15): mã KHÔNG có trong Bộ mã Danh mục dùng chung.", "action": "Khai lại theo đúng mã hoạt chất của Bộ mã dùng chung. Nếu là mã riêng của cơ sở thì cung cấp danh mục thuốc riêng để đối chiếu — khi đó hệ thống hạ xuống mức cảnh báo."}, {"code": "K1003", "severity": "CHAN", "layer": "K1", "title": "Thuốc NGOÀI danh mục BHYT", "meaning": "Hoạt chất không có trong danh mục thuốc BHYT ⇒ quỹ BHYT không chi trả.", "trigger": "Hoạt chất không thuộc Phụ lục I TT20/2022.", "basis": "Luật BHYT (Luật 51/2024/QH15 sửa đổi) Điều 21 khoản 1 điểm c: \"Chi phí cho sử dụng dịch vụ kỹ thuật y tế, thuốc, thiết bị y tế, máu, chế phẩm máu, khí y tế, vật tư, dụng cụ, công cụ, hóa chất sử dụng trong khám bệnh, chữa bệnh thuộc phạm vi thanh toán của quỹ bảo hiểm y tế\" — và Điều 21 khoản 2 điểm a: \"Bộ trưởng Bộ Y tế quy định các nội dung sau đây: a) Nguyên tắc, tiêu chí xây dựng danh mục thuốc, nguyên tắc xây dựng danh mục thiết bị y tế, dịch vụ kỹ thuật y tế thuộc phạm vi được hưởng của người tham gia bảo hiểm y tế\". Danh mục thuốc hiện hành là TT20/2022/TT-BYT Phụ lục I (vẫn áp dụng theo TT37/2024 Điều 20 khoản 2)", "sample": "[K1003] … KHÔNG có trong danh mục thuốc BHYT.", "action": "Chuyển sang thuốc trong danh mục hoặc thu của người bệnh theo quy định.", "chua_quan_sat": "mọi mã ngoài Phụ lục I TT20 đã bị K1002/K1004 kết luận trước (tra theo bộ mã dùng chung rồi tới số đăng ký)"}, {"code": "K1004", "severity": "CHAN", "layer": "K1", "title": "Thuốc không có trong Bộ mã dùng chung và không có số đăng ký", "meaning": "Mã thuốc không tra được trong Bộ mã danh mục dùng chung, đồng thời cũng không có số đăng ký lưu hành hợp lệ để đối chiếu ⇒ không xác định được thuốc.", "trigger": "MA_THUOC ngoài bộ mã dùng chung VÀ SO_DANG_KY trống hoặc không tra được.", "basis": "QĐ7603/QĐ-BYT (bộ mã danh mục dùng chung, PL5 thuốc) và các quyết định bổ sung QĐ4905/QĐ824; TT48/2017/TT-BYT Điều 4 khoản 2 — dữ liệu phải dùng bộ mã dùng chung.", "sample": "[K1004] \"Thuoc khong co that\" (mã ZZ.9999.9999): KHÔNG có trong Bộ mã Danh mục dùng chung, cũng KHÔNG có số đăng ký lưu hành.", "action": "Khai lại MA_THUOC theo bộ mã dùng chung, hoặc bổ sung SO_DANG_KY hợp lệ để đối chiếu."}, {"code": "K1005", "severity": "CHAN", "layer": "K1", "title": "Thuốc không đạt điều kiện thanh toán TT20", "meaning": "Điều kiện thanh toán ghi tại cột 8 TT20 chưa được thoả (chẩn đoán/xét nghiệm/bước điều trị).", "trigger": "Hồ sơ thiếu chẩn đoán hoặc dữ liệu mà cột điều kiện TT20 yêu cầu.", "basis": "TT20/2022/TT-BYT Phụ lục I — cột 'Điều kiện thanh toán'.", "sample": "[K1005] Điều kiện TT20 CHƯA thoả: …", "action": "Bổ sung chẩn đoán/kết quả xét nghiệm chứng minh, hoặc không đề nghị thanh toán.", "chua_quan_sat": "chỉ phát khi cột điều kiện TT20 đòi dữ kiện KHÔNG có trong chuẩn QĐ130 (chỉ số cận lâm sàng, kết quả xét nghiệm cụ thể)"}, {"code": "K1006", "severity": "GHICHU", "layer": "K1", "title": "Thuốc có điều kiện thanh toán — lưu chứng từ", "meaning": "Thuốc thuộc diện có điều kiện thanh toán; engine không đủ dữ liệu để kết luận nên chỉ nhắc.", "trigger": "Thuốc có ghi chú điều kiện tại TT20 nhưng XML không chứa dữ liệu để kiểm.", "basis": "TT20/2022/TT-BYT Phụ lục I — cột 'Điều kiện thanh toán'.", "sample": "[K1006] Thuốc …: có điều kiện thanh toán TT20 — lưu chứng từ trong hồ sơ.", "action": "Lưu chứng từ chứng minh trong hồ sơ bệnh án để xuất trình khi giám định."}, {"code": "K1007", "severity": "GHICHU", "layer": "K1", "title": "Thuốc phải hội chẩn trước khi dùng (dấu *)", "meaning": "Thuốc đánh dấu (*) trong TT20 phải hội chẩn trước khi sử dụng, trừ trường hợp cấp cứu.", "trigger": "Thuốc mang dấu (*) trong danh mục TT20.", "basis": "TT37/2024/TT-BYT Điều 10 khoản 5 (nguyên văn): “Các thuốc hóa dược và sinh phẩm có ký hiệu dấu sao (*) sau tên thuốc tại Danh mục thuốc là thuốc phải được hội chẩn trước khi sử dụng, trừ trường hợp cấp cứu.” — thay cho TT20/2022 Điều 5 khoản 7 đã hết hiệu lực từ 01/01/2025 (TT37/2024 Điều 20 khoản 4). Kháng sinh dự trữ: tham chiếu mục 4.2 QĐ5631/QĐ-BYT ngày 31/12/2020 (thay QĐ772/QĐ-BYT) — quy chế hội chẩn/phê duyệt do bệnh viện ban hành.", "sample": "[K1007] Thuốc phải HỘI CHẨN trước khi dùng (dấu * — TT37/2024/TT-BYT Điều 10 khoản 5, trừ cấp cứu)…", "action": "Đính kèm biên bản hội chẩn; nếu cấp cứu thì ghi rõ trong hồ sơ."}, {"code": "K2002", "severity": "CHAN", "layer": "FIELD", "title": "Mã thẻ BHYT sai cấu trúc", "meaning": "Mã thẻ không đúng cấu trúc 15 ký tự theo quy định.", "trigger": "MA_THE_BHYT sai độ dài/định dạng.", "basis": "QĐ1351/QĐ-BHXH (sửa đổi bởi QĐ1697/QĐ-BHXH ngày 27/11/2023) — cấu trúc mã thẻ 15 ký tự.", "sample": "[K2002] Mã thẻ … sai cấu trúc.", "action": "Chuẩn hoá mã thẻ theo QĐ1351; đối chiếu dữ liệu thẻ do cơ quan BHXH cấp."}, {"code": "K3003", "severity": "GHICHU", "layer": "MH", "title": "Mức hưởng dòng cao hơn mức của thẻ", "meaning": "MUC_HUONG khai ở dòng chi phí cao hơn mức suy từ ký tự thứ 3 của mã thẻ.", "trigger": "Chênh lệch giữa MUC_HUONG dòng và mức hưởng theo mã thẻ.", "basis": "QĐ1351/QĐ-BHXH khoản 2 Điều 2 (sửa bởi QĐ1697/QĐ-BHXH) — ký tự thứ 3 = mức hưởng; NĐ188/2025/NĐ-CP Điều 16 — trường hợp không áp dụng giới hạn tỷ lệ.", "sample": "[K3003] Mức hưởng dòng [100]% cao hơn mức cơ sở của thẻ (80% …).", "action": "Đối chiếu đối tượng và trường hợp miễn giới hạn tỷ lệ; sửa MUC_HUONG nếu khai sai."}, {"code": "K3004", "severity": "CHAN", "layer": "MH", "title": "Mã đối tượng KCB không có trong Phụ lục 1 QĐ3276", "meaning": "MA_DOITUONG_KCB phải là mã CHI TIẾT trong Phụ lục 1 QĐ3276 (vd 3.2), không phải mã nhóm (vd 3). Mã đối tượng quyết định mức hưởng nên khai sai là lệch tiền.", "trigger": "Giá trị MA_DOITUONG_KCB không nằm trong 27 mã của Phụ lục 1 QĐ3276.", "action": "Khai lại mã chi tiết tương ứng (hệ thống gợi ý sẵn các mã con của nhóm đã khai).", "basis": "Áp dụng cho lượt KCB TỪ 17/10/2025 (ngày ban hành). QĐ3276/QĐ-BYT ngày 17/10/2025 Phụ lục 1 — Danh mục mã đối tượng đến khám bệnh, chữa bệnh.", "sample": "[K3004] MA_DOITUONG_KCB='3' không có trong Phụ lục 1 QĐ3276 — có lẽ phải khai 3.1, 3.2…"}, {"code": "K5010", "severity": "CHAN", "layer": "K5", "title": "Khai NHIỀU mã bệnh chính (chỉ được 01 mã)", "meaning": "Trường MA_BENH_CHINH khai từ 2 mã trở lên, trong khi chuẩn chỉ cho phép 01 mã bệnh chính.", "trigger": "MA_BENH_CHINH tách bằng ';' hoặc ',' ra nhiều hơn 1 mã.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 (Bảng 1) nguyên văn: \"Cơ sở KBCB xác định và chỉ ghi 01 MÃ BỆNH CHÍNH theo quy định của Bộ Y tế.\" (Công văn 4059/BYT-BH ngày 04/6/2026 nhắc lại.)", "sample": "[K5010] MA_BENH_CHINH khai 2 mã (J06; J18) — chỉ được ghi 01 mã bệnh chính.", "action": "Giữ 01 mã bệnh chính, chuyển các mã còn lại sang MA_BENH_KT (bệnh kèm theo)."}, {"code": "K5011", "severity": "CHAN", "layer": "K5", "title": "Khai quá 12 mã bệnh kèm theo", "meaning": "Trường MA_BENH_KT khai vượt số mã bệnh kèm theo tối đa cho phép.", "trigger": "Số mã trong MA_BENH_KT > 12.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 (Bảng 1) nguyên văn: \"Cơ sở KBCB chỉ được ghi TỐI ĐA 12 MÃ BỆNH KÈM THEO.\" (Công văn 4059/BYT-BH nhắc lại: ≤12 bệnh kèm.)", "sample": "[K5011] MA_BENH_KT khai 14 mã bệnh kèm theo — QĐ130/QĐ-BYT 18/01/2023 cho tối đa 12.", "action": "Rút gọn danh sách bệnh kèm theo còn tối đa 12 mã."}, {"code": "K5012", "severity": "CHAN", "layer": "K5", "title": "Mã loại KCB dài ngày nhưng bệnh không thuộc danh mục", "meaning": "MA_LOAI_KCB 05/08 (điều trị ngoại trú bệnh cần chữa trị dài ngày) nhưng bệnh chính không thuộc danh mục.", "trigger": "Loại KCB 05/08 + bệnh chính ngoài Phụ lục I TT25/2025.", "basis": "TT25/2025/TT-BYT Phụ lục I (hiệu lực 01/7/2025); QĐ130/QĐ-BYT Bảng 1 — MA_LOAI_KCB.", "sample": "[K5012] MA_LOAI_KCB='08' … KHÔNG có trong Danh mục bệnh cần chữa trị dài ngày …", "action": "Kiểm tra lại mã loại KCB (có thể phải dùng '02') hoặc mã bệnh chính."}, {"code": "K5013", "severity": "CHAN", "layer": "K5", "title": "Mã loại KCB '05' nhưng có dịch vụ kỹ thuật", "meaning": "Mã '05' dành cho trường hợp CÓ KHÁM VÀ LĨNH THUỐC; có thực hiện DVKT thì dùng mã '08'.", "trigger": "MA_LOAI_KCB='05' nhưng hồ sơ có dòng DVKT ngoài tiền khám/giường.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — Bảng 1, trường MA_LOAI_KCB.", "sample": "[K5013] MA_LOAI_KCB='05' nhưng hồ sơ có … dịch vụ kỹ thuật …", "action": "Đổi MA_LOAI_KCB sang '08' nếu thực sự có thực hiện DVKT."}, {"code": "K5014", "severity": "GHICHU", "layer": "K5", "title": "Mã bệnh YHCT khai kèm mã ICD-10 không đúng QĐ1978", "meaning": "05 mã chứng bệnh YHCT không được dùng mã ICD-10 (PL02); hoặc mã YHCT khai kèm mã ICD-10 CŨ đã được đổi theo TT06/2026 (PL01).", "trigger": "MA_BENH_YHCT thuộc Phụ lục 01/02 QĐ1978 và hồ sơ khai kèm mã ICD tương ứng, lượt KCB từ 01/7/2026.", "basis": "QĐ1978/QĐ-BYT ngày 01/7/2026 Phụ lục 01 và 02 (thực hiện từ 01/7/2026); TT06/2026/TT-BYT Điều 6 khoản 3 — hồ sơ lập trước mốc vẫn có giá trị pháp lý. Điều 2 QĐ1978: trong 60 ngày chuyển tiếp, việc gửi sửa dữ liệu để chuẩn hoá mã bệnh được xác định là NGUYÊN NHÂN KHÁCH QUAN.", "sample": "[K5014] Mã bệnh YHCT U51.631.2 (Huyết nham) khai KÈM mã ICD-10 C91.2 — QĐ1978 Phụ lục 02 …", "action": "Bỏ mã ICD kèm theo (PL02) hoặc đổi sang mã ICD mới theo TT06/2026 (PL01)."}, {"code": "K6005", "severity": "GHICHU", "layer": "K6", "title": "Mã DVKT hết hiệu lực theo QĐ2010", "meaning": "Mã dịch vụ kỹ thuật không còn thuộc bộ mã dùng chung đang áp dụng.", "trigger": "Mã DVKT ngoài danh mục QĐ2010 cho lượt KCB từ 01/8/2025.", "basis": "QĐ2010/QĐ-BYT ngày 19/6/2025 Điều 5 — mốc áp dụng 01/8/2025.", "sample": "[K6005] …", "action": "Chuẩn hoá mã DVKT theo bộ mã dùng chung hiện hành."}, {"code": "K6006", "severity": "CHAN", "layer": "FIELD", "title": "MA_KHOA khai kèm hậu tố nội bộ", "meaning": "Mã khoa có hậu tố/ký tự nội bộ của phần mềm bệnh viện, không đúng danh mục dùng chung.", "trigger": "MA_KHOA không khớp danh mục mã khoa (QĐ1804 PL02 / QĐ2010 PL6 tuỳ thời điểm).", "basis": "QĐ1804/QĐ-BYT Phụ lục 02 (mã khoa); QĐ130/QĐ-BYT — trường MA_KHOA; TT48/2017 Điều 4 khoản 2.", "sample": "[K6006] LƯU Ý ĐỊNH DẠNG (không ảnh hưởng số tiền đề nghị thanh toán): … MÃ KHOA khai kèm HẬU TỐ NỘI BỘ …", "action": "Bỏ hậu tố nội bộ, chỉ gửi mã khoa theo danh mục dùng chung."}, {"code": "K6007", "severity": "CHAN", "layer": "FIELD", "title": "MA_LOAI_KCB ngoài danh mục", "meaning": "Mã loại khám chữa bệnh không thuộc danh mục 16 mã.", "trigger": "MA_LOAI_KCB không có trong Phụ lục 01 QĐ1804.", "basis": "QĐ1804/QĐ-BYT Phụ lục 01 — danh mục mã loại khám bệnh, chữa bệnh.", "sample": "[K6007] MA_LOAI_KCB='99' KHÔNG thuộc danh mục mã loại khám chữa bệnh (16 mã, Phụ lục 01 QĐ1804/QĐ-BYT).", "action": "Chuẩn hoá MA_LOAI_KCB theo danh mục trước khi gửi cổng."}, {"code": "K6008", "severity": "CHAN", "layer": "K6", "title": "Mã phác đồ điều trị HIV/AIDS ngoài danh mục", "meaning": "Mã phác đồ điều trị HIV/AIDS khai trong hồ sơ không thuộc danh mục mã dùng chung.", "trigger": "Mã phác đồ ngoài 50 mã của Phụ lục 10 QĐ5937 (NL.01–NL.29, TE.01–TE.20, KHAC).", "basis": "QĐ5937/QĐ-BYT ngày 30/12/2021 Phụ lục 10 — danh mục mã phác đồ điều trị HIV/AIDS. QĐ2010/QĐ-BYT Điều 2 khoản 2 chỉ bãi bỏ Phụ lục 1 và 5 ⇒ Phụ lục 10 còn hiệu lực.", "sample": "[K6008] 2 MÃ PHÁC ĐỒ điều trị HIV/AIDS không thuộc danh mục …", "action": "Chuẩn hoá mã phác đồ theo Phụ lục 10 QĐ5937."}, {"code": "K6009", "severity": "CHAN", "layer": "K6", "title": "Mã nhóm chi phí / nhóm thầu ngoài danh mục QĐ5937", "meaning": "MA_NHOM hoặc mã nhóm thầu trong TT_THAU không thuộc danh mục mã dùng chung.", "trigger": "MA_NHOM ngoài 14 mã Phụ lục 3, hoặc nhóm thầu ngoài N1–N6 (Phụ lục 6/7).", "basis": "QĐ5937/QĐ-BYT Phụ lục 3 (14 mã nhóm chi phí), Phụ lục 6 (nhóm thầu thuốc), Phụ lục 7 (nhóm thầu VTYT — chỉ có N1–N6, không có N0).", "sample": "[K6009] TT_THAU có mã nhóm thầu ngoài danh mục QĐ5937 (N0) …", "action": "Đối chiếu quyết định trúng thầu và chuẩn hoá mã nhóm thầu."}, {"code": "K10", "severity": "CHAN", "layer": "K10", "title": "VTYT vượt mức thanh toán (trần)", "meaning": "Đơn giá BH đề nghị của vật tư y tế vượt mức thanh toán tối đa; phần vượt không thuộc phạm vi quỹ BHYT.", "trigger": "Đơn giá BH > trần của mã VTYT tại thời điểm khám.", "basis": "TT04/2017/TT-BYT Phụ lục 01 (18 mã có trần từ 01/6/2017); TT24/2025/TT-BYT (hiệu lực 01/9/2025) bổ sung trần cho N06.06.090 và N07.06.030.", "sample": "[K10] VTYT \"Bộ dụng cụ đổ xi măng…\" (N07.06.030): đơn giá BH đề nghị 56,000,000đ VƯỢT mức thanh toán 40,000,000đ/Bộ …", "action": "Điều chỉnh đơn giá đề nghị về mức trần; phần vượt thu theo quy định hoặc nguồn khác."}, {"code": "K11", "severity": "CHAN", "layer": "K6", "title": "Mã chỉ số cận lâm sàng ngoài danh mục dùng chung", "meaning": "MA_CHI_SO ở Bảng 4 không thuộc cả QĐ1227 lẫn Phụ lục 11 QĐ7603.", "trigger": "Mã chỉ số không có trong hai bộ mã được chấp nhận.", "basis": "QĐ2010/QĐ-BYT Điều 3 — dùng mã QĐ1227/QĐ-BYT ngày 11/4/2025; chỉ số chưa có thì tiếp tục tạm thời theo Phụ lục 11 QĐ7603/QĐ-BYT.", "sample": "[K11] Bảng 4 (cận lâm sàng): … MÃ CHỈ SỐ không có trong danh mục dùng chung …", "action": "Chuẩn hoá mã chỉ số trước khi gửi cổng; engine gợi ý mã QĐ1227 theo dịch vụ đã chỉ định."}, {"code": "K12", "severity": "CHAN", "layer": "XML", "title": "Trường sai kiểu dữ liệu theo chuẩn QĐ130/QĐ3176", "meaning": "Giá trị trường không đúng kiểu dữ liệu quy định (ngày, số, chuỗi) — cổng sẽ từ chối file.", "trigger": "Kiểm định dạng toàn bộ trường theo bảng mô tả chuẩn XML.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 và QĐ3176/QĐ-BYT ngày 29/10/2024 — bảng mô tả kiểu dữ liệu các trường.", "sample": "[K12] … trường sai KIỂU DỮ LIỆU theo chuẩn QĐ130/QĐ3176: … — cổng sẽ từ chối file.", "action": "Sửa đúng kiểu dữ liệu từng trường theo bảng mô tả chuẩn."}, {"code": "G3002", "severity": "CHAN", "layer": "G", "title": "Mổ lấy thai: thay băng vết mổ >15-30cm quá 03 lần", "meaning": "TT39/2024 Điều 4d khoản 4 điểm d giới hạn dịch vụ “Thay băng vết mổ có chiều dài trên 15 cm đến 30 cm” ở tối đa 03 lần đối với trường hợp phẫu thuật mổ lấy thai.", "trigger": "Hồ sơ có mã DVKT mổ lấy thai và tổng SO_LUONG các dòng thay băng >15-30cm lớn hơn 3.", "action": "Giảm số lần thay băng >15-30cm về tối đa 03 lần, hoặc chuyển sang mã thay băng phù hợp.", "basis": "TT39/2024/TT-BYT Điều 4d khoản 4 điểm d; danh mục DVKT QĐ2010/QĐ-BYT Phụ lục 1 (cột tên dịch vụ phê duyệt giá nêu rõ khoảng chiều dài).", "sample": "[G3002] Hồ sơ có PHẪU THUẬT MỔ LẤY THAI và khai 4 lần thay băng vết mổ trên 15-30cm."}, {"code": "K10C", "severity": "CHAN", "layer": "K10", "title": "VTYT có quy định TỶ LỆ thanh toán riêng", "meaning": "Một số VTYT tại cột 5 Phụ lục 01 TT04/2017 có tỷ lệ thanh toán riêng kèm điều kiện bệnh lý (hiện có N08.00.460 — hạt vi cầu Y-90, tỷ lệ 40%). Khai sai tỷ lệ hoặc sai điều kiện thì phần chênh bị xuất toán.", "trigger": "Dòng VTYT thuộc mã nhóm có cột ty_le_tt trong danh mục TT04.", "action": "Đặt TYLE_TT_BH đúng tỷ lệ quy định và bảo đảm hồ sơ đúng điều kiện bệnh lý ghi ở cột 5.", "basis": "TT04/2017/TT-BYT Phụ lục 01 cột 5 (điều kiện, tỷ lệ, mức thanh toán), sửa đổi bởi TT24/2025/TT-BYT; TT04 Điều 3 khoản 2 điểm b (VTYT có tỷ lệ thì không áp trần 45 tháng).", "sample": "[K10C] VTYT N08.00.460 có QUY ĐỊNH TỶ LỆ THANH TOÁN 40% tại cột 5 Danh mục VTYT.", "chua_quan_sat": "danh mục TT04 hiện chỉ có 1 mã có cột tỷ lệ riêng (N08.00.460 — hạt vi cầu Y-90); chưa dựng được ca tiêm neo vào dòng thật của mã đó"}, {"code": "G3001", "severity": "GHICHU", "layer": "G", "title": "Nhiều phẫu thuật cùng ngày đều khai 100% giá", "meaning": "TT39/2024 Điều 4d khoản 2: nhiều can thiệp TRONG CÙNG MỘT LẦN phẫu thuật thì chỉ phẫu thuật phức tạp nhất/giá cao nhất được 100%, các phẫu thuật phát sinh được 50% (cùng kíp) hoặc 80% (thay kíp), thủ thuật phát sinh 80%.", "trigger": "Từ 2 mã phẫu thuật khác nhau (phân loại PDB/P1/P2/P3 theo QĐ2010) cùng một NGAY_YL, các dòng sau dòng giá cao nhất vẫn có DON_GIA_BH = DON_GIA_BV và TYLE_TT_BH = 100.", "action": "Đối chiếu biên bản phẫu thuật: nếu đúng là cùng một cuộc mổ thì áp tỷ lệ 50%/80% cho các phẫu thuật phát sinh trước khi gửi.", "basis": "TT39/2024/TT-BYT Điều 4d khoản 2 điểm a, b, c; phân loại PTTT tại QĐ2010/QĐ-BYT Phụ lục 1.", "sample": "[G3001] Ngày 20250504 có 2 phẫu thuật khác nhau, tất cả đều khai 100% giá."}, {"code": "K10B", "severity": "CHAN", "layer": "K10", "title": "Tổng VTYT một lần dùng DVKT vượt trần 45 tháng lương cơ sở", "meaning": "TT04/2017 giới hạn tổng chi phí vật tư y tế quỹ BHYT chi trả cho MỘT LẦN sử dụng dịch vụ kỹ thuật ở mức 45 tháng lương cơ sở. Phần vượt không thuộc phạm vi chi trả.", "trigger": "Gom các dòng VTYT theo NGAY_YL (khoá do QĐ130 chỉ định cho VTYT), tổng T_BHTT vượt 45 × lương cơ sở; loại trừ VTYT có quy định tỷ lệ thanh toán ở cột 5 Phụ lục 01.", "action": "Rà lại số lượng/đơn giá VTYT của lần dùng DVKT đó; phần vượt trần chuyển người bệnh tự trả hoặc nguồn khác.", "basis": "TT04/2017/TT-BYT Điều 3 khoản 2 điểm b; QĐ130/QĐ-BYT chỉ tiêu NGAY_YL (khoá xác định một lần sử dụng DVKT); lương cơ sở 2.340.000đ theo NĐ73/2024/NĐ-CP.", "sample": "[K10B] Tổng chi phí VTYT trong MỘT LẦN sử dụng DVKT là 120.000.000đ, VƯỢT trần 105.300.000đ."}, {"code": "FLD031", "severity": "CHAN", "layer": "FIELD", "title": "XML4/XML5 có trường lạ ngoài chuẩn QĐ130", "meaning": "Bảng 4 (dịch vụ cận lâm sàng) và Bảng 5 (diễn biến lâm sàng) có tag không thuộc danh sách trường của QĐ130. Cổng tiếp nhận validate theo cấu trúc chuẩn.", "trigger": "Tag con của CHI_TIET_CLS ngoài 12 trường chuẩn, hoặc của CHI_TIET_DIEN_BIEN_BENH ngoài 9 trường chuẩn.", "action": "Bỏ tag lạ khi kết xuất từ HIS, hoặc ánh xạ sang đúng trường chuẩn QĐ130.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — Bảng 4 và Bảng 5; QĐ4750/QĐ-BYT; QĐ3176/QĐ-BYT.", "sample": "[FLD031] XML4 (cận lâm sàng) có trường LẠ ngoài chuẩn QĐ130: KET_QUA_KHAC."}, {"code": "THE005", "severity": "CHAN", "layer": "FIELD", "title": "Mã đối tượng (2 ký tự đầu mã thẻ) chưa tra được trong danh mục engine", "meaning": "Hai ký tự đầu mã thẻ BHYT là mã đối tượng do BHXH Việt Nam quy định. Mã không tra được thì không xác định được nhóm quyền lợi của người bệnh.", "trigger": "MA_THE_BHYT có 2 ký tự đầu là chữ nhưng không thuộc danh sách mã đối tượng engine giữ.", "action": "Chỉ để tham khảo. Kiểm lại mã thẻ nếu nghi gõ sai; nếu là mã đối tượng mới ban hành thì báo để cập nhật danh mục — engine KHÔNG coi đây là lỗi hồ sơ.", "basis": "QĐ1351/QĐ-BHXH ngày 16/11/2015 Điều 1; QĐ1697/QĐ-BHXH ngày 27/11/2023; QĐ1018/QĐ-BHXH năm 2024.", "sample": "[THE005] Mã đối tượng \"ZZ\" KHÔNG có trong danh sách mã đối tượng QĐ1351."}, {"code": "K5024", "severity": "CHAN", "layer": "K5", "title": "Mã bệnh YHCT đã bị huỷ", "meaning": "Mã bệnh y học cổ truyền nằm trong Phụ lục 07.4 QĐ7603 — danh mục các mã ĐÃ HUỶ, không được dùng nữa.", "trigger": "MA_BENH_CHINH thuộc danh sách mã YHCT đã huỷ (hiện có U67.222 “Trật đả”).", "action": "Chọn mã khác trong Phụ lục 07.1 hoặc 07.2 QĐ7603 cho đúng chứng bệnh.", "basis": "QĐ7603/QĐ-BYT ngày 25/12/2018 Phụ lục 07.4 (Danh mục các mã bệnh YHCT đã huỷ).", "sample": "[K5024] U67.222: mã bệnh Y HỌC CỔ TRUYỀN ĐÃ BỊ HUỶ."}, {"code": "K5023", "severity": "CHAN", "layer": "K5", "title": "MA_PTTT_QT không có trong bảng ICD-9-CM QĐ387", "meaning": "Mã phẫu thuật/thủ thuật khai ở MA_PTTT_QT phải lấy từ Bảng phân loại phẫu thuật/thủ thuật ICD-9-CM. Mã sai thì không ghép được nhóm chẩn đoán để thanh toán theo DRG.", "trigger": "MA_PTTT_QT (tách theo \";\") có mã không thuộc danh mục ICD-9-CM QĐ387, ngày KCB từ 05/02/2026 (ngày QĐ387 có hiệu lực).", "action": "Sửa mã theo Bảng phân loại phẫu thuật/thủ thuật ICD-9-CM QĐ387/QĐ-BYT.", "basis": "QĐ387/QĐ-BYT ngày 05/02/2026 (Bảng phân loại phẫu thuật/thủ thuật ICD-9-CM); QĐ130/QĐ-BYT Bảng 1 chỉ tiêu MA_PTTT_QT; NĐ188/2025/NĐ-CP (thanh toán theo nhóm chẩn đoán).", "sample": "[K5023] MA_PTTT_QT 99.999: KHÔNG có trong Bảng phân loại ICD-9-CM QĐ387."}, {"code": "FLD030", "severity": "CHAN", "layer": "FIELD", "title": "Hồ sơ nội trú thiếu LY_DO_VNT", "meaning": "Trường LY_DO_VNT (lý do vào điều trị nội trú) để trống trong hồ sơ nội trú/nội trú ban ngày. Đây là căn cứ chứng minh chỉ định nhập viện khi cơ quan BHXH giám định.", "trigger": "MA_LOAI_KCB thuộc 02/03/04/06 và LY_DO_VNT rỗng.", "action": "Bổ sung lý do vào nội trú (triệu chứng lâm sàng hoặc lý do khác) trước khi gửi.", "basis": "QĐ130/QĐ-BYT Bảng 1 chỉ tiêu LY_DO_VNT; QĐ3176/QĐ-BYT; Công văn 4059/BYT-BH ngày 04/6/2026 mục 2 điểm c.", "sample": "[FLD030] Hồ sơ NỘI TRÚ nhưng trường LY_DO_VNT để TRỐNG."}, {"code": "KS002", "severity": "GHICHU", "layer": "K1", "title": "Thuốc phải KIỂM SOÁT ĐẶC BIỆT (TT18/2026)", "meaning": "Thuốc có chứa dược chất gây nghiện (Phụ lục I), hướng thần (Phụ lục II) hoặc tiền chất dùng làm thuốc (Phụ lục III) của TT18/2026/TT-BYT. Phải bảo quản, cấp phát, ghi sổ, báo cáo và kê đơn theo đúng quy định cho thuốc phải kiểm soát đặc biệt.", "trigger": "Tên hoạt chất/thuốc chứa một dược chất trong Phụ lục I/II/III TT18/2026 và ngày KCB từ 16/7/2026 (ngày TT18 có hiệu lực).", "action": "Rà soát mẫu đơn, sổ theo dõi và báo cáo theo TT18/2026. Nếu là thuốc dạng phối hợp, đối chiếu ngưỡng nồng độ/hàm lượng tại Phụ lục IV/V/VI và tiêu chí tại Phụ lục VII.", "basis": "TT18/2026/TT-BYT ngày 01/6/2026 (hiệu lực 16/7/2026) Điều 2 và các Phụ lục I, II, III, IV, V, VI, VII.", "sample": "[KS002] Thuốc chứa CODEINE — dược chất GÂY NGHIỆN (Phụ lục I) theo TT18/2026/TT-BYT."}, {"code": "G2001", "severity": "CHAN", "layer": "G", "title": "Số ngày giường khai CAO HƠN mức TT39 cho phép", "meaning": "Tổng SO_LUONG các dòng tiền giường (Bảng 3) vượt số ngày giường mà TT39/2024 Điều 4c khoản 1 cho phép: (ngày ra − ngày vào), cộng thêm 1 chỉ khi tử vong / tiên lượng nặng xin về / chuyển cơ sở KCB. Phần vượt không thuộc phạm vi quỹ BHYT chi trả.", "trigger": "MA_LOAI_KCB thuộc 02/03/04/06, có dòng mã tiền giường, tổng SO_LUONG > mức cho phép.", "action": "Đối chiếu bệnh án. Nếu do chuyển khoa trong ngày (Điều 4c khoản 2: mỗi khoa 1/2 ngày) hoặc nằm ghép (khoản 4 điểm b: 1/2 hoặc 1/3 giá) thì giữ chứng từ giải trình.", "basis": "TT39/2024/TT-BYT Điều 4c khoản 1 điểm a và điểm b; danh mục mã tiền giường QĐ2010/QĐ-BYT Phụ lục 3 và Phụ lục 4.", "sample": "[G2001] Số ngày giường khai 8 ngày, CAO HƠN mức TT39 cho phép (7 ngày)."}, {"code": "G2002", "deprecated": true, "severity": "GHICHU", "layer": "G", "title": "Số ngày giường khai THẤP HƠN mức TT39 (ĐÃ GỠ 15/8/2026)", "meaning": "Cơ sở khai ít ngày giường hơn mức TT39/2024 Điều 4c khoản 1 cho phép — không bị xuất toán nhưng có thể đang khai thiếu quyền lợi của chính cơ sở.", "trigger": "Tổng SO_LUONG dòng tiền giường < mức TT39 cho phép.", "action": "ĐÃ GỠ: khai thiếu không gây xuất toán, mà XML không đủ dữ kiện phân định (dòng giường có thể nằm ở hồ sơ/khoa khác, hoặc đang chia 1/2 ngày theo Điều 4c khoản 2).", "basis": "TT39/2024/TT-BYT Điều 4c khoản 1.", "sample": "[G2002] Số ngày giường khai 5 ngày, THẤP HƠN mức TT39 (6 ngày)."}, {"code": "G2003", "severity": "CHAN", "layer": "G", "title": "Điều trị ≤ 4 giờ nhưng vẫn khai tiền ngày giường", "meaning": "Thời gian từ NGAY_VAO đến NGAY_RA không quá 4 giờ. TT39/2024 Điều 4c khoản 1 điểm d cho thanh toán tiền khám, thuốc, thiết bị y tế và DVKT nhưng KHÔNG được tính tiền ngày giường bệnh điều trị nội trú.", "trigger": "MA_LOAI_KCB 02/03/04/06, (NGAY_RA − NGAY_VAO) ≤ 4 giờ, vẫn có dòng mã tiền giường.", "action": "Bỏ dòng tiền giường khỏi hồ sơ, giữ nguyên tiền khám/thuốc/VTYT/DVKT.", "basis": "TT39/2024/TT-BYT Điều 4c khoản 1 điểm d.", "sample": "[G2003] Thời gian điều trị chỉ 3,5 giờ nhưng hồ sơ vẫn khai 1 ngày giường."}, {"code": "G1001", "severity": "CHAN", "layer": "G", "title": "Hai đợt nội trú chồng ngày của cùng người bệnh", "meaning": "Cùng một người bệnh có hai đợt điều trị nội trú trùng khoảng thời gian.", "trigger": "Gộp theo người bệnh trong lô: hai hồ sơ nội trú có khoảng ngày giao nhau.", "basis": "TT12/2026/TT-BTC Điều 10 — nguyên tắc giám định chi phí KCB BHYT.", "sample": "[G1001] Cùng một người bệnh có HAI đợt NỘI TRÚ chồng ngày …", "action": "Đối chiếu hồ sơ hai đợt; tách hoặc gộp đợt điều trị cho đúng thực tế."}, {"code": "G1002", "severity": "GHICHU", "layer": "G", "title": "Đợt nội trú nối tiếp nhau — KHÁC bệnh/khoa", "meaning": "Các đợt nội trú nối tiếp nhưng khác bệnh chính hoặc khác khoa nên có thể là chuyển khoa/chuyển tuyến hợp lệ.", "trigger": "Gộp theo người bệnh: ngày ra đợt trước sát ngày vào đợt sau, KHÁC bệnh chính hoặc KHÁC danh sách khoa.", "basis": "TT12/2026/TT-BTC Điều 10 khoản 1 chỉ LIỆT KÊ \"các nội dung rà soát hồ sơ đề nghị thanh toán\", KHÔNG đặt ngưỡng và KHÔNG cấm — không đủ căn cứ tuyên xuất toán.", "sample": "[G1002] 2 đợt nội trú nối tiếp nhau, tổng N ngày — KHÁC bệnh chính hoặc KHÁC khoa.", "action": "ĐẠT — không phải kết luận vi phạm."}, {"code": "G1003", "severity": "GHICHU", "layer": "G", "title": "Nhiều lượt KHÁM BỆNH trong cùng ngày", "meaning": "Người bệnh có nhiều lượt khám (MA_LOAI_KCB=01) trong cùng ngày — khám nhiều chuyên khoa là hợp lệ về chuyên môn.", "trigger": "Gộp theo người bệnh: hơn 1 hồ sơ loại 01 cùng ngày vào.", "basis": "TT12/2026/TT-BTC Điều 10 khoản 1 chỉ LIỆT KÊ \"các nội dung rà soát hồ sơ đề nghị thanh toán\", KHÔNG đặt ngưỡng và KHÔNG cấm — không đủ căn cứ tuyên xuất toán.", "sample": "[G1003] Cùng người bệnh có N lượt KHÁM BỆNH trong ngày dd/mm/yyyy.", "action": "ĐẠT — không phải kết luận vi phạm."}, {"code": "G1004", "severity": "CHAN", "layer": "G", "title": "Hai đợt nội trú CHỒNG LẤN thời gian", "meaning": "Cùng người bệnh có từ 2 hồ sơ nội trú trở lên cùng ngày vào, cùng cơ sở, và khoảng [vào, ra) GIAO NHAU.", "trigger": "Gộp theo người bệnh: cùng ngày vào + cùng MA_LOAI_KCB nội trú + cùng MA_CSKCB + chồng lấn thời gian.", "basis": "QĐ130/QĐ-BYT Bảng 1 chỉ tiêu MA_LK, NGUYÊN VĂN: \"Là mã đợt điều trị duy nhất\" — dùng để liên kết XML1 với các bảng còn lại \"trong một lần khám bệnh, chữa bệnh (PRIMARY KEY)\". SUY RA (không phải câu trong văn bản): một người bệnh không thể đồng thời ở hai đợt nội trú tại cùng cơ sở, nên hai MA_LK có khoảng [vào, ra) GIAO NHAU là mâu thuẫn định danh trong chính bộ dữ liệu — kết luận dựa trên MÂU THUẪN NỘI TẠI của hồ sơ, không phải trên một điều cấm được viết ra.", "sample": "[G1004] Cùng người bệnh có 2 hồ sơ nội trú CHỒNG LẤN thời gian điều trị.", "action": "GỘP về 01 hồ sơ hoặc BỎ hồ sơ khai trùng."}, {"code": "G1005", "severity": "GHICHU", "layer": "G", "title": "Dấu hiệu TÁCH ĐỢT điều trị", "meaning": "Một đợt nội trú liên tục được khai thành nhiều hồ sơ, tất cả cùng bệnh chính và cùng danh sách khoa.", "trigger": "Gộp theo người bệnh: các đợt liền kề, cùng MA_BENH_CHINH và cùng tập MA_KHOA.", "basis": "TT12/2026/TT-BTC Điều 10 khoản 1 chỉ LIỆT KÊ \"các nội dung rà soát hồ sơ đề nghị thanh toán\", KHÔNG đặt ngưỡng và KHÔNG cấm — không đủ căn cứ tuyên xuất toán. Chưa có văn bản định lượng việc tách đợt điều trị.", "sample": "[G1005] MỘT đợt nội trú liên tục N ngày được khai thành M HỒ SƠ.", "action": "ĐẠT — ghi nhận dấu hiệu, không phải kết luận vi phạm.", "deprecated": true}, {"code": "G1006", "severity": "GHICHU", "layer": "G", "title": "Cùng ngày vào nhưng KHÔNG chồng lấn", "meaning": "Hai hồ sơ nội trú cùng ngày vào nhưng khoảng thời gian nằm không giao nhau (hoặc thiếu ngày ra) — có thể là vào lại trong ngày hợp lệ.", "trigger": "Gộp theo người bệnh: cùng ngày vào + cùng loại KCB nội trú, KHÔNG chồng lấn.", "basis": "TT12/2026/TT-BTC Điều 10 khoản 1 chỉ LIỆT KÊ \"các nội dung rà soát hồ sơ đề nghị thanh toán\", KHÔNG đặt ngưỡng và KHÔNG cấm — không đủ căn cứ tuyên xuất toán.", "sample": "[G1006] Cùng người bệnh có 2 hồ sơ nội trú cùng ngày vào nhưng KHÔNG chồng lấn thời gian nằm.", "action": "ĐẠT — không chồng lấn thời gian điều trị."}, {"code": "GOP999", "severity": "GHICHU", "layer": "G", "title": "Nhóm GỘP còn phát hiện chưa hiển thị", "meaning": "Danh sách nhóm GỘP bị cắt ở 12 mục đầu; đây là thông báo số mục còn lại, không phải phát hiện nghiệp vụ.", "trigger": "Số phát hiện nhóm GỘP lớn hơn 12.", "basis": "Thông báo kỹ thuật — không dẫn văn bản.", "sample": "[GOP999] Nhóm GỘP còn N phát hiện nữa chưa hiển thị.", "action": "ĐẠT — chỉ là thông báo."}, {"code": "A1", "severity": "GHICHU", "layer": "DM", "title": "Định mức lượt khám/bàn khám trong ngày", "meaning": "Số lượt khám trên một bàn khám trong ngày vượt định mức thanh toán.", "trigger": "Gộp theo lô: đếm lượt khám theo bàn khám/ngày.", "basis": "Quy định định mức lượt khám trong ngày (65 lượt: thanh toán 100%; vượt: giảm trừ theo bậc).", "sample": "[A1] …", "action": "Rà soát bố trí bàn khám; đối chiếu định mức trước khi đề nghị thanh toán."}, {"code": "A2", "severity": "GHICHU", "layer": "DM", "title": "Định mức ca/máy trong ngày", "meaning": "Số ca thực hiện trên một máy trong ngày vượt định mức.", "trigger": "Gộp theo lô theo MA_MAY (đã tách chuỗi nhiều serial) và ngày thực hiện.", "basis": "Quy định định mức ca-máy trong ngày và tỷ lệ giảm trừ.", "sample": "[A2] …", "action": "Đối chiếu số ca thực tế trên từng máy."}, {"code": "A4", "severity": "GHICHU", "layer": "DM", "title": "Khám nhiều chuyên khoa trong cùng lần đến", "meaning": "Một hồ sơ có nhiều lượt khám cùng ngày ở các chuyên khoa khác nhau.", "trigger": "Gộp theo lô: đếm lượt khám cùng ngày trong một hồ sơ.", "basis": "Quy định thanh toán khám nhiều chuyên khoa (lượt khám thứ hai trở đi thanh toán 30%).", "sample": "[A4] Khám nhiều chuyên khoa cùng lần đến: 1 hồ sơ có 2 lượt khám cùng ngày …", "action": "Đối chiếu tỷ lệ thanh toán cho lượt khám thứ hai trở đi.", "muc_do_thuc_te": ["CANHBAO", "GHICHU"]}, {"code": "A4G", "severity": "CHAN", "layer": "DM", "title": "Khám nhiều chuyên khoa — thu vượt trần 2 lần giá khám", "meaning": "Người bệnh khám thêm chuyên khoa trong cùng lần đến: từ lần khám thứ 02 chỉ được tính 30% mức giá 01 lần khám, và TỔNG chi phí khám của người đó không quá 02 lần mức giá 01 lần khám. Hồ sơ này thu vượt trần đó.", "trigger": "Một hồ sơ có ≥2 dòng khám; tổng DON_GIA các dòng khám > 2 × đơn giá khám cao nhất.", "action": "Tính lại tiền khám: lần 2 trở đi = 30% giá 01 lần khám, tổng không quá 2 lần giá khám.", "basis": "TT39/2024/TT-BYT: “người bệnh sau khi khám một chuyên khoa cần phải khám thêm các chuyên khoa thì từ lần khám thứ 02 chỉ tính 30% mức giá của 01 lần khám bệnh và mức thanh toán tối đa chi phí khám bệnh của người đó không quá 02 lần mức giá của 01 lần khám bệnh”.", "sample": "Hồ sơ 12345: giá 1 lần khám 50.600đ · thu 101.200đ · trần 101.200đ · vượt 0đ"}, {"code": "B1", "severity": "GHICHU", "layer": "DM", "title": "Nghi trùng thẻ trong cùng ngày", "meaning": "Cùng người bệnh có ≥2 hồ sơ trong ngày. CHẶN khi cùng cơ sở + cùng nhóm bệnh chính (một lần đến bị tách hồ sơ); khác cơ sở hoặc khác bệnh thì ĐẠT.", "trigger": "Gộp theo lô theo mã thẻ + ngày.", "basis": "TT12/2026/TT-BTC Điều 10 — nguyên tắc giám định trùng.", "sample": "[B1] …", "action": "Lưu ý: nếu mã thẻ trong dữ liệu đã che (ẩn danh) thì kết quả nhóm này chỉ để tham khảo."}, {"code": "B2OK", "severity": "GHICHU", "layer": "B", "title": "Giường phục vụ nhiều lượt trong ngày", "meaning": "Một giường phục vụ nhiều người bệnh trong ngày nhưng KHÔNG chồng lấn thời gian — luân chuyển bình thường.", "trigger": "Cùng (MA_KHOA, MA_GIUONG, ngày) có nhiều lượt mà giờ vào/ra không chồng nhau.", "basis": "QĐ130/QĐ-BYT Bảng 3 chỉ tiêu 17 — không văn bản nào giới hạn số lượt trên một giường trong ngày.", "sample": "[B2OK] 45 giường phục vụ nhiều người bệnh trong cùng ngày — ĐẠT.", "action": "ĐẠT — không phải sửa gì."}, {"code": "B2", "severity": "CHAN", "layer": "DM", "title": "Nghi trùng giường trong ngày", "meaning": "Một mã giường có nhiều người bệnh trong cùng ngày.", "trigger": "Gộp theo lô theo khoa + mã giường + ngày.", "basis": "QĐ130/QĐ-BYT — mã giường đánh số theo khoa; TT12/2026/TT-BTC Điều 10.", "sample": "[B2] …", "action": "Đối chiếu luân chuyển giường; 2 người/giường/ngày thường là luân chuyển bình thường."}, {"code": "B3", "severity": "GHICHU", "layer": "DM", "title": "Nghi trùng người bệnh giữa các hồ sơ", "meaning": "Nhiều hồ sơ nghi thuộc cùng một người bệnh trong lô.", "trigger": "Gộp theo lô theo khoá định danh.", "basis": "TT12/2026/TT-BTC Điều 10.", "sample": "[B3] …", "action": "Đối chiếu định danh người bệnh."}, {"code": "K1008", "severity": "GHICHU", "layer": "K1", "title": "Xác nhận tỷ lệ thanh toán đúng mức TT20", "meaning": "Thông báo XÁC NHẬN (không phải lỗi): tỷ lệ thanh toán khai trong hồ sơ ĐÚNG mức TT20 quy định.", "trigger": "TYLE_TT_BH của dòng thuốc trùng với tỷ lệ ghi trong danh mục TT20.", "basis": "TT20/2022/TT-BYT Phụ lục I — cột tỷ lệ thanh toán.", "sample": "Thuốc Forxiga: tỷ lệ thanh toán 70% ĐÚNG mức TT20 quy định (70%).", "action": "Không cần xử lý — đây là thông tin xác nhận, giữ nguyên hồ sơ.", "deprecated": true}, {"code": "K5015", "severity": "GHICHU", "layer": "K5", "title": "Chẩn đoán lệch nhóm tuổi thường gặp", "meaning": "Tuổi người bệnh nằm ngoài nhóm tuổi thường gặp ghi trong bộ mã ICD — THÔNG TIN THAM KHẢO, không phải ràng buộc pháp lý.", "trigger": "Tuổi tính từ NGAY_SINH nằm ngoài khoảng tuổi ghi trong bộ cờ ICD.", "basis": "TT06/2026/TT-BYT — cột nhóm tuổi; QĐ4469/QĐ-BYT với lượt KCB trước 01/7/2026. Cột này mang tính tham khảo dịch tễ, KHÔNG phải điều kiện thanh toán.", "sample": "Chẩn đoán: O70.9: nhóm tuổi thường gặp ghi trong bộ mã là \"dậy thì(8-19)\", người bệnh 75 tuổi — THÔNG TIN THAM KHẢO…", "action": "Đối chiếu lại chẩn đoán nếu thấy bất thường; không cần sửa nếu chẩn đoán đúng."}, {"code": "K5016", "severity": "GHICHU", "layer": "K5", "title": "Mã bệnh bị cấm theo bộ cờ CŨ nhưng văn bản hiện hành đã bỏ", "meaning": "Mã ICD bị QĐ4469 cấm dùng làm bệnh chính, nhưng TT06/2026 (hiện hành) đã bỏ hạn chế đó.", "trigger": "Mã có cờ cấm ở QĐ4469 nhưng không còn cờ ở TT06/2026, lượt KCB trước 01/7/2026.", "basis": "QĐ4469/QĐ-BYT Phụ lục A2 (bộ cờ áp cho lượt KCB trước 01/7/2026); TT06/2026/TT-BYT cột 24 — văn bản hiện hành đã bỏ hạn chế với các mã này.", "sample": "Chẩn đoán: Z98.8: theo QĐ4469/QĐ-BYT (bộ cờ áp cho lượt KCB này) thì không dùng làm bệnh chính, NHƯNG TT06/2026…", "action": "Đối chiếu thời điểm khám; hồ sơ trước 01/7/2026 vẫn áp bộ cờ QĐ4469."}, {"code": "K6010", "severity": "CHAN", "layer": "K6", "title": "NGAY_KQ của dịch vụ bất thường so với ngày chỉ định", "meaning": "Ngày có kết quả (NGAY_KQ) lệch bất thường so với ngày y lệnh/thực hiện.", "trigger": "So sánh NGAY_YL / NGAY_TH_YL / NGAY_KQ trong bảng chi tiết DVKT.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — các trường NGAY_YL, NGAY_TH_YL, NGAY_KQ.", "sample": "dịch vụ (Định nhóm máu hệ ABO bằng): NGAY_KQ (có kết quả) … ", "action": "Đối chiếu thời điểm thực hiện và trả kết quả; sửa nếu khai nhầm ngày.", "muc_do_thuc_te": ["CANHBAO"]}, {"code": "FLD013", "severity": "CHAN", "layer": "FIELD", "title": "SO_NGAY_DTRI lệch với khoảng vào–ra viện", "meaning": "Số ngày điều trị khai trong hồ sơ không khớp khoảng thời gian từ ngày vào đến ngày ra.", "trigger": "So sánh SO_NGAY_DTRI với hiệu NGAY_RA − NGAY_VAO.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — các trường NGAY_VAO, NGAY_RA, SO_NGAY_DTRI.", "sample": "SO_NGAY_DTRI khai 39 ngày nhưng từ ngày vào đến ngày ra là … ngày — hai số liệu trên cùng hồ sơ không khớp nhau (ảnh hưởng tiền giường).", "action": "Đối chiếu và sửa cho khớp; trường này ảnh hưởng trực tiếp tiền giường."}, {"code": "FLD014", "severity": "CHAN", "layer": "FIELD", "title": "NGAY_VAO_NOI_TRU nằm ngoài khoảng vào–ra", "meaning": "Mốc vào nội trú không nằm trong khoảng thời gian của đợt điều trị.", "trigger": "NGAY_VAO_NOI_TRU < NGAY_VAO hoặc > NGAY_RA.", "basis": "QĐ130/QĐ-BYT — trường NGAY_VAO_NOI_TRU.", "sample": "NGAY_VAO_NOI_TRU … nằm NGOÀI khoảng vào–ra …", "action": "Sửa mốc vào nội trú cho đúng thực tế đợt điều trị."}, {"code": "FLD015", "severity": "CHAN", "layer": "FIELD", "title": "Ngày y lệnh SAU ngày kết thúc đợt KCB", "meaning": "Ngày y lệnh của dòng chi phí nằm sau ngày ra viện quá thời hạn cho phép.", "trigger": "NGAY_YL > NGAY_RA quá 30 ngày.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — các chỉ tiêu NGAY_YL, NGAY_RA của Bảng 2/Bảng 3.", "sample": "thuốc STT 1: <NGAY_YL>=31/12/2099 sau ngày ra viện … NGÀY — quá 30 ngày kể từ ngày kết thúc đợt KCB.", "action": "Sửa ngày y lệnh cho đúng thời điểm chỉ định thực tế trong đợt điều trị."}, {"code": "TIEN001", "severity": "CHAN", "layer": "TIEN", "title": "Thành tiền ≠ số lượng × đơn giá", "meaning": "Số học trên dòng chi phí sai: thành tiền không bằng số lượng nhân đơn giá.", "trigger": "THANH_TIEN_BH ≠ SO_LUONG × DON_GIA (ngoài sai số làm tròn).", "basis": "QĐ130/QĐ-BYT — các chỉ tiêu SO_LUONG, DON_GIA, THANH_TIEN_BH của Bảng 2/Bảng 3.", "sample": "thuốc STT 1: THÀNH TIỀN 4,516đ ≠ số lượng 2 × đơn giá 1,000đ (2,000đ) — sai số học, cổng sẽ từ chối.", "action": "Tính lại thành tiền = số lượng × đơn giá trước khi gửi cổng."}, {"code": "TIEN002", "severity": "CHAN", "layer": "TIEN", "title": "Tiền hồ sơ không cân", "meaning": "Số tiền quỹ BHYT thanh toán khai ở hồ sơ không khớp phép tính từ tổng chi và các khoản trừ.", "trigger": "T_BHTT ≠ T_TONGCHI_BH − T_BNCCT − T_NGUONKHAC.", "basis": "QĐ130/QĐ-BYT — các chỉ tiêu T_TONGCHI_BH, T_BNCCT, T_NGUONKHAC, T_BHTT của Bảng 1.", "sample": "Tiền hồ sơ KHÔNG cân: T_BHTT khai … nhưng theo tổng chi BH … phải là … — cổng sẽ từ chối.", "action": "Tính lại T_BHTT cho cân với tổng chi và các khoản trừ."}, {"code": "FLD016", "severity": "CHAN", "layer": "FIELD", "title": "Đường dùng thuốc sai định dạng mã", "meaning": "Trường DUONG_DUNG không đúng định dạng mã đường dùng của bộ mã dùng chung.", "trigger": "DUONG_DUNG không theo dạng 'nhóm.số' (vd 1.01 uống, 2.01 tiêm).", "basis": "QĐ7603/QĐ-BYT — danh mục mã đường dùng; QĐ130/QĐ-BYT Bảng 2, trường DUONG_DUNG.", "sample": "thuốc STT 1 (Efferalgan): <DUONG_DUNG>='BOM VAO TAI' sai định dạng mã đường dùng (chuẩn 'nhóm.số', vd 1.01 uống).", "action": "Khai lại mã đường dùng theo danh mục dùng chung (dạng nhóm.số)."}, {"code": "FLD017", "severity": "CHAN", "layer": "FIELD", "title": "Kỳ quyết toán không khớp tháng ra viện", "meaning": "NAM_QT/THANG_QT khai giá trị KHÔNG PHẢI kỳ có thật (năm ngoài 2015–2100 hoặc tháng ngoài 01–12). Khác tháng ra viện KHÔNG phải lỗi — quyết toán chậm là hợp lệ.", "trigger": "THANG_QT/NAM_QT lệch tháng của NGAY_RA.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — các chỉ tiêu NAM_QT, THANG_QT của Bảng 1.", "sample": "Kỳ quyết toán khai 01/0001 KHÔNG PHẢI kỳ có thật (năm phải trong khoảng 2015–2100, tháng 01–12).", "action": "Khai lại NAM_QT/THANG_QT đúng kỳ quyết toán của đợt khám chữa bệnh."}, {"code": "FLD018", "severity": "GHICHU", "layer": "FIELD", "title": "Kết quả CLS có sau ngày ra viện nhưng TRONG hạn 30 ngày (hợp lệ)", "meaning": "Ngày có kết quả cận lâm sàng nằm sau ngày kết thúc đợt KCB nhưng vẫn trong thời hạn bổ sung 30 ngày — GHI NHẬN, không phải vi phạm.", "trigger": "NGAY_KQ > NGAY_RA và chênh ≤ 30 ngày.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — chỉ tiêu NGAY_KQ: kết quả có sau 07 ngày thì nhập bổ sung trên Cổng tiếp nhận, nhưng không quá 30 ngày kể từ ngày kết thúc đợt KCB.", "sample": "xét nghiệm STT 3: <NGAY_KQ>=05/05/2025 sau ngày ra viện 2 ngày — HỢP LỆ.", "action": "Không cần sửa. Ghi nhận để cơ sở biết dòng này rơi vào diện bổ sung kết quả."}, {"code": "XT008", "severity": "GHICHU", "layer": "XML", "title": "File nhiều hồ sơ — lớp kiểm chéo liên bảng không chạy", "meaning": "File gửi lên chứa nhiều TONG_HOP (nhiều hồ sơ). Lớp đối soát liên bảng chỉ so được trong phạm vi MỘT hồ sơ nên đã bỏ qua để tránh so nhầm số liệu giữa các hồ sơ.", "trigger": "Số phần tử TONG_HOP trong file khác 1.", "basis": "QĐ130/QĐ-BYT — mỗi hồ sơ là một MA_LK; các bảng XML2…XML15 gắn với MA_LK của chính hồ sơ đó.", "sample": "File chứa 25 hồ sơ (nhiều TONG_HOP) — lớp kiểm nhất quán liên bảng bỏ qua.", "action": "Nộp/kiểm từng hồ sơ riêng nếu cần đối soát liên bảng; các lớp kiểm khác vẫn chạy đủ."}, {"code": "FLD019", "severity": "CHAN", "layer": "FIELD", "title": "Trường số khai không phải số", "meaning": "Trường phải là số nhưng giá trị khai không đọc được thành số.", "trigger": "Giá trị của SO_LUONG/DON_GIA/THANH_TIEN… không chuyển được sang số.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — kiểu dữ liệu các chỉ tiêu số của Bảng 1–3.", "sample": "thuốc STT 2: <SO_LUONG> = 'ba' KHÔNG PHẢI SỐ (số lượng) — cổng sẽ từ chối file.", "action": "Khai lại giá trị bằng chữ số, không kèm ký tự khác."}, {"code": "FLD020", "severity": "CHAN", "layer": "FIELD", "title": "Trường số mang giá trị ÂM", "meaning": "Số lượng/đơn giá/thành tiền không được là số âm.", "trigger": "Giá trị số < 0.", "basis": "QĐ130/QĐ-BYT — các chỉ tiêu số lượng, đơn giá, thành tiền là số không âm.", "sample": "thuốc STT 1: <THANH_TIEN_BV> = -50,000.00 là SỐ ÂM (thành tiền) — không hợp lệ.", "action": "Sửa lại giá trị; nếu là điều chỉnh giảm thì khai theo đúng hướng dẫn của cổng."}, {"code": "FLD021", "severity": "CHAN", "layer": "FIELD", "title": "Trường số bằng 0 trong khi bắt buộc lớn hơn 0", "meaning": "Trường như số lượng/đơn giá không được bằng 0.", "trigger": "Giá trị = 0 ở trường không cho phép 0.", "basis": "QĐ130/QĐ-BYT — chỉ tiêu số lượng, đơn giá của Bảng 2/Bảng 3.", "sample": "dịch vụ STT 4: <SO_LUONG> = 0 (số lượng) — phải lớn hơn 0.", "action": "Khai đúng số lượng/đơn giá thực tế; nếu dòng không phát sinh thì bỏ dòng."}, {"code": "FLD022", "severity": "CHAN", "layer": "FIELD", "title": "Trường số vượt ngưỡng bất thường", "meaning": "Giá trị lớn bất thường so với ngưỡng nghiệp vụ — thường do nhập sai đơn vị hoặc thừa số 0.", "trigger": "Giá trị vượt ngưỡng cấu hình cho từng trường (vd đơn giá > 1 tỷ, tỷ lệ > 100).", "basis": "QĐ130/QĐ-BYT — kiểu và miền giá trị của các chỉ tiêu số.", "sample": "thuốc STT 3: <DON_GIA> = 12,000,000,000 BẤT THƯỜNG (đơn giá, ngưỡng 1,000,000,000).", "action": "Đối chiếu chứng từ; sửa lại nếu nhập thừa số 0 hoặc sai đơn vị tính."}, {"code": "FLD023", "severity": "CHAN", "layer": "FIELD", "title": "Ngày giờ không có thật", "meaning": "Chuỗi ngày giờ đủ số ký tự nhưng không phải mốc thời gian có thật (tháng 13, ngày 32, giờ 99…).", "trigger": "Thành phần tháng/ngày/giờ/phút ngoài miền hợp lệ.", "basis": "QĐ4750/QĐ-BYT — định dạng yyyyMMddHHmm của các chỉ tiêu ngày giờ.", "sample": "XML1: <NGAY_VAO> = '202513322599' là ngày giờ KHÔNG CÓ THẬT (tháng 13, ngày 32).", "action": "Khai lại đúng mốc thời gian thực tế theo định dạng yyyyMMddHHmm."}, {"code": "FLD024", "severity": "GHICHU", "layer": "FIELD", "title": "Thiếu trường nên khai theo QĐ4750", "meaning": "Trường không bắt buộc tuyệt đối nhưng QĐ4750 khuyến nghị khai đủ để cổng đối chiếu.", "trigger": "Trường khuyến nghị để trống.", "basis": "QĐ4750/QĐ-BYT ngày 29/12/2023 — danh mục chỉ tiêu và ghi chú 'nếu có'.", "sample": "XML1: thiếu dữ liệu <MA_NOI_CHUYEN> (nơi chuyển đến) — nên khai đủ theo QĐ4750.", "action": "Bổ sung nếu nghiệp vụ có phát sinh; không phát sinh thì bỏ qua."}, {"code": "FLD025", "severity": "CHAN", "layer": "FIELD", "title": "NGAY_TTOAN trước ngày ra viện", "meaning": "Ngày thanh toán khai trước ngày kết thúc đợt khám chữa bệnh — sai mốc thời gian.", "trigger": "NGAY_TTOAN < NGAY_RA.", "basis": "QĐ130/QĐ-BYT — chỉ tiêu NGAY_TTOAN, NGAY_RA của Bảng 1.", "sample": "NGAY_TTOAN (thanh toán) 01/04/2025 TRƯỚC ngày ra viện 03/04/2025 — sai mốc thời gian.", "action": "Khai lại NGAY_TTOAN đúng thời điểm quyết toán đợt điều trị."}, {"code": "FLD026", "severity": "CHAN", "layer": "FIELD", "title": "Bệnh nhi ≤6 tuổi thiếu CAN_NANG", "meaning": "Hồ sơ trẻ em từ 6 tuổi trở xuống bắt buộc khai cân nặng.", "trigger": "Tuổi ≤ 6 và CAN_NANG/CAN_NANG_CON để trống.", "basis": "QĐ4750/QĐ-BYT — chỉ tiêu CAN_NANG (bắt buộc với người bệnh dưới 6 tuổi).", "sample": "Bệnh nhi ≤6 tuổi nhưng THIẾU CAN_NANG — bắt buộc theo QĐ4750.", "action": "Bổ sung cân nặng (kg) của người bệnh vào hồ sơ."}, {"code": "FLD027", "severity": "CHAN", "layer": "FIELD", "title": "Tỷ lệ thanh toán ngoài khoảng 0–100%", "meaning": "Trường tỷ lệ phần trăm khai ngoài miền 0–100.", "trigger": "TYLE_TT_BH/TYLE_TT_DV < 0 hoặc > 100.", "basis": "QĐ130/QĐ-BYT — chỉ tiêu tỷ lệ thanh toán của Bảng 2/Bảng 3.", "sample": "thuốc STT 5 (Paracetamol): <TYLE_TT_BH>='150' ngoài khoảng 0–100%.", "action": "Khai lại tỷ lệ đúng theo danh mục và quy định thanh toán."}, {"code": "FLD028", "severity": "CHAN", "layer": "FIELD", "title": "Thiếu GIOI_TINH", "meaning": "Không khai giới tính nên hệ thống KHÔNG kiểm được các ràng buộc bệnh theo giới.", "trigger": "GIOI_TINH rỗng hoặc không có.", "basis": "QĐ130/QĐ-BYT — chỉ tiêu GIOI_TINH của Bảng 1 (1 Nam / 2 Nữ / 3 chưa xác định).", "sample": "Thiếu GIOI_TINH (rỗng/không có) — hệ thống BỎ kiểm ràng buộc bệnh-theo-giới.", "action": "Khai GIOI_TINH theo mã 1/2/3 để engine kiểm được cột 28/29 TT06."}, {"code": "THE001", "severity": "CHAN", "layer": "K3", "title": "Thẻ BHYT hết hạn tại thời điểm vào viện", "meaning": "Ngày vào viện nằm sau ngày hết hạn thẻ — quỹ BHYT không thanh toán đợt này.", "trigger": "NGAY_VAO > GT_THE_DEN.", "basis": "Luật BHYT (giá trị sử dụng của thẻ); QĐ130/QĐ-BYT — chỉ tiêu GT_THE_TU, GT_THE_DEN.", "sample": "Thẻ BHYT HẾT HẠN ngày 31/03/2025 nhưng vào viện 05/04/2025.", "action": "Đối chiếu thẻ/gia hạn; nếu thẻ đã gia hạn thì khai lại GT_THE_DEN đúng."}, {"code": "XML013", "severity": "CHAN", "layer": "XML", "title": "Dòng chi phí không có mã dịch vụ lẫn mã vật tư", "meaning": "Mỗi dòng Bảng 3 phải có ít nhất MA_DICH_VU hoặc MA_VAT_TU để xác định được đối tượng chi.", "trigger": "Cả MA_DICH_VU và MA_VAT_TU đều trống trên một dòng XML3.", "basis": "QĐ130/QĐ-BYT — Bảng 3, chỉ tiêu MA_DICH_VU/MA_VAT_TU.", "sample": "dịch vụ STT 7: dòng KHÔNG có <MA_DICH_VU> lẫn <MA_VAT_TU>.", "action": "Bổ sung mã dịch vụ kỹ thuật hoặc mã vật tư y tế cho dòng chi phí."}, {"code": "XML014", "severity": "CHAN", "layer": "XML", "title": "Trùng số thứ tự STT trong một bảng", "meaning": "STT phải duy nhất trong từng bảng; trùng STT làm cổng và giám định không tra được dòng.", "trigger": "Hai dòng cùng bảng mang cùng giá trị STT.", "basis": "QĐ4750/QĐ-BYT — chỉ tiêu STT của các bảng chi tiết.", "sample": "Bảng XML2: TRÙNG số thứ tự STT 3 — mỗi dòng phải có STT duy nhất (QĐ4750).", "action": "Đánh lại STT liên tục, không trùng trong từng bảng."}, {"code": "XML016", "severity": "CHAN", "layer": "XML", "title": "Hồ sơ không có dòng thuốc lẫn dịch vụ kỹ thuật", "meaning": "Hồ sơ đề nghị thanh toán nhưng không có bảng chi tiết chi phí nào.", "trigger": "Không có phần tử CHI_TIET_THUOC lẫn CHI_TIET_DVKT.", "basis": "QĐ130/QĐ-BYT — Bảng 2 (thuốc) và Bảng 3 (DVKT/VTYT) của hồ sơ đề nghị thanh toán.", "sample": "Hồ sơ KHÔNG có dòng thuốc lẫn dịch vụ kỹ thuật nào — thiếu bảng chi tiết.", "action": "Bổ sung bảng chi tiết chi phí, hoặc kiểm lại việc kết xuất từ HIS."}, {"code": "TIEN003", "severity": "CHAN", "layer": "TIEN", "title": "Chi phí BHYT vượt trần thanh toán của dòng", "meaning": "Phần chi phí đề nghị quỹ chi trả lớn hơn mức trần thanh toán của chính dòng đó.", "trigger": "THANH_TIEN_BH > T_TRANTT của dòng.", "basis": "QĐ130/QĐ-BYT — chỉ tiêu T_TRANTT, THANH_TIEN_BH của Bảng 3.", "sample": "VTYT STT 2 (Stent): chi phí BH 56,000,000đ VƯỢT TRẦN thanh toán 40,000,000đ.", "action": "Khai phần vượt sang chi phí người bệnh tự trả, giữ phần BH trong trần."}, {"code": "DD001", "severity": "CHAN", "layer": "K1", "title": "Đường dùng không khớp dạng bào chế của thuốc", "meaning": "Mã đường dùng khai trên dòng thuốc không phù hợp với dạng bào chế của chính thuốc đó.", "trigger": "Nhóm mã DUONG_DUNG (1 uống, 2 tiêm/truyền, 3 bôi…) khác nhóm suy ra từ dạng bào chế.", "basis": "QĐ130/QĐ-BYT Bảng 2 chỉ tiêu DUONG_DUNG; danh mục thuốc TT20/2022 (cột dạng bào chế).", "sample": "thuốc STT 1 (Ceftriaxon bột pha tiêm): đường dùng '1.01' (uống) KHÔNG khớp dạng bào chế.", "action": "Sửa mã đường dùng cho đúng dạng bào chế thực dùng."}, {"code": "K1009", "severity": "CHAN", "layer": "K1", "title": "Tỷ lệ thanh toán khác mức quy định tại Phụ lục I TT20", "meaning": "Dòng thuốc khai tỷ lệ BHYT thanh toán khác mức mà Phụ lục I TT20/2022 quy định cho hoạt chất.", "trigger": "TYLE_TT_BH khai > tỷ lệ quy định của hoạt chất trong TT20 Phụ lục I (cột 8).", "basis": "TT20/2022/TT-BYT Phụ lục I cột 8 (Điều 2 điểm d); TT37/2024 Điều 20.4 chỉ bãi bỏ Điều 3–6 TT20.", "sample": "Thuốc Alteplase: khai tỷ lệ BHYT 100% nhưng Phụ lục I TT20 quy định 50% cho hoạt chất này.", "action": "Khai lại tỷ lệ đúng cột 8 Phụ lục I; nếu đúng biến thể khác thì bổ sung căn cứ.", "chua_quan_sat": "chỉ phát khi TYLE_TT_BH khai cao hơn tỷ lệ TT20 và thẻ KHÔNG thuộc diện miễn giới hạn tỷ lệ (ký tự thứ 3 = 1 hoặc 5)"}, {"code": "K6011", "severity": "CHAN", "layer": "K6", "title": "Dịch vụ kỹ thuật thiếu người thực hiện", "meaning": "Áp dụng cho CẢ MA_KHOA và MA_KHOA_RV (khoa tổng kết hồ sơ bệnh án). Dòng DVKT không khai NGUOI_THUC_HIEN lẫn MA_BAC_SI — cổng không đối chiếu được chứng chỉ hành nghề.", "trigger": "Có MA_DICH_VU nhưng cả NGUOI_THUC_HIEN và MA_BAC_SI đều trống.", "basis": "QĐ130/QĐ-BYT — Bảng 3, chỉ tiêu NGUOI_THUC_HIEN, MA_BAC_SI.", "sample": "Dịch vụ 01.0001 (Khám nội): thiếu NGƯỜI THỰC HIỆN và MA_BAC_SI.", "action": "Bổ sung người thực hiện/mã bác sĩ đúng người đã thực hiện dịch vụ."}, {"code": "K5018", "severity": "CHAN", "layer": "K5", "title": "MA_BENH trên dòng dịch vụ có mã ngoài danh mục ICD TT06", "meaning": "Trường MA_BENH của dòng DVKT là đa giá trị; có mã không thuộc danh mục ICD-10 TT06.", "trigger": "Một hoặc nhiều mã trong MA_BENH (tách bằng ';') không có trong danh mục TT06.", "basis": "TT06/2026/TT-BYT — danh mục mã bệnh ICD-10; QĐ130/QĐ-BYT Bảng 3 chỉ tiêu MA_BENH.", "sample": "Dịch vụ 02.0010 (Siêu âm): MA_BENH có 1/3 mã KHÔNG có trong danh mục ICD TT06: ZZ99.", "action": "Sửa các mã sai về mã ICD-10 hợp lệ; giữ nguyên các mã đã đúng."}, {"code": "K9004", "severity": "GHICHU", "layer": "K9", "title": "Danh sách chênh giá bị rút gọn trong báo cáo", "meaning": "Hồ sơ có quá nhiều mã chênh giá; báo cáo chỉ liệt kê 30 mã đầu để giữ độ dài đọc được.", "trigger": "Số mã chênh giá trong một hồ sơ > 30.", "basis": "Ghi chú kỹ thuật của báo cáo — không phải kết luận nghiệp vụ.", "sample": "K9 giá: hồ sơ có 48 mã chênh giá, bảng dưới chỉ liệt kê 30 mã đầu.", "action": "Xuất báo cáo chi tiết theo hồ sơ nếu cần xem đủ danh sách."}, {"code": "SYS001", "severity": "GHICHU", "layer": "XML", "title": "Một lớp kiểm KHÔNG chạy được trên hồ sơ này", "meaning": "Một nhóm quy tắc gặp lỗi kỹ thuật nên không chạy — kết quả hồ sơ CHƯA phủ nhóm đó.", "trigger": "Lớp định mức/gộp theo người bệnh ném ngoại lệ khi xử lý file.", "basis": "Nguyên tắc báo cáo minh bạch: không im lặng bỏ qua một lớp kiểm.", "sample": "Không chạy được nhóm định mức/gộp trên file này: KeyError.", "action": "Gửi lại file hoặc báo nhà cung cấp; đừng coi hồ sơ là đã kiểm đủ mọi lớp."}, {"code": "K1010", "severity": "CHAN", "layer": "K1", "title": "Mã chi phí vận chuyển máu / bao bì sai cấu trúc QĐ3176", "meaning": "Mã VM./BB. phải ghi theo cấu trúc <VM|BB>.XXXXX với XXXXX là mã cơ sở KBCB 5 ký tự.", "trigger": "MA_THUOC bắt đầu bằng 'VM.' hoặc 'BB.' nhưng phần sau không đúng 5 ký tự mã cơ sở.", "basis": "QĐ3176/QĐ-BYT ngày 29/10/2024 — hướng dẫn ghi Bảng 2 với chi phí vận chuyển máu, bao bì thuốc thang.", "sample": "Mã VM.123: khai chi phí vận chuyển nhưng SAI cấu trúc — QĐ3176 quy định ghi VM.XXXXX.", "action": "Ghi lại mã theo đúng cấu trúc VM./BB. + mã cơ sở KBCB 5 ký tự."}, {"code": "K1011", "severity": "CHAN", "layer": "K1", "title": "Biến thể thuốc không thuộc danh sách TT20 được thanh toán", "meaning": "Điều kiện TT20 của hoạt chất này là một DANH SÁCH các biến thể được quỹ chi trả (vd “thanh toán: Ringer lactat; Ringer acetat; Ringerfundin”). Hoạt chất trên dòng chi không nằm trong danh sách đó nên phần chi này bị quỹ từ chối — TT20 liệt kê ĐÍCH DANH biến thể được trả nên đây là điều kiện cứng. Chỉ kết luận khi tên hoạt chất tra ĐƯỢC THEO MÃ trong Bộ mã dùng chung; tên biệt dược trên hoá đơn chỉ dùng để xác nhận khớp, không bao giờ dùng để tuyên vi phạm.", "trigger": "Câu điều kiện TT20 có dạng “Quỹ BHYT thanh toán: A; B; C” và tên hoạt chất của mã trên dòng chi không khớp mục nào trong danh sách.", "action": "Đối chiếu lại biến thể/dạng dùng thực tế; nếu đúng là biến thể ngoài danh sách thì chuyển chi phí ra ngoài BHYT.", "basis": "TT20/2022/TT-BYT Phụ lục I cột 8 (Điều 2 điểm d: cột 8 ghi điều kiện, tỷ lệ thanh toán).", "sample": "[K1011] Điều kiện TT20 CHƯA thoả: quỹ BHYT chỉ thanh toán các biến thể “Ringer lactat; Ringer acetat; Ringerfundin” — hoạt chất trên dòng chi KHÔNG thuộc danh sách đó.", "chua_quan_sat": "chỉ phát với câu điều kiện TT20 dạng liệt kê 'A; B; C' mà mã trên dòng chi phí không thuộc nhánh nào — phụ thuộc lời văn của từng dòng danh mục"}, {"code": "K1012", "severity": "CHAN", "layer": "K1", "title": "Mã vật tư y tế ngoài Phụ lục 01 TT04/2017", "meaning": "Mã nhóm của vật tư (3 đoạn đầu của MA_VAT_TU) không có trong danh mục VTYT thuộc phạm vi được hưởng BHYT. Mã nhóm sai thì không xác định được tỷ lệ và mức trần thanh toán.", "trigger": "Mã nhóm tách từ MA_VAT_TU không thuộc 393 mã nhóm của Phụ lục 01 TT04/2017 (hợp nhất TT24/2025).", "action": "Khai lại mã vật tư theo danh mục Phụ lục 01 TT04/2017/TT-BYT.", "basis": "Phụ lục 01 TT04/2017/TT-BYT ngày 14/4/2017, sửa đổi bổ sung bởi TT24/2025/TT-BYT (hiệu lực 01/9/2025).", "sample": "[K1012] Mã vật tư y tế \"Z99.99.999\" có mã nhóm \"Z99.99.999\" KHÔNG thuộc Phụ lục 01 TT04/2017."}, {"code": "K1013", "severity": "CHAN", "layer": "K1", "title": "Mã phương pháp chế biến vị thuốc cổ truyền không hợp lệ", "meaning": "MA_PP_CHEBIEN phải lấy từ danh mục mã phương pháp chế biến vị thuốc cổ truyền.", "trigger": "Giá trị MA_PP_CHEBIEN không thuộc 17 mã của Phụ lục 3 QĐ824.", "action": "Khai lại theo Phụ lục 3 QĐ824 (SC0–SC6 sơ chế, PC1–PC5 phức chế…).", "basis": "Phụ lục 3 QĐ824/QĐ-BYT ngày 15/02/2023 — Danh mục mã phương pháp chế biến vị thuốc cổ truyền.", "sample": "[K1013] MA_PP_CHEBIEN=\"ZZ\" không có trong Phụ lục 3 QĐ824/QĐ-BYT."}, {"code": "K1014", "severity": "GHICHU", "layer": "K1", "title": "Kháng sinh dự trữ — cần phê duyệt theo quy chế bệnh viện", "meaning": "Thuốc thuộc Nhóm 1 (kháng sinh dự trữ) của Danh mục kháng sinh ưu tiên quản lý. Theo tài liệu hướng dẫn của Bộ Y tế, nhóm này cần được phê duyệt trước khi sử dụng theo quy chế của chính bệnh viện.", "trigger": "Hoạt chất trên dòng thuốc thuộc Nhóm 1 Phụ lục 2 QĐ5631 (37 hoạt chất, gồm Vancomycin, Aciclovir, Colistin, Meropenem, Micafungin…).", "action": "Lưu phiếu yêu cầu/phê duyệt sử dụng kháng sinh theo quy chế đơn vị (mẫu Phụ lục 4 QĐ5631).", "basis": "QĐ5631/QĐ-BYT ngày 31/12/2020 Phụ lục 2. ⚠️ Điều 2: “Căn cứ vào tài liệu này và điều kiện cụ thể của đơn vị, Giám đốc bệnh viện tổ chức triển khai thực hiện tại đơn vị” — là TÀI LIỆU CHUYÊN MÔN, KHÔNG phải căn cứ xuất toán, nên mã này chỉ ở mức GHI CHÚ.", "sample": "[K1014] Thuốc Vancomycin thuộc nhóm KHÁNG SINH DỰ TRỮ (Nhóm 1, Phụ lục 2 QĐ5631)."}, {"code": "K5019", "severity": "GHICHU", "layer": "K5", "title": "Mã ICD theo văn bản TRƯỚC TT06/2026 — vẫn có giá trị pháp lý", "meaning": "Mã bệnh ghi theo danh mục cũ; hồ sơ lập trước 01/7/2026 vẫn hợp lệ, chỉ cần biết mã thay thế.", "trigger": "Mã bệnh chính nằm trong bảng ánh xạ mã cũ → mã mới, ngày KCB trước 01/7/2026.", "basis": "TT06/2026/TT-BYT Điều 6 khoản 3 (công nhận mã ghi theo văn bản cũ); QĐ1978/QĐ-BYT (mã thay thế).", "sample": "Chẩn đoán: U51.631.2: là mã ICD-10 theo văn bản TRƯỚC TT06/2026 — vẫn có giá trị pháp lý.", "action": "Không cần sửa với hồ sơ cũ; hồ sơ từ 01/7/2026 dùng mã mới theo QĐ1978."}, {"code": "K5020", "severity": "CHAN", "layer": "K5", "title": "Mã con không có trong danh mục ICD hiệu lực tại ngày KCB", "meaning": "Mã bệnh chi tiết (mã con) không thuộc danh mục ICD-10 đang có hiệu lực — thường là mã phiên bản cũ đã đổi.", "trigger": "Mã bệnh chính không có trong danh mục hiệu lực nhưng nhóm 3 ký tự thì có.", "basis": "TT06/2026/TT-BYT (từ 01/7/2026) hoặc QĐ4469/QĐ-BYT (trước đó) — danh mục ICD-10 áp cho ngày KCB.", "sample": "Chẩn đoán: J18.10: mã con KHÔNG có trong danh mục ICD-10 TT06/2026 — có thể là mã phiên bản cũ đã đổi.", "action": "Chọn lại mã con đúng trong nhóm 3 ký tự tương ứng (engine có gợi ý danh sách mã con hiện có)."}, {"code": "K5021", "severity": "CHAN", "layer": "K5", "title": "Bệnh kèm theo có mã ngoài danh mục ICD TT06", "meaning": "Một hoặc nhiều mã ở MA_BENH_KT không có trong danh mục ICD hiện hành. Bệnh kèm là căn cứ đối chiếu điều kiện thanh toán thuốc (TT20 tra cả bệnh chính lẫn bệnh kèm) nên mã sai ở đây làm lệch kết luận thanh toán.", "trigger": "Mã trong MA_BENH_KT không thuộc danh mục ICD TT06 và cũng không thuộc bảng mã cũ→mới.", "action": "Sửa lại mã bệnh kèm theo danh mục ICD-10 TT06/2026/TT-BYT.", "basis": "TT06/2026/TT-BYT (danh mục ICD-10); QĐ130/QĐ-BYT Bảng 1 trường MA_BENH_KT.", "sample": "[K5021] Bệnh kèm theo ZZZ.9: KHÔNG có trong danh mục ICD TT06."}, {"code": "K5022", "severity": "CHAN", "layer": "K5", "title": "Mã bệnh chính đã bị TT06/2026 huỷ (hồ sơ kết thúc từ 01/7/2026)", "meaning": "Mã có trong danh mục ICD-10 cũ (QĐ4469/QĐ-BYT 28/10/2020) nhưng KHÔNG còn trong danh mục ban hành kèm TT06/2026/TT-BYT (584 mã). Từ 01/7/2026 cổng giám định đối chiếu theo TT06, mã bị huỷ không tra ra được.", "trigger": "MA_BENH_CHINH chỉ có ở QĐ4469, không có ở TT06 (kể cả khi bỏ dấu †/*), VÀ ngày KẾT THÚC lượt KCB (NGAY_RA, thiếu thì NGAY_VAO) >= 01/7/2026.", "action": "Chọn tên bệnh phù hợp nhất trong danh mục TT06/2026 để lấy mã tương ứng thay thế.", "basis": "TT06/2026/TT-BYT Điều 6 khoản 1 và khoản 2 (điều khoản chuyển tiếp); Điều 5 khoản 1 (hiệu lực 01/7/2026); QĐ4469/QĐ-BYT ngày 28/10/2020.", "sample": "[K5022] A90: mã thuộc QĐ4469 nhưng KHÔNG còn trong danh mục ICD-10 TT06/2026."}, {"code": "K6012", "severity": "CHAN", "layer": "K6", "title": "Mã DVKT nhận diện được nhưng SAI CHUẨN mã", "meaning": "Dịch vụ tra ra được trong danh mục nhưng mã đang khai không đúng chuẩn mã hiện hành — phải sửa sang mã đúng.", "trigger": "Tra danh mục cho kết quả SAI_CHUAN_MA (mã nội bộ/mã cũ tương ứng một mã chuẩn khác).", "basis": "QĐ2010/QĐ-BYT (danh mục DVKT dùng chung) — Điều 5 về chuyển đổi mã; TT48/2017/TT-BYT Điều 4.", "sample": "mã 01.0001.0001 nhận diện được nhưng SAI CHUẨN mã — phải sửa sang mã QĐ2010 tương ứng.", "action": "Đổi sang đúng mã chuẩn QĐ2010 mà engine nêu trong thông báo rồi gửi lại.", "chua_quan_sat": "chỉ phát khi danh mục nội bộ của cơ sở ánh xạ một mã cũ sang mã chuẩn khác"}, {"code": "K6014", "severity": "CHAN", "layer": "K6", "title": "Mã nhiên liệu không có trong danh mục QĐ3276", "meaning": "MA_XANG_DAU dùng cho chi phí vận chuyển người bệnh phải lấy từ Danh mục mã nhiên liệu. Mã sai thì không xác định được đơn giá nhiên liệu để tính chi phí vận chuyển.", "trigger": "Giá trị MA_XANG_DAU không thuộc 15 mã của Phụ lục 2 QĐ3276.", "action": "Khai lại theo Phụ lục 2 QĐ3276 (R954V1/V2, R953V1/V2, E922V1/V2, D1S5V1/V2, D5S2V1/V2, R955V1/V2, E10V1/V2, XEDIEN).", "basis": "QĐ3276/QĐ-BYT ngày 17/10/2025 Phụ lục 2 — Danh mục mã nhiên liệu; Điều 2 bãi bỏ Phụ lục 5 QĐ824/QĐ-BYT. Thanh toán chi phí vận chuyển theo Điều 14 NĐ188/2025/NĐ-CP.", "sample": "[K6014] MA_XANG_DAU=\"ZZZZ\" không có trong Danh mục mã nhiên liệu."}, {"code": "K6013", "severity": "CHAN", "layer": "K6", "title": "Mã giường không có trong danh mục mã tiền giường", "meaning": "MA_GIUONG phải lấy từ danh mục mã tiền giường dùng chung. Mã sai thì cơ quan BHXH không xác định được loại giường và mức giá tương ứng hạng bệnh viện.", "trigger": "Giá trị MA_GIUONG không thuộc 285 mã của Phụ lục 3 và 4 QĐ2010.", "action": "Khai lại mã giường theo Phụ lục 3 (giường nội trú) hoặc Phụ lục 4 (giường ban ngày) QĐ2010.", "basis": "QĐ2010/QĐ-BYT ngày 19/6/2025 Phụ lục 3 (mã tiền giường) và Phụ lục 4 (mã tiền ngày giường ban ngày).", "sample": "[K6013] MA_GIUONG=\"ZZZZ\" không có trong danh mục mã tiền giường.", "deprecated": true}, {"code": "CT001", "severity": "GHICHU", "layer": "XML", "title": "Đã đọc chứng từ kèm theo trong file XML", "meaning": "Liệt kê các bảng chứng từ có trong chính file (diễn biến lâm sàng, kết quả cận lâm sàng, giấy ra viện, tóm tắt bệnh án, giấy hẹn khám lại, giấy chuyển tuyến, giấy chứng sinh, hồ sơ HIV/lao) — để cơ sở biết engine ĐÃ tính đến các chứng từ này.", "trigger": "File có ít nhất một bảng XML4–XML15.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — Bảng 4 đến Bảng 15; QĐ4750/QĐ-BYT ngày 29/12/2023.", "sample": "ĐÃ ĐỌC CHỨNG TỪ KÈM THEO trong file — diễn biến lâm sàng (XML5): 12 bản ghi, 24 trường có dữ liệu · …", "action": "Không cần xử lý. Đây là xác nhận phạm vi dữ liệu engine đã đọc."}, {"code": "CT002", "severity": "CHAN", "layer": "XML", "title": "Thời điểm diễn biến lâm sàng ngoài đợt điều trị", "meaning": "Mốc THOI_DIEM_DBLS ở bảng diễn biến lâm sàng nằm ngoài khoảng vào viện – ra viện của XML1.", "trigger": "THOI_DIEM_DBLS < NGAY_VAO hoặc > NGAY_RA.", "basis": "QĐ130/QĐ-BYT — Bảng 5 chỉ tiêu THOI_DIEM_DBLS; Bảng 1 chỉ tiêu NGAY_VAO, NGAY_RA.", "sample": "2 mốc DIỄN BIẾN LÂM SÀNG nằm NGOÀI đợt điều trị 05/04–08/04 (vd 20250401).", "action": "Sửa mốc diễn biến lâm sàng hoặc mốc vào/ra cho khớp nhau."}, {"code": "CT003", "severity": "CHAN", "layer": "XML", "title": "Ngày hẹn khám lại trước ngày ra viện", "meaning": "Giấy hẹn khám lại ghi ngày hẹn sớm hơn ngày kết thúc đợt điều trị.", "trigger": "NGAY_HEN_KL < NGAY_RA.", "basis": "QĐ3176/QĐ-BYT — Bảng 14 (giấy hẹn khám lại), chỉ tiêu NGAY_HEN_KL.", "sample": "Giấy hẹn khám lại số 123: ngày hẹn 01/04/2025 TRƯỚC ngày ra viện.", "action": "Khai lại ngày hẹn khám lại đúng lịch hẹn thực tế sau khi ra viện."}, {"code": "CT004", "severity": "GHICHU", "layer": "XML", "title": "Có phẫu thuật ở diễn biến lâm sàng nhưng thiếu mã ICD-9-CM", "meaning": "Bảng diễn biến lâm sàng ghi nhận phẫu thuật, nhưng XML1 để trống MA_PTTT_QT.", "trigger": "CHI_TIET_DIEN_BIEN_BENH có PHAU_THUAT mà TONG_HOP không có MA_PTTT_QT.", "basis": "QĐ130/QĐ-BYT — Bảng 5 chỉ tiêu PHAU_THUAT, Bảng 1 chỉ tiêu MA_PTTT_QT; QĐ387/QĐ-BYT (ICD-9-CM); NĐ188/2025.", "sample": "Bảng diễn biến lâm sàng (XML5) CÓ ghi PHẪU THUẬT nhưng XML1 để trống MA_PTTT_QT.", "action": "Khai MA_PTTT_QT theo bảng ICD-9-CM QĐ387 cho ca phẫu thuật."}, {"code": "CT005", "severity": "CHAN", "layer": "XML", "title": "Giấy ra viện ký trước ngày ra viện", "meaning": "Ngày ký giấy ra viện (XML7) sớm hơn ngày kết thúc đợt điều trị ở XML1.", "trigger": "NGAY_CT của bảng giấy ra viện < NGAY_RA.", "basis": "QĐ130/QĐ-BYT — Bảng 7 chỉ tiêu NGAY_CT; Bảng 1 chỉ tiêu NGAY_RA.", "sample": "Giấy ra viện (XML7) ký ngày 03/04/2025 — TRƯỚC ngày ra viện 05/04/2025.", "action": "Khai lại ngày ký chứng từ đúng thời điểm thực tế."}, {"code": "CT006", "severity": "GHICHU", "layer": "XML", "title": "Giấy ra viện không khai người ký", "meaning": "Bảng giấy ra viện để trống cả MA_BS và TEN_BS.", "trigger": "XML7 có bản ghi nhưng MA_BS và TEN_BS đều rỗng.", "basis": "QĐ130/QĐ-BYT — Bảng 7, chỉ tiêu MA_BS, TEN_BS.", "sample": "Giấy ra viện (XML7) KHÔNG khai người ký (MA_BS/TEN_BS).", "action": "Bổ sung mã/tên bác sĩ ký giấy ra viện."}, {"code": "CT007", "severity": "GHICHU", "layer": "XML", "title": "Hồ sơ có giấy chuyển tuyến kèm theo", "meaning": "Ghi nhận hồ sơ ĐÃ đính kèm giấy chuyển tuyến — engine dùng làm căn cứ khi đối chiếu mức hưởng, không yêu cầu cơ sở bổ sung chứng từ này nữa.", "trigger": "File có bảng CHI_TIEU_GIAYCHUYENTUYEN (XML9).", "basis": "QĐ130/QĐ-BYT — Bảng 13 (giấy chuyển tuyến); TT01/2025/TT-BYT về chuyển cơ sở KCB.", "sample": "Hồ sơ CÓ giấy chuyển tuyến kèm theo (XML9): số 123, lý do mã 1, nơi chuyển 10061→10999.", "action": "Không cần xử lý."}, {"code": "CT008", "severity": "GHICHU", "layer": "XML", "title": "Hồ sơ có bảng điều trị HIV/AIDS kèm theo", "meaning": "Ghi nhận hồ sơ đã đính kèm bảng chăm sóc/điều trị HIV/AIDS (XML6) — đã đọc, không yêu cầu bổ sung.", "trigger": "File có bảng HO_SO_BENH_AN_CHAM_SOC_VA_DIEU_TRI_HIV_AIDS.", "basis": "QĐ130/QĐ-BYT — Bảng 6 (hồ sơ bệnh án chăm sóc và điều trị HIV/AIDS).", "sample": "Hồ sơ CÓ bảng chăm sóc/điều trị HIV/AIDS (XML6): ngày khẳng định 20240101, bắt đầu ARV 20240115.", "action": "Không cần xử lý."}, {"code": "CT009", "severity": "GHICHU", "layer": "XML", "title": "Ca sinh đẻ nhưng thiếu bảng giấy chứng sinh", "meaning": "Chẩn đoán thuộc nhóm sinh đẻ mà file không có bảng giấy chứng sinh (XML14).", "trigger": "Mã ICD thuộc O80–O84/Z37/Z38 và không có CHI_TIET_DU_LIEU_GIAY_CHUNG_SINH.", "basis": "QĐ130/QĐ-BYT — Bảng 9 (dữ liệu giấy chứng sinh).", "sample": "Chẩn đoán thuộc nhóm SINH ĐẺ (O80–O84/Z37/Z38) nhưng hồ sơ KHÔNG có bảng giấy chứng sinh (XML14).", "action": "Bổ sung bảng XML14 nếu ca này có cấp giấy chứng sinh."}, {"code": "THE002", "severity": "GHICHU", "layer": "K3", "title": "Kỳ hạn thẻ khai không phủ ngày vào viện", "meaning": "GT_THE_TU khai muộn hơn NGAY_VAO. Soi mẫu thật: 21/30.000 hồ sơ, chênh 1-19 ngày, GT_THE_TU luôn NỐI TIẾP kỳ hạn cũ => dấu hiệu bản xuất HIS ghi thẻ HIỆN TẠI thay vì thẻ tại thời điểm KCB.", "trigger": "NGAY_VAO sớm hơn GT_THE_TU (đã hợp nhất chuỗi đa giá trị).", "basis": "QĐ130/QĐ-BYT Bảng 1 chỉ tiêu GT_THE_TU là quy định GHI DỮ LIỆU, KHÔNG phải điều cấm thanh toán. Chưa đủ căn cứ tuyên xuất toán từ một mình file XML.", "sample": "Hồ sơ khai thẻ BHYT có giá trị sử dụng TỪ 25/09/2025, không phủ ngày vào viện 23/09/2025.", "action": "Đối chiếu kỳ hạn thẻ tại thời điểm KCB trên cổng BHXH nếu bản xuất HIS ghi thẻ hiện tại."}, {"code": "K8005", "severity": "GHICHU", "layer": "K8", "title": "Thuốc khai nhiều dòng giống hệt cùng thời điểm y lệnh", "meaning": "Cùng một thuốc xuất hiện trên nhiều dòng GIỐNG HỆT nhau (cùng số lượng, liều dùng, thành tiền) tại cùng thời điểm y lệnh — ĐẠT: khai theo đơn vị đóng gói (chai/lọ) là cách khai chuẩn, không văn bản nào cấm.", "trigger": "≥2 dòng XML2 cùng MA_THUOC + cùng NGAY_YL + cùng SO_LUONG + cùng THANH_TIEN.", "basis": "QĐ130/QĐ-BYT ngày 18/01/2023 — Bảng 2: mỗi dòng là một y lệnh riêng.", "sample": "Thuốc khai nhiều dòng: 3 thuốc có NHIỀU DÒNG cùng thời điểm y lệnh — các dòng giống hệt nhau.", "action": "Đối chiếu bệnh án: nếu là một y lệnh thì gộp thành một dòng; nếu khác lô/nguồn cấp thì ghi rõ."}, {"code": "K8006", "severity": "GHICHU", "layer": "K8", "title": "Tổng số lượng thuốc không khớp liều dùng ghi trong hồ sơ", "meaning": "Cùng một thuốc khai nhiều dòng giống hệt tại cùng thời điểm y lệnh, NHƯNG liều dùng ghi trên chính dòng đó chỉ đủ cho MỘT dòng — các dòng còn lại là chi phí thừa.", "trigger": "≥2 dòng XML2 giống hệt (mã, giờ y lệnh, số lượng, liều dùng, thành tiền) và SO_LUONG × số dòng > tổng số đơn vị tính từ LIEU_DUNG, trong khi SO_LUONG của MỘT dòng thì khớp đúng.", "action": "Rà lại: nếu đúng là dòng thừa thì xoá; nếu đã dùng đủ số lượng thì sửa LIEU_DUNG cho khớp.", "basis": "KHÔNG có điều khoản nào buộc SO_LUONG khớp chuỗi LIEU_DUNG — QĐ130 chỉ ràng buộc THANH_TIEN_BH = SO_LUONG × DON_GIA × tỷ lệ. Vì vậy mã này CHỈ NÊU điểm không nhất quán để cơ sở tự rà, KHÔNG kết luận vi phạm và cổng BHXH không tự động từ chối vì lý do này.", "sample": "[K8006] Thuốc khai THỪA DÒNG: 40.1021 khai 2 dòng × 1 nhưng liều ghi 1 (thừa 1 dòng)."}], "total": 215, "traceId": "trc_82cadae007b6"}