はじめに
PROCEDURE_OCCURRENCE は、患者に対して行われたすべての処置、手術、医療介入を記録します。単純な血圧測定から複雑な開胸手術まで、すべてこの表で標準化されています。このレッスンは、PROCEDURE をいつ使用するか、MEASUREMENT または DRUG をいつ使用するかを理解するのに役立ちます。
1. テーブル構造
| コラム | タイプ | 必須 | 説明 |
|---|---|---|---|
procedure_occurrence_id | 整数 | ✅PK | 固有の ID |
person_id | 整数 | ✅FK | 患者 |
procedure_concept_id | 整数 | ✅ | スタンダードコンセプト |
procedure_date | 日付 | ✅ | 実施日 |
procedure_datetime | 日時 | 日付と時刻 | |
procedure_end_date | 日付 | 終了日 (新しい CDM 5.4) | |
procedure_end_datetime | 日時 | 閉店時間 | |
procedure_type_concept_id | 整数 | ✅ | データソース |
modifier_concept_id | 整数 | 追加 (左/右、2 番目...) | |
quantity | 整数 | 実行数 | |
provider_id | 整数 | FK | 医師が実施 |
visit_occurrence_id | 整数 | FK | 関連する訪問 |
visit_detail_id | 整数 | FK | 訪問詳細 |
procedure_source_value | VARCHAR(50) | 元のコード | |
procedure_source_concept_id | 整数 | オリジナルコンセプト | |
modifier_source_value | VARCHAR(50) | 元の修飾子 |
CDM 5.4の新機能: procedure_end_date そして procedure_end_datetime — 数時間/数日かかる手術にとって重要です。
2. 手順の語彙
###2.1.人気の語彙
| 語彙 | 役割 | 例 |
|---|---|---|
| SNOMED CT | スタンダードコンセプト | 虫垂切除術 (44783086) |
| CPT4 | 米国の請求先コード | 44970 (腹腔鏡下虫垂切除術) |
| ICD-10-PCS | 米国の入院手順 | 0DTJ4ZZ |
| ICD-9-Proc | 従来の米国の手順 | 47.01 |
| HCPCS | 米国の外来サービス | G0101 |
###2.2.ドメインルーティングルール
ICD-10-PCS mã = '0DTJ4ZZ' (Lapar appendectomy)
│
│ concept_relationship: Maps to
↓
SNOMED concept_id = 44783086
concept_name = 'Laparoscopic appendectomy'
domain_id = 'Procedure'
│
└──→ Lưu vào PROCEDURE_OCCURRENCE ✓
CPT4 mã = '80053' (Basic metabolic panel)
│
│ concept_relationship: Maps to
↓
SNOMED concept_id = 3019897
domain_id = 'Measurement'
│
└──→ Lưu vào MEASUREMENT ✗ (không phải Procedure!)
ゴールデン ルール: 標準コンセプトのドメイン ID を常に確認してください。ソースコードが CPT4 (プロシージャコード) であっても、Standard Concept がドメイン = Measurement の場合は、MEASUREMENT に保存する必要があります。
3. 手順 vs 測定 vs 薬剤 — 境界
| 元データ | どこ? | 理由 |
|---|---|---|
| 虫垂炎の手術 | 手順 | ドメイン = プロシージャ |
| 腹部超音波 | 手順 | ドメイン = 手順 (イメージング) |
| 血液検査 (結果 5.8 mmol/L) | 測定 | 測定値がある → 測定 |
| 心肺 X 線検査 (結果なし) | 手順 | イメージング → 手順 |
| インスリン注射 | DRUG_EXPOSURE | 医薬品管理 |
| 結腸内視鏡検査 + 生検 | 手順 | 手続き的介入 |
| 理学療法 30 分 | 手順 | プロシージャドメイン |
| 輸血 | 手順 | 輸血 = 手順 |
4. modifier_concept_id — 追加情報
| コンセプトID | 修飾子 | 意味 |
|---|---|---|
| 4148525 | 左 | 左 |
| 4149625 | 右 | 右 |
| 4236436 | 二国間 | 両面 |
| 4215561 | 最初の出会い | 初めて |
| 4215562 | その後の出会い | 再検討 |
-- Phẫu thuật cắt ruột thừa nội soi (bên phải)
INSERT INTO procedure_occurrence (
procedure_occurrence_id, person_id, procedure_concept_id,
procedure_date, procedure_end_date,
procedure_type_concept_id,
modifier_concept_id, quantity,
provider_id, visit_occurrence_id,
procedure_source_value
) VALUES (
90001, 100001, 44783086, -- SNOMED: Lapar appendectomy
'2024-06-15', '2024-06-15',
32817, -- EHR
4149625, 1, -- Right side, 1 time
5001, 50001,
'0DTJ4ZZ' -- ICD-10-PCS
);
5. ETL VN データ
###5.1.人気のデータソース
| 出典 | 説明 | オリジナルの語彙 |
|---|---|---|
| 病院技術サービス一覧 | BVテクニカルサービス | 内部コード |
| ICD-9-CM プロセス | 古い手術コード | ICD9Proc |
| 社会保険一覧 | 社会保険サービスコード | 社内保険コード |
###5.2. SQL ETL
SELECT
ROW_NUMBER() OVER() AS procedure_occurrence_id,
pm.person_id,
COALESCE(cr.concept_id_2, 0) AS procedure_concept_id,
tt.ngay_thuchien AS procedure_date,
tt.ngay_ketthuc AS procedure_end_date,
32817 AS procedure_type_concept_id,
0 AS modifier_concept_id,
tt.so_lan AS quantity,
tt.ma_dvkt AS procedure_source_value,
COALESCE(c_source.concept_id, 0) AS procedure_source_concept_id
FROM thuthuat_his tt
JOIN person_mapping pm ON tt.ma_bn = pm.source_id
LEFT JOIN source_to_concept_map stcm
ON tt.ma_dvkt = stcm.source_code
AND stcm.source_vocabulary_id = 'VN_PROCEDURE'
LEFT JOIN concept c_std
ON stcm.target_concept_id = c_std.concept_id
AND c_std.standard_concept = 'S'
AND c_std.domain_id = 'Procedure' -- ← Chỉ Procedure domain!
LEFT JOIN concept c_source
ON tt.ma_dvkt = c_source.concept_code
LEFT JOIN concept_relationship cr
ON c_source.concept_id = cr.concept_id_1
AND cr.relationship_id = 'Maps to';
###5.3.ドメインルーティングを処理します
-- DVKT "Xét nghiệm HbA1c" → mã CPT 83036
-- Standard concept domain = Measurement → KHÔNG lưu vào PROCEDURE
-- Bước 1: Tìm Standard Concept
SELECT c.*
FROM concept c
JOIN concept_relationship cr ON c.concept_id = cr.concept_id_2
AND cr.relationship_id = 'Maps to'
JOIN concept c_src ON cr.concept_id_1 = c_src.concept_id
WHERE c_src.concept_code = '83036'
AND c_src.vocabulary_id = 'CPT4';
-- domain_id = 'Measurement' → route sang MEASUREMENT table
-- Bước 2: Lưu vào đúng bảng
-- Nếu domain = 'Procedure' → procedure_occurrence
-- Nếu domain = 'Measurement' → measurement
-- Nếu domain = 'Observation' → observation
-- Nếu domain = 'Drug' → drug_exposure
6. SQL分析
-- Top 10 thủ thuật phổ biến
SELECT
c.concept_name AS procedure_name,
COUNT(*) AS procedure_count,
COUNT(DISTINCT po.person_id) AS patient_count
FROM procedure_occurrence po
JOIN concept c ON po.procedure_concept_id = c.concept_id
WHERE po.procedure_concept_id != 0
GROUP BY c.concept_name
ORDER BY procedure_count DESC
LIMIT 10;
-- Thống kê phẫu thuật theo tháng
SELECT
DATE_TRUNC('month', po.procedure_date) AS month,
c.concept_name AS procedure_name,
COUNT(*) AS total
FROM procedure_occurrence po
JOIN concept c ON po.procedure_concept_id = c.concept_id
WHERE po.procedure_concept_id = 44783086 -- Appendectomy
GROUP BY month, c.concept_name
ORDER BY month;
-- BN có cả chẩn đoán + phẫu thuật liên quan
SELECT
po.person_id,
co_cond.concept_name AS diagnosis,
co_proc.concept_name AS procedure_name,
co.condition_start_date,
po.procedure_date
FROM procedure_occurrence po
JOIN condition_occurrence co ON po.person_id = co.person_id
AND po.visit_occurrence_id = co.visit_occurrence_id
JOIN concept co_cond ON co.condition_concept_id = co_cond.concept_id
JOIN concept co_proc ON po.procedure_concept_id = co_proc.concept_id
WHERE co.condition_concept_id = 441604 -- Appendicitis
AND po.procedure_concept_id = 44783086 -- Appendectomy
LIMIT 20;
概要
- PROCEDURE_OCCURRENCE = 処置、手術、介入、画像処理
- 主な標準語彙: SNOMED CT
- ドメイン ルーティングは非常に重要です。CPT4 コードは手順ではなく測定にマッピングできます。
- CDM 5.4 は、延長手術用の procedure_end_date を追加します
- modifier_concept_id (左/右、初回/再訪問用)
- ETL VN: 内部アカウンティング サービス コード → SOURCE_TO_CONCEPT_MAP → 標準 SNOMED
次の記事: 測定 — テスト、測定、数値。