Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "BHYT" các nội dung bạn quan tâm.

Bài 1.14. XML2 tổng quan: cấu trúc một dòng thuốc và chỉ mục đầy đủ các trường dữ liệu

XML

Cấu trúc một dòng thuốc và chỉ mục đầy đủ các trường dữ liệu

XML2 là Bảng 2 – Chỉ tiêu chi tiết thuốc. Nếu XML1 cho biết tổng chi phí thuốc của cả đợt KCB qua trường T_THUOC, thì XML2 cho biết những dòng chi phí nào tạo nên tổng đó.

Quyết định 130/QĐ-BYT xác định Bảng 1 đến Bảng 5 là nhóm dữ liệu điện tử chi tiết được cơ sở KBCB cung cấp phục vụ quản lý, giám định, thanh toán và quyết toán chi phí KCB BHYT.

Bảng XML2 hiện có 39 chỉ tiêu. Nội dung của các trường đã được sửa đổi, bổ sung qua Quyết định 4750/QĐ-BYT, Quyết định 3176/QĐ-BYT và một số cập nhật sau đó. Vì vậy, giống XML1, khi kiểm tra XML2 phải luôn gắn field với phiên bản và thời điểm hiệu lực.


1. Một dòng XML2 đại diện cho điều gì?

Về nguyên tắc, mỗi record XML2 mô tả một dòng thuốc hoặc khoản chi thuộc phạm vi Bảng 2 được sử dụng cho người bệnh trong một đợt KCB.

Một đợt KCB có thể có rất nhiều dòng XML2:

MA_LK = LK001
│
├── STT 1 → Thuốc A
├── STT 2 → Thuốc B
├── STT 3 → Dịch truyền C
├── STT 4 → Thuốc D
└── ...

Tất cả các dòng trên cùng liên kết về XML1 bằng MA_LK.

Điểm cần lưu ý là Bảng 2 không chỉ xử lý “viên thuốc” theo nghĩa thông thường. Phần hướng dẫn MA_THUOC còn bao gồm các tình huống đặc biệt như khí y tế, máu và chế phẩm máu, một số chi phí liên quan đến máu, thuốc tự bào chế, thuốc thang...

Do đó:

Một dòng XML2 nên được hiểu là một record chi tiết thuộc Bảng thuốc, không nên giản lược thành “một viên thuốc”.


2. Cấu trúc logic của một dòng thuốc

Một record XML2 có thể được hình dung qua sáu lớp thông tin:

DÒNG XML2
│
├── Định danh
│     MA_LK, STT
│
├── Nhận diện thuốc
│     MA_THUOC, TEN_THUOC, HAM_LUONG,
│     DUONG_DUNG, DANG_BAO_CHE...
│
├── Pháp lý - cung ứng
│     SO_DANG_KY, TT_THAU,
│     MA_CSKCB_THUOC...
│
├── Sử dụng thuốc
│     LIEU_DUNG, CACH_DUNG,
│     MA_KHOA, MA_BAC_SI,
│     NGAY_YL, NGAY_TH_YL...
│
├── Giá và thanh toán
│     SO_LUONG, DON_GIA,
│     THANH_TIEN_BV, THANH_TIEN_BH,
│     T_BNTT, T_BNCCT, T_BHTT...
│
└── Phương thức/nguồn chi trả
      MA_PTTT, NGUON_CTRA...

Chính vì một record chứa đồng thời dữ liệu dược, chuyên môn, đấu thầu và tài chính, XML2 là một trong những bảng có nhiều khả năng kiểm tra chéo nhất.


3. Ví dụ cấu trúc một record XML2

Ví dụ minh họa, không phải dữ liệu người bệnh thật:

<CHI_TIET_THUOC>
    <MA_LK>LK000001</MA_LK>
    <STT>1</STT>

    <MA_THUOC>...</MA_THUOC>
    <TEN_THUOC>Thuốc A</TEN_THUOC>
    <DON_VI_TINH>Viên</DON_VI_TINH>
    <HAM_LUONG>500mg</HAM_LUONG>
    <DUONG_DUNG>...</DUONG_DUNG>
    <DANG_BAO_CHE>Viên nén</DANG_BAO_CHE>

    <LIEU_DUNG>...</LIEU_DUNG>
    <CACH_DUNG>...</CACH_DUNG>

    <SO_DANG_KY>...</SO_DANG_KY>
    <TT_THAU>...</TT_THAU>

    <PHAM_VI>1</PHAM_VI>
    <TYLE_TT_BH>100</TYLE_TT_BH>
    <SO_LUONG>10</SO_LUONG>
    <DON_GIA>1000</DON_GIA>

    <THANH_TIEN_BV>10000</THANH_TIEN_BV>
    <THANH_TIEN_BH>10000</THANH_TIEN_BH>

    <MA_KHOA>...</MA_KHOA>
    <MA_BAC_SI>...</MA_BAC_SI>
    <NGAY_YL>202610110800</NGAY_YL>

    ...
