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

レッスン 5: OBSERVATION_PERIOD — 患者モニタリング期間

OBSERVATION_PERIOD の意味、このテーブルが必要な理由、ソース データから開始日/終了日を決定する方法、発生率/有病率の計算、ETL 規則に与える影響。

🏗️ アーキテクチャ — レッスン 5 OBSERVATION_PERIOD — 約 患者のフォローアップ時間 初心者向け OMOP CDM 5.4 — A to Z を理解する パート 2: 人物と訪問 — データ プラットフォーム xdev.asia

はじめに

OBSERVATION_PERIOD は多くの初心者が見落としがちなテーブルですが、非常に重要です。この表は、「この患者に関するデータはいつから入手できましたか?」 という質問に答えます。

患者に OBSERVATION_PERIOD がない場合、「患者は病気ではない」のか、「患者は病気だが検査に来ていない(したがってデータがない)」のかを区別することができません。


1. OBSERVATION_PERIOD が必要な理由は何ですか?

###1.1. 「不在vs行方不明」の問題

  Bệnh nhân Lan:
  ├── 2020-01-10: Khám → chẩn đoán Tiểu đường
  ├── 2020-06-15: Tái khám
  ├── 2021-01-20: Tái khám
  ├── (im lặng 2 năm)
  └── 2023-03-10: Nhập viện → Suy tim

  Câu hỏi: Từ 2021-01 đến 2023-03, Lan có khỏe mạnh
  hay chuyển sang bệnh viện khác?

OBSERVATION_PERIOD は、患者がデータ ソースを「表示」していた時間を示します。

  Observation Period:
  ┌──────────────────────────────────────────────────────────────┐
  │  2020-01-10 ════════════════════════ 2021-12-31             │
  │  (Có BHYT tại BV này)                                       │
  └──────────────────────────────────────────────────────────────┘
  
  ┌──────────────────────────────────────────────────────────────┐
  │  2023-01-01 ════════════════════════ 2024-06-30             │
  │  (Quay lại BV, có BHYT mới)                                │
  └──────────────────────────────────────────────────────────────┘

  → Trong observation period: không có Condition = bệnh nhân KHÔNG bị
  → Ngoài observation period: không có Condition = KHÔNG BIẾT

###1.2.分析への影響

分析OPなしはいOP
発生率不正確 (分母が不正確)正しい (危険な作業時間を把握)
有病率間違っています (カウントが不十分です)True (総人口がわかっている)
生存分析検閲時間が分からないイベントまでの正確な時間
コホートエントリーデータの外部から患者を選択できるOP で BN のみを選択

2. テーブル構造

コラムタイプ必須説明
observation_period_id整数✅PK固有の ID
person_id整数✅FK人物 リファレンス
observation_period_start_date日付✅データ開始日
observation_period_end_date日付✅データの終了日
period_type_concept_id整数✅原点がOPを決定

###2.1. period_type_concept_id

コンセプトIDコンセプト名説明
32817EHREHR 記録から判断
32810クレーム保険金請求/健康保険という言葉を決める
44814724医療現場での出会いをカバーする期間出会いから
44814725アルゴリズムによって推定される期間推論アルゴリズム

3. 観測期間の決定方法

###3.1.請求/保険データから

  BHXH cấp thẻ BHYT:
  ┌─────────────────────────────────────────┐
  │ Mã thẻ: DN-123456  Hiệu lực: 01/2020   │
  │ BV đăng ký: Chợ Rẫy  Hết hạn: 12/2024  │
  └─────────────────────────────────────────┘

  → observation_period_start_date = 2020-01-01
  → observation_period_end_date   = 2024-12-31
  → period_type_concept_id = 32810 (Claim)

###3.2. EHRデータより

明確な保険情報がない場合は、最初から最後の出会い/訪問までとして数えます。

-- Tính OP từ visits
SELECT
    person_id,
    MIN(visit_start_date) AS observation_period_start_date,
    MAX(COALESCE(visit_end_date, visit_start_date))
        AS observation_period_end_date,
    32817 AS period_type_concept_id  -- EHR
FROM visit_occurrence
GROUP BY person_id;

