[FHIR 从入门到放弃] Day 02-FHIR 基本概念

因为工作关系,忙到没空写文,拖稿拖了好久......

FHIR 是什麽,能吃吗?

为什麽会有 FHIR?

基本上 FHIR 主要就是要解决跨系统/跨装置的资料交换问题。

以台湾来说,现行各家医院/医疗照护机构的系统通常是由不同厂商提供,由於是不同厂商开发的软件,底层资料结构、格式可能不一样。这就导致了当这些系统间有资料交换的需求时,会因为这像限制导致各系统间无法有效进行介接,而必须另外写程序进行转换才能完成资料交换这件事情。当中资料的结构、介接时使用的介面(Interface)、栏位的规则与限制都是需要在转换过程中反覆被提出来讨论的东西,也因此会花上很多人力与时间成本。事实上,现在一家系统/产品要进到医院内与院内其他系统整合,平均需要花大约两个月的时间。

上述的问题可说是现行医疗行业的困境,且并不仅限於台湾。为了解决这样的问题,医疗行业势必需要一套医疗资料交换标准来支撑互联互通的需求。这样的需求从早期仅支援医院工作流程,发展到现在已经不仅针对医院,而是需要扩大至所有健康照护领域,并且要具备处理临床与非临床资料的能力。FHIR 就是在这个时空背景下的产物。

换句话说,FHIR 就是医疗界的 USB,让我们可以用一个通用的医资标准 + 通用的互操作性存取机制来交换所有跟医疗有关的资料。

FHIR 应用於多标准的整合

FHIR 相较於现行电子病历标准的优势

  • 通用性:FHIR 标准目前在国外被广泛应用,而目前健保是参考 CDA R2 魔改成 108 个单张(实际上医院真正会交换到的东西不到 20 张),拿出去国际基本上没人会鸟你。
  • 精简性:FHIR 采用的栏位格式更精简、可读性更高。(Schema 规划更简单易用)
  • 可靠性:FHIR 使用现代主流的资料交换技术(HTTPS + REST API),并使用主流的 Oauth 2.0 作为建议的标准化授权认证机制,安全性更有保障。
  • 可扩展性:FHIR 拥有相当高度的可扩展性,没有被 FHIR 规范在内的资料可以透过 Extenstion 栏位自行扩充。
  • 一致性:你可以在 FHIR 里面,为特定应用情境/场域撰写 Profile 及 Integration Guide(IG,实作指引),来让所有使用这个情境的系统都能有最高度的标准化及一致性。
  • 跨装置:FHIR 能广泛应用在各类装置上,就连苹果也早在 iOS 10 就开始支援 FHIR(低头看看你 iPhone 上的健康 APP 吧!) (可惜我没有 iPhone)

基本概念

FHIR 架构与资料结构

  • FHIR 把你在进行医疗工作流程中,所有会接触到的资料都标准化为单一个资料结构(Data Structure)。
  • FHIR 依照不同资料的性质进行归档,并把相关的资料整理成一个 Resource
    • 例如病人的姓名、生日、地址等资料都归类在 Patient Resource 里面)
  • 依照各 Resource 的分类,FHIR 将几个 Resource 组成一支 Module 方便检视。
    • 例如 Patient、Organization、Encounter 这几个 Resource 是其他更高层 Resource 会需要依赖的底层 Resource,因此一起归类为 Administration Module。
  • 各 Module 依照抽象化程度,组成 Level 1 ~ Level 5 等层级,层级越高抽象化程度越高,也越贴近应用面。
    FHIR Resource & Module

以工程的角度重新认识 FHIR

  • 我们认知的 FHIR,基本上就是一串 Data Model
  • 每个 FHIR Resource (Data Model) 都有固定的 Data Structure(schema)。
  • 这些 Data Structure 可以被支援以不同的 Data Format 呈现。
  • FHIR 使用主流的 REST API 作为 Interface 与其他系统介接。
    • 实际上不只有 REST API,不过在应用初期这会是最常碰到的交换方式
      FHIR Format

80-20 原则

  • FHIR Resource 帮你规划好 80% 绝大多数系统会常用到的栏位(例如病人的姓名、生日、地址这类常用栏位),剩下 20% 客制化/本地化的资料提供一个 Extension 栏位让你自己定义跟扩充。
  • 换言之,你可以用 20% 的时间去完成那些通用栏位的交换需求,拿剩下 80% 的时间专注在你自己的业务逻辑上。
  • 好处就是可读性高,并且省下非常多规划 Schema 跟 Interface 的时间跟人力。
    80-20 Rule

下一篇文章将会讲导读,带各位看懂 FHIR 官方的文件。


<<:  Day 27 Inheritance

>>:  敏捷开发 组别

Day25. Blue Prism让你远离挑灯夜战的日子 –BP自动登打订单

昨天加班加的凶, 到现在为止都还在挑灯夜战, 不过,在不景气的日子人就要想着变通, 才会有机会的到来...

微自干的旅程没有结束

微自干的旅程没有结束,但是每日连载的部分先不要。 进入正题 如果有关看我隔壁棚的轻松小品 (?) ...

[11] 建立进入页面和流程控制

这边你需要自己制作一个流程控制 不了解的话建可以画个图来确认现在在哪个流程 基本上都会回到主要操控介...

机器学习:资料流图(Data Flow Graphs)模型训练架构

资料流模型将运算任务描述成一个"有向无环图",节点表示资料运算和储存,节点之间的...

【从零开始的 C 语言笔记】第十七篇-if条件式

不怎麽重要的前言 上一篇介绍了二维阵列的概念,基本上阵列的使用方法都不会差太多,应该不算太难理解? ...