</CHI_TIET_THUOC>

Trong thực tế, field nào phải có giá trị còn phụ thuộc vào loại thuốc và tình huống cụ thể.


4. Chỉ mục đầy đủ 39 trường của XML2

STTTrườngKiểu / kích thướcNội dung chính
1MA_LKChuỗi / 100Mã liên kết đợt KCB
2STTSố / 10Số thứ tự dòng
3MA_THUOCChuỗi / 255Mã thuốc/hoạt chất theo quy định
4MA_PP_CHEBIENChuỗi / 255Mã phương pháp chế biến vị thuốc cổ truyền
5MA_CSKCB_THUOCChuỗi / 10Mã hóa cơ sở liên quan đến thuốc trong các tình huống đặc biệt
6MA_NHOMSố / 2Mã nhóm chi phí
7TEN_THUOCChuỗi / 1024Tên thuốc
8DON_VI_TINHChuỗi / 50Đơn vị tính thực tế
9HAM_LUONGChuỗi / 1024Hàm lượng
10DUONG_DUNGChuỗi / 4Mã đường dùng
11DANG_BAO_CHEChuỗi / 1024Dạng bào chế/chế biến
12LIEU_DUNGChuỗi / 1024Liều dùng
13CACH_DUNGChuỗi / 1024Cách dùng/lời dặn
14SO_DANG_KYChuỗi / 255Số đăng ký hoặc mã hóa tương ứng theo trường hợp
15TT_THAUChuỗi / 50Thông tin thầu
16PHAM_VISố / 1Phạm vi thanh toán của thuốc
17TYLE_TT_BHSố / 3Tỷ lệ thanh toán BHYT
18SO_LUONGSố / 10Số lượng thực tế sử dụng
19DON_GIASố / 15Đơn giá thuốc
20THANH_TIEN_BVSố / 15Thành tiền theo giá bệnh viện
21THANH_TIEN_BHSố / 15Thành tiền trong phạm vi BHYT
22T_NGUONKHAC_NSNNSố / 15Nguồn hỗ trợ từ ngân sách nhà nước
23T_NGUONKHAC_VTNNSố / 15Nguồn hỗ trợ từ nước ngoài
24T_NGUONKHAC_VTTNSố / 15Nguồn hỗ trợ trong nước
25T_NGUONKHAC_CLSố / 15Nguồn khác còn lại
26T_NGUONKHACSố / 15Tổng tiền từ nguồn khác
27MUC_HUONGSố / 3; cập nhật tối đa 4Mức hưởng BHYT của dòng chi phí
28T_BNTTSố / 15Người bệnh tự trả
29T_BNCCTSố / 15Người bệnh cùng chi trả
30T_BHTTSố / 15Số tiền đề nghị BHXH thanh toán
31MA_KHOAChuỗi / 50Khoa chỉ định sử dụng thuốc
32MA_BAC_SIChuỗi / 255Người hành nghề chỉ định thuốc
33MA_DICH_VUChuỗi / 255DVKT liên quan đến thuốc khi thuộc trường hợp phải ghi
34NGAY_YLChuỗi / 12Thời điểm ra y lệnh
35NGAY_TH_YLChuỗi / 12Thời điểm thực hiện y lệnh
36MA_PTTTSố / 1Phương thức thanh toán
37NGUON_CTRASố / 1Nguồn thuốc chi trả
38VET_THUONG_TPSố / 1Chỉ dấu vết thương/bệnh tật tái phát theo trường hợp
39DU_PHONGChuỗi / nTrường dự phòng

Bảng 2 quy định các trường nhận diện thuốc, liều dùng và thông tin đăng ký/thầu ở phần đầu; nhiều trường có hướng dẫn riêng cho thuốc tự pha chế, YHCT, máu, khí y tế và các tình huống đặc biệt.

