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

第 7 課:CONDITION_OCCURRENCE — 診斷與病理學

記錄診斷、症狀、病理徵兆、condition_concept_id vs source_value、condition_status(入院/主要/次要),連結到就診和提供者,與觀察表區分。

🏗️ 建築 — 第 7 課 CONDITION_OCCURRENCE 條件 診斷與病理學 初學者的 OMOP CDM 5.4 — 從頭到尾了解 第 3 部分:關鍵臨床事件 亞洲開發網

ICD-10 → CONDITION_OCCURRENCE 中的 SNOMED 映射過程

簡介

CONDITION_OCCURRENCE 記錄醫生為病人所記錄的所有醫療診斷、症狀和徵兆。這通常是 OMOP CDM 中分析最多的表格 - 因為醫學研究通常從以下問題開始:“誰得到什麼?”


1.表結構

專欄類型必填說明
condition_occurrence_id整數✅ PK唯一ID
person_id整數✅ FK病人
condition_concept_id整數✅標準概念(SNOMED)
condition_start_date日期✅診斷開始日期
condition_start_datetime日期時間日期與時間
condition_end_date日期診斷結束日期
condition_end_datetime日期時間結束日期和時間
condition_type_concept_id整數✅資料來源
condition_status_concept_id整數狀態(小學、入學...)
stop_reasonVARCHAR(20)停止診斷的原因
provider_id整數氟克診斷醫生
visit_occurrence_id整數氟克相關訪問
visit_detail_id整數氟克訪問詳情(哪個部門)
condition_source_valueVARCHAR(50)原始碼(例如“E11”)
condition_source_concept_id整數原創概念
condition_status_source_valueVARCHAR(50)原狀態

2. CONDITION_OCCURRENCE 中儲存了什麼?

2.1。應該保存

類型範例詞彙
疾病診斷第 2 型糖尿病、肺炎SNOMED CT
症狀發燒、腹痛、咳嗽SNOMED CT
臨床症狀腳腫、黃疸SNOMED CT
鑑別診斷疑似結核病SNOMED CT

2.2。不要保存(保存在另一個表中)

類型目的地表原因
“糖尿病史”觀察領域=觀察
“沒有過敏”觀察缺席→觀察
“體重指數 = 28”測量領域=測量
藥物副作用狀況 + 藥物暴露ADR的條件,藥物引起的藥物

3.condition_status_concept_id — 診斷狀態

概念 ID狀態意義
3290232902初步診斷初步診斷
32908二次診斷二次診斷
3290332903承認診斷入院診斷
3290432904出院診斷出院時診斷
3290632906臨時診斷暫時診斷
3290732907確診確診
-- Ví dụ: BN nhập viện
-- Chẩn đoán nhập viện: Nghi lao phổi (provisional)
INSERT INTO condition_occurrence VALUES (
    70001, 100001, 255848,       -- SNOMED: Pneumonia
    '2024-06-10', NULL,
    '2024-06-20', NULL,
    32817,                        -- EHR
    32903,                        -- Admitting diagnosis
    NULL, 5001, 50001, NULL,
    'J18.9', 0,                   -- ICD-10: Pneumonia, unspecified
    'admitting'
);

-- Chẩn đoán xuất viện: Viêm phổi do phế cầu (confirmed)
INSERT INTO condition_occurrence VALUES (
    70002, 100001, 257315,       -- SNOMED: Pneumococcal pneumonia
    '2024-06-10', NULL,
    '2024-06-20', NULL,
    32817,                        -- EHR
    32904,                        -- Discharge diagnosis
    NULL, 5001, 50001, NULL,
    'J13', 0,                     -- ICD-10
    'discharge'
);

4. 越南 ICD-10 資料的 ETL

4.1。測繪流程

  HIS: ma_benh = 'E11.65'  (ICD-10-CM)
       ten_benh = 'ĐTĐ type 2 có biến chứng mạch máu ngoại vi'
       │
       │ Bước 1: Tìm source concept
       ↓
  SOURCE CONCEPT: concept_id = 45591837
       vocabulary_id = ICD10CM
       concept_code = 'E11.65'
       │
       │ Bước 2: Tìm Standard Concept (Maps to)
       ↓
  STANDARD CONCEPT: concept_id = 201826
       vocabulary_id = SNOMED
       concept_name = 'Type 2 diabetes mellitus'
       domain_id = 'Condition'
