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

レッスン 7: CONDITION_OCCURRENCE — 診断と病理学

診断、症状、病理学的兆候、condition_concept_id と source_value、condition_status (入院中/一次/二次)、訪問およびプロバイダーへのリンクを記録し、OBSERVATION テーブルと区別します。

🏗️ アーキテクチャ — レッスン 7 CONDITION_OCCURRENCE 診断と病理学 初心者向け OMOP CDM 5.4 — A to Z を理解する パート 3: 主要な臨床事象 xdev.asia

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整数FK診断医
visit_occurrence_id整数FK関連する訪問
visit_detail_id整数FK受診詳細(何科)
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.保存しないでください (別のテーブルに保存します)

タイプ宛先テーブル理由
「糖尿病の歴史」観察ドメイン = 観察
「アレルギーはありません」観察不在→観察
「BMI = 28」測定ドメイン = 測定
薬の副作用状態 + 薬物暴露ADRの条件、薬物を引き起こす薬物

3.condition_status_concept_id — 診断ステータス

コンセプトIDステータス意味
32902一次診断一次診断
32908二次診断二次診断
32903診断を認める入院時診断
32904放電診断退院時の診断
32906仮診断仮診断
32907確定診断確定診断
-- 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 内部コードうさぎマッピングツール
終了日がありません条件終了日 = NULL (有効)
1 ICD マップの多くの SNOMED最適なコンセプトを選択

5. 状態と観察を区別する

基準条件発生観察
内容現在の病気・治療中先史時代、ライフスタイル、記録
例「2型糖尿病」「糖尿病の家族歴」
ドメイン条件観察
標準語彙SNOMED CTSNOMED CT
いつ?活動性疾患レコード情報

ルール: Athena 上の標準コンセプトの domain_id を常に確認してください。ドメイン = "Observation" の場合、ソースが ICD-10 であっても、OBSERVATION に保存されます。


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. condition_status: 一次、二次、入院中、退院
  4. 3 つの列のツリー:concept_id /source_value /source_concept_id
  5. 区別 CONDITION (現在の病気) vs OBSERVATION (病歴、記録)
  6. ETL VN: ICD-10-VN → ソースコンセプト → マップ先 → 標準 SNOMED

次の記事: DRUG_EXPOSURE — OMOP CDM が医薬品、処方箋、ワクチンを記録する方法。


参考文献