Nhóm từ PHAM_VI đến các trường phân bổ chi phí mô tả phạm vi, tỷ lệ thanh toán, số lượng, đơn giá, thành tiền và các bên chi trả.

Các trường cuối bảng xác định khoa, người chỉ định, DVKT liên quan, thời điểm y lệnh, phương thức và nguồn chi trả.


5. Nhóm nhận diện thuốc

Các field cốt lõi gồm:

MA_THUOC
TEN_THUOC
DON_VI_TINH
HAM_LUONG
DUONG_DUNG
DANG_BAO_CHE

Một thuốc không nên được nhận diện chỉ bằng TEN_THUOC.

Ví dụ cùng một tên thương mại có thể khác:

  • hàm lượng;
  • dạng bào chế;
  • đường dùng;
  • đơn vị tính;
  • số đăng ký;
  • thông tin thầu.

Do đó về kiểm tra dữ liệu, cần xem tổ hợp thuộc tính chứ không chỉ một field.

Chi tiết nhóm này sẽ được phân tích ở Bài 1.15.


6. Nhóm pháp lý, đăng ký và thầu

Các field:

SO_DANG_KY
TT_THAU
MA_CSKCB_THUOC
MA_PP_CHEBIEN

chứa nhiều quy tắc đặc thù.

Ví dụ SO_DANG_KY có các cách mã hóa riêng cho thuốc chưa có giấy đăng ký lưu hành nhưng được phép nhập khẩu, thuốc tự pha chế, dược liệu và một số trường hợp thuốc hiếm. Bảng đối chiếu hiện còn ghi nhận cập nhật của Quyết định 1931/QĐ-BYT năm 2026 đối với trường hợp thuốc hiếm được UBND cấp tỉnh cấp phép đơn hàng nhập khẩu.

Vì vậy không nên xây rule:

SO_DANG_KY phải luôn có một cấu trúc duy nhất

mà phải xác định trước loại thuốc và trường hợp pháp lý.

Nội dung này sẽ được tách riêng ở Bài 1.16.


7. Nhóm liều dùng, sử dụng và y lệnh

Các field quan trọng gồm:

LIEU_DUNG
CACH_DUNG
SO_LUONG
MA_KHOA
MA_BAC_SI
NGAY_YL
NGAY_TH_YL

LIEU_DUNG có cách ghi khác nhau giữa ngoại trú, nội trú, thuốc thang và một số thuốc dùng ngoài; NGAY_TH_YL theo diễn giải sửa đổi chỉ bắt buộc khi thuốc được sử dụng tại cơ sở KBCB.

Do đó, hệ thống cần phân biệt:

Thuốc kê cho người bệnh mang về

với:

Thuốc thực tế được sử dụng tại bệnh viện

trước khi kết luận thiếu NGAY_TH_YL.

Chi tiết sẽ được trình bày tại Bài 1.17.


8. Nhóm giá và thanh toán

Các field:

PHAM_VI
TYLE_TT_BH
SO_LUONG
DON_GIA
THANH_TIEN_BV
THANH_TIEN_BH

MUC_HUONG

T_BNTT
T_BNCCT
T_BHTT
T_NGUONKHAC

tạo thành chuỗi tính toán tài chính của một dòng thuốc.

Ví dụ hai công thức cơ bản của Bảng 2 là:

THANH_TIEN_BV
=
SO_LUONG × DON_GIA

và:

THANH_TIEN_BH
=
SO_LUONG × DON_GIA × TYLE_TT_BH / 100

Sau đó MUC_HUONG, nguồn khác và các điều kiện tương ứng được sử dụng để xác định phần người bệnh tự trả, cùng chi trả và phần đề nghị BHXH thanh toán.

Đây sẽ là nội dung chính của Bài 1.18.


9. MA_DICH_VU: mối nối giữa thuốc và dịch vụ kỹ thuật

Một field đặc biệt đáng chú ý trong XML2 là:

MA_DICH_VU

Không phải mọi dòng thuốc đều phải có MA_DICH_VU.

Trường này được sử dụng trong các trường hợp thuốc có quan hệ trực tiếp với DVKT theo quy định, chẳng hạn thuốc được sử dụng để thực hiện DVKT và được thanh toán riêng, thuốc liên quan đến một số dịch vụ cận lâm sàng hoặc các tình huống kỹ thuật đặc thù.

Điều này cho phép thiết lập quan hệ:

XML2.MA_DICH_VU
        ↕
XML3.MA_DICH_VU

