
はじめに
医療経済データ グループには、テーブル PAYER_PLAN_PERIOD (保険給付) と COST (各サービスの費用) が含まれています。ベトナムでは、このセクションは 健康保険 (健康保険) データと病院料金支払表にマッピングされます。
1. PAYER_PLAN_PERIOD — 保険期間
###1.1.テーブル構造
| コラム | タイプ | 必須 | 説明 |
|---|---|---|---|
payer_plan_period_id | 整数 | ✅PK | 固有の ID |
person_id | 整数 | ✅ | FK → 人物 |
payer_plan_period_start_date | 日付 | ✅ | 開始日 |
payer_plan_period_end_date | 日付 | ✅ | 終了日 |
payer_concept_id | 整数 | 支払い単位 (FK → CONCEPT) | |
payer_source_value | VARCHAR(50) | 支払者のソースコード | |
payer_source_concept_id | 整数 | FK → コンセプト | |
plan_concept_id | 整数 | 保険パッケージの種類 | |
plan_source_value | VARCHAR(50) | ソース コードを計画する | |
plan_source_concept_id | 整数 | FK → コンセプト | |
sponsor_concept_id | 整数 | スポンサー | |
sponsor_source_value | VARCHAR(50) | スポンサーのソースコード | |
sponsor_source_concept_id | 整数 | FK → コンセプト | |
family_source_value | VARCHAR(50) | 家族コード | |
stop_reason_concept_id | 整数 | 中止の理由 | |
stop_reason_source_value | VARCHAR(50) | ソース理由コード | |
stop_reason_source_concept_id | 整数 | FK → コンセプト |
###1.2.ベトナム健康保険のマッピング
Nguồn VN (BHXH) → OMOP CDM
─────────────────────────────────────────────
Mã thẻ BHYT: DN4-01-001 → payer_source_value
Loại đối tượng: Hưu trí → payer_concept_id
Ngày cấp: 01/01/2024 → payer_plan_period_start_date
Ngày hết hạn: 31/12/2024 → payer_plan_period_end_date
Nơi ĐKKCB: BV Bạch Mai → plan_source_value
BHXH Hà Nội → sponsor_source_value
###1.3. ETLの例
INSERT INTO payer_plan_period (
payer_plan_period_id,
person_id,
payer_plan_period_start_date,
payer_plan_period_end_date,
payer_concept_id,
payer_source_value,
plan_source_value,
sponsor_source_value
) VALUES (
5001,
100001,
'2024-01-01',
'2024-12-31',
0, -- Concept cho BHYT VN (cần mapping)
'DN4-01-001', -- Mã thẻ BHYT
'BV-BACHMAI-001', -- Nơi ĐKKCB ban đầu
'BHXH_HANOI' -- Cơ quan BHXH
);
###1.4.重複をチェックする
-- BN có nhiều giai đoạn BHYT chồng chéo?
SELECT
p1.person_id,
p1.payer_plan_period_start_date AS start_1,
p1.payer_plan_period_end_date AS end_1,
p2.payer_plan_period_start_date AS start_2,
p2.payer_plan_period_end_date AS end_2
FROM payer_plan_period p1
JOIN payer_plan_period p2
ON p1.person_id = p2.person_id
AND p1.payer_plan_period_id < p2.payer_plan_period_id
AND p1.payer_plan_period_start_date <= p2.payer_plan_period_end_date
AND p2.payer_plan_period_start_date <= p1.payer_plan_period_end_date;
2. COST — 医療サービスの費用
###2.1.テーブル構造
| コラム | タイプ | 必須 | 説明 |
|---|---|---|---|
cost_id | 整数 | ✅PK | 固有の ID |
cost_event_id | 整数 | ✅ | FK → 臨床事象 PK |
cost_domain_id | VARCHAR(20) | ✅ | イベントドメイン (訪問、薬物...) |
cost_type_concept_id | 整数 | ✅ | 種類(料金・費用・支払い) |
currency_concept_id | 整数 | 通貨 | |
total_charge | フロート | 合計手数料 | |
total_cost | フロート | 総コスト | |
total_paid | フロート | 支払総額 | |
paid_by_payer | フロート | 健康保険が支払われます | |
paid_by_patient | フロート | 自費患者 | |
paid_patient_copay | フロート | 自己負担金 | |
paid_patient_coinsurance | フロート | 共同保険 | |
paid_patient_deductible | フロート | 控除 | |
paid_by_primary | フロート | 主な保険料 | |
paid_ingredient_cost | フロート | 有効成分コスト | |
paid_dispensing_fee | フロート | 医薬品販売手数料 | |
payer_plan_period_id | 整数 | FK → PAYER_PLAN_PERIOD | |
amount_allowed | フロート | 許可レベル | |
revenue_code_concept_id | 整数 | 収益コード | |
revenue_code_source_value | VARCHAR(50) | ソース収益コード | |
drg_concept_id | 整数 | DRGグループ | |
drg_source_value | VARCHAR(3) | ソースDRGコード |
###2.2. COST の仕組み: ポリモーフィック FK
cost_event_id + cost_domain_id → xác định bảng nguồn
cost_domain_id = 'Visit' → visit_occurrence.visit_occurrence_id
cost_domain_id = 'Drug' → drug_exposure.drug_exposure_id
cost_domain_id = 'Procedure' → procedure_occurrence.procedure_occurrence_id
cost_domain_id = 'Device' → device_exposure.device_exposure_id
重要: ハード FK はありません。それに応じて JOIN する必要があります。
cost_event_id= 対応するテーブルの PK ANDcost_domain_idドメインのマッチング。
###2.3.ベトナムのETL健康診断費用
-- Chi phí 1 lượt khám ngoại trú
INSERT INTO cost (
cost_id,
cost_event_id,
cost_domain_id,
cost_type_concept_id,
currency_concept_id,
total_charge,
total_paid,
paid_by_payer, -- BHYT trả
paid_by_patient, -- BN tự trả
payer_plan_period_id
) VALUES (
7001,
4001, -- visit_occurrence_id
'Visit',
32810, -- EHR charge (Type Concept)
44818568, -- Vietnamese Dong (VND)
2500000, -- 2.5 triệu VNĐ tổng phí
2500000, -- Đã thanh toán hết
2000000, -- BHYT trả 80%
500000, -- BN trả 20%
5001 -- payer_plan_period_id
);
###2.4.健康保険料を比例的にマッピングする
Tỷ lệ BHYT VN:
──────────────────────────────────────────
Đúng tuyến, KCB ban đầu → 80% (hưu trí: 95%)
Trái tuyến tỉnh → 60%
Trái tuyến TW → 40%
Cấp cứu → 100%
──────────────────────────────────────────
Trong COST:
- total_charge = tổng viện phí
- paid_by_payer = total_charge × tỷ_lệ_BHYT
- paid_by_patient = total_charge - paid_by_payer
- paid_patient_copay = phần đồng chi trả theo quy định
3. クエリ経済分析
###3.1.サービスタイプ別の総コスト
SELECT
cost.cost_domain_id AS service_type,
COUNT(*) AS event_count,
SUM(cost.total_charge) AS total_charges,
SUM(cost.paid_by_payer) AS insurance_paid,
SUM(cost.paid_by_patient) AS patient_paid,
ROUND(
SUM(cost.paid_by_payer) * 100.0 / NULLIF(SUM(cost.total_charge), 0),
1
) AS insurance_coverage_pct
FROM cost
GROUP BY cost.cost_domain_id
ORDER BY total_charges DESC;
###3.2.有効成分グループ別の薬剤費
SELECT
c_ing.concept_name AS ingredient,
COUNT(DISTINCT de.person_id) AS patient_count,
SUM(cost.total_charge) AS total_drug_cost,
ROUND(
SUM(cost.total_charge) / COUNT(DISTINCT de.person_id),
0
) AS cost_per_patient
FROM cost
JOIN drug_exposure de
ON cost.cost_event_id = de.drug_exposure_id
AND cost.cost_domain_id = 'Drug'
JOIN concept_ancestor ca
ON de.drug_concept_id = ca.descendant_concept_id
JOIN concept c_ing
ON ca.ancestor_concept_id = c_ing.concept_id
AND c_ing.concept_class_id = 'Ingredient'
AND c_ing.standard_concept = 'S'
GROUP BY c_ing.concept_name
ORDER BY total_drug_cost DESC
LIMIT 20;
###3.3.正しいルートと間違ったルートのコストを比較する
SELECT
CASE
WHEN pp.plan_source_value = cs.care_site_source_value
THEN 'Đúng tuyến'
ELSE 'Trái tuyến'
END AS referral_type,
COUNT(DISTINCT vo.person_id) AS patient_count,
AVG(cost.total_charge) AS avg_charge,
AVG(cost.paid_by_payer) AS avg_insurance,
AVG(cost.paid_by_patient) AS avg_patient_pay
FROM cost
JOIN visit_occurrence vo
ON cost.cost_event_id = vo.visit_occurrence_id
AND cost.cost_domain_id = 'Visit'
JOIN care_site cs ON vo.care_site_id = cs.care_site_id
JOIN payer_plan_period pp
ON vo.person_id = pp.person_id
AND vo.visit_start_date BETWEEN pp.payer_plan_period_start_date
AND pp.payer_plan_period_end_date
GROUP BY referral_type;
4. ER 図 — 医療経済学
┌──────────────────┐
│PAYER_PLAN_PERIOD │
│ │
│ person_id ──────→│ PERSON
│ payer_concept_id │
│ plan_concept_id │
│ start_date │
│ end_date │
└────────┬─────────┘
│ payer_plan_period_id
↓
┌──────────────────┐
│ COST │
│ │ ┌─── VISIT_OCCURRENCE
│ cost_event_id ──→│────────├─── DRUG_EXPOSURE
│ cost_domain_id │ ├─── PROCEDURE_OCCURRENCE
│ total_charge │ └─── DEVICE_EXPOSURE
│ paid_by_payer │
│ paid_by_patient │
│ currency_id │
└──────────────────┘
概要
- PAYER_PLAN_PERIOD: 保険期間を記録します (VN: 健康保険証、登録コード)
- COST: 多態性 FK を使用したイベントごとのコスト (
cost_event_id+cost_domain_id) - VN マッピング:
paid_by_payer= 健康保険部分、paid_by_patient=自己負担分 - COSTは費用対効果分析、オンライン/オフライン比較をサポートします
currency_concept_id= 44818568 (VND)
次の記事: CONDITION_ERA、DRUG_ERA、DOSE_ERA — 自動集計テーブル。