基于区块链技术的医联体系统架构研究
2020-09-26冯云霞耿思薇
宋 波,刘 铮,冯云霞,耿思薇
(1.青岛科技大学 信息科学技术学院,山东 青岛 266000; 2.张店区人民医院,山东 淄博 255022)
0 引言
医联体是区域医疗联合体的简称,是指在一个区域内,由不同级别、类别医疗机构之间,通过纵向或横向医疗资源整合所形成的医疗机构联合组织。医联体以大带小,以强带弱优势逐步凸显,充分发挥了三级医院的龙头作用,极大地促进了我国现代医疗的建设与发展。
在医联体发展过程中,许多问题也渐渐浮现出来,由于同一医联体中的医院之间利益关系不明确,导致医院与医院之间无法建立一致的协议标准,资源整合不到位,影响医联体正常的运行。在运作时,医联体首先要求数据能够在机构中有效准确可靠的流动,并且要保证数据的安全与脱敏加密,隐私保护,同时医联体还要有一套完善可信的运行机制,传统的中心化医联体系统架构已无法解决这些问题。
针对这些问题,本文提出基于区块链技术的医联体建设,利用区块链去中心化公开透明等特性,解决医联体医院之间的数据的安全问题,并通过智能合约建立明确的医院间利益关系。以期推进医联体发展,为医疗行业信息化发展提供参考。
1 医联体简介
当前我国医联体分为3种:松散型、半紧密型和紧密型。在实际中,大多数为松散型医联体,而较少是紧密型医联体。
在发展的过程中,当前的医联体架构面临如下几个问题:
1)在医院业务系统中,缺少一个能将所有的数据进行实时采集整合的方法,通常的方法如视图同步等无形中极大增加了服务器压力,导致系统不稳定甚至宕机,且无法实时同步数据,导致数据无法完整地共享。
2)不同医院之间无法建立协商一致的协议标准。由于各个医院节点无法建立信任以及受约束的管理机制,且资源分配不均,无法自由安全地交换和传输医疗信息数据,更谈不上相互之间形成共识机制。
3)缺乏一个在不同医院数据传输的同时确保信息的稳定性、可靠性、不可篡改性及可追溯性的安全机制。由于设计初期设计的缺陷,各个医院中存在“信息孤岛”的问题,缺乏一个安全、可靠、可信的技术能够打破目前缺的僵局。
2 区块链技术简介
区块链技术(Block Chain)是将多种的技术有机结合并再加以创新的新模式技术,具有去中心化、公开透明、共享账本等的特性。区块链没有中心管制,即使一个节点出了问题也不会影响整体,使系统更安全可靠稳定。区块链具有公开透明的特性,链上的数据和系统信息可以被全节点审查和追溯,这是区块链值得信任的基础。区块链上的数据信息是无法篡改的,数据上链后会被永久存储,且数据经过安全加密,使得区块链数据信息更加安全。
在发展过程中,区块链主要被分为3种,分别是私有链、公有链及联盟链。私有链一般都会被某个组织机制内部使用,区块链上的权限规则完全由私有组织控制,参入的节点资格也会被严格限制。
公有链是完全的去中心化区块链,节点的添加不需要做任何验证机制,且所有节点拥有等同的权限,没有任何节点能控制或篡改区块链数据的读写,比特币就是著名的例子。
联盟链是一种典型的多中心结构区块链,其本质是分布式的托管记账,不需要相互信任即可实现数据的可信互换,一般是由达成约定的组织机构共同建设和维护的,各个节点通常有与之对应的实体机构组织,必须要通过授权才能够加入或者退出网络。
3 基于联盟链的医联体架构
目前,区块链的特性大部分都运作于金融行业,而区块链技术运用到医联体中优势也是是十分显著的。其去中心化、防篡改等特性恰好解决了医联体中所存在的问题,具体应用如下:
1)去中心化是区块链的最重要的特点。在区块链医联体系统中,每个医院或者机构都是一个独立的节点,医院应用的数据各自保存在各自的医院服务器内,且区块链数据经过加密保证了区块链上的数据的安全,授权的节点之间可以安全自由的传输数据信息,解决了各个医院之间的数据安全共享问题,并可以以此为基础,建立起共识机制。
2)区块链可以将医联体中医院里的各个应用数据信息整合在一起,形成数据分中心,实现医院节点的信息整合。
3)在区块链医联体中,政府部门负责整个系统的监管,而区块链具有的公开透明、可追溯的特点,使得政府部门更易于监管接入,获得更加全面实时的监管数据。
基于联盟链的医联体系统架构设计:
目前,我国医联体多数为松散型医联体,而较少为紧密型。松散型医联体组建简单,但机构间各自为政,貌合神离,作用不明显;紧密型医联体是高度集中的医疗联合体,医联体医院之间可互通有无,资源共享,更佳利于现代化医疗的发展。
比起传统的医联体形式,本文认为联盟链更符合医联体的运作形式,由卫健委为审计节点,负责监督和审查,三级医院为验证节点,二级医院或其他医疗机构等为非验证节点,即保证了卫健委的有效监督和宏观把控,又解决了医联体医院之间的数据交互、节点认证等问题。机构间的业务关系通过专门的通路连接起来,数据通过通路可实时准确的同步,在医联体内形成紧密且安全的业务网,实现松散型医联体到紧密型医联体的转变。
1)基于联盟链的医联体系统业务架构:
在医联体中,各机构与机构之间存在紧密的业务关系,使用联盟链更符合医联体的运作形式。channel是联盟链之间传递和同步数据的一种手段,将制定的节点连接在一起,不相关的节点无法参与进来,形成一个具有保密性的通道链路,实现机构与机构之间安全快速的交易。医疗机构之间业务结构如图1所示。
图1 医疗机构关系图
医疗机构之间结构如图1所示,在医联体中,上级医院和下级医院之间可以进行相互的转诊或医疗资源的共享。以转诊为例,当医院A接受到无法治疗的患者需向上级医院B转诊时,医院A需将患者的诊疗信息上报给医院B,医院A与医院B之间的利益关系智能合约会自动执行,这样既减少了患者的重复检查,同时也避免了医院之间的利益关系的不明确。
医疗监管部门之间、管理部门与医疗机构之间业务结构如图2所示。
图2 监管机构医疗机构关系图
如图2所示,卫健委在此区块链系统中作为监管部门,监管所管辖医院的医疗信息与医疗机构之间的交易信息。每个区的医院由各区的卫健委负责监管,医院会将医院的医疗信息上报给卫健委,监管部门之间关系由所管辖区域关系决定,上级部门负责监管下级部门,下级部门将其收到的医院医疗信息进行汇总并上报给上级监管部门,实现了一个层层递进的管理链。
2)基于联盟链的医联体系统组织架构:
根据医联体系统业务架构,首先要保证系统的稳定,机构与机构之间的链接,其次要保证数据的在机构间能够准确安全的流转,还要保证智能合约的合理,所以将医联体区块链系统上下分为5层,分别为数据层、网络层、共识层、合约层和应用层如图3所示。
如图3所示,数据层为底层的技术,负责存放区块链数据和存放医院里各个应用的数据如HIS(医院信息系统,Hospital Information System)、LIS(实验室信息管理系统,Laboratory Information Management System)、EMR(电子病历,Electronic Medical Record)等,数据保存在各个节
点的本地数据库中;区块链数据为医院之间转诊或共享医疗资源的数据、医院与监管部门之间上报的数据和监管部门与监管部门之间上报的数据,并加以加密存储保证数据安全。
网络层主要负责点与点之间的链接,又被称作为点对点技术,主要包括P2P组网机制、数据传播和验证机制。P2P网络由多个节点组成,一般分为验证节点、非验证节点和审计节点构成,其中卫健委担任审计节点,负责对区块链医联体系统内的交易进行审计与监督;三级医院担任验证节点负责进行对非验证节点的合法性验证与背书。
共识层封装了网络节点的各类共识机制算法, 能让高度分散的节点在去中心化的区块链网络中高效地针对区块数据的有效性达成共识决定了到底是谁来进行记账。目前最为知名的有3种共识机制——工作量机制证明(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)。
合约层就像一个自定义的电子合同,是区块链可编程特性的基础,其中封装各类脚本、算法和智能合约,规定了医联体中转诊、智能合约、数据权属等执行规则。
应用层为利用编程语言实现的可视化界面的客户端,客户端和部署到Fabric链上代码部分的服务器端业务合约共同完成应用功能。
采用图3区块链系统框架,首先解决医联体内医院之间的医疗数据共享和数据整合问题,区块链中每个节点的数据都会通过共识机制进行一致扩散,使得每个医联体内每个业务机构的数据一致,而且区块链层多中心化的设计使得一个客户端破坏也能正常运行,保证了系统的稳定性。合约层规定了一致的协议标准,明确了医联体内的共识机制。
图3 医联体区块链分层构架图
3)基于联盟链的医联体系统模块设计:
根据医联体系统架构业务需求,用户类型分别为监管机构和医疗机构两种,医疗监管机构要监管医院的交易的合法性同时还要监管着整个系统;在客户端将数据上链时需要进行加密以保证数据的安全,所以基于区块链架构将医联体分为5个模块,分别为区块链平台模块、智能合约模块、应用模块、审计模块及数据隐私模块。如图4所示。
图4 区块链医联体系统模块图
图4为区块链系统的系统模块图。其中底层为区块链平台模块,也是整个系统的核心组成。主要负责如下几个功能:
1)区块链平台模块负责将区块链链上的数据进行保存与读写,并保证各个节点中的数据保持一致。
2)区块链平台模块负责区块链中节点与节点之间的链接,并能够动态的增加或移除节点。
3)区块链平台模块负责对区块链上的数据进行特定的加密解密,保证数据的安全性与准确性。
4)封装共识机制,让一个决策权分散的系统达成一致。
(1)智能合约模块是应用模块与平台模块的中间层,封装预定义的若干状态、转换规则、触发条件以及应对操作等[1],负责向应用层提供API,如合约的部署、调用、执行及注销,医院之间病人的双向转诊、医疗资源共享等,合约代码保存在区块链平台中。
(2)数据隐私模块负责在交易过程中,对上传的数据进行加密,并将加密密钥只在相关方向共享,以保证数据不会被非相关方得到。
(3)应用模块是利用编程语言实现的面向用户的客户端,提供可视化操作,能够使用户通过调用智能合约,对区块链数据进行查询和上传数据。
(4)审计模块由卫健委担任,负责监管整个系统,对医院之间的交易进行审计、监督,保障数据交易的合法性,并进行追溯与管理。医疗机构通过区块链,在卫健委的监管下,调用智能合约模块,对区块链医联体系统的其他节点进行交易。
4 基于区块链的医联体系统工作流程
医联体内具体的工作流程与所需运行的业务有关,具体体现在对应的智能合约的执行过程。本文以转诊为例介绍基于区块链的医联体系统运行流程,假设二级医院为A,上级的三级医院为B,区县卫健委为C,其中,区县卫健委为审计节点,流程如图5所示。
图5 区块链医联体系统的流程图
当二级医院A收到患者无法确诊并要向三级医院B提交转诊时,医院A首先要通过医院应用客户端,向卫健委C提出上报申请,医院客户端会调用上报信息智能合约将上报申请数据上传到区块链,上链的数据会经过数据隐私模块进行加密保护,卫健办对获取到的上报信息进行验证与审核,当数据通过验证时,卫健委C会将审核结果通过区块链返回给医院A。当审核不通过时,不予办理转诊;若审核通过,医院A需将数据通过转诊API调用转诊智能合约将转诊数据和患者的性别、年龄、电子病历、医学影像、病理等数据上传于区块链,二级医院B再通过区块链上的智能合约获取到转诊信息与患者数据并同步到本地数据库中,同时,医院A与医院B之间的利益与其他的条例也会通过智能合约运行。这样转诊信息与患者的治疗方案以一种精准实时、安全可信的方式在医联体内流转,不仅能够节约医疗人员人力时间成本,也能增加患者本身对医院、医生的信任,同时也避免某些重复检查项目。
5 实现与分析
医联体系统合约采用Go语言实现,实现了医联体平台中转诊、医疗资源共享、医疗信息上报、数据查询等功能。
5.1 合约主结构
合约以main方法为入口, Init方法和Invoke方法是合约里不可缺少的两个方法,分别负责初始化合约和调用合约,实现如图6所示。
图6 合约主结构代码图
如图6所示,main方法中调用shim.Start方法启动合约MedicalAlliance,Init方法将此合约初始化之后Invoke对MedicalAlliance里的方法进行调用。
5.2 智能合约的实现
以转诊为例,每一位患者进入医院就诊时会有一个切唯一的就诊号,就诊号绑定着此患者的诊断和检查等医疗信息,当医院之间需要转诊时,原始医院须向目标医院提供患者的诊号。
在合约实现时,首先考虑的是验证数据的合理性,验证分别是参数个数、数据是否存在和原始医院是否存在患者,实现如图7所示。
图7 数据合理性校验代码图
校验完数据合理性后需要将数据状态更新到区块链上,写入状态主要需要实现如下3个功能:原始医院删除患者id、目标医院加入患者id和患者转诊记录,实现如图8所示。
图8 写入状态代码图
医院之间原始医院将转诊患者ID转到目标医院,目标医院可查看患者的就诊号绑定着此次就诊的医疗数据,也就实现了医院之间患者的转诊。
6 结束语
将区块链技术运用到医联体中,能够有效解决当前医联体建设中存在的数据共享、合约不统一等问题,医联体医院之间可以信任安全的进行交易,无需担心信息泄露与篡改, 建立起一套互信共享的机制。在区块链+医联体的模式下,信息能够被快速的共享,也能避免患者检查重复项。同时,上级医院专家到社区医院坐诊时,可以通过区块链应用对患者进行远程会诊,方便了医院与医院之间的联系。将区块链技术运用到医联体将对医联体带来深刻的变革,极大促进区域医疗建设,多方面的提升健康医疗服务效率和质量[2-20]。