và là cơ sở rất hữu ích để kiểm tra:

  • thuốc có thực sự liên quan đến dịch vụ;
  • dịch vụ tương ứng có phát sinh;
  • thời điểm thuốc và DVKT có hợp lý;
  • thuốc có nằm trong giá DVKT hay được phép thanh toán riêng.

10. Quan hệ XML2 với XML1

XML2 không tồn tại độc lập.

Mỗi record phải liên kết với đợt KCB qua:

XML2.MA_LK
        ↕
XML1.MA_LK

Ở chiều ngược lại, các dòng thuốc tạo nên nhiều giá trị tổng hợp của XML1:

Σ XML2.THANH_TIEN_BV
        ↓
tham gia tạo XML1.T_TONGCHI_BV

và:

Σ các khoản thuốc XML2.THANH_TIEN_BV
        ↓
XML1.T_THUOC

cùng với việc tổng hợp THANH_TIEN_BH, T_BNTT, T_BNCCT, T_BHTT, T_NGUONKHAC lên XML1, như đã trình bày tại Bài 1.13.


11. MA_LK không phải khóa duy nhất của từng dòng XML2

Quy định gọi MA_LK là mã đợt điều trị duy nhất để liên kết các bảng.

Tuy nhiên, trong XML2:

MA_LK = LK001

có thể xuất hiện ở hàng chục dòng thuốc khác nhau.

Vì vậy về xử lý dữ liệu, không nên dùng MA_LK một mình để xác định duy nhất một record thuốc.

Một locator thực tế thường phải xét ít nhất:

MA_LK + STT

trong đúng bối cảnh file/lần gửi.

Đây là khác biệt giữa:

mã liên kết đợt KCB

và:

khóa xác định một dòng chi tiết trong hệ thống xử lý dữ liệu.


12. Không phải 39 field đều bắt buộc cho mọi dòng thuốc

Một số ví dụ rõ ràng:

MA_PP_CHEBIEN chủ yếu liên quan vị thuốc cổ truyền.

MA_CSKCB_THUOC chỉ phát sinh trong các tình huống đặc biệt được quy định.

MA_DICH_VU là bắt buộc có điều kiện.

NGAY_TH_YL chỉ bắt buộc khi thuốc được sử dụng tại cơ sở KBCB theo diễn giải sửa đổi.

VET_THUONG_TP chỉ ghi trong trường hợp đặc thù đối với thuốc có tỷ lệ thanh toán dùng điều trị vết thương/bệnh tật tái phát ở nhóm đối tượng được quy định.

Vì vậy:

39 trường trong cấu trúc XML2 ≠ 39 giá trị bắt buộc trên mọi dòng thuốc.


13. Các lớp kiểm tra một dòng XML2

Một dòng thuốc có thể được kiểm tra theo chuỗi:

Đúng cấu trúc XML?
      ↓
Đúng định danh thuốc?
      ↓
Đúng số đăng ký/thầu/danh mục?
      ↓
Đúng liều - cách dùng - số lượng?
      ↓
Đúng khoa và người chỉ định?
      ↓
Đúng thời điểm y lệnh/thực hiện?
      ↓
Đúng phạm vi và tỷ lệ thanh toán?
      ↓
Đúng đơn giá?
      ↓
Đúng công thức thành tiền?
      ↓
Đúng phân bổ người trả?
      ↓
Khớp tổng hợp XML1?

Đây là một trong những bảng thích hợp nhất để kết hợp catalog lookup, formula constraint, conditional requirement, sequence/time check và cross-table consistency.


Kết luận

XML2 không chỉ trả lời:

“Người bệnh đã dùng thuốc gì?”

mà còn trả lời đồng thời:

Thuốc nào → dạng nào → liều bao nhiêu → ai chỉ định → ở khoa nào → lúc nào → số lượng bao nhiêu → theo giá nào → thuộc phạm vi nào → mức hưởng bao nhiêu → ai chịu khoản tiền đó.

Có thể tóm tắt:

XML2 = định danh thuốc + điều kiện sử dụng + căn cứ cung ứng + y lệnh + chi phí + phân bổ thanh toán.

Vì vậy, chất lượng XML2 không thể được đánh giá chỉ bằng việc MA_THUOC có tồn tại trong danh mục. Một dòng thuốc chỉ thực sự nhất quán khi tất cả các lớp thông tin trên phù hợp với nhau, với XML1, XML3 và hồ sơ KCB.