基于联盟区块链的电子病历系统模型研究

2021-02-27 07:37潘时清李洪进潘桃桃
网络安全技术与应用 2021年2期
关键词:病历合约区块

◆潘时清 李洪进 潘桃桃

基于联盟区块链的电子病历系统模型研究

◆潘时清 李洪进通讯作者潘桃桃

(遵义医科大学医学信息工程学院 贵州 563000)

本文通过研究联盟区块链技术,结合医疗健康信息集成规范IHE,探讨对跨区域电子病历共享模型研究方法,构建了基于联盟区块链的电子病历系统模型,设计系统的四个智能合约。区块链存储患者关键医疗和交易记录,采用了改进的PBFT共识算法,该算法适用于P2P网络且能耗较低;医疗机构作为联盟成员互联互通,自动执行智能合约,通过授权可以共享和交换患者的完整病历信息。这个跨平台、安全可靠的医院间电子病历共享模型,对医疗大数据背景下共享医疗资源和提升医疗系统的服务质量有重大的现实意义。

电子病历;联盟区块链;共识算法;智能合约

1 引言

电子病历是临床医疗信息的主要载体,包含了大量的医疗数据,目前各个医疗机构、政府、第三方机构等部门不能很好实现数据共享,而且在电子病历中包含有患者诊疗的隐私健康数据信息,因此如何高效安全地进行数据共享和如何设计电子病历共享系统的智能合约是实施的关键点和难点。采用区块链技术在医疗机构间建立联盟区块链,被授权加入区块链的节点采用相同结构来存储和访问数据可解决该问题。本文主要研究区块链技术在医疗领域的应用,在医疗机构间建立联盟区块链,并建立支持电子病历调度的数据共享平台,采用智能合约来表示区块链上患者、医院、病历信息指针和患者-医院之间的就诊关系、信息如何存储和查询,怎样既能保护患者隐私又能方便信息的共享。结合医疗健康信息集成规范对医院间电子病历互访机制建模,区块链存储患者关键医疗和交易记录。医院作为联盟成员互联互通,自动执行智能合约,通过授权共享患者完整病历信息。区块链为数据记录和身份管理提供标准,椭圆曲线加密算法进行数字签名,利用医疗信息同时又避免患者隐私泄露。该模型的实现能方便患者跨域看病,提升医疗系统服务质量,对医疗大数据背景下共享资源,整合挖掘医疗数据有现实意义。

2 区块链技术

区块链(Block Chain)技术是一个集数据库、开放性、安全性等功能为一体的创新技术,区块链有严密组织架构的授权账簿,能够实时核实和记录所有交易,这种特殊运作模式将会颠覆当前医疗卫生行业的信息处理方式,可以解决“互联网+医疗”和“医疗大数据”背景下医疗数据系统存在的问题,本文研究的电子病历共享系统利用区块链技术来存储交易,具有去中心化和去信任化的特性。区块链的基础架构模型如图1所示,自上而下有六层,包括:应用层、合约层、激励层、共识层、网络层和数据层。数据层是区块链的数据表示及数据操作规则;网络层管理着区块链网络中节点间的通信联系;共识层是描述节点间达成一致性的一组协议,包括POW、POS、DPOS、PBFT等共识算法;激励层掌握着让系统正常运作的激励措施;合约层通过虚拟机及编程语言工具为区块链提供开发环境;应用层是基于区块链底层体系结构所能实现的医疗数据发布、查询等功能模块的集合。

图1 区块链基础结构模型

区块链包括数据块block和链接chain,这些数据块由密码学算法加密产生,数据结构如图2所示,每个区块包含区块头和区块体,区块头由版本号、时间戳、前个区块形成的哈希散列、随机数、难度值、MERKLE 根树的哈希值几个部分构成,区块体记录了电子病历的全部交易信息[1]。区块链上每个区块的信息都可以由前驱节点追溯,并影响后继节点的信息构成。其密码学方法保证了恶意攻击无法篡改信息,从而确保数据的安全性和完整性。区块链的构建遵循一整套共识和协议机制,全网每个节点都可验证或入记录,但只有当全网大部分节点一致确认某个记录的正确性,相应数据才允许被写入区块中。