-- SQL ETL
SELECT
    ROW_NUMBER() OVER() AS condition_occurrence_id,
    pm.person_id,
    COALESCE(cr.concept_id_2, 0) AS condition_concept_id,
    cd.ngay_chandoan AS condition_start_date,
    NULL AS condition_end_date,
    32817 AS condition_type_concept_id,
    CASE cd.loai_chandoan
        WHEN 'CHINH' THEN 32902   -- Primary
        WHEN 'PHU'   THEN 32908   -- Secondary
        ELSE 0
    END AS condition_status_concept_id,
    cd.ma_icd10 AS condition_source_value,
    COALESCE(c_source.concept_id, 0) AS condition_source_concept_id
FROM chandoan_his cd
JOIN person_mapping pm ON cd.ma_bn = pm.source_id
LEFT JOIN concept c_source
    ON cd.ma_icd10 = c_source.concept_code
    AND c_source.vocabulary_id = 'ICD10CM'
LEFT JOIN concept_relationship cr
    ON c_source.concept_id = cr.concept_id_1
    AND cr.relationship_id = 'Maps to'
LEFT JOIN concept c_std
    ON cr.concept_id_2 = c_std.concept_id
    AND c_std.standard_concept = 'S';

4.2。越南特定數據處理

問題解決方案
ICD-10-VN 與 ICD-10-CM 不同透過 SOURCE_TO_CONCEPT_MAP
BV內部程式碼Usagi 繪圖工具
缺少結束日期條件結束日期 = NULL(有效)
1 ICD 地圖許多 SNOMED選擇最適合的理念

5. 區分條件與觀察

標準CONDITION_OCCURRENCE條件發生觀察
內容目前生病/正在治療史前、生活方式、記錄
範例“第2型糖尿病”“糖尿病家族史”
域名條件觀察
標準詞彙SNOMED CTSNOMED CT
**什麼時候? **活動性疾病記錄資訊

規則: 請務必檢查 Athena 上 Standard Concept 的 domain_id。如果域 =“觀察”,則保存到“觀察”,即使來源是 ICD-10。


6.流行SQL分析

-- Top 10 chẩn đoán phổ biến nhất
SELECT
    c.concept_name AS condition_name,
    COUNT(DISTINCT co.person_id) AS patient_count,
    COUNT(*) AS record_count
FROM condition_occurrence co
JOIN concept c ON co.condition_concept_id = c.concept_id
WHERE co.condition_concept_id != 0
GROUP BY c.concept_name
ORDER BY patient_count DESC
LIMIT 10;

-- Tỉ lệ mắc bệnh theo giới tính
SELECT
    g.concept_name AS gender,
    c.concept_name AS condition_name,
    COUNT(DISTINCT co.person_id) AS patients
FROM condition_occurrence co
JOIN person p ON co.person_id = p.person_id
JOIN concept g ON p.gender_concept_id = g.concept_id
JOIN concept c ON co.condition_concept_id = c.concept_id
WHERE co.condition_concept_id = 201826  -- Type 2 DM
GROUP BY g.concept_name, c.concept_name;

-- Comorbidity: BN tiểu đường có tăng huyết áp?
SELECT
    COUNT(DISTINCT co_dm.person_id) AS dm_patients,
    COUNT(DISTINCT co_ht.person_id) AS dm_with_hypertension,
    ROUND(
        COUNT(DISTINCT co_ht.person_id) * 100.0 /
        NULLIF(COUNT(DISTINCT co_dm.person_id), 0), 1
    ) AS comorbidity_pct
FROM condition_occurrence co_dm
LEFT JOIN condition_occurrence co_ht
    ON co_dm.person_id = co_ht.person_id
    AND co_ht.condition_concept_id IN (
        SELECT descendant_concept_id
        FROM concept_ancestor
        WHERE ancestor_concept_id = 320128  -- Essential hypertension
    )
WHERE co_dm.condition_concept_id IN (
    SELECT descendant_concept_id
    FROM concept_ancestor
    WHERE ancestor_concept_id = 201826  -- Type 2 DM
);

總結

  1. CONDITION_OCCURRENCE = 診斷、症狀、病理徵象
  2. condition_concept_id 使用標準概念 (SNOMED CT)
  3. 病情狀態:主要、次要、入院、出院
  4. 三列樹:concept_id / source_value / source_concept_id
  5. 區分 病情(當前疾病)與觀察(歷史、記錄)
  6. ETL VN:ICD-10-VN → 源概念 → 映射到 → 標準 SNOMED

下一篇文章: DRUG_EXPOSURE — OMOP CDM 如何記錄藥物、處方和疫苗。


參考文獻