@xdev-asia/xdev-knowledge-mcp 1.0.55 → 1.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/01-phan-1-tong-quan-nen-tang/lessons/bai-1-omop-cdm-la-gi-tai-sao-can-chuan-hoa-du-lieu-y-te.md +339 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/01-phan-1-tong-quan-nen-tang/lessons/bai-2-kien-truc-tong-the-omop-cdm-5-4-nhom-bang-nguyen-ly-thiet-ke.md +440 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/01-phan-1-tong-quan-nen-tang/lessons/bai-3-hieu-concept-trai-tim-cua-omop-cdm.md +441 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/02-phan-2-person-visit-nen-tang/lessons/bai-4-bang-person-quan-ly-danh-tinh-benh-nhan.md +323 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/02-phan-2-person-visit-nen-tang/lessons/bai-5-observation-period-khoang-thoi-gian-theo-doi-benh-nhan.md +308 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/02-phan-2-person-visit-nen-tang/lessons/bai-6-visit-occurrence-visit-detail-luot-kham-chi-tiet.md +353 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/03-phan-3-su-kien-lam-sang-chinh/lessons/bai-10-measurement-xet-nghiem-do-luong.md +409 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/03-phan-3-su-kien-lam-sang-chinh/lessons/bai-7-condition-occurrence-chan-doan-benh-ly.md +285 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/03-phan-3-su-kien-lam-sang-chinh/lessons/bai-8-drug-exposure-thuoc-dieu-tri.md +354 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/03-phan-3-su-kien-lam-sang-chinh/lessons/bai-9-procedure-occurrence-thu-thuat-phau-thuat.md +291 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/04-phan-4-bang-lam-sang-mo-rong/lessons/bai-11-observation-su-kien-lam-sang-tong-hop.md +289 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/04-phan-4-bang-lam-sang-mo-rong/lessons/bai-12-device-exposure-specimen-note.md +313 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/04-phan-4-bang-lam-sang-mo-rong/lessons/bai-13-death-episode-episode-event.md +346 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/05-phan-5-standardized-vocabularies/lessons/bai-14-concept-vocabulary-nen-tang-tu-dien-chuan.md +298 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/05-phan-5-standardized-vocabularies/lessons/bai-15-concept-relationship-concept-ancestor.md +336 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/05-phan-5-standardized-vocabularies/lessons/bai-16-drug-strength-cac-bang-vocabulary-con-lai.md +295 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/06-phan-6-health-system-economics-derived/lessons/bai-17-location-care-site-provider.md +334 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/06-phan-6-health-system-economics-derived/lessons/bai-18-payer-plan-period-cost.md +343 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/06-phan-6-health-system-economics-derived/lessons/bai-19-condition-era-drug-era-dose-era.md +418 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/chapters/07-phan-7-metadata-cohort-tong-ket/lessons/bai-20-cdm-source-metadata-cohort-tong-ket.md +517 -0
- package/content/series/architecture/omop-cdm-5-4-cho-nguoi-moi-bat-dau/index.md +385 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/01-bai-1-gioi-thieu-vyos-va-cai-dat.md +10 -1
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/02-bai-2-cau-hinh-interface-va-ip-co-ban.md +4 -3
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/03-bai-3-nat-source-nat-destination-nat-va-masquerade.md +1 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/04-bai-4-firewall-co-ban-rules-chains-va-groups.md +2 -2
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/05-bai-5-zone-based-firewall.md +2 -2
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/06-bai-6-dhcp-server-dns-forwarding-va-ntp.md +4 -1
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/07-bai-7-vlans-bonding-va-bridge.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/08-bai-8-static-routing-va-policy-based-routing.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/09-bai-9-dynamic-routing-ospf.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/10-bai-10-dynamic-routing-bgp.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/11-bai-11-vpn-wireguard-va-openvpn.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/12-bai-12-vpn-ipsec-site-to-site.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/13-bai-13-high-availability-vrrp-va-conntrack-sync.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/14-bai-14-wan-load-balancing-qos-va-monitoring.md +2 -0
- package/content/series/devsecops/vyos-tu-co-ban-den-nang-cao/chapters/01-vyos-tu-co-ban-den-nang-cao/lessons/15-bai-15-containers-automation-va-production-best-practices.md +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 019f1a00-a113-7b01-e001-omopcdm54013
|
|
3
|
+
title: "Bài 13: DEATH, EPISODE & EPISODE_EVENT"
|
|
4
|
+
slug: bai-13-death-episode-episode-event
|
|
5
|
+
description: >-
|
|
6
|
+
Ghi nhận tử vong (DEATH), quá trình bệnh lý dài hạn
|
|
7
|
+
(EPISODE — mới CDM 5.4) như điều trị ung thư, và
|
|
8
|
+
liên kết event trong episode (EPISODE_EVENT).
|
|
9
|
+
duration_minutes: 50
|
|
10
|
+
is_free: true
|
|
11
|
+
video_url: null
|
|
12
|
+
sort_order: 13
|
|
13
|
+
section_title: "Phần 4: Bảng lâm sàng mở rộng"
|
|
14
|
+
course:
|
|
15
|
+
id: 019f1a00-a100-7b01-e001-omopcdm54001
|
|
16
|
+
title: "OMOP CDM 5.4 cho Người mới — Hiểu từ A đến Z"
|
|
17
|
+
slug: omop-cdm-5-4-cho-nguoi-moi-bat-dau
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 340" style="max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 1.5rem;">
|
|
21
|
+
<defs>
|
|
22
|
+
<linearGradient id="bg-omop13" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
23
|
+
<stop offset="0%" style="stop-color:#0c1222"/>
|
|
24
|
+
<stop offset="100%" style="stop-color:#1e293b"/>
|
|
25
|
+
</linearGradient>
|
|
26
|
+
</defs>
|
|
27
|
+
<rect width="1200" height="340" rx="12" fill="url(#bg-omop13)"/>
|
|
28
|
+
<g>
|
|
29
|
+
<circle cx="700" cy="85" r="20" fill="#818cf8" opacity="0.12"/>
|
|
30
|
+
<circle cx="780" cy="115" r="28" fill="#818cf8" opacity="0.08"/>
|
|
31
|
+
<circle cx="870" cy="95" r="24" fill="#818cf8" opacity="0.06"/>
|
|
32
|
+
<line x1="640" y1="150" x2="1100" y2="230" stroke="#818cf8" stroke-width="0.5" opacity="0.1"/>
|
|
33
|
+
</g>
|
|
34
|
+
<rect x="60" y="50" width="4" height="60" rx="2" fill="#818cf8"/>
|
|
35
|
+
<rect x="80" y="50" width="130" height="28" rx="14" fill="#818cf8" opacity="0.15"/>
|
|
36
|
+
<text x="92" y="69" font-family="system-ui,-apple-system,sans-serif" font-size="13" font-weight="600" fill="#818cf8">🏗️ Kiến trúc — Bài 13</text>
|
|
37
|
+
<text x="60" y="140" font-family="system-ui,-apple-system,sans-serif" font-size="34" font-weight="700" fill="#f1f5f9">
|
|
38
|
+
<tspan x="60" dy="0">DEATH, EPISODE</tspan>
|
|
39
|
+
<tspan x="60" dy="42">& EPISODE_EVENT</tspan>
|
|
40
|
+
</text>
|
|
41
|
+
<text x="60" y="244" font-family="system-ui,-apple-system,sans-serif" font-size="15" fill="#94a3b8" opacity="0.8">OMOP CDM 5.4 cho Người mới — Hiểu từ A đến Z</text>
|
|
42
|
+
<text x="60" y="268" font-family="system-ui,-apple-system,sans-serif" font-size="13" fill="#64748b" opacity="0.6">Phần 4: Bảng lâm sàng mở rộng</text>
|
|
43
|
+
<text x="1140" y="320" font-family="system-ui,-apple-system,sans-serif" font-size="12" fill="#475569" text-anchor="end" opacity="0.4">xdev.asia</text>
|
|
44
|
+
</svg>
|
|
45
|
+
|
|
46
|
+
## Giới thiệu
|
|
47
|
+
|
|
48
|
+
Ba bảng cuối cùng trong nhóm Clinical Data: **DEATH** ghi nhận sự kiện tử vong, **EPISODE** (mới trong CDM 5.4) ghi nhận quá trình bệnh lý/điều trị dài hạn, và **EPISODE_EVENT** liên kết các sự kiện thuộc một episode. EPISODE là addition đáng chú ý nhất của CDM 5.4, đặc biệt quan trọng cho nghiên cứu ung thư.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 1. DEATH — Ghi nhận tử vong
|
|
53
|
+
|
|
54
|
+
### 1.1. Cấu trúc bảng
|
|
55
|
+
|
|
56
|
+
| Cột | Kiểu | Bắt buộc | Mô tả |
|
|
57
|
+
|-----|------|----------|-------|
|
|
58
|
+
| `person_id` | INTEGER | ✅ PK/FK | Bệnh nhân (1 record/BN) |
|
|
59
|
+
| `death_date` | DATE | ✅ | Ngày tử vong |
|
|
60
|
+
| `death_datetime` | DATETIME | | Ngày giờ tử vong |
|
|
61
|
+
| `death_type_concept_id` | INTEGER | ✅ | Nguồn dữ liệu |
|
|
62
|
+
| `cause_concept_id` | INTEGER | | Nguyên nhân tử vong (SNOMED) |
|
|
63
|
+
| `cause_source_value` | VARCHAR(50) | | ICD gốc |
|
|
64
|
+
| `cause_source_concept_id` | INTEGER | | Concept gốc |
|
|
65
|
+
|
|
66
|
+
### 1.2. Đặc điểm quan trọng
|
|
67
|
+
|
|
68
|
+
- **1 record duy nhất** per person — nếu có nhiều nguồn, chọn đáng tin nhất
|
|
69
|
+
- **person_id** vừa là PK vừa là FK → không có death_id riêng
|
|
70
|
+
- **cause_concept_id**: dùng SNOMED cho nguyên nhân chính
|
|
71
|
+
|
|
72
|
+
### 1.3. death_type_concept_id
|
|
73
|
+
|
|
74
|
+
| Concept ID | Nguồn | Mô tả |
|
|
75
|
+
|-----------|------|-------|
|
|
76
|
+
| 32817 | EHR | Ghi nhận từ HIS |
|
|
77
|
+
| 32810 | Claim | Dữ liệu BHXH |
|
|
78
|
+
| 32885 | Death certificate | Giấy chứng tử |
|
|
79
|
+
| 32886 | National Death Index | Sổ bộ quốc gia |
|
|
80
|
+
|
|
81
|
+
### 1.4. Ví dụ
|
|
82
|
+
|
|
83
|
+
```sql
|
|
84
|
+
-- BN tử vong do nhồi máu cơ tim cấp
|
|
85
|
+
INSERT INTO death (
|
|
86
|
+
person_id, death_date,
|
|
87
|
+
death_type_concept_id,
|
|
88
|
+
cause_concept_id,
|
|
89
|
+
cause_source_value,
|
|
90
|
+
cause_source_concept_id
|
|
91
|
+
) VALUES (
|
|
92
|
+
100001, '2024-06-20',
|
|
93
|
+
32885, -- Death certificate
|
|
94
|
+
4329847, -- SNOMED: AMI
|
|
95
|
+
'I21.9', -- ICD-10
|
|
96
|
+
45572161 -- ICD10CM concept
|
|
97
|
+
);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 1.5. SQL phân tích
|
|
101
|
+
|
|
102
|
+
```sql
|
|
103
|
+
-- Top 10 nguyên nhân tử vong
|
|
104
|
+
SELECT
|
|
105
|
+
c.concept_name AS cause_of_death,
|
|
106
|
+
COUNT(*) AS death_count,
|
|
107
|
+
ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 1) AS pct
|
|
108
|
+
FROM death d
|
|
109
|
+
JOIN concept c ON d.cause_concept_id = c.concept_id
|
|
110
|
+
WHERE d.cause_concept_id != 0
|
|
111
|
+
GROUP BY c.concept_name
|
|
112
|
+
ORDER BY death_count DESC
|
|
113
|
+
LIMIT 10;
|
|
114
|
+
|
|
115
|
+
-- Tỉ lệ tử vong sau nhập viện ICU
|
|
116
|
+
SELECT
|
|
117
|
+
ROUND(
|
|
118
|
+
COUNT(DISTINCT d.person_id) * 100.0 /
|
|
119
|
+
NULLIF(COUNT(DISTINCT v.person_id), 0), 1
|
|
120
|
+
) AS mortality_rate_pct
|
|
121
|
+
FROM visit_occurrence v
|
|
122
|
+
LEFT JOIN death d ON v.person_id = d.person_id
|
|
123
|
+
AND d.death_date BETWEEN v.visit_start_date
|
|
124
|
+
AND v.visit_start_date + INTERVAL '30 days'
|
|
125
|
+
WHERE v.visit_concept_id = 32037; -- ICU visit
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 2. EPISODE — Quá trình bệnh lý (CDM 5.4 mới)
|
|
131
|
+
|
|
132
|
+
### 2.1. Tại sao cần EPISODE?
|
|
133
|
+
|
|
134
|
+
Trước CDM 5.4, không có cách thể hiện "quá trình điều trị ung thư" — các sự kiện (chẩn đoán, hóa trị, xạ trị, phẫu thuật) nằm rải rác ở nhiều bảng. EPISODE gom chúng lại thành một "câu chuyện" hoàn chỉnh.
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
Trước CDM 5.4:
|
|
138
|
+
|
|
139
|
+
CONDITION: Ung thư phổi ─────────── (rời rạc)
|
|
140
|
+
PROCEDURE: Sinh thiết phổi ────────── (rời rạc)
|
|
141
|
+
DRUG: Cisplatin cycle 1 ──────── (rời rạc)
|
|
142
|
+
DRUG: Cisplatin cycle 2 ──────── (rời rạc)
|
|
143
|
+
PROCEDURE: Phẫu thuật cắt thùy phổi ─ (rời rạc)
|
|
144
|
+
|
|
145
|
+
Sau CDM 5.4:
|
|
146
|
+
|
|
147
|
+
EPISODE: "Điều trị ung thư phổi giai đoạn 3"
|
|
148
|
+
│
|
|
149
|
+
├── EPISODE_EVENT → CONDITION (chẩn đoán)
|
|
150
|
+
├── EPISODE_EVENT → PROCEDURE (sinh thiết)
|
|
151
|
+
├── EPISODE_EVENT → DRUG (hóa trị cycle 1)
|
|
152
|
+
├── EPISODE_EVENT → DRUG (hóa trị cycle 2)
|
|
153
|
+
└── EPISODE_EVENT → PROCEDURE (phẫu thuật)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 2.2. Cấu trúc bảng EPISODE
|
|
157
|
+
|
|
158
|
+
| Cột | Kiểu | Bắt buộc | Mô tả |
|
|
159
|
+
|-----|------|----------|-------|
|
|
160
|
+
| `episode_id` | BIGINT | ✅ PK | ID duy nhất |
|
|
161
|
+
| `person_id` | INTEGER | ✅ FK | Bệnh nhân |
|
|
162
|
+
| `episode_concept_id` | INTEGER | ✅ | Loại episode |
|
|
163
|
+
| `episode_start_date` | DATE | ✅ | Ngày bắt đầu |
|
|
164
|
+
| `episode_start_datetime` | DATETIME | | |
|
|
165
|
+
| `episode_end_date` | DATE | | Ngày kết thúc |
|
|
166
|
+
| `episode_end_datetime` | DATETIME | | |
|
|
167
|
+
| `episode_parent_id` | BIGINT | | Episode cha (phân cấp) |
|
|
168
|
+
| `episode_number` | INTEGER | | Số thứ tự |
|
|
169
|
+
| `episode_object_concept_id` | INTEGER | ✅ | Đối tượng episode |
|
|
170
|
+
| `episode_type_concept_id` | INTEGER | ✅ | Nguồn dữ liệu |
|
|
171
|
+
| `episode_source_value` | VARCHAR(50) | | Mã gốc |
|
|
172
|
+
| `episode_source_concept_id` | INTEGER | | |
|
|
173
|
+
|
|
174
|
+
### 2.3. episode_concept_id — Loại Episode
|
|
175
|
+
|
|
176
|
+
| Concept ID | Episode Type | Ví dụ |
|
|
177
|
+
|-----------|-------------|-------|
|
|
178
|
+
| 32528 | Disease first occurrence | Ung thư phổi lần đầu |
|
|
179
|
+
| 32529 | Disease recurrence | Ung thư tái phát |
|
|
180
|
+
| 32531 | Treatment regimen | Phác đồ Cisplatin-Etoposide |
|
|
181
|
+
| 32532 | Treatment cycle | Cycle 1, Cycle 2... |
|
|
182
|
+
|
|
183
|
+
### 2.4. Ví dụ: Điều trị ung thư phổi
|
|
184
|
+
|
|
185
|
+
```sql
|
|
186
|
+
-- Episode cha: Bệnh ung thư phổi
|
|
187
|
+
INSERT INTO episode (
|
|
188
|
+
episode_id, person_id,
|
|
189
|
+
episode_concept_id,
|
|
190
|
+
episode_start_date, episode_end_date,
|
|
191
|
+
episode_parent_id,
|
|
192
|
+
episode_object_concept_id,
|
|
193
|
+
episode_type_concept_id
|
|
194
|
+
) VALUES (
|
|
195
|
+
200001, 100001,
|
|
196
|
+
32528, -- Disease first occurrence
|
|
197
|
+
'2024-01-15', NULL, -- Chưa kết thúc
|
|
198
|
+
NULL, -- Không có cha
|
|
199
|
+
4311499, -- SNOMED: Lung cancer
|
|
200
|
+
32817 -- EHR
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
-- Episode con: Phác đồ hóa trị
|
|
204
|
+
INSERT INTO episode (
|
|
205
|
+
episode_id, person_id,
|
|
206
|
+
episode_concept_id,
|
|
207
|
+
episode_start_date, episode_end_date,
|
|
208
|
+
episode_parent_id,
|
|
209
|
+
episode_number,
|
|
210
|
+
episode_object_concept_id,
|
|
211
|
+
episode_type_concept_id
|
|
212
|
+
) VALUES (
|
|
213
|
+
200002, 100001,
|
|
214
|
+
32531, -- Treatment regimen
|
|
215
|
+
'2024-02-01', '2024-06-30',
|
|
216
|
+
200001, -- Thuộc episode ung thư phổi
|
|
217
|
+
1,
|
|
218
|
+
35804410, -- Cisplatin regimen
|
|
219
|
+
32817
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
-- Episode con: Cycle 1
|
|
223
|
+
INSERT INTO episode (
|
|
224
|
+
episode_id, person_id,
|
|
225
|
+
episode_concept_id,
|
|
226
|
+
episode_start_date, episode_end_date,
|
|
227
|
+
episode_parent_id,
|
|
228
|
+
episode_number,
|
|
229
|
+
episode_object_concept_id,
|
|
230
|
+
episode_type_concept_id
|
|
231
|
+
) VALUES (
|
|
232
|
+
200003, 100001,
|
|
233
|
+
32532, -- Treatment cycle
|
|
234
|
+
'2024-02-01', '2024-02-21',
|
|
235
|
+
200002, -- Thuộc phác đồ
|
|
236
|
+
1, -- Cycle 1
|
|
237
|
+
35804410,
|
|
238
|
+
32817
|
|
239
|
+
);
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 3. EPISODE_EVENT — Liên kết sự kiện
|
|
245
|
+
|
|
246
|
+
### 3.1. Cấu trúc bảng
|
|
247
|
+
|
|
248
|
+
| Cột | Kiểu | Bắt buộc | Mô tả |
|
|
249
|
+
|-----|------|----------|-------|
|
|
250
|
+
| `episode_id` | BIGINT | ✅ FK | Episode |
|
|
251
|
+
| `event_id` | BIGINT | ✅ | ID của sự kiện |
|
|
252
|
+
| `episode_event_field_concept_id` | INTEGER | ✅ | Bảng chứa event |
|
|
253
|
+
|
|
254
|
+
### 3.2. episode_event_field_concept_id
|
|
255
|
+
|
|
256
|
+
| Concept ID | Bảng sự kiện |
|
|
257
|
+
|-----------|-------------|
|
|
258
|
+
| 1147127 | condition_occurrence.condition_occurrence_id |
|
|
259
|
+
| 1147094 | drug_exposure.drug_exposure_id |
|
|
260
|
+
| 1147082 | procedure_occurrence.procedure_occurrence_id |
|
|
261
|
+
| 1147138 | measurement.measurement_id |
|
|
262
|
+
| 1147165 | device_exposure.device_exposure_id |
|
|
263
|
+
|
|
264
|
+
### 3.3. Ví dụ: Gắn events vào Cycle 1
|
|
265
|
+
|
|
266
|
+
```sql
|
|
267
|
+
-- Chẩn đoán ung thư → Episode chẩn đoán
|
|
268
|
+
INSERT INTO episode_event VALUES (
|
|
269
|
+
200001, -- Episode: lung cancer
|
|
270
|
+
70010, -- condition_occurrence_id
|
|
271
|
+
1147127 -- condition_occurrence table
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
-- Hóa trị Cisplatin → Episode Cycle 1
|
|
275
|
+
INSERT INTO episode_event VALUES (
|
|
276
|
+
200003, -- Episode: Cycle 1
|
|
277
|
+
80010, -- drug_exposure_id (Cisplatin)
|
|
278
|
+
1147094 -- drug_exposure table
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
-- XN máu trước hóa trị → Episode Cycle 1
|
|
282
|
+
INSERT INTO episode_event VALUES (
|
|
283
|
+
200003,
|
|
284
|
+
110020, -- measurement_id (CBC)
|
|
285
|
+
1147138 -- measurement table
|
|
286
|
+
);
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 4. Ứng dụng EPISODE trong nghiên cứu
|
|
292
|
+
|
|
293
|
+
```sql
|
|
294
|
+
-- Tìm BN ung thư phổi có >= 4 cycle hóa trị
|
|
295
|
+
SELECT
|
|
296
|
+
e_disease.person_id,
|
|
297
|
+
c_disease.concept_name AS cancer_type,
|
|
298
|
+
COUNT(e_cycle.episode_id) AS total_cycles
|
|
299
|
+
FROM episode e_disease
|
|
300
|
+
JOIN concept c_disease
|
|
301
|
+
ON e_disease.episode_object_concept_id = c_disease.concept_id
|
|
302
|
+
JOIN episode e_regimen
|
|
303
|
+
ON e_disease.episode_id = e_regimen.episode_parent_id
|
|
304
|
+
AND e_regimen.episode_concept_id = 32531 -- Treatment regimen
|
|
305
|
+
JOIN episode e_cycle
|
|
306
|
+
ON e_regimen.episode_id = e_cycle.episode_parent_id
|
|
307
|
+
AND e_cycle.episode_concept_id = 32532 -- Treatment cycle
|
|
308
|
+
WHERE e_disease.episode_concept_id = 32528 -- First occurrence
|
|
309
|
+
AND c_disease.concept_id = 4311499 -- Lung cancer
|
|
310
|
+
GROUP BY e_disease.person_id, c_disease.concept_name
|
|
311
|
+
HAVING COUNT(e_cycle.episode_id) >= 4;
|
|
312
|
+
|
|
313
|
+
-- Timeline điều trị 1 BN
|
|
314
|
+
SELECT
|
|
315
|
+
e.episode_number,
|
|
316
|
+
ec.concept_name AS episode_type,
|
|
317
|
+
e.episode_start_date,
|
|
318
|
+
e.episode_end_date,
|
|
319
|
+
oc.concept_name AS episode_object
|
|
320
|
+
FROM episode e
|
|
321
|
+
JOIN concept ec ON e.episode_concept_id = ec.concept_id
|
|
322
|
+
JOIN concept oc ON e.episode_object_concept_id = oc.concept_id
|
|
323
|
+
WHERE e.person_id = 100001
|
|
324
|
+
ORDER BY e.episode_start_date, e.episode_number;
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Tổng kết
|
|
330
|
+
|
|
331
|
+
1. **DEATH**: 1 record/person, nguyên nhân tử vong dùng SNOMED
|
|
332
|
+
2. **EPISODE** (CDM 5.4 mới): quá trình bệnh lý/điều trị, hỗ trợ phân cấp cha-con
|
|
333
|
+
3. **EPISODE_EVENT**: liên kết events từ nhiều bảng vào episode
|
|
334
|
+
4. EPISODE thiết kế chủ yếu cho **oncology** nhưng áp dụng được cho mọi bệnh mạn tính
|
|
335
|
+
5. Cấu trúc: Disease → Treatment Regimen → Treatment Cycle → Events
|
|
336
|
+
|
|
337
|
+
**Bài tiếp theo:** Bắt đầu Phần 5 — Standardized Vocabularies, hệ thống từ điển chuẩn hóa.
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Tài liệu tham khảo
|
|
342
|
+
|
|
343
|
+
- [OMOP CDM 5.4 — DEATH](https://ohdsi.github.io/CommonDataModel/cdm54.html#DEATH)
|
|
344
|
+
- [OMOP CDM 5.4 — EPISODE](https://ohdsi.github.io/CommonDataModel/cdm54.html#EPISODE)
|
|
345
|
+
- [OMOP CDM 5.4 — EPISODE_EVENT](https://ohdsi.github.io/CommonDataModel/cdm54.html#EPISODE_EVENT)
|
|
346
|
+
- [OHDSI Oncology WG](https://www.ohdsi.org/web/wiki/doku.php?id=documentation:next_cdm:oncology)
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 019f1a00-a114-7b01-e001-omopcdm54014
|
|
3
|
+
title: "Bài 14: CONCEPT & VOCABULARY — Nền tảng từ điển chuẩn"
|
|
4
|
+
slug: bai-14-concept-vocabulary-nen-tang-tu-dien-chuan
|
|
5
|
+
description: >-
|
|
6
|
+
Hai bảng trung tâm của hệ thống Vocabulary: CONCEPT chứa
|
|
7
|
+
mọi khái niệm y tế, VOCABULARY quản lý nguồn gốc. Tìm hiểu
|
|
8
|
+
standard_concept, domain_id, concept_class_id, vocabulary_id
|
|
9
|
+
và cách tra cứu trên Athena.
|
|
10
|
+
duration_minutes: 60
|
|
11
|
+
is_free: true
|
|
12
|
+
video_url: null
|
|
13
|
+
sort_order: 14
|
|
14
|
+
section_title: "Phần 5: Standardized Vocabularies"
|
|
15
|
+
course:
|
|
16
|
+
id: 019f1a00-a100-7b01-e001-omopcdm54001
|
|
17
|
+
title: "OMOP CDM 5.4 cho Người mới — Hiểu từ A đến Z"
|
|
18
|
+
slug: omop-cdm-5-4-cho-nguoi-moi-bat-dau
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 340" style="max-width: 100%; height: auto; border-radius: 12px; margin-bottom: 1.5rem;">
|
|
22
|
+
<defs>
|
|
23
|
+
<linearGradient id="bg-omop14" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
24
|
+
<stop offset="0%" style="stop-color:#0c1222"/>
|
|
25
|
+
<stop offset="100%" style="stop-color:#1e293b"/>
|
|
26
|
+
</linearGradient>
|
|
27
|
+
</defs>
|
|
28
|
+
<rect width="1200" height="340" rx="12" fill="url(#bg-omop14)"/>
|
|
29
|
+
<g>
|
|
30
|
+
<circle cx="690" cy="88" r="22" fill="#818cf8" opacity="0.11"/>
|
|
31
|
+
<circle cx="770" cy="108" r="30" fill="#818cf8" opacity="0.08"/>
|
|
32
|
+
<circle cx="850" cy="130" r="26" fill="#818cf8" opacity="0.07"/>
|
|
33
|
+
<line x1="630" y1="160" x2="1100" y2="240" stroke="#818cf8" stroke-width="0.5" opacity="0.1"/>
|
|
34
|
+
</g>
|
|
35
|
+
<rect x="60" y="50" width="4" height="60" rx="2" fill="#818cf8"/>
|
|
36
|
+
<rect x="80" y="50" width="130" height="28" rx="14" fill="#818cf8" opacity="0.15"/>
|
|
37
|
+
<text x="92" y="69" font-family="system-ui,-apple-system,sans-serif" font-size="13" font-weight="600" fill="#818cf8">🏗️ Kiến trúc — Bài 14</text>
|
|
38
|
+
<text x="60" y="140" font-family="system-ui,-apple-system,sans-serif" font-size="34" font-weight="700" fill="#f1f5f9">
|
|
39
|
+
<tspan x="60" dy="0">CONCEPT & VOCABULARY</tspan>
|
|
40
|
+
<tspan x="60" dy="42">Nền tảng từ điển chuẩn</tspan>
|
|
41
|
+
</text>
|
|
42
|
+
<text x="60" y="244" font-family="system-ui,-apple-system,sans-serif" font-size="15" fill="#94a3b8" opacity="0.8">OMOP CDM 5.4 cho Người mới — Hiểu từ A đến Z</text>
|
|
43
|
+
<text x="60" y="268" font-family="system-ui,-apple-system,sans-serif" font-size="13" fill="#64748b" opacity="0.6">Phần 5: Standardized Vocabularies</text>
|
|
44
|
+
<text x="1140" y="320" font-family="system-ui,-apple-system,sans-serif" font-size="12" fill="#475569" text-anchor="end" opacity="0.4">xdev.asia</text>
|
|
45
|
+
</svg>
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
## Giới thiệu
|
|
50
|
+
|
|
51
|
+
Hệ thống **Standardized Vocabularies** là "bộ não" của OMOP CDM — mọi dữ liệu lâm sàng đều liên kết về đây. Bài này tập trung vào hai bảng trung tâm: **CONCEPT** (chứa ~10 triệu khái niệm y tế) và **VOCABULARY** (quản lý 70+ nguồn từ điển). Hiểu hai bảng này là chìa khóa để thành thạo OMOP.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 1. Bảng CONCEPT
|
|
56
|
+
|
|
57
|
+
### 1.1. Cấu trúc
|
|
58
|
+
|
|
59
|
+
| Cột | Kiểu | Mô tả | Ví dụ |
|
|
60
|
+
|-----|------|-------|-------|
|
|
61
|
+
| `concept_id` | INTEGER | PK — ID duy nhất toàn cục | 201826 |
|
|
62
|
+
| `concept_name` | VARCHAR(255) | Tên concept | "Type 2 diabetes mellitus" |
|
|
63
|
+
| `domain_id` | VARCHAR(20) | Domain (bảng nào) | "Condition" |
|
|
64
|
+
| `vocabulary_id` | VARCHAR(20) | FK → VOCABULARY | "SNOMED" |
|
|
65
|
+
| `concept_class_id` | VARCHAR(20) | Phân loại trong vocab | "Clinical Finding" |
|
|
66
|
+
| `standard_concept` | VARCHAR(1) | S=Standard, C=Classification, NULL | "S" |
|
|
67
|
+
| `concept_code` | VARCHAR(50) | Mã gốc trong vocabulary | "44054006" |
|
|
68
|
+
| `valid_start_date` | DATE | Ngày bắt đầu có hiệu lực | 2002-01-31 |
|
|
69
|
+
| `valid_end_date` | DATE | Ngày hết hiệu lực | 2099-12-31 |
|
|
70
|
+
| `invalid_reason` | VARCHAR(1) | NULL=valid, U=updated, D=deleted | NULL |
|
|
71
|
+
|
|
72
|
+
### 1.2. standard_concept — Ba loại Concept
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
┌─────────────────────────────────────────────────────┐
|
|
76
|
+
│ standard_concept = 'S' (Standard) │
|
|
77
|
+
│ → Concept "chính thống" dùng trong *_concept_id │
|
|
78
|
+
│ → VD: SNOMED 201826 "Type 2 diabetes mellitus" │
|
|
79
|
+
│ → Dùng cho condition_concept_id │
|
|
80
|
+
└──────────────────────┬──────────────────────────────┘
|
|
81
|
+
│ Maps to (nguồn → đích)
|
|
82
|
+
┌──────────────────────┴──────────────────────────────┐
|
|
83
|
+
│ standard_concept = NULL (Non-standard / Source) │
|
|
84
|
+
│ → Concept nguồn từ ICD, CPT4, ATC... │
|
|
85
|
+
│ → VD: ICD10CM 45591837 "E11 - Type 2 DM" │
|
|
86
|
+
│ → Dùng cho *_source_concept_id │
|
|
87
|
+
└─────────────────────────────────────────────────────┘
|
|
88
|
+
|
|
89
|
+
┌─────────────────────────────────────────────────────┐
|
|
90
|
+
│ standard_concept = 'C' (Classification) │
|
|
91
|
+
│ → Concept dùng cho phân cấp / ancestor │
|
|
92
|
+
│ → VD: MedDRA PT "Diabetes mellitus" │
|
|
93
|
+
└─────────────────────────────────────────────────────┘
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 1.3. domain_id — Xác định bảng đích
|
|
97
|
+
|
|
98
|
+
| domain_id | Bảng CDM | Ví dụ |
|
|
99
|
+
|-----------|---------|-------|
|
|
100
|
+
| Condition | CONDITION_OCCURRENCE | Bệnh, triệu chứng |
|
|
101
|
+
| Drug | DRUG_EXPOSURE | Thuốc |
|
|
102
|
+
| Procedure | PROCEDURE_OCCURRENCE | Thủ thuật |
|
|
103
|
+
| Measurement | MEASUREMENT | Xét nghiệm |
|
|
104
|
+
| Observation | OBSERVATION | Ghi nhận |
|
|
105
|
+
| Device | DEVICE_EXPOSURE | Thiết bị |
|
|
106
|
+
| Spec Anatomic Site | SPECIMEN | Vị trí lấy mẫu |
|
|
107
|
+
| Visit | VISIT_OCCURRENCE | Loại visit |
|
|
108
|
+
| Type Concept | *_type_concept_id | Nguồn dữ liệu |
|
|
109
|
+
| Gender | PERSON | Giới tính |
|
|
110
|
+
| Race | PERSON | Chủng tộc |
|
|
111
|
+
| Unit | MEASUREMENT.unit | Đơn vị |
|
|
112
|
+
| Route | DRUG_EXPOSURE.route | Đường dùng |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 2. Bảng VOCABULARY
|
|
117
|
+
|
|
118
|
+
### 2.1. Cấu trúc
|
|
119
|
+
|
|
120
|
+
| Cột | Kiểu | Mô tả |
|
|
121
|
+
|-----|------|-------|
|
|
122
|
+
| `vocabulary_id` | VARCHAR(20) | PK — ID vocabulary |
|
|
123
|
+
| `vocabulary_name` | VARCHAR(255) | Tên đầy đủ |
|
|
124
|
+
| `vocabulary_reference` | VARCHAR(255) | URL tham chiếu |
|
|
125
|
+
| `vocabulary_version` | VARCHAR(255) | Phiên bản |
|
|
126
|
+
| `vocabulary_concept_id` | INTEGER | FK → Concept đại diện |
|
|
127
|
+
|
|
128
|
+
### 2.2. Vocabulary phổ biến
|
|
129
|
+
|
|
130
|
+
| vocabulary_id | Tên | Domain chính | Vai trò |
|
|
131
|
+
|--------------|-----|-------------|---------|
|
|
132
|
+
| **SNOMED** | SNOMED-CT | Condition, Procedure, Observation | Standard cho lâm sàng |
|
|
133
|
+
| **RxNorm** | RxNorm | Drug | Standard cho thuốc |
|
|
134
|
+
| **LOINC** | LOINC | Measurement | Standard cho xét nghiệm |
|
|
135
|
+
| **ICD10CM** | ICD-10-CM | Condition | Source concept chẩn đoán |
|
|
136
|
+
| **ICD10PCS** | ICD-10-PCS | Procedure | Source concept thủ thuật |
|
|
137
|
+
| **CPT4** | CPT-4 | Procedure, Measurement | Source billing code |
|
|
138
|
+
| **ATC** | ATC | Drug | Classification thuốc |
|
|
139
|
+
| **UCUM** | UCUM | Unit | Đơn vị đo lường |
|
|
140
|
+
| **Gender** | OMOP Gender | Gender | Giới tính |
|
|
141
|
+
| **Race** | Race | Race | Chủng tộc |
|
|
142
|
+
| **CVX** | Vaccines | Drug | Vaccine codes |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 3. Tra cứu Concept trên Athena
|
|
147
|
+
|
|
148
|
+
### 3.1. Bước tra cứu
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
1. Vào athena.ohdsi.org
|
|
152
|
+
2. Gõ từ khóa: "Type 2 diabetes"
|
|
153
|
+
3. Filter:
|
|
154
|
+
- Standard Concept: Standard ✓
|
|
155
|
+
- Domain: Condition ✓
|
|
156
|
+
- Vocabulary: SNOMED ✓
|
|
157
|
+
4. Kết quả:
|
|
158
|
+
concept_id: 201826
|
|
159
|
+
concept_name: Type 2 diabetes mellitus
|
|
160
|
+
vocabulary_id: SNOMED
|
|
161
|
+
concept_code: 44054006
|
|
162
|
+
standard_concept: S
|
|
163
|
+
domain_id: Condition
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 3.2. SQL tra cứu
|
|
167
|
+
|
|
168
|
+
```sql
|
|
169
|
+
-- Tìm Standard Concept cho "tiểu đường type 2"
|
|
170
|
+
SELECT concept_id, concept_name, vocabulary_id,
|
|
171
|
+
domain_id, standard_concept, concept_code
|
|
172
|
+
FROM concept
|
|
173
|
+
WHERE LOWER(concept_name) LIKE '%type 2 diabetes%'
|
|
174
|
+
AND standard_concept = 'S'
|
|
175
|
+
AND domain_id = 'Condition'
|
|
176
|
+
ORDER BY concept_name;
|
|
177
|
+
|
|
178
|
+
-- Tìm Source Concept (ICD-10) mapping đến Standard
|
|
179
|
+
SELECT
|
|
180
|
+
c_src.concept_id AS source_concept_id,
|
|
181
|
+
c_src.concept_code AS icd10_code,
|
|
182
|
+
c_src.concept_name AS icd10_name,
|
|
183
|
+
c_std.concept_id AS standard_concept_id,
|
|
184
|
+
c_std.concept_name AS standard_name,
|
|
185
|
+
c_std.vocabulary_id AS standard_vocab
|
|
186
|
+
FROM concept c_src
|
|
187
|
+
JOIN concept_relationship cr
|
|
188
|
+
ON c_src.concept_id = cr.concept_id_1
|
|
189
|
+
AND cr.relationship_id = 'Maps to'
|
|
190
|
+
JOIN concept c_std
|
|
191
|
+
ON cr.concept_id_2 = c_std.concept_id
|
|
192
|
+
AND c_std.standard_concept = 'S'
|
|
193
|
+
WHERE c_src.concept_code = 'E11'
|
|
194
|
+
AND c_src.vocabulary_id = 'ICD10CM';
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 4. concept_class_id — Phân loại trong Vocabulary
|
|
200
|
+
|
|
201
|
+
### 4.1. SNOMED
|
|
202
|
+
|
|
203
|
+
| concept_class_id | Ý nghĩa | Ví dụ |
|
|
204
|
+
|-----------------|---------|-------|
|
|
205
|
+
| Clinical Finding | Bệnh, triệu chứng | Type 2 DM |
|
|
206
|
+
| Procedure | Thủ thuật | Appendectomy |
|
|
207
|
+
| Body Structure | Cấu trúc cơ thể | Liver |
|
|
208
|
+
| Substance | Chất | Glucose |
|
|
209
|
+
| Observable Entity | Quantity đo được | Blood pressure |
|
|
210
|
+
| Qualifier Value | Giá trị bổ sung | Severe |
|
|
211
|
+
|
|
212
|
+
### 4.2. RxNorm
|
|
213
|
+
|
|
214
|
+
| concept_class_id | Level | Ví dụ |
|
|
215
|
+
|-----------------|-------|-------|
|
|
216
|
+
| Ingredient (IN) | Hoạt chất | Metformin |
|
|
217
|
+
| Clinical Drug Form (CDF) | HC + dạng bào chế | Metformin Oral Tablet |
|
|
218
|
+
| Clinical Drug (CD) | HC + liều + dạng | Metformin 500mg Tab |
|
|
219
|
+
| Branded Drug (BD) | Tên thương mại | Glucophage 500mg Tab |
|
|
220
|
+
| Clinical Drug Comp (CDC) | HC + liều | Metformin 500mg |
|
|
221
|
+
| Brand Name (BN) | Tên thương mại | Glucophage |
|
|
222
|
+
| Dose Form (DF) | Dạng bào chế | Oral Tablet |
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 5. Bảng DOMAIN
|
|
227
|
+
|
|
228
|
+
| Cột | Kiểu | Mô tả |
|
|
229
|
+
|-----|------|-------|
|
|
230
|
+
| `domain_id` | VARCHAR(20) | PK |
|
|
231
|
+
| `domain_name` | VARCHAR(255) | Tên domain |
|
|
232
|
+
| `domain_concept_id` | INTEGER | FK → concept |
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 6. Bảng CONCEPT_CLASS
|
|
237
|
+
|
|
238
|
+
| Cột | Kiểu | Mô tả |
|
|
239
|
+
|-----|------|-------|
|
|
240
|
+
| `concept_class_id` | VARCHAR(20) | PK |
|
|
241
|
+
| `concept_class_name` | VARCHAR(255) | Tên class |
|
|
242
|
+
| `concept_class_concept_id` | INTEGER | FK → concept |
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## 7. concept_id = 0 — Ý nghĩa đặc biệt
|
|
247
|
+
|
|
248
|
+
| Concept | Ý nghĩa | Khi nào dùng |
|
|
249
|
+
|---------|---------|-------------|
|
|
250
|
+
| concept_id = 0 | "No matching concept" | Không map được |
|
|
251
|
+
| concept_name | "No matching concept" | |
|
|
252
|
+
| domain_id | NULL | |
|
|
253
|
+
| vocabulary_id | "None" | |
|
|
254
|
+
|
|
255
|
+
```sql
|
|
256
|
+
-- Kiểm tra % records không map được
|
|
257
|
+
SELECT
|
|
258
|
+
'condition_occurrence' AS table_name,
|
|
259
|
+
COUNT(*) AS total_records,
|
|
260
|
+
SUM(CASE WHEN condition_concept_id = 0 THEN 1 ELSE 0 END) AS unmapped,
|
|
261
|
+
ROUND(SUM(CASE WHEN condition_concept_id = 0 THEN 1 ELSE 0 END) * 100.0
|
|
262
|
+
/ COUNT(*), 1) AS unmapped_pct
|
|
263
|
+
FROM condition_occurrence
|
|
264
|
+
UNION ALL
|
|
265
|
+
SELECT 'drug_exposure', COUNT(*),
|
|
266
|
+
SUM(CASE WHEN drug_concept_id = 0 THEN 1 ELSE 0 END),
|
|
267
|
+
ROUND(SUM(CASE WHEN drug_concept_id = 0 THEN 1 ELSE 0 END) * 100.0
|
|
268
|
+
/ COUNT(*), 1)
|
|
269
|
+
FROM drug_exposure
|
|
270
|
+
UNION ALL
|
|
271
|
+
SELECT 'measurement', COUNT(*),
|
|
272
|
+
SUM(CASE WHEN measurement_concept_id = 0 THEN 1 ELSE 0 END),
|
|
273
|
+
ROUND(SUM(CASE WHEN measurement_concept_id = 0 THEN 1 ELSE 0 END) * 100.0
|
|
274
|
+
/ COUNT(*), 1)
|
|
275
|
+
FROM measurement;
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Tổng kết
|
|
281
|
+
|
|
282
|
+
1. **CONCEPT**: ~10 triệu records, mỗi khái niệm y tế có 1 concept_id duy nhất
|
|
283
|
+
2. **standard_concept**: S = Standard (dùng chính), C = Classification, NULL = Source
|
|
284
|
+
3. **domain_id** quyết định dữ liệu lưu ở bảng CDM nào
|
|
285
|
+
4. **VOCABULARY**: 70+ nguồn từ điển (SNOMED, RxNorm, LOINC, ICD-10...)
|
|
286
|
+
5. **concept_id = 0**: "không map được" — dùng khi ETL không tìm được Standard Concept
|
|
287
|
+
6. Tra cứu: **athena.ohdsi.org** hoặc query trực tiếp bảng CONCEPT
|
|
288
|
+
|
|
289
|
+
**Bài tiếp theo:** CONCEPT_RELATIONSHIP & CONCEPT_ANCESTOR — mối quan hệ và phân cấp giữa Concepts.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Tài liệu tham khảo
|
|
294
|
+
|
|
295
|
+
- [OMOP CDM 5.4 — CONCEPT](https://ohdsi.github.io/CommonDataModel/cdm54.html#CONCEPT)
|
|
296
|
+
- [OMOP CDM 5.4 — VOCABULARY](https://ohdsi.github.io/CommonDataModel/cdm54.html#VOCABULARY)
|
|
297
|
+
- [Athena](https://athena.ohdsi.org/)
|
|
298
|
+
- [Book of OHDSI — Chapter 5: Standardized Vocabularies](https://ohdsi.github.io/TheBookOfOhdsi/StandardizedVocabularies.html)
|