区块链在卒中电子病历共享中的应用
2020-07-07秦秋莉曹辉李明岩姜勇
秦秋莉,曹辉,李明岩,姜勇
作者单位
1100044 北京北京交通大学经济管理学院
2公安部第一研究所
3国家神经系统疾病临床医学研究中心;首都医科大学附属北京天坛医院神经病学中心
4北京大数据精准医疗高精尖创新中心(北京航空航天大学&首都医科大学)
卒中具有较高发病率、致残率、死亡率及复发率,是我国寿命年损失的第一位病因[1-2]。2016年《柳叶刀》杂志对32个国家的卒中危险因素分析结果表明,全球90.7%的卒中与高血压、糖尿病、心脏病、血脂异常等10项因素有关,且针对我国人群的可解释度达94.3%[3-4],在临床医学中相关病史对卒中的辅助诊疗、复发治疗及康复治疗等也具有一定参考价值。现大部分医院使用电子病历[5]代替传统病历,记录患者诊疗信息并可进行统计分析,以支持临床研究与工作[6],但共享存在较大困难。而对于卒中这种发病急、个体差异较大的情况,若患者历史病历共享困难,医师仅根据临床经验与检查结果进行通用型治疗,影响诊疗效率,也不利于开展更全面的临床研究,这就要求患者电子病历能在不同医疗机构间进行安全共享。
区块链技术在数据共享方面具有安全性高、去中心化等特点,能保护患者隐私及电子病历安全。目前在医疗数据共享方面,Xia等[7]等提出MeDShare系统,使用区块链在云服务提供商间无信任共享医疗数据,通过智能合约自动监测数据操作和安全;Li等[8]运用区块链提出一种新的医学数据储存系统,用户可永久保存重要数据,并在怀疑数据被篡改时验证其原始性;薛腾飞等[9]也建立了一种医疗电子信息分享模型,设计基于贡献量证明的共识机制,提出比特币用户参与度评估模型并设计了数据加密方案。但目前除比特币外尚没有较成熟落地的区块链应用[10]。因此,本文主要通过介绍区块链在卒中电子病历共享中的应用方案的关键步骤、仿真实验及结果,分析卒中电子病历共享对辅助诊疗和临床研究的参考价值。
1 卒中电子病历共享的关键步骤
区块链是一种按照时间顺序将数据区块相连的链式数据结构,是以密码学方式保证不可篡改和伪造的分布式账本,系统可分成六个部分:应用层、合约层、激励层、共识层、网络层和数据层,按其公开程度分为公有链、联盟链与私有链[11]。工作流程主要为某节点将请求发给网络中所有的节点进行广播,并根据共识算法执行,在P2P网络中,共识算法是缺乏相互信任的节点最终通过遵循共同认可的机制来实现数据一致性的过程,其本质为一个去中心化的分布式账本数据库[12-13]。当网络上的各个节点查收到该广播数据后,先验证该节点的数据合法与否,当新节点通过此次验证后才能被记录下来建立一个新的区块。
本文为减少电子病历在信息安全、共享效率以及存储方面存在的不足,提出一种卒中电子病历共享模型。整体上通过私有链和联盟链相结合的方式,在医院之间的数据共享采用联盟链,医院内部的数据共享采用私有链,并在存储与交互过程加密处理,运用改进BFTRAFT共识机制,总体模型图如图1所示。
1.1 卒中电子病历加密存储与交互 对整个卒中电子病历共享环节,数据的存储与交互是实现共享的基础。本文应用腾讯公司的TrustSQL底层框架,因其区块链节点具有单个节点自校验性和多个节点间实时数据对比机制,在进行数据校验过程,能够确保存储下来的卒中电子病历不被篡改。TrustSQL相比于MySQL具有较多优势,更适用于分布式存储的卒中电子病历模型。根据共享需要设定数据存储和数据交互两个场景,其中数据存储通过TrustSQL中的Insert接口实现,数据交互通过Select接口实现。
在存储与交互的整个流程中都需要确保电子病历信息不被恶意泄露。1985年Koblitz与Miller共同提出椭圆加密算法[14],椭圆曲线数字签名算法(elliptic curve digital signature algorithm,ECDSA)以椭圆加密算法为基础,结合一种非对称的密钥加密算法数字签名算法[15],先产生一个哈希,当需要验证该签名时,则重新计算这个哈希,最后将通过公钥得到解密后的结果进行比对。在计算数字签名时ECDSA仅需要较短的公钥即可,通常在区块链中使用。
图2 BFT-RAFT共识机制具体流程
由于非对称加密的公钥、私钥机制安全性较高,本文的加密机制主要是系统随机生成的一个私钥,公钥由椭圆曲线加密算法计算得出,再经过加密哈希函数则可以得到20字节的数据,本文使用的是SHA256。通过将私钥和椭圆曲线签名算法结合得到安全的签名,在数字签名时选用secp256k1曲线进行加密。签名后再用DER编码规则并转换为base64格式,即可生成最终加密签名。
1.2 BFT-RAFT共识机制 卒中电子病历得以加密存储后,为实现去中心化的共享保障,需要选定共识机制来达成不同医疗机构间的相互制约。RAFT算法和其他共识算法具有同样计算效率,但更容易整体实现且可解释性强,电子病历作为重要数据,应务必保证电子病历处于正常运转状态,对容错能力要求很高。为弥补RAFT算法在这方面的不足,结合容错性能较高的BFT算法得到BFT-RAFT机制,确保出现故障时能切换到BFT算法上,保证卒中电子病历安全。
R A F T 算法包含三种角色:l e a d e r、candidate和follower,这相当于不同的医疗机构节点,角色之间可以转换但每个节点不可以同时兼具。RAFT算法的执行过程首先是leader(可看作某个医疗节点)在收到请求后需要先把该请求发送给follower(可看作此刻其他医疗节点),待follower验证信息没问题后再记录到日志中并将信息交给状态机,同时需给leader返回值表示验证信息成功。leader取得多数验证成功标识后,提交当前日志并将全部follower更新并取得共识。在发生故障引入BFT算法后,首先将同样信息输入给全部非拜占庭节点,需得到一致结果。另外,若输入进去的信息没有问题,则全部非拜占庭节点都要计算这个信息的结果,即当客户提出请求时应计算并产生区块。具体共识过程如图2所示。
这相当于在电子病历共享过程中,如果某个医疗机构节点出现故障或恶意篡改等行为时,可以将共识算法高效切换到具有拜占庭容错的算法上来,保证共识顺利完成,不会因为一方出现问题影响联盟中其他医疗机构对电子病历的使用。
2 共享方案仿真实验与分析
针对共享方案进行优势验证分析,在腾讯区块链Baas平台上模拟构建医院间的联盟链,选用4台云服务器进行相同网段的配置,分别授权并相互关联后,可在控制台开启。测试从1000到5000条数据的解析与写入耗时,并与使用前置机时候Excel文件传输模式和直接传输JSON结构模式的解析时间进行对比,三者的实际耗时情况如表1所示。
可以看出区块链解析的耗时无论数据量多少,都能用最短的时间解析,是三者中耗时最少的。从图3可以明显看出当数据量相对较少时,三者之间解析耗时差距小,当数据量越大,Excel文件传输模式的耗时越多,与区块链的差距也越来越大,若数据量不断增大,则区块链将具有更加明显的优势。
将卒中电子病历进行写入联盟链的性能测试,将新建的数据表中写入1000~5000条卒中电子病历数据,测试其写入所需要的时间,并进行比较,结果如表1右二列所示。
从图4中也可以看出,TrustSQL集群在写入数据时的耗时总小于MySQL集群,且数据量越大,TrustSQL的写入优势越明显,耗时越短,更利于解决高频率写入区块时(如就诊高峰期)效率较低等问题,可以看出应用本文方案既保障卒中电子病历共享安全,又使效率有很大提升。
3 区块链在卒中电子病历共享的应用价值
本文的卒中电子病历共享方案能大大提高传统病历共享效率,并通过加密技术保证卒中电子病历不被篡改。卒中的危险影响因素与患者病史具有相关性,实现共享不仅利于医师诊疗等,还可以通过电子病历共享进行后续的相似病历辅助诊疗等。另外,通过数据挖掘等技术能处理大量原始数据,但在以往卒中临床研究过程中,数据来源往往有限,实现卒中电子病历共享,可通过挖掘大量卒中电子病历数据,进行卒中危险因素研究、卒中治疗效果评估、卒中预后因素研究以及对高危人群进行分析与干预等,指导疾病防治[16],为卒中诊断及预后评估等研究提供更全面的数据和更准确的依据,从而推进卒中临床研究的进一步发展。
表1 实验耗时结果对比
图3 解析耗时对比图
图4 写入耗时对比图