Chuyển đến nội dung chính

Bài 13: DEATH, EPISODE & EPISODE_EVENT

Ghi nhận tử vong (DEATH), quá trình bệnh lý dài hạn (EPISODE — mới CDM 5.4) như điều trị ung thư, và liên kết event trong episode (EPISODE_EVENT).

🏗️ Kiến trúc — Bài 13 DEATH, EPISODE & EPISODE_EVENT OMOP CDM 5.4 cho Người mới — Hiểu từ A đến Z Phần 4: Bảng lâm sàng mở rộng xdev.asia

Giới thiệu

Ba bảng cuối cùng trong nhóm Clinical Data: DEATH ghi nhận sự kiện tử vong, EPISODE (mới trong CDM 5.4) ghi nhận quá trình bệnh lý/điều trị dài hạn, và EPISODE_EVENT liên kết các sự kiện thuộc một episode. EPISODE là addition đáng chú ý nhất của CDM 5.4, đặc biệt quan trọng cho nghiên cứu ung thư.


1. DEATH — Ghi nhận tử vong

1.1. Cấu trúc bảng

CộtKiểuBắt buộcMô tả
person_idINTEGER✅ PK/FKBệnh nhân (1 record/BN)
death_dateDATE✅Ngày tử vong
death_datetimeDATETIMENgày giờ tử vong
death_type_concept_idINTEGER✅Nguồn dữ liệu
cause_concept_idINTEGERNguyên nhân tử vong (SNOMED)
cause_source_valueVARCHAR(50)ICD gốc
cause_source_concept_idINTEGERConcept gốc

1.2. Đặc điểm quan trọng

  • 1 record duy nhất per person — nếu có nhiều nguồn, chọn đáng tin nhất
  • person_id vừa là PK vừa là FK → không có death_id riêng
  • cause_concept_id: dùng SNOMED cho nguyên nhân chính

1.3. death_type_concept_id

Concept IDNguồnMô tả
32817EHRGhi nhận từ HIS
32810ClaimDữ liệu BHXH
32885Death certificateGiấy chứng tử
32886National Death IndexSổ bộ quốc gia

1.4. Ví dụ

-- BN tử vong do nhồi máu cơ tim cấp
INSERT INTO death (
    person_id, death_date,
    death_type_concept_id,
    cause_concept_id,
    cause_source_value,
    cause_source_concept_id
) VALUES (
    100001, '2024-06-20',
    32885,                        -- Death certificate
    4329847,                      -- SNOMED: AMI
    'I21.9',                      -- ICD-10
    45572161                      -- ICD10CM concept
);

1.5. SQL phân tích

-- Top 10 nguyên nhân tử vong
SELECT
    c.concept_name AS cause_of_death,
    COUNT(*) AS death_count,
    ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 1) AS pct
FROM death d
JOIN concept c ON d.cause_concept_id = c.concept_id
WHERE d.cause_concept_id != 0
GROUP BY c.concept_name
ORDER BY death_count DESC
LIMIT 10;

-- Tỉ lệ tử vong sau nhập viện ICU
SELECT
    ROUND(
        COUNT(DISTINCT d.person_id) * 100.0 /
        NULLIF(COUNT(DISTINCT v.person_id), 0), 1
    ) AS mortality_rate_pct
FROM visit_occurrence v
LEFT JOIN death d ON v.person_id = d.person_id
    AND d.death_date BETWEEN v.visit_start_date
    AND v.visit_start_date + INTERVAL '30 days'
WHERE v.visit_concept_id = 32037;  -- ICU visit

2. EPISODE — Quá trình bệnh lý (CDM 5.4 mới)

2.1. Tại sao cần EPISODE?

Trước CDM 5.4, không có cách thể hiện "quá trình điều trị ung thư" — các sự kiện (chẩn đoán, hóa trị, xạ trị, phẫu thuật) nằm rải rác ở nhiều bảng. EPISODE gom chúng lại thành một "câu chuyện" hoàn chỉnh.

  Trước CDM 5.4:

  CONDITION: Ung thư phổi ─────────── (rời rạc)
  PROCEDURE: Sinh thiết phổi ────────── (rời rạc)
  DRUG:      Cisplatin cycle 1 ──────── (rời rạc)
  DRUG:      Cisplatin cycle 2 ──────── (rời rạc)
  PROCEDURE: Phẫu thuật cắt thùy phổi ─ (rời rạc)

  Sau CDM 5.4:

  EPISODE: "Điều trị ung thư phổi giai đoạn 3"
       │
       ├── EPISODE_EVENT → CONDITION (chẩn đoán)
       ├── EPISODE_EVENT → PROCEDURE (sinh thiết)
       ├── EPISODE_EVENT → DRUG (hóa trị cycle 1)
       ├── EPISODE_EVENT → DRUG (hóa trị cycle 2)
       └── EPISODE_EVENT → PROCEDURE (phẫu thuật)

2.2. Cấu trúc bảng EPISODE

CộtKiểuBắt buộcMô tả
episode_idBIGINT✅ PKID duy nhất
person_idINTEGER✅ FKBệnh nhân
episode_concept_idINTEGER✅Loại episode
episode_start_dateDATE✅Ngày bắt đầu
episode_start_datetimeDATETIME
episode_end_dateDATENgày kết thúc
episode_end_datetimeDATETIME
episode_parent_idBIGINTEpisode cha (phân cấp)
episode_numberINTEGERSố thứ tự
episode_object_concept_idINTEGER✅Đối tượng episode
episode_type_concept_idINTEGER✅Nguồn dữ liệu
episode_source_valueVARCHAR(50)Mã gốc
episode_source_concept_idINTEGER

