# 开发人员接口说明
# 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
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库有其他排序标准。
# 交互
为了操作数据,FHIR 定义了REST API
- Create = POST https://example.com/path/{resourceType}
- Read = GET https://example.com/path/{resourceType}/{id}
- Update = PUT https://example.com/path/{resourceType}/{id}
- Delete = DELETE https://example.com/path/{resourceType}/{id}
- Search = GET https://example.com/path/{resourceType}?searchParameters…
- History = GET https://example.com/path/{resourceType}/{id}/_history
- Transaction = POST https://example.com/path/ (将传输包发布到系统)
- Operation = GET https://example.com/path/{resourceType}/{id}/${opname}
除了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
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+ - 这时候也没有任何元数据。资源的其他部分同上述示例
← FHIR如何入门