# 开发人员接口说明

# FHIR概述-开发人员

FHIR概述

  • FHIR(Fast Health Interoperability Resources)旨在实现能够支撑医疗领域多种流程的数据交换。
  • 该标准基于 Restful 的最佳实践,能够实现跨专业的医疗系统的集成。
  • FHIR 所支持的范围很广泛,包括人、兽医、临床、公共卫生、临床试验、管理和财务等方面。全球通用且支持多种架构和场景。

# 框架

FHIR 是基于 资源 这一通用组件. 每个资源都有如下通用特征:

  • 用URL来标识
  • 通用的元数据
  • 供人可读的XHTML概述
  • 通用的数据元集合
  • 扩展的框架以支持医疗中的多样性

资源要么是 XML ,要么是 JSON格式的. 目前已经定义了99种资源类型

# Patien t示例

如何用JSON来表示patient。 标准中也定义了XML的表达方式

{
"resourceType": "Patient",
"id" : "23434",
"meta" : {
"versionId" : "12",
"lastUpdated" : "2014-08-18T01:43:30Z"
},
"text": {
"status": "generated",
"div": "<!-- Snipped for Brevity -->"
},
"extension": [
{
"url": "http://example.org/consent#trials",
"valueCode": "renal"
}
],
"identifier": [
{
"use": "usual",
"label": "MRN",
"system": "http://www.goodhealth.org/identifiers/mrn",
"value": "123456"
}
],
"name": [
{
"family": ["Levin"],
"given": ["Henry"],
"suffix": ["The 7th"]
}
],
"gender": {
"text": "Male"
},
"birthDate": "1932-09-24",
"active": true
}

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

每个资源包括如下内容

  • resourceType (line 2) - 必须要有: FHIR 中定义了多种资源类型,详细列表请查看the full index
  • id (line 3) - 资源自身的id(而非资源中数据的ID 相当于资源在数据库中的主键). 一般而言都是要有的,除了在新建时之外。
  • meta (lines 4 - 7) - 通常要由 : 所有资源都会有的属性(这里和其他地方对元数据的定义略有偏差,参考github.com/memect)受基础架构控制. 如果没有元数据可以为空
  • text (lines 8 - 11) - 推荐使用: XHTML 包含了资源中 供人可读的部分
  • extension (lines 12 - 17) - 可选: Extensions由扩展框架所定义
  • data (lines 18 - 38) - 可选: 每种资源所定义的数据项。

备注 尽管标准中总是以所定义的顺序来显示JSON中数据的顺序,但很多JSON库有其他排序标准。

# 交互

除了RESTful API之外,FHIR 中还定义了其他的数据交换方式,包括 文档,消息和其他类型的服务.

# 对多样性的管理

医疗行业的一大特点就是不同地区和细分行业都存在很大的差异性,并不存在一个 集中式的权威机构来定义通用的行业规范。鉴于此, FHIR 中定义了通用扩展框架和 管理多样性的框架.

# 新增一个资源

为了新增一个资源, 需要发送一个 HTTP 的 POST 请求到某个资源节点(也就是某个URL).

POST https://example.com/path/{resourceType}
1

如下所示

POST {some base path}/Patient HTTP/1.1
Authorization: Bearer 37CC0B0E-C15B-4578-9AC1-D83DCED2B2F9
Accept: application/json+fhir
Content-Type: application/json+fhir
Content-Length: 1198
`{` "resourceType": "Patient",
...
}

1
2
3
4
5
6
7
8
9

向服务器提交一条患者记录, 服务器可以根据自己的情况分配ID来存储该患者记录。

备注

  • /Patient (line 1) - 处理所有患者的节点- 这里使用资源类型的名称
  • Authorization (line 2) - 参考 Security for FHIR
  • Accept, Content-Type (lines 3-4) - 如果资源的数据是JSON格式,content type需要设置成这样application/json+fhir (XML的话设置成 application/xml+fhir). 数据的编码始终是UTF-8
  • id (line 7) - 待新建的记录中并没有id,由服务器来分配
  • Resource Content, lines 7+ - 这时候也没有任何元数据。资源的其他部分同上述示例