blob: 093bf021abcb1ff3fbcd960063bf59a850816bb1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="author" content="韩暮秋">
<meta name="subtitle" content="暮秋小屋">
<meta name="description" content="这里是暮秋小屋,思念和灵感的寄存处">
<meta name="keywords" content="韩暮秋,MuqiuHan,'Muqiu Han', 'muqiu han', muqiuhan">
<title>
FHIR 记录患者的用药记录 |
暮秋小屋
</title>
<link rel="icon" href="/favicon.ico">
<!-- stylesheets list from _config.yml -->
<link rel="stylesheet" href="/css/style.css">
<link rel="preload" href="/fonts/latin-base.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/cjk-common.woff2" as="font" type="font/woff2" crossorigin>
<!-- scripts list from _config.yml -->
<script
src="/js/menu.js"></script>
<script
src="https://polyfill.alicdn.com/polyfill.js?features=es6"></script>
<script
id="MathJax-script"
async
src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/mathjax/3.2.0/es5/tex-mml-chtml.js"></script>
<meta name="generator" content="Hexo 6.3.0"></head>
<body>
<div class="wrapper">
<div class="header">
<div class="flex-container">
<div class="header-inner">
<div class="site-brand-container">
<a href="/">
暮秋小屋
</a>
</div>
<div id="menu-btn" class="menu-btn" onclick="toggleMenu()">
菜单
</div>
<nav class="site-nav">
<ul class="menu-list">
<li class="menu-item">
<a href="/">
主页
</a>
</li>
<li class="menu-item">
<a href="/categories/gallery/">
日记本
</a>
</li>
<li class="menu-item">
<a href="/tags/Medicine/">
泛医学
</a>
</li>
<li class="menu-item">
<a href="/tags/Technique/">
计算机
</a>
</li>
<li class="menu-item">
<a href="/tags/Life/">
生活
</a>
</li>
<li class="menu-item">
<a href="/archives">
全部
</a>
</li>
<li class="menu-item">
<a href="/about">
关于
</a>
</li>
<li class="menu-item">
<a href="/search">搜索</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="main">
<div class="flex-container">
<article id="post">
<div class="post-head">
<div class="post-info">
<div class="tag-list">
<span class="post-tag">
<a href="/tags/Technique/">
Technique
</a>
</span>
</div>
<div class="post-title">
FHIR 记录患者的用药记录
</div>
<span class="post-date">
Dec 29, 2025
</span>
</div>
<div class="post-img">
<div class="h-line-primary"></div>
</div>
</div>
<div class="post-content">
<p>FHIR 中的“用药记录”并非一个单一概念,而是一个由不同角色、不同时间点和不同意图构成的连续工作流。</p>
<p>FHIR 中的药物相关记录类型本质上是是<strong>状态机(State Machine)和责任链(Chain of Responsibility)</strong>。每个资源代表业务流程中的一个特定状态(如“已下达”、“已执行”、“已陈述”),并通过引用链接形成完整的、可审计的责任链。以下是基于此原理的决策逻辑与实现方案。</p>
<h3 id="核心逻辑:根据数据源的意图选择资源"><a class="header-anchor" href="#核心逻辑:根据数据源的意图选择资源">¶</a>核心逻辑:根据数据源的意图选择资源</h3>
<p>用药信息的记录遵循“谁在什么时间点产生了什么信息”的原则。这直接对应到三个核心资源:</p>
<ol>
<li>
<p><strong>MedicationRequest(用药请求)</strong></p>
<ul>
<li><strong>意图与状态</strong>:代表一个<strong>临床意图</strong>或<strong>指令</strong>。这是一个对未来行为的请求,其状态包括 <code>active</code>(激活)、<code>completed</code>(完成)、<code>cancelled</code>(取消)等。</li>
<li><strong>数据来源</strong>:由具有处方权的医疗专业人员(如医生)创建。</li>
<li><strong>核心信息</strong>:包含用药方案(药品、剂量、频次、途径)、用药原因、有效时间段、开立者、开立时间。</li>
<li><strong>类比</strong>:医院的“医嘱单”或药房的“处方”。</li>
</ul>
</li>
<li>
<p><strong>MedicationAdministration(用药管理)</strong></p>
<ul>
<li><strong>意图与状态</strong>:代表一个<strong>已发生的事实</strong>。这是对MedicationRequest指令的一次具体执行事件的记录,状态为 <code>completed</code>。</li>
<li><strong>数据来源</strong>:由执行给药的医疗专业人员(如护士)在给药后记录。</li>
<li><strong>核心信息</strong>:包含实际使用的药品、实际剂量、实际给药时间、给药途径、执行者。它必须通过 <code>.basedOn</code> 字段引用一个或多个MedicationRequest,以建立从“指令”到“执行”的可追溯性。</li>
<li><strong>类比</strong>:护士的“给药记录”,精确到某年某月某日某时某分给患者注射了某药。</li>
</ul>
</li>
<li>
<p><strong>MedicationStatement(用药陈述)</strong></p>
<ul>
<li><strong>意图与状态</strong>:代表一个<strong>关于用药的断言或声明</strong>。它描述的是患者<strong>正在使用、曾经使用或计划使用</strong>某种药物的状态,不一定关联到具体的医嘱。</li>
<li><strong>数据来源</strong>:可以来自患者自述(如“我每天吃一粒阿司匹林”)、家属转述,或由系统从历史记录中汇总生成。</li>
<li><strong>核心信息</strong>:包含陈述的用药信息、有效时间段、信息状态(如 <code>active</code>, <code>completed</code>)、信息来源(<code>patient-reported</code>)。</li>
<li><strong>类比</strong>:病历中的“现病史-用药史”部分,或患者填写的“用药清单”。</li>
</ul>
</li>
</ol>
<p>一个完整的院内用药闭环通常遵循以下可追溯的数据流:</p>
<pre class="mermaid">graph LR
A[医生创建<br>MedicationRequest] -- `.basedOn` 引用 --> B[护士执行后创建<br>MedicationAdministration];
B -- 系统可推导生成 --> C[系统生成<br>MedicationStatement<br>(汇总当前有效用药)];
D[患者自述<br>MedicationStatement] -- 可提供给 --> A;</pre>
<p>这种设计确保了数据的<strong>不可变性与可审计性</strong>。每个事件(开立、执行)作为一个独立的资源被记录,通过引用链形成完整的溯源路径。</p>
<ul>
<li><strong>追求完整审计溯源</strong>:必须使用 <code>MedicationRequest</code> + <code>MedicationAdministration</code> 的组合。这引入了更高的系统复杂性,但提供了从医嘱到执行的全链路证据。</li>
<li><strong>记录患者用药史或社区医疗场景</strong>:使用 <code>MedicationStatement</code> 更为合适和轻量。它牺牲了与具体执行事件的强关联,但能更灵活地捕获患者陈述或汇总的用药信息。</li>
<li><strong>一个常见错误</strong>是试图用一个 <code>MedicationStatement</code> 来同时扮演“医嘱”和“执行记录”的角色。这会破坏数据模型,导致无法区分“医嘱内容”、“实际执行情况”和“患者陈述”,在出现用药差错时无法进行有效溯源。</li>
</ul>
<h3 id="示例:记录一次门诊处方及取药"><a class="header-anchor" href="#示例:记录一次门诊处方及取药">¶</a>示例:记录一次门诊处方及取药</h3>
<ol>
<li><strong>医生开处方</strong>:创建 <code>MedicationRequest</code>,状态为 <code>active</code>,包含药品、用法用量、开立时间。</li>
<li><strong>药师发药</strong>:(若需记录发药行为)可创建 <code>MedicationDispense</code> 资源(另一个相关资源),记录发药时间、数量,并通过 <code>.basedOn</code> 引用上述 <code>MedicationRequest</code>。</li>
<li><strong>患者回家服药</strong>:此事件通常不在临床系统直接记录。但患者复诊时,可自述“我按处方吃了药”,此时可创建一条来源为 <code>patient-reported</code> 的 <code>MedicationStatement</code>,通过 <code>.derivedFrom</code> 关联到最初的 <code>MedicationRequest</code>,表明此陈述源于该处方。</li>
</ol>
<script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs'; mermaid.initialize({startOnLoad: true, flowchart: {curve: 'linear'}}); </script>
</div>
<script>
window.onload = detectors();
</script>
<div class="post-footer">
<div class="h-line-primary"></div>
<nav class="post-nav">
<div class="prev-item">
<div class="icon arrow-left"></div>
<div class="post-link">
<a href="/2025/12/30/%E4%B9%99%E9%85%B0%E5%8D%8A%E8%84%B1%E6%B0%A8%E9%85%B8%E7%9A%84%E8%8D%AF%E7%90%86%E5%AD%A6%E4%B8%8E%E8%8D%AF%E4%BB%A3%E5%8A%A8%E5%8A%9B%E5%AD%A6%E7%89%B9%E6%80%A7/">Prev</a>
</div>
</div>
<div class="next-item">
<div class="icon arrow-right"></div>
<div class="post-link">
<a href="/2025/12/29/TSOPT-%E6%A3%80%E6%9F%A5/">Next</a>
</div>
</div>
</nav>
</div>
<div class="post-comment">
</div>
</article>
</div>
</div>
<div class="footer">
<div class="flex-container">
<div class="footer-text">
韩暮秋 |
希望路过的人可以添点柴火让这里暖和点
</div>
</div>
</div>
</div>
<script src="/js/mermaid-zoom.js"></script>
</body>
</html>
|