logo好方法网

基于区块链面向节点动态的分层电子病历存储方法及装置


技术摘要:
本发明公开了一种基于区块链面向节点动态的分层电子病历存储方法及装置,其可根据病人发送的调取请求,通过数据共识处理、数据同步处理、数据传播处理,读取相关数据;根据病人发送的授权和密钥,将前述读取的相关数据发送至对应科室医生;根据前述的病人授权,允许医  全部
背景技术:
电子病历的发展已经有近六十年,我国的医院开始将病历电子化至今也有二十余 年。电子病历与传统纸质病历相比,有内容充分、病历标准和规范、病历管理质量、存储简易 查阅方便、有利于病历共享等优点。电子病历与HIS系统相辅相成,可以提高医疗工作效率, 提升用药安全、提供电子病历的数据挖掘。随着大数据、机器学习的快速发展,目前的电子 病历与EMR、LIS、PACS等系统进行融合,实现系统间数据共享,打破信息孤岛。 但是目前来看已经应用的电子病历主要关注对工作效率和管理规范,目前较新设 计的电子病历设计也只是增加了对数据共享、数据挖掘等最新热点的探讨和支持,仍都是 集中式的存储机制,部署在医院内部,病历完全由医院系统管理员掌握,非常容易遭到篡 改。然而,电子病历目前的真实性证明非常困难,因为目前电子病历防篡改的证明主要有: 主张电子病历有安全的防入侵设施、有严格的访问控制、有密码技术防止篡改。但是这些主 张从技术上看都不足以证明电子病历没有被篡改。目前电子病历的真实性证明方法还存在 缺陷。 近年来随着区块链技术的兴起,不少学者和企业开始将电子病历安全的希望转向 区块链技术,希望借助区块链技术的防篡改特性来解决电子病历可能被篡改以及篡改无法 检测的现状。目前有许多基于区块链设计的电子病历和电子存证系统,但绝大部分采用 PBFT算法,就目前来看,这些系统或产品或多或少都存在一些问题,无法解决或适配本系统 的应用场景的需求。首先是共识算法方面:相当一部分系统采用了自己的共识算法或者新 提出的共识算法,但总是存在一定的问题,算法的安全性和实用性,及并不保证连续性、完 整性;其次是框架设计方面,有一部分框架并不适用于直接应用在现有的医疗系统中,难以 推行应用。且有些系统采用了现有的共识协议算法或者框架,考虑了应用层面的设计和功 能,但缺乏针对区块链节点可能不在线的情况进行共识算法适配。还有一部分基于PBFT算 法的共识协议没有考虑到网络分区的情况,相对静态,缺乏针对节点动态加入和离开的处 理。还有部分研究考虑在医疗系统中引入代币,将医疗记录的数据转化为价值,主要考虑数 据的共享和交易,但对数据防篡改的考虑不足。 为此,针对上述所述弊端,设计一种方法/装置,用于医院间基于区块链的分布式 电子病历存储的部署领域,特别是有小型医疗机构比如诊所、私人医院等大量轻量级可能 存在离线或者维护等操作的环境下的区块链应用方法,并可同时解决上述存在的问题,成 为了目前技术人员的创新设计理念。
技术实现要素:
为克服现有技术的缺陷,本发明的目的在于:提供一种基于区块链面向节点动态 4 CN 111599425 A 说 明 书 2/7 页 的分层电子病历存储方法及装置,解决了现有技术中因为网络原因以及节点可能离线等原 因,可能出现不存在大多数节点值相同的情况,采用PBFT算法无法达到共识,相对静态的 PBFT算法难以应用在此场景;另外,区块链虽然可以保证数据不被篡改,但是无法保证在取 出数据的时候数据是否为正确的数据,在本地区块链的数据受到改动时,无法实时感知数 据的修改,继而在读取时读取到被篡改的数据,无法依靠区块链的防篡改性实时发现改动 等上述问题。 鉴于上述问题,本发明提供一种基于区块链面向节点动态的分层电子病历存储方 法及装置。 第一方面,本发明提供一种基于区块链面向节点动态的分层电子病历存储方法, 所述方法具体步骤包括: 步骤一:根据病人发送的调取请求,通过数据共识处理、数据同步处理、数据传播 处理,读取相关数据; 步骤二:根据病人发送的授权和密钥,将步骤一中读取的相关数据发送至对应科 室医生; 步骤三:根据步骤二中的病人授权,允许医生对对应病历进行数据写入管理; 步骤四:将步骤三中医生对病历的管理操作反馈至数据池。 优选地,所述数据共识处理,具体步骤包括: 步骤0:所有主要节点将接收到的病历写上时间戳,并转变为准备广播的状态; 步骤1:若本节点为主要节点,x=节点在t到t m时间段内根据接收到的病历信息 所计算的默克尔树;若本节点为边缘节点,x置空; 步骤2:order节点向所有主要节点发送消息,通知其打包t到t m时间段内的病历; 步骤3:阶段个数小于f 1,继续步骤4;否则,算法结束; 步骤4:本节点广播自己的输入值value(x),并转变为准备接收提议的状态; 步骤5:若本节点接收到其他节点广播的value(y)次数至少n-f次,则本节点广播 propose(y); 步骤6:若本节点接收到propose(z)至少f次,则本节点修改x为z; 步骤7:RSA随机数生成器生成第i阶段的主节点vi,且每阶段主节点不重复; 步骤8:主节点vi广播其值value(w); 步骤9:若本节点接收到propose(x)的次数严格少于n-f,则本节点修改x为w; 步骤10:阶段个数加1,返回步骤3。 优选地,所述数据同步处理,具体步骤包括: 步骤0:若节点u在传播算法中调用本算法,或者某一时刻与网络断开连接,进入步 骤1; 步骤1:如果是与网络断开连接,停止广播病历区块,新增病历保留在本地,系统在 网络分区中继续运行,等待网络恢复,否则直接进入步骤2; 步骤2:通过仲裁系统查询区块链最新状态; 步骤3:向由仲裁算法判断出来的最新正确节点同步,应用读取服务器获得数据, 若同步失败,则进入步骤2; 步骤4:同步完成后重新开始执行算法。 5 CN 111599425 A 说 明 书 3/7 页 优选地,所述数据传播处理,具体步骤包括: 步骤0:在未启动共识时,边缘节点v上传病历至自己所属的主节点,主节点u将v的 病历以及其他主节点广播的病历保存在本地病历池中; 步骤1:进行到算法步骤2时广播value(xi); 步骤2:i次共识中选取t2为t到t m时间内的病历用来计算默克尔树,在i次共识完 成后; 步骤3:将缓冲区中由自己范围内医院上传的病历打包,向输入值与系统共识值相 同的节点请求是否已经被区块链确认的验证; 步骤4:被请求的节点通过默克尔树路径验证病历,并返回验证结果给请求节点, 返回的结果为value(y),其中包含没有得到确认的病历; 步骤5:在t到t m阶段,若病历被设置保留标记,则放入value(y);若病历没有设置 保留标志,则将病历删除;当value(y)不是空集时,结束算法。 优选地,该电子病历存储方法,还包括可确认数据的完整性及准确的校验算法,所 校验算法包括实时校验算法和周期校验算法。 具体为,所述实时校验算法,具体步骤包括: 步骤1:数据验证模块接收到需要验证的病历哈希值Hash(M); 步骤2:计算出需要证明Hash(M)所需要的节点proof(leaves); 步骤3:将Hash(M)和证明所需要的节点proof(leaves)一起输入proof算法中, proof算法在Merkle树中进行查找,返回验证的结果; 步骤4:将验证的结果发送给请求验证的节点。 所述周期校验算法,指每隔一段时间进行本地区块链验证,每个服务器从自身维 护的第一个区块开始验证,一直到验证到最新区块结束;具体步骤包括: 步骤1:p作为记录当前区块的标识符,并初始化为0; 步骤2:从数据库中读出第p个区块的区块头,判断本地是否存储这个区块的具体 数据; 步骤3:如果存储了这个区块的具体数据则读取所有病历进行校验,如果没有存储 具体数据则只校验区块头; 步骤4:若校验成功则继续校验下一个区块,若校验失败则向其他备份节点请求区 块P的数据,恢复区块P,校验成功后继续校验下一个区块。 优选地,该电子病历存储方法,还包括密钥恢复管理方法,具体方法步骤为: 步骤1:密钥生成后,采用Shamir门限秘密共享将密钥分片成m份分享, 步骤2:找回密码时,由n个分片持有者提供密钥即可恢复出密钥,其中,n≤m; 步骤3:在授权后,密钥在一个就诊会话中保持活性,会话结束后密钥被销毁。 第二方面,本发明还提供一种基于区块链面向节点动态的分层电子病历存储装 置,具体包括: 第一单元,用于根据病人发送的调取请求,通过数据共识处理、数据同步处理、数 据传播处理,读取相关数据; 第二单元,用于根据病人发送的授权和密钥,将步骤一中读取的相关数据发送至 对应科室医生; 6 CN 111599425 A 说 明 书 4/7 页 第三单元,用于根据步骤二中的病人授权,允许医生对对应病历进行数据写入管 理; 第四单元,用于将步骤三中医生对病历的管理操作反馈至数据池。 第三方面,本发明还另提供了一种计算机可读存储介质,其上存储有计算机程序, 该程序被处理器执行时实现上述任一项所述方法的步骤。 本发明提供的一种基于区块链面向节点动态的分层电子病历存储方法及装置,其 可根据病人发送的调取请求,通过数据共识处理、数据同步处理、数据传播处理,读取相关 数据;根据病人发送的授权和密钥,将前述读取的相关数据发送至对应科室医生;根据前述 的病人授权,允许医生对对应病历进行数据写入管理;将前述医生对病历的管理操作反馈 至数据池。最终可解决因为网络原因以及节点可能离线等原因,可能出现不存在大多数节 点值相同的情况;采用PBFT算法无法达到共识,相对静态的PBFT算法难以应用在此场景的 问题;另外,区块链虽然可以保证数据不被篡改,但是无法保证在取出数据的时候数据是否 为正确的数据;在本地区块链的数据受到改动时,无法实时感知数据的修改,继而在读取时 读取到被篡改的数据,无法依靠区块链的防篡改性实时发现改动等上述问题。 本发明采取分层的架构,将医院分为主要节点和边缘节点,主要节点存储具体数 据,边缘节点存储区块头;通过这种方式降低参与系统的门槛,提高系统稳定性和数据验证 的可信度。 本发明设计了新的共识算法、同步算法和传播算法,在保证一致性的同时降低通 讯成本,同时实现了PBFT等常用算法无法实现的“有效性”,即假设所有结点的初始值全都 不相同,也可以达成共识值。 本发明针对区块链可以保证整体数据无法篡改但是无法保证读取到的数据是否 是正确的问题,设计了两种验证机制,一种是实时验证,一种是周期验证,用来确认前者验 证所读取的数据的完整性,后者检测自身数据库的完整性。 本发明设计了基于门限秘密共享的密钥方案,病人可以将密钥分成秘密份额,分 发给自己的亲朋好友或者第三方机构;从而在一些意外紧急情况时,可以给出新的密钥保 管或者恢复方案。 附图说明 图1为本发明基于区块链面向节点动态的分层电子病历存储方法流程示意图。 图2为本发明基于区块链面向节点动态的分层电子病历存储方法系统架构示意 图。 图3为本发明基于区块链面向节点动态的分层电子病历存储方法中共识算法流程 图。
下载此资料需消耗2积分,
分享到:
收藏