区块链分为公有链、联盟链及私有链[2],本文研究主要针对联盟区块链的技术特点进行深入探讨。联盟区块链由行业内部挑选出多个节点作为记账节点,如何在医疗机构间建立联盟区块链,利用区块链技术存储患者的关键医疗记录和交易记录,而完整的病历记录还是存储在本地系统的数据库中。

图2 区块链的数据结构

3 改进PBFT的共识算法

拜占庭容错(Practical Byzantine FaultTolerance,PBFT)是在异步网络环境下使用状态机的副本复制算法,常应用于分布式系统中,具有容错性强、吞吐量大、时延低等特性。联盟区块链的共识过程只有预选记账节点参与,其他节点可以参与交易,但是不过问记账过程,本区块联盟链存储电子病历共享模型并不是全网都参与共识,一般采用非工作量证明的共识算法,可以用拜占庭容错,但是该算法是 C/S 请求响应模式有缺点,需要改进适用于P2P网络且能耗较低的IPBFT算法。

根据联盟区块链的特性,提出改进的拜占庭容错算法(IPBFT, Improved Practical Byzantine Fault Tolerance),该算法的错误节点不超过(n-1)/3的容错保证,算法设计如下,它将服务建模为状态机,要求在联盟区块链的节点个数n超过4,在分布式网络中的不同节点上进行副本复制,网络中的服务都在这些副本上保存相应的状态信息并实现相应的操作,要求按照轮次来循环,在每轮中要计算选出主节点f来组织交易,只有超过2/ 3 的节点消息确认后才能进入下一个阶段,而每轮结束后会产生新区块[3]。

IPBFT是基于消息传递的已执行算法,执行过程包括以下5个步骤

(1)从全网节点选出主节点f,经过共识过程最长时间t后,向其他的共识节点广播,要求系统运行时所有节点不容许加入和退出,f向其他的n-1个节点发协议消息。

(2)每个节点在接收到主节点的广播后,需要验证协议消息,通过后会向主节点和其他的节点确认区块消息,进行哈希值进行校验,交易执行完后要根据交易结果来计算新区块的哈希摘要,按照时间顺序排序。

(3)如果这个节点验证协议消息不通过,表明怀疑主节点f有误,没有通过共识,需要发出更换视图请求,其他节点收到这个请求后或暂停共识,确认消息,当收到了2n +1 条确认消息后更换视图,否则在时间t后重复该流程。

(4)如果每个节点收到的2n个其他节点发来的确认消息都一样,表明达到了共识。

(5)如果一个节点收到了2n +1 条确认消息,就可以提交新区块及其交易到本地的区块链并更新状态数据库,最后需要更换视图并清除缓存,再开始下一轮的共识,是个循环执行过程。

联盟链系统采用IPBFT共识算法使得交易确认速度显著提高,交易吞吐量也可以满足现有的数据交易规模,可以解决数据丢失、损坏、延迟的问题,通过系统中大部分的诚实节点来覆盖掉恶意节点的发来的消息,可以保证其安全性和灵活性,对网络环境具有较好的容错能力,保障系统病历数据的一致性。

4 构建电子病历系统模型

基于联盟链的区块链电子病历系统,包括了由P2P网络连接的n(n≧4)个节点;区块链由创世区块和多个数据结构相同的区块采用哈希值来链接构成,创世区块中的特殊字段包含区块链ID、主节点f、共识算法IPBFT、数据读取的规则和智能合约;一般主节点是计算选出的,具有写数据的权限,而加入联盟链实例的新节点要根据规则来判断是否具有读取电子病历数据的权限,是否可以获取写电子病历数据的权限。

电子病历系统的功能模块如图所示,由以下五个模块构成:病历管理模块,用于查询患者详细信息、新建、修改病历数据和上传图片,支持对节点本地的系统数据库访问;病历权限管理模块,用于病人的挂号,注销和查询病历权限;加密模块,采用PKI 体系和密码学原理用于提供哈希算法、数字签名算法,还有对密钥的验证、交易等管理;登录模块,用于对所有用户的身份信息进行管理,包括每个节点用户的注册、登录和注销,所有需要加入联盟链的用户必须先经过系统节点的审核和验证才可以加入;区块链客户端模块,用于后端客户端对区块链网络的请求管理、通道创建、节点信息配置和部署链代码。

图3 系统的功能模块图

