summaryrefslogtreecommitdiff
path: root/2025/12/29/FHIR-记录患者的用药记录
diff options
context:
space:
mode:
Diffstat (limited to '2025/12/29/FHIR-记录患者的用药记录')
-rw-r--r--2025/12/29/FHIR-记录患者的用药记录/index.html337
1 files changed, 337 insertions, 0 deletions
diff --git a/2025/12/29/FHIR-记录患者的用药记录/index.html b/2025/12/29/FHIR-记录患者的用药记录/index.html
new file mode 100644
index 00000000..4aa8f73f
--- /dev/null
+++ b/2025/12/29/FHIR-记录患者的用药记录/index.html
@@ -0,0 +1,337 @@
+<!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">
+
+
+ <style>
+ @font-face {
+ font-family: CarroisSong;
+ src: url('/fonts/CarroisSong.ttf');
+ }
+ </style>
+
+
+
+ <!-- stylesheets list from _config.yml -->
+
+ <link rel="stylesheet" href="/css/style.css">
+
+
+
+
+
+ <!-- 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="mask-border">
+ </div>
+
+ <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 search-btn">
+ <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>
+<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">graph LR</span><br><span class="line"> A[医生创建&lt;br&gt;MedicationRequest] -- `.basedOn` 引用 --&gt; B[护士执行后创建&lt;br&gt;MedicationAdministration];</span><br><span class="line"> B -- 系统可推导生成 --&gt; C[系统生成&lt;br&gt;MedicationStatement&lt;br&gt;(汇总当前有效用药)];</span><br><span class="line"> D[患者自述&lt;br&gt;MedicationStatement] -- 可提供给 --&gt; A;</span><br></pre></td></tr></table></figure>
+<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>
+
+</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>
+
+
+ <div class="search-popup">
+ <div class="search-popup-overlay">
+ </div>
+ <div class="search-popup-window" >
+ <div class="search-header">
+ <div class="search-input-container">
+ <input autocomplete="off" autocapitalize="off" maxlength="80"
+ placeholder="Search Anything" spellcheck="false"
+ type="search" class="search-input">
+ </div>
+ <div class="search-close-btn">
+ <div class="icon close-btn"></div>
+ </div>
+ </div>
+ <div class="search-result-container">
+ </div>
+ </div>
+</div>
+
+<script>
+ const searchConfig = {
+ path : "/search.xml",
+ top_n_per_article: "1",
+ unescape : "false",
+ trigger: "auto",
+ preload: "false"
+ }
+</script>
+<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/search.js"></script>
+<script src="/js/search.js"></script>
+
+
+
+ </body>
+</html>