flowchart LR
subgraph TX["Điều trị lần đầu: Tx1 → Tx2 → … → TxD"]
T1["Tx1"] --> T2["Tx2"] --> TD["TxD"]
end
TD --> C["Khỏi bệnh"]
TX --> F["Thất bại/tái phát"]
TX --> L["Bỏ điều trị"]
TX --> D["Tử vong"]
F --> R["Điều trị lại"]
L --> R
R --> C
R --> F
R --> L
R --> D
C -.->|kịch bản| F
F --> C
L --> C
C --> D
F --> D
L --> D
M02 · Mô hình chuyển trạng thái đoàn hệ (Markov)
Xây từ đầu, trong base R, một mô hình Markov so sánh ba phác đồ điều trị lao kháng thuốc tại Việt Nam
WHO ước tính mỗi năm Việt Nam có khoảng 9,400 người mắc mới lao kháng rifampicin (World Health Organization 2026b), còn năm 2021–2022 cả nước điều trị khoảng 2,407 người mỗi năm, và cứ 100 người thì 25 người thất bại, tử vong hoặc bỏ điều trị (lost to follow-up) (T. M. P. Nguyen và c.s. 2026). Chỉ riêng tiền thuốc của một đợt phác đồ dài hạn đã bằng 2.3 tháng lương tối thiểu vùng I (Chính phủ 2025). Module này xây mô hình giúp một Chương trình Chống lao trả lời câu hỏi đang đặt ra: chuyển từ phác đồ ngắn 9 tháng sang BPaLM 6 tháng có đáng không?
Tổng quan
Module này dạy mô hình chuyển trạng thái đoàn hệ (cohort state-transition model), còn gọi là mô hình Markov đoàn hệ: một trong những công cụ dùng phổ biến nhất trong đánh giá kinh tế y tế (Siebert và c.s. 2012). Ta xây một mô hình hoàn chỉnh so sánh ba phác đồ cho người bệnh lao đa kháng/kháng rifampicin (MDR/RR-TB) tại Việt Nam: phác đồ dài hạn (18 tháng), phác đồ ngắn toàn thuốc uống có bedaquiline (9 tháng) và BPaLM (6 tháng); người thất bại hoặc bỏ điều trị có thể được điều trị lại. Mọi bước đều viết bằng base R, từng dòng kiểm tra được: từ chuyển số liệu công bố thành xác suất, chạy vết đoàn hệ (Markov trace), chiết khấu và hiệu chỉnh trong chu kỳ, đến trạng thái đường hầm (tunnel state), giá trị gắn với lần chuyển, đường biên hiệu quả, phân tích kịch bản và xác minh mô hình. M03 dùng lại mô hình này để phân tích bất định; M10 và M11 xây tiếp trên ví dụ này.
Mục tiêu học tập
Sau module này, bạn có thể:
- Xây từ đầu một mô hình Markov đoàn hệ trong base R cho một bài toán điều trị bệnh truyền nhiễm, kể cả vòng điều trị lại.
- Chuyển số liệu công bố (tỷ lệ kết cục, tỷ số chênh, nguy cơ tương đối, tỷ suất, SMR, bảng sống) thành xác suất chuyển hằng tháng.
- Mô hình hóa phụ thuộc thời gian bằng ma trận theo chu kỳ và trạng thái đường hầm.
- Tính chi phí, năm sống điều chỉnh theo chất lượng (QALY), năm sống, năm sống điều chỉnh theo bệnh tật (DALY) tránh được, ICER và NMB, có chiết khấu và hiệu chỉnh trong chu kỳ; xếp ba phương án lên đường biên hiệu quả.
- Xác minh mô hình bằng một bộ kiểm tra hộp đen chạy lại được, và dùng phân tích kịch bản để thấy giả định nào chi phối kết quả.
Kiến thức cần có
- M00: R cơ bản, đặc biệt là ma trận và phép nhân ma trận, hàm, vòng lặp,
ggplot2. - M01: các loại đánh giá kinh tế, QALY và DALY, chiết khấu, ICER, lấn át tuyệt đối, NMB.
Ví dụ xuyên suốt
Một đoàn hệ giả định người bệnh MDR/RR-TB bắt đầu điều trị ở tuổi 45 (làm tròn từ trung vị tuổi trong một nghiên cứu đa tỉnh tại Việt Nam (T. L. H. Nguyen và c.s. 2026)) được theo dõi đến tuổi 100, với chu kỳ một tháng, theo quan điểm hệ thống y tế. Chi phí tính bằng VNĐ giá năm 2025: giá thuốc từ bảng giá quốc tế (ITPC-EECA 2025; McConnell 2025), giá khám và xét nghiệm theo bảng giá dịch vụ BHYT (Bộ Y tế 2024). Kết quả sức khỏe là QALY, năm sống và DALY; ngưỡng chi phí-hiệu quả là 1 × GDP bình quân đầu người, 125,500,000 VNĐ/QALY, chiết khấu 3%/năm, chung cho cả khóa học.
Kết cục của phác đồ ngắn và phác đồ dài hạn lấy từ số liệu điều trị toàn quốc 2021–2022 (T. M. P. Nguyen và c.s. 2026); hiệu quả của BPaLM lấy bằng cách áp nguy cơ tương đối của kết cục bất lợi trong kết quả cuối của thử nghiệm TB-PRACTECAL (Nyang’wa và c.s. 2024) lên số liệu Việt Nam. Diễn tiến sau điều trị dựa trên một đoàn hệ dài hạn tại Việt Nam (MacLean và c.s. 2026), dữ liệu về lao không được điều trị (Tiemersma và c.s. 2011) và dữ liệu toàn quốc của Georgia về người bỏ điều trị (Adamashvili và c.s. 2022); tử vong nền theo bảng sống Việt Nam của WHO (World Health Organization 2026a); thỏa dụng đo bằng EQ-5D-5L ở người bệnh lao Việt Nam (Vo và c.s. 2025).
D = 18 tháng với phác đồ dài hạn, 9 tháng với phác đồ ngắn và 6 tháng với BPaLM. Bài 1–3 dùng một phiên bản đơn giản với một trạng thái “Đang điều trị”; Bài 4 thay nó bằng chuỗi trạng thái đường hầm như trên. “Điều trị lại” là một đợt phác đồ dài hạn, mô hình hóa bằng một trạng thái duy nhất.
Giới hạn cần nhớ. Tóm tắt bài báo chỉ cho tỷ lệ thành công của phác đồ ngắn và tỷ số chênh của phác đồ dài hạn, nên cơ cấu thất bại, tử vong, bỏ điều trị của từng phác đồ là giả định. Chưa có số liệu BPaLM của Việt Nam; kết cục trong thử nghiệm (tuần 72, gộp nhiều cấu phần) và trong chương trình (cuối điều trị) được định nghĩa khác nhau. Tử vong và quay lại điều trị sau bỏ điều trị lấy từ Georgia giai đoạn 2011–2014; thời gian chờ điều trị lại sau thất bại là giá trị minh họa. Giá thuốc là giá mua quốc tế, chưa gồm phân phối trong nước và nhân lực DOT. Bài 5 cho thấy kết quả nhạy nhất với cách áp RR cho tử vong trong điều trị và với tử vong sau bỏ điều trị. Kết quả của module phản ánh gần đúng bối cảnh Việt Nam hiện nay để học phương pháp; dùng cho quyết định chính sách thì cần dữ liệu chương trình theo từng phác đồ và phân tích bất định (M03).
Bản đồ bài học
| Bài | Chủ đề | Bạn sẽ làm được | Code |
|---|---|---|---|
| 1 | Vì sao cần mô hình chuyển trạng thái | định nghĩa trạng thái, kể cả điều trị lại; viết ma trận chuyển; hiểu giả định Markov | code/l01-state-transition.R |
| 2 | Tỷ suất, xác suất và độ dài chu kỳ | chuyển tỷ lệ, OR, RR, tỷ suất thành xác suất tháng; nguy cơ cạnh tranh; bảng sống, SMR | code/l02-rates-probabilities.R |
| 3 | Vết đoàn hệ, giá trị gắn với trạng thái và chiết khấu | chạy vết, tính chi phí, QALY; chiết khấu; hiệu chỉnh trong chu kỳ và khi nào không hiệu chỉnh | code/l03-cohort-trace.R |
| 4 | Phụ thuộc thời gian | lão hóa; trạng thái đường hầm; trạng thái điều trị lại không nhớ; mảng 3 chiều | code/l04-time-dependence.R |
| 5 | Lần chuyển, đường biên hiệu quả và xác minh | giá trị gắn với sự kiện; ICER, NMB, đường biên; DALY; kịch bản; bộ kiểm tra xác minh | code/l05-results-verification.R |
Mọi hàm mô hình nằm trong code/model.R (chỉ định nghĩa hàm). Mỗi script bài học chạy độc lập từ thư mục module, ví dụ Rscript code/l05-results-verification.R; script nạp ../_shared/R/helpers.R, ../_shared/R/vn_data.R rồi code/model.R, và đọc tham số bằng m02_params().
Tham số
Tham số riêng của module nằm trong params/mdrtb.csv. Tham số không có nguồn là giá trị minh họa và được đánh dấu illustrative = TRUE; cột khoảng thấp–cao dùng cho phân tích độ nhạy ở M03. Khi khoảng thấp–cao có nguồn khác giá trị chính, hoặc là giá trị minh họa, cột Nguồn ghi rõ. Bảng có 55 tham số, trong đó 9 là giá trị minh họa hoặc lựa chọn mô hình hóa: horizon_age, bpalm_death_rule, retx_rate_failed, retx_outcome_rule, relapse_years, d_ae, dur_ae, c_ltfu, c_cured.
| Tên | Tham số | Giá trị | Thấp – cao | Đơn vị | Nguồn |
|---|---|---|---|---|---|
age_start |
Tuổi khi bắt đầu điều trị | 45 | 30 – 55 | năm | (T. L. H. Nguyen và c.s. 2026); khoảng: giá trị minh họa |
horizon_age |
Tuổi kết thúc mô phỏng (khung thời gian trọn đời) | 100 | năm | giá trị minh họa | |
dur_long |
Thời gian điều trị phác đồ dài hạn | 18 | 18 – 20 | tháng | (T. M. P. Nguyen và c.s. 2026) |
dur_short |
Thời gian điều trị phác đồ ngắn toàn thuốc uống có bedaquiline | 9 | 9 – 11 | tháng | (T. M. P. Nguyen và c.s. 2026) |
dur_bpalm |
Thời gian điều trị BPaLM | 6 | tháng | (Nyang’wa và c.s. 2022) | |
vn_n_treated |
Số người bệnh RR-TB được điều trị toàn quốc 2021-2022 | 4,814 | người | (T. M. P. Nguyen và c.s. 2026) | |
who_rr_incidence |
Ước tính số người mắc lao kháng rifampicin mới mỗi năm tại Việt Nam, 2024 | 9,400 | 5,400 – 13,000 | người/năm | (World Health Organization 2026b) |
short_success |
Điều trị thành công, phác đồ ngắn có bedaquiline (BDQ_STR), toàn quốc 2021-2022 | 0.762 | tỷ lệ | (T. M. P. Nguyen và c.s. 2026) | |
aor_long_vs_bdqstr |
Tỷ số chênh đã điều chỉnh (aOR) của kết cục bất lợi: phác đồ dài hạn so với phác đồ ngắn có bedaquiline | 1.56 | 1.32 – 1.84 | tỷ số chênh | (T. M. P. Nguyen và c.s. 2026) |
vn_success |
Điều trị thành công, toàn quốc 2021-2022 (mọi phác đồ) | 0.712 | tỷ lệ | (T. M. P. Nguyen và c.s. 2026) | |
vn_failure |
Thất bại điều trị, toàn quốc 2021-2022 (mọi phác đồ) | 0.036 | tỷ lệ | (T. M. P. Nguyen và c.s. 2026) | |
vn_death |
Tử vong trong điều trị, toàn quốc 2021-2022 (mọi phác đồ) | 0.078 | tỷ lệ | (T. M. P. Nguyen và c.s. 2026) | |
vn_ltfu |
Bỏ điều trị, toàn quốc 2021-2022 (mọi phác đồ) | 0.133 | tỷ lệ | (T. M. P. Nguyen và c.s. 2026) | |
vn_not_eval |
Không được đánh giá, toàn quốc 2021-2022 (mọi phác đồ) | 0.042 | tỷ lệ | (T. M. P. Nguyen và c.s. 2026) | |
death_unreported |
Tỷ lệ ca tử vong trong điều trị không được báo cáo cho Chương trình Chống lao | 0.43 | tỷ lệ | (MacLean và c.s. 2026) | |
unf_bpalm_trial |
Kết cục bất lợi sau 72 tuần, nhóm BPaLM (mITT, kết quả cuối) | 0.117 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
unf_soc_trial |
Kết cục bất lợi sau 72 tuần, nhóm chăm sóc chuẩn (mITT, kết quả cuối) | 0.409 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
unf_bpalm_pp |
Kết cục bất lợi sau 72 tuần, nhóm BPaLM (per-protocol, kết quả cuối) | 0.04 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
unf_soc_pp |
Kết cục bất lợi sau 72 tuần, nhóm chăm sóc chuẩn (per-protocol, kết quả cuối) | 0.072 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
death_bpalm_trial |
Tử vong đến tuần 72, nhóm BPaLM (mITT) | 0 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
death_soc_trial |
Tử vong đến tuần 72, nhóm chăm sóc chuẩn (mITT) | 0.0365 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
bpalm_death_rule |
Cách áp RR cho tử vong trong điều trị BPaLM (mã 0, 1, 2) | 0 | 0 – 2 | mã | giá trị minh họa |
ae_bpalm |
Biến cố bất lợi độ 3 trở lên hoặc nghiêm trọng, BPaLM | 0.23 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
ae_soc |
Biến cố bất lợi độ 3 trở lên hoặc nghiêm trọng, chăm sóc chuẩn | 0.48 | tỷ lệ | (Nyang’wa và c.s. 2024) | |
cf_untreated |
Tỷ lệ tử vong 10 năm của lao phổi AFB dương không điều trị | 0.7 | 0.53 – 0.86 | tỷ lệ | (Tiemersma và c.s. 2011) |
dur_untreated |
Thời gian mắc lao không điều trị (đến khi tự khỏi hoặc tử vong) | 3 | 2 – 4 | năm | (Tiemersma và c.s. 2011); khoảng: giá trị minh họa |
ltfu_mort_rate |
Tỷ suất tử vong mọi nguyên nhân sau khi bỏ điều trị lao kháng thuốc | 0.052 | 0.044 – 0.061 | mỗi người-năm | (Adamashvili và c.s. 2022) |
ltfu_returned_prop |
Tỷ lệ người bỏ điều trị đã quay lại điều trị trong thời gian theo dõi | 0.304 | tỷ lệ | (Adamashvili và c.s. 2022) | |
ltfu_culture_converted |
Tỷ lệ người bỏ điều trị đã âm hóa nuôi cấy trước khi bỏ | 0.63 | tỷ lệ | (Adamashvili và c.s. 2022) | |
retx_rate_ltfu |
Tỷ suất quay lại điều trị sau khi bỏ điều trị | 0.079 | mỗi người-năm | (Adamashvili và c.s. 2022) | |
retx_rate_failed |
Tỷ suất bắt đầu điều trị lại sau thất bại | 4 | 1 – 12 | mỗi người-năm | giá trị minh họa |
retx_outcome_rule |
Kết cục của đợt điều trị lại (mã 0, 1) | 0 | 0 – 1 | mã | giá trị minh họa |
retx_geo_success |
Điều trị thành công khi quay lại sau bỏ điều trị (Georgia 2011-2014) | 0.339 | tỷ lệ | (Adamashvili và c.s. 2022) | |
retx_geo_failure |
Thất bại khi quay lại sau bỏ điều trị (Georgia 2011-2014) | 0.073 | tỷ lệ | (Adamashvili và c.s. 2022) | |
retx_geo_death |
Tử vong khi quay lại sau bỏ điều trị (Georgia 2011-2014) | 0.333 | tỷ lệ | (Adamashvili và c.s. 2022) | |
retx_geo_ltfu |
Bỏ điều trị lần nữa khi quay lại (Georgia 2011-2014) | 0.255 | tỷ lệ | (Adamashvili và c.s. 2022) | |
relapse_rate |
Tỷ suất có đợt lao tiếp theo sau điều trị | 0.0103 | mỗi người-năm | (MacLean và c.s. 2026) | |
relapse_years |
Số năm sau điều trị có mô hình hóa tái phát tường minh | 0 | 0 – 5 | năm | giá trị minh họa |
smr_post |
Tỷ số tử vong chuẩn hóa (SMR) sau điều trị | 3 | 2.21 – 3.84 | tỷ số | (MacLean và c.s. 2026); khoảng: (Romanowski và c.s. 2019) |
smr_rom_all |
SMR gộp so với dân số chung, mọi người đã điều trị lao | 2.91 | 2.21 – 3.84 | tỷ số | (Romanowski và c.s. 2019) |
smr_rom_cured |
SMR gộp so với dân số chung, chỉ người đã khỏi hoặc hoàn thành điều trị | 3.76 | 3.04 – 4.66 | tỷ số | (Romanowski và c.s. 2019) |
val_died_prop |
Tỷ lệ tử vong từ khi vào nghiên cứu đến hết theo dõi (đích thẩm định) | 0.165 | tỷ lệ | (MacLean và c.s. 2026) | |
val_mort_rate |
Tỷ suất tử vong từ khi vào nghiên cứu (đích thẩm định) | 0.0426 | mỗi người-năm | (MacLean và c.s. 2026) | |
val_followup_years |
Thời gian theo dõi trung vị của đoàn hệ MacLean | 4.3 | năm | (MacLean và c.s. 2026) | |
u_tb |
Thỏa dụng khi mắc lao hoặc đang điều trị | 0.83 | 0.82 – 0.85 | thỏa dụng | (Vo và c.s. 2025) |
u_post |
Thỏa dụng sau điều trị | 0.9 | 0.89 – 0.92 | thỏa dụng | (Vo và c.s. 2025) |
d_ae |
Mức giảm thỏa dụng khi có biến cố bất lợi nặng | 0.15 | 0.05 – 0.25 | thỏa dụng | giá trị minh họa |
dur_ae |
Thời gian chịu ảnh hưởng của một biến cố bất lợi nặng | 1 | 0.5 – 2 | tháng | giá trị minh họa |
dw_tb |
Trọng số bệnh tật của lao không nhiễm HIV | 0.333 | 0.224 – 0.454 | trọng số | (Tomeny và c.s. 2024) |
c_ltfu |
Chi phí y tế mỗi tháng khi bỏ điều trị | 0 | 0 – 500,000 | VNĐ/tháng (2025) | giá trị minh họa |
c_cured |
Chi phí y tế mỗi tháng sau khi khỏi | 0 | 0 – 200,000 | VNĐ/tháng (2025) | giá trị minh họa |
c_hosp_usd |
Chi phí trực tiếp y tế một đợt nằm viện vì lao kháng thuốc (trung vị) | 707.24 | 429.32 – 1,328.36 | USD (2024) | (Ngo và c.s. 2026) |
hosp_mono_share |
Tỷ lệ người bệnh kháng đơn thuốc trong mẫu chi phí nằm viện | 0.58 | tỷ lệ | (Ngo và c.s. 2026) | |
hosp_drug_share |
Tỷ trọng thuốc và dịch truyền trong chi phí nằm viện | 0.38 | tỷ lệ | (Ngo và c.s. 2026) | |
fx_vnd_usd |
Tỷ giá quy đổi dùng trong nghiên cứu gốc | 25,000 | VNĐ/USD (2024) | (Ngo và c.s. 2026) |
Các giá trị chung của khóa học (ngưỡng, tỷ lệ chiết khấu, giá thuốc, giá dịch vụ, CPI) không nằm trong bảng trên: complete_params() lấy chúng từ kb/_shared và tính các chi phí của module như sau.
| Tên | Giá trị dẫn xuất | Giá trị | Đơn vị | Từ dữ liệu chung | Nguồn |
|---|---|---|---|---|---|
wtp |
Ngưỡng chi phí-hiệu quả (1 × GDP bình quân đầu người) | 125,500,000 | VNĐ/QALY | vn_context: wtp |
(Ong và c.s. 2026) |
disc_rate |
Tỷ lệ chiết khấu hằng năm (chi phí và kết quả) | 0.0300 | mỗi năm | vn_context: disc_rate |
(Ong và c.s. 2026) |
c_drug_long |
Chi phí thuốc phác đồ dài hạn mỗi tháng (giá cả đợt / thời gian) | 676,964 | VNĐ/tháng | tb_regimen_longer_18m |
(McConnell 2025) |
c_drug_short |
Chi phí thuốc phác đồ ngắn mỗi tháng (giá cả đợt / thời gian) | 857,303 | VNĐ/tháng | tb_regimen_9m_standard |
(McConnell 2025) |
c_drug_bpalm |
Chi phí thuốc BPaLM mỗi tháng (giá cả đợt / thời gian) | 1,181,913 | VNĐ/tháng | tb_regimen_bpalm_6m |
(ITPC-EECA 2025) |
c_monitor |
Chi phí theo dõi mỗi tháng điều trị (khám, soi đờm, nuôi cấy, công thức máu, chức năng gan - thận) | 565,100 | VNĐ/tháng | visit_outpatient + test_afb_smear + test_mtb_culture_liquid + test_cbc + test_liver_renal_panel |
(Bộ Y tế 2024) |
c_eot |
Chi phí đánh giá cuối điều trị (khám, X-quang ngực, soi đờm, nuôi cấy) | 499,100 | VNĐ/lần | visit_outpatient + test_chest_xray + test_afb_smear + test_mtb_culture_liquid |
(Bộ Y tế 2024) |
c_failed |
Chi phí mỗi tháng ở trạng thái Thất bại (một lượt khám) | 50,600 | VNĐ/tháng | visit_outpatient |
(Bộ Y tế 2024) |
hosp_inflator |
Hệ số quy giá năm 2024 về năm 2025 (CPI) | 1.0331 | tỷ số | inflate_vnd(1, 2024) |
(World Bank 2026) |
Gói R
Mô hình chỉ dùng base R (stats, utils). Hình vẽ dùng ggplot2; bảng trong bài dùng knitr. Module được kiểm tra với R version 4.5.3 (2026-03-11) và ggplot2 4.0.2. Không cần gói mô hình chuyên dụng nào; các bài hướng dẫn mô hình Markov đoàn hệ bằng R của nhóm DARTH là tài liệu đọc thêm tốt (Alarid-Escudero và c.s. 2023b, 2023a).