###3.3.患者は複数の観察期間を持つことができます

  Bệnh nhân person_id = 100001:

  OP 1: ═══════════ (2018-01-01 → 2019-06-30)
          Có BHYT tại BV A

                  Gap (6 tháng, không có dữ liệu)

  OP 2: ═══════════════════ (2020-01-01 → 2024-12-31)
          Có BHYT mới tại BV A

  → 2 records trong OBSERVATION_PERIOD
INSERT INTO observation_period VALUES
    (1, 100001, '2018-01-01', '2019-06-30', 32810),
    (2, 100001, '2020-01-01', '2024-12-31', 32810);

4. 重要なルール

###4.1.すべての臨床事象は観察期間内に発生する必要があります

  OP: ════════════════════════════════════
  2020-01-01                        2024-12-31

      ✅ Visit 2020-03-15 (trong OP)
      ✅ Condition 2022-06-10 (trong OP)
      ❌ Drug Exposure 2019-05-10 (NGOÀI OP!) → Cảnh báo data quality

ACHILLES データ品質チェック: OBSERVATION_PERIOD 以外の臨床イベントがあるかどうかを確認します。

###4.2.観測期間は重複できません

同じ person_id が与えられた場合、OP は 時系列順であり、重複しない必要があります。

  ✅ ĐÚng:
  OP1: ═══════    OP2: ═══════════
  2018-01  2019-06    2020-01  2024-12

  ❌ SAI (overlap):
  OP1: ═══════════════
  OP2:       ═══════════════

###4.3.特別大会

状況処理
患者は一度だけ来た開始日 = 終了日 = 試験日
患者が死亡end_date = 死亡日
ギャップ < 32 日 (クレーム)通常は 1 つの OP に結合されます。
多くの情報源が重複しています最大の OP に結合

5. 分析への応用

###5.1.リスクにさらされる作業時間を計算する

-- Tổng thời gian theo dõi (person-years)
SELECT
    SUM(
        observation_period_end_date - observation_period_start_date
    ) / 365.25 AS total_person_years
FROM observation_period;

-- Person-time cho incidence rate
SELECT
    p.gender_concept_id,
    SUM(
        op.observation_period_end_date - op.observation_period_start_date
    ) / 365.25 AS person_years
FROM observation_period op
JOIN person p ON op.person_id = p.person_id
GROUP BY p.gender_concept_id;

###5.2. 「十分なデータ」で患者をフィルタリングする

-- Chỉ chọn BN có ≥ 1 năm follow-up
SELECT person_id
FROM observation_period
WHERE observation_period_end_date - observation_period_start_date >= 365
GROUP BY person_id;

###5.3.データ品質をチェックする

-- 観測期間外のイベントを検索する
選択
    'CONDITION' ASevent_type、
    co.person_id、
    co.condition_start_date ASevent_date
FROM 条件発生 co
LEFT JOIN 観測期間演算
    ON co.person_id = op.person_id
    AND co.condition_start_date
        op.observation_period_start_date の間
            かつ、op.observation_period_end_date
WHERE op.observation_period_id が NULL;

6. 完全な例

-- OBSERVATION_PERIOD (ベトナムの病院の場合)
INSERT INTO 観測期間 (
    観測期間ID、
    person_id、
    観測期間開始日、観測期間開始日
    観測期間終了日、観測期間終了日
    period_type_concept_id
) 値
    -- 患者 100001: 2020 年から 2024 年まで健康保険に加入しています。
    (1, 100001, '2020-01-01', '2024-12-31', 32810),
    -- 患者 100002: 2023 年に 3 回来院
    (2、100002、'2023-02-15'、'2023-11-20'、32817)、
    -- 患者 100003: 2 つの異なる段階
    (3、100003、'2019-03-10'、'2020-06-30'、32817)、
    (4、100003、'2022-01-15'、'2024-06-30'、32817);

概要

  1. OBSERVATION_PERIOD = 患者がシステムに「データを保持している」時間
  2. 「病気ではない」 と 「データなし」 を区別する
  3. 全員に必須 — 1 人あたり少なくとも 1 つの OP が必要です
  4. 同じ person_id を持つ OP 間で 重複なし
  5. すべての臨床イベントは OP に含まれている必要があります
  6. 主な用途: 人時間、罹患率、有病率、コホート定義を計算します。

次の記事: VISIT_OCCURRENCE と VISIT_DETAIL — OMOP CDM が医療システムとの各患者の接触を記録する方法。


参考文献