研究两家三级医院A和医院B的电子病历系统和数据库,结合医疗健康信息集成规范IHE 构建电子病历共享系统模型,两家医院通过加入机构联盟智能合约,认证中心进行身份认证和授权。由于区块链的存储容量受限制,所以个人医疗记录都存放在链下的数据库中,区块链中只保留对该数据在数据库中的引用。

在电子病历共享系统中,各个医院医生和患者都可以连接到这个系统,医疗机构之间建立联盟区块链,每个医院或机构通过注册授权后生成一个代码,每个医务人员用这个代码在上传患者病历时采用电子签名,具有可追溯性,防止别人篡改信息,保证数据的完整性。电子病历里面的信息用区块链技术来存储和交易,医生把患者的诊疗信息先记录到数据库里,再加上数字签名。该医院登录进入区块链的联盟链,把患者的关键信息通过加密算法写入区块链,给患者生成一个用户的唯一身份标识符(手机验证码、二维码或密钥),患者用这个密钥通过系统可以查询自己的病历,也可以授权给其他医生和医院查询病史。互联网+大数据电子病历未来的总体发展趋势将是高智能化、严标准化、大集成化和区域共享化。

5 研究电子病历共享系统的智能合约

智能合约系统Hyperledger Fabric是开源区块链底层系统,提供了丰富的API接口,可以在上面开发各种区块链应用场景,是面向企业联盟的区块链应用。本电子病历系统设计了四个智能合约:。注册管理合约、权限管理合约、病历管理合约、索引合约、机构联盟合约。注册管理合约把患者、医生的身份字符串放到区块链上的地址作为唯一标识;权限管理合约定义了医生和患者对病历的操作权限;病历管理合约把医生在数据库上执行时,将返回一个患者数据的子集,医生节点向区块链提交一份记录上传申请;索引合约把患者或医疗机构作为索引,用于患者访问数据库查找自己的病历历史;机构联盟合约把医疗机构的身份字符串放到区块链上的地址,形成联盟。指针包括实际存储原始电子病历数据的医疗机构的本地数据库访问信息,电子病历信息的哈希值用来查询患者电子病历信息和其他查询的SQL语句[5]。

6 总结

本文研究将联盟区块链技术与电子病历相结合,尝试打造基于区块链技术的电子病历,区块链电子病历数据不单独在医生、医院以及任何第三方手里进行存储,而是由所有区块链上的参与者共同维护每个人的信息安全,并且患者掌握自己电子病历的核心数据,患者能够对自己的电子病历查询、交易等进行授权,也可以查看到历史记录。由于区块链上的每次交易都会保留记录,而且所有参与者的信息都是一致的,这就避免了有人恶意篡改系统信息,使区块链上的数据更加安全。

目前国内外对区块链技术的研究还处于发展的初级阶段,而电子病历包含的内容是病患用户最完整、详细的临床信息资源,用区块链系统存储个人医疗记录,由于存储容量受限制,不能把个人医疗记录都存放在链下的数据库中,区块链中只保留对该数据在数据库中的引用,研究如何在医疗机构间建立联盟区块链,利用区块链技术存储患者的关键医疗记录和交易记录,具体哪些数据和信息需要存储到区块链,如何设计智能合约;需要采用改进的PBFT 共识算法、椭圆曲线加密算法和数字签名等的研究来提高其效率和安全性。这个平台的实现可以方便患者跨区域跨院看病,对医疗数据的整合、挖掘和研究,提升了医疗系统的服务质量,对今后医疗大数据背景下共享医疗资源提供了理论参考。

[1]袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016,42(04):481-494.

[2]张守坤.密码学货币及其在金融领域中的应用研究[D].哈尔滨理工大学,2016.

[3]杨茜.基于区块链的智能合约研究与实现[D].西南科技大学,2015.

[4]杨超,刘佳.医院信息化数据平台构建研究[J].才智,2012(29):42-43.

[5]王毅琳,李刚荣.B/S架构下基于JSP技术的病人信息查询系统设计[J].中国数字医学,2010,5(12):26-28.

遵义市科技局基金项目:基于区块链技术的共享电子病历系统研究(项目编号:遵市科合HZ字(2020)43号)

猜你喜欢
病历合约区块
强迫症病历簿
区块链:一个改变未来的幽灵
“大数的认识”的诊断病历
区块链:主要角色和衍生应用
区块链+媒体业的N种可能
读懂区块链
为何要公开全部病历?
村医未写病历,谁之过?
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望