2.3. episode_concept_id — Loại Episode

Concept IDEpisode TypeVí dụ
32528Disease first occurrenceUng thư phổi lần đầu
32529Disease recurrenceUng thư tái phát
32531Treatment regimenPhác đồ Cisplatin-Etoposide
32532Treatment cycleCycle 1, Cycle 2...

2.4. Ví dụ: Điều trị ung thư phổi

-- Episode cha: Bệnh ung thư phổi
INSERT INTO episode (
    episode_id, person_id,
    episode_concept_id,
    episode_start_date, episode_end_date,
    episode_parent_id,
    episode_object_concept_id,
    episode_type_concept_id
) VALUES (
    200001, 100001,
    32528,                            -- Disease first occurrence
    '2024-01-15', NULL,               -- Chưa kết thúc
    NULL,                             -- Không có cha
    4311499,                          -- SNOMED: Lung cancer
    32817                             -- EHR
);

-- Episode con: Phác đồ hóa trị
INSERT INTO episode (
    episode_id, person_id,
    episode_concept_id,
    episode_start_date, episode_end_date,
    episode_parent_id,
    episode_number,
    episode_object_concept_id,
    episode_type_concept_id
) VALUES (
    200002, 100001,
    32531,                            -- Treatment regimen
    '2024-02-01', '2024-06-30',
    200001,                           -- Thuộc episode ung thư phổi
    1,
    35804410,                         -- Cisplatin regimen
    32817
);

-- Episode con: Cycle 1
INSERT INTO episode (
    episode_id, person_id,
    episode_concept_id,
    episode_start_date, episode_end_date,
    episode_parent_id,
    episode_number,
    episode_object_concept_id,
    episode_type_concept_id
) VALUES (
    200003, 100001,
    32532,                            -- Treatment cycle
    '2024-02-01', '2024-02-21',
    200002,                           -- Thuộc phác đồ
    1,                                -- Cycle 1
    35804410,
    32817
);

3. EPISODE_EVENT — Liên kết sự kiện

3.1. Cấu trúc bảng

CộtKiểuBắt buộcMô tả
episode_idBIGINT✅ FKEpisode
event_idBIGINT✅ID của sự kiện
episode_event_field_concept_idINTEGER✅Bảng chứa event

3.2. episode_event_field_concept_id

Concept IDBảng sự kiện
1147127condition_occurrence.condition_occurrence_id
1147094drug_exposure.drug_exposure_id
1147082procedure_occurrence.procedure_occurrence_id
1147138measurement.measurement_id
1147165device_exposure.device_exposure_id

3.3. Ví dụ: Gắn events vào Cycle 1

-- Chẩn đoán ung thư → Episode chẩn đoán
INSERT INTO episode_event VALUES (
    200001,                           -- Episode: lung cancer
    70010,                            -- condition_occurrence_id
    1147127                           -- condition_occurrence table
);

-- Hóa trị Cisplatin → Episode Cycle 1
INSERT INTO episode_event VALUES (
    200003,                           -- Episode: Cycle 1
    80010,                            -- drug_exposure_id (Cisplatin)
    1147094                           -- drug_exposure table
);

-- XN máu trước hóa trị → Episode Cycle 1
INSERT INTO episode_event VALUES (
    200003,
    110020,                           -- measurement_id (CBC)
    1147138                           -- measurement table
);

4. Ứng dụng EPISODE trong nghiên cứu

-- Tìm BN ung thư phổi có >= 4 cycle hóa trị
SELECT
    e_disease.person_id,
    c_disease.concept_name AS cancer_type,
    COUNT(e_cycle.episode_id) AS total_cycles
FROM episode e_disease
JOIN concept c_disease
    ON e_disease.episode_object_concept_id = c_disease.concept_id
JOIN episode e_regimen
    ON e_disease.episode_id = e_regimen.episode_parent_id
    AND e_regimen.episode_concept_id = 32531  -- Treatment regimen
JOIN episode e_cycle
    ON e_regimen.episode_id = e_cycle.episode_parent_id
    AND e_cycle.episode_concept_id = 32532    -- Treatment cycle
WHERE e_disease.episode_concept_id = 32528    -- First occurrence
  AND c_disease.concept_id = 4311499          -- Lung cancer
GROUP BY e_disease.person_id, c_disease.concept_name
HAVING COUNT(e_cycle.episode_id) >= 4;

-- Timeline điều trị 1 BN
SELECT
    e.episode_number,
    ec.concept_name AS episode_type,
    e.episode_start_date,
    e.episode_end_date,
    oc.concept_name AS episode_object
FROM episode e
JOIN concept ec ON e.episode_concept_id = ec.concept_id
JOIN concept oc ON e.episode_object_concept_id = oc.concept_id
WHERE e.person_id = 100001
ORDER BY e.episode_start_date, e.episode_number;

Tổng kết

  1. DEATH: 1 record/person, nguyên nhân tử vong dùng SNOMED
  2. EPISODE (CDM 5.4 mới): quá trình bệnh lý/điều trị, hỗ trợ phân cấp cha-con
  3. EPISODE_EVENT: liên kết events từ nhiều bảng vào episode
  4. EPISODE thiết kế chủ yếu cho oncology nhưng áp dụng được cho mọi bệnh mạn tính
  5. Cấu trúc: Disease → Treatment Regimen → Treatment Cycle → Events

Bài tiếp theo: Bắt đầu Phần 5 — Standardized Vocabularies, hệ thống từ điển chuẩn hóa.


Tài liệu tham khảo