专利名称:一种融合区块链与真实行为特征的新型电子病历共享方法
专利类型:发明专利
专利申请号:CN202111000476.1
专利申请(专利权)人:汕头大学
权利人地址:广东省汕头市金平区大学路243号
专利发明(设计)人:赵志丹,杜宇轩,周宇
专利摘要:本发明实施例公开了一种融合区块链与真实行为特征的新型电子病历共享方法,使用区块链与传统数据库结合的新型存储机制,以代替传统病历;将医疗病历数据转化为哈希索引并存储于区块链,以降低区块链负载。对在区块链中时间较早的区块进行删除并在数据库中存档的功能。患者注册模块,用于给患者生成患者对应的唯一公钥和唯一私钥。创新型区块打包机制,用于解决白天系统工作过于繁忙而晚上系统过于空闲的问题。一种基于智能合约的医院节点病历数据请求机制,用于某一医院节点向其他医院节点请求患者简历数据。本发明主要应用于医院间医疗数据共享、医疗区块链数据分析等领域,实现共享的同时也具有一定安全性。
主权利要求:
1.一种融合区块链与真实行为特征的新型电子病历共享方法,其特征在于,包括以下步骤:
S1:建立患者的索引信息,并进行加密,使用ECDSA椭圆曲线算法为患者创建一对公钥及私钥,根据所述私钥为所述患者建立唯一病历索引链ID,并进行区块入链完成新患者的注册;
S2:将医疗完整数据存储于本地数据库,将病历索引信息通过哈希加密,存储于区块链上;所述本地数据库的医疗数据转化为患者医疗病历记录索引,并打包成块注册到所述区块链上;
S3:医院节点请求方发布一份具有请求方、接收方和患者三方信息的智能合约,并在所述接收方中进行智能合约的合法性验证,验证通过后向所述请求方发送医疗数据;所述医院节点具有本地数据库及缓冲数据库,该本地数据库实现对患者完整的病历信息的存储,该缓冲数据库存储经过标准化的患者电子病历,经过哈希加密形成索引后注册上链;
S4:环签名的步骤:对经过若干个医院节点同意并签名后对所述区块链的区块进行删除,并保证所述区块链的整体结构不改变,包括步骤:S41:删除某个区块 的交易数据,网络中相关节点向网络广播删除的请求信息,所述请求信息包括区块 的基本信息;
S42:其余所有合法节点在接收到请求信息后,对删除操作的合理性进行考证,考证过后,合法节点需广播自己关于的意见,最终,每个节点均可统计整个网络对该删除信息的反馈,如果同意信息超过设定门限便认为该删除请求合法;
S43:经过3次算法过程,生成环签名及决策,经过3次算法过程包括,第一,根据一个多项式时间概率算法,输入安全参数 ,输出n个环成员的公钥 和私钥 ;第二,输入消息 ,t个环成员公钥 和签名用户私钥 输出环签名 ,第三,输入环成员公钥 和环签名,输出接收或者拒绝,t需要满足超过三分之二的环成员节点同意该删除操作;
S44:由区块 的删除时间 、删除原因 和记账者对区块 中交易数
据的签名 ,生成删除行为对应的消息 ,对消息 生成门限环签名,记录在 中,删除区块操作将区块 的Hash链接指向区块 ,并且环签名会存储于区块和区块 之间,以供验证;
S45:删除操作完成并广播后,网络中所有节点均能对门限环签名进行验证,并将消息中记账者对区块 中交易数据的签名与签名子块中的签名进行对比验证,如果验证通过,则认可数据删除行为的合法性;
S5:区块打包的步骤,包括:每隔一个设定时间开始询问打包请求,若询问时医疗记录已存满区块,则进行打包;若询问时区块未存满医疗记录的哈希索引,则等待下一次打包请求,一直到下一次询问打包请求且区块满时进行打包;
S6:医院节点间数据共享包括三种情况:
第一种:第一医院节点调取第二医院节点的相应患者的病历数据,通过患者在客户端确认数据调用请求,每个医院节点数据库中都存有经过认证的医疗联盟链医院成员的地址,接着第一医院节点将患者的数字签名、患者的公钥、请求消息、第一医院节点的公钥与第二医院节点的公钥形成一份智能合约,经约定好的散列算法形成散列值,并在使用自己的私钥进行数字签名后连同该智能合约通过广播的方式发送给全网,经过一次验证后,只有智能合约中对应的第二医院节点可以匹配该请求;第二医院节点接收到所述智能合约及第一医院节点的数字签名之后,再通过两次验证,分别验证第一医院节点以及是否经过患者授权;
第二种:第一医院节点需要请求所有医院节点相应患者的医疗病历数据,区块链系统规定整个区块链系统的所有医院节点含有公共的公钥,该公钥与第一医院节点的公钥、患者的数字签名、患者的公钥、请求消息形成一份智能合约SC’,在经过散列算法形成哈希值以及第一医院节点的私钥签名之后与智能合约SC’一并广播到区块链上;区块链上的所有医院节点接受到该智能合约之后,由于本地公钥与智能合约SC’中的公钥一致,确认是由本地医院节点返回数据调用的结果;接下来智能合约自动执行验证数据调用请求返回的地址为第一医院节点以及患者的授权;在进行数据调用的过程中,若患者在本地医院节点的数据为空值,则说明患者在本地医院节点没有就诊经历或者其病历缺失,不向第一医院节点的地址返回数据;若患者在本地医院节点的数据不为空值,则向第一医院节点的地址返回数据;
第三种:根据电子病历系统,医院节点调取本地医院节点的数据,直接从本地医院节点链下数据库调取。
2.根据权利要求1所述的融合区块链与真实行为特征的新型电子病历共享方法,其特征在于,还包括对所述医院节点以及患者客户端进行拓展系统接口的步骤。 说明书 : 一种融合区块链与真实行为特征的新型电子病历共享方法技术领域[0001] 本发明涉及医疗领域的信息共享及隐私保护,尤其涉及一种融合区块链与真实行为特征的新型电子病历共享方法。背景技术[0002] 传统病历大多采用纸质病历,容易破损和丢失;容易发生信息泄露、篡改等安全风险;同时,医疗信息无法在患者、不同医院间实现共享。这使得我国医疗成本高、风险大。如今的一些可以进行信息共享的电子医疗等应用已经在我国有了一定范围的应用。虽然电子病历系统可以将门诊和住院医疗活动中获得的有关资料生成的文字、数据、影像等数字化信息,并进行归纳、分析、整理形成的医疗活动记录,还可以将信息存储、管理、传输而形成的能够重现的医疗记录,具有操作方法简便、存储信息完整、传输速度迅速、便于查阅、管理等特点,但是病人的隐私信息得不到很好的保护,随之会带来一系列的问题。[0003] 目前数据存储都是由一个中心化的数据库存储数据,当中心化的数据库被侵入或者被出售给第三方,将造成数据隐私安全问题;患者无法享有或者无法完全享有自身病历数据的权限,而且电子病历系统还会面临存储容量的问题,以及存储过程中节点之间的一些问题。此时我们就可以利用区块链的匿名性,去中心化、开放的特点来将其与电子病历系统结合起来。通过电子病历能够连接其他相关的医疗系统,也能够积累重要的医疗数据,从而有利于建设医疗大数据平台。结合区块链技术,重构电子病历系统,可以解决信息的安全性问题,也可以将医疗系统市场化,实现多方互利。发明内容[0004] 本发明实施例所要解决的技术问题在于,提供一种融合区块链与真实行为特征的新型电子病历共享方法。可在链下的医院本地数据库中存放最初的电子病历,在缓存数据库中存储统一格式的标准化电子病历数据,方便跨系统交流,仅将病历索引信息采用区块链存储。[0005] 为了解决上述技术问题,本发明实施例提供了一种融合区块链与真实行为特征的新型电子病历共享方法,包括以下步骤:[0006] S1:建立患者的索引信息,并进行加密,使用ECDSA椭圆曲线算法为患者创建一对公钥及私钥地址,根据所述私钥为所述患者建立唯一病历索引链ID,并进行区块入链完成新患者的注册;[0007] S2:将医疗完整数据存储于本地数据库,将病历索引信息通过哈希加密,存储于区块链上;所述本地数据库的医疗数据转化为患者医疗病历记录索引,并打包成块注册到所述区块链上;[0008] S3:医院节点请求方发布一份具有请求方、接收方、患者三方信息的智能合约,并在所述接收方中进行智能合约的合法性验证,验证通过后即可向所述请求方发送医疗数据。[0009] 其中,还包括使用环签名的方法,对经过若干个医院节点同意并签名后对所述区块链的区块进行删除,并保证所述区块链的整体结构不改变。[0010] 其中,还包括区块打包方法,包括:每隔一个设定时间开始询问打包请求,若询问时医疗记录已存满区块,则进行打包;若询问时区块未存满医疗记录的哈希索引,则等待下一次打包请求,一直到下一次询问打包请求且区块满时进行打包。[0011] 其中,所述医院节点具有本地数据库及缓冲数据库,该本地数据库实现对患者完整的病历信息的存储,该缓冲数据库存储经过标准化的患者电子病历,经过哈希加密形成索引后注册上链。[0012] 其中,还包括对所述医院节点以及患者客户端进行拓展系统接口的步骤。[0013] 实施本发明实施例,具有如下有益效果:本发明针对现有区块链存储方式的大量重复存储所造成的冗余,以及医疗电子病历中数据格式的复杂多样,不适合完全地使用区块链技术来存储医疗电子病历中的数据的问题,提出了在链下的医院本地数据库中存放最初的电子病历,在缓存数据库中存储统一格式的标准化电子病历数据,方便跨系统交流,仅将病历索引信息采用区块链存储。附图说明[0014] 图1是本发明的方法流程示意图;[0015] 图2是具体实施例中的具体实施方法的结构示意图;[0016] 图3是删除操作的流程示意图。具体实施方式[0017] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。[0018] 本发明实施例的一种融合区块链与真实行为特征的新型电子病历共享方法是利用在链下的医院本地数据库中存放最初的电子病历,在缓存数据库中存储统一格式的标准化电子病历数据,方便跨系统交流,仅将病历索引信息采用区块链存储。[0019] 由于区块链的本身特性较为特殊,现有的一些区块链医疗系统并没有实现对系统医疗数据的删除功能。随着数据不断积累,必定会导致系统过负荷。除了保证系统医疗数据的完整性外,如何实现安全地删除早期的医疗数据并可溯源,是现在需要解决的一个问题。现行的数据删除技术包括全局数据删除和本地数据删除两种类型,前者则是指分布式节点通过共识算法来共同删除某些链上数据,主要解决清除链上不良信息的问题,后者是指分布式节点可以独立地删除其本地部分数据,以解决持续增长的区块链数据规模导致的存储瓶颈问题。考虑到电子病历数据有时效性,而过期后的数据无疑只会成为整个区块链和数据库的负担。本专利使用环签名技术,通过固定时间(例如一年)将已失效的区块进行删除,并将链下存储的电子病历转移至其他本地存储数据库进行保存。以便于减小存储负担,节省存储开支。[0020] 本发明主要通过以下方法进行实施。[0021] 一、准备阶段:某医院节点识别已过期的区块并收集所需数据m,进行全网广播,若有三分之二以上的节点达成共识,即可对该区块数据执行删除操作。[0022] 二、生成阶段:同意删除操作的医院节点提供他们各自的公钥和私钥签名,结合所要删除的数据信息m,经过一系列算法形成环签名。[0023] 三、决策阶段:链上的所有节点输入所形成的环签名和已同意节点的公钥,通过一系列算法后输出决策结果“接收删除操作”或者“拒绝删除操作”。[0024] 四、验证阶段:删除操作完成并广播后,网络中所有节点均能对环签名进行验证,并且该环签名存储于原来被删除的区块中,以保持区块链的完整性与链接性。各个节点可以随时对该删除操作进行合法性验证,以判断此次删除操作是否符合规则。[0025] 在本发明实施例中,还包括对区块进行打包的方法,方法包括:对于每一个录入数据库的患者病历信息,首先将其转换为二进制值,再通过哈希函数映射为较短的二进制值,作为其在数据库中的索引信息并存储在区块链上。区块链中存储的哈希值都通过本地医院进行打包上传。新增加的病历需通过所在医院进行打包上传,患者授权给这个医院权限,该医院通过哈希得到此新增病历的地址,即哈希值,由于每个病历不同,得到的哈希值也是不同的,将此哈希值打包并存储在区块上,最后区块之间链接形成区块链,以便后续查询时进行索引。本区块链系统的创新之处在于,区块是否打包是通过时间间隔以及区块是否已满双重判别条件决定的。具体实现如下:系统每隔固定时间会向某一个节点发送询问请求,如果此时数据库中患者的录入病历记录数超过一个区块的容量,则直接进行打包并广播这个区块到系统中;如果此时数据库中的患者的录入病历记录数未超过一个区块的容量,则不打包,并等待下一次系统的询问请求。这样可以提高打包效率,缓解系统压力,防止在病历数量过多的情况下造成系统瘫痪。[0026] 每一家医院节点都有对应的本地数据库和缓冲数据库,本地数据库存储患者的病历信息,缓冲数据库存储经过标准化的病人电子病历。这样通过广播发送给其他节点的电子病历格式统一,可防止由于不同医院节点数据库的病历存储格式不同造成数据存储的不便。缓冲数据库并不存储当前所有的本地数据库电子病历,可以减小缓冲数据库存储容量。[0027] 每个医院都是一个可信的节点。由于本区块链采用联盟链的模式,其在参与的节点、共识机制上有相较于公有链的其他限制。只有经过审核、批准、认证的医院才可以成为链上的一个节点。由于本区块链系统采用本地医院打包上链的方式,也即只有本联盟链的成员才能参与进区块链的信息处理过程,极大地保障了患者的隐私不被泄露。因此,患者可以信任就诊医院。[0028] 对于医院节点间数据共享的隐私安全保障方面,有如下三种情况:[0029] 第一种情况。根据本区块链病例系统,第一医院节点调取第二医院节点的相应患者的病历数据,需要取得患者授权。患者需首先在客户端确认数据调用请求。每个医院节点数据库中都存有经过认证的医疗联盟链医院成员的地址,即公钥。接着第一医院节点将患者的数字签名、患者的公钥、请求消息、第一医院节点的公钥与第二医院节点的公钥形成一份智能合约,经约定好的散列算法形成散列值,并在使用自己的私钥进行数字签名后连同该智能合约通过广播的方式发送给全网。经过一次验证后,只有智能合约中对应的第二医院节点可以匹配该请求。[0030] 第二医院节点接收到所述智能合约及第一医院节点的数字签名之后,再通过两次验证,分别验证第一医院节点以及是否经过患者授权。[0031] 验证第一医院节点简要过程:通过解码第一医院节点的数字签名,与智能合约的特定哈希函数匹配可以验证此次医疗数据调用请求是否来自第一医院节点,根据智能合约中的接收节点的公钥确定接收医疗数据的医院节点。[0032] 验证是否经过患者授权简要过程:使用患者的公钥对患者的数字签名进行解密,得到哈希值HA3,再对请求消息进行哈希得到哈希值HA4,倘若HA3=HA4,则患者授权成功,第一医院节点可以调取第二医院节点的患者数据;倘若两个哈希值不相等,则授权不成功,调取数据失败。[0033] 由于第二医院节点所使用的公钥来自于患者,且哈希算法的特性是唯一的输入值对应唯一的输出值,因而可以确保此条数据调用请求经过患者授权,保证患者数据共享的安全性。[0034] 第二种情况,第一医院节点需要请求所有医院节点相应患者的医疗病历数据。本区块链系统规定整个区块链系统的所有医院节点含有一对公共的公钥Key,该公钥Key与第一医院节点的公钥、患者的数字签名、患者的公钥、请求消息、形成一份智能合约SC’,在经过散列算法形成哈希值以及第一医院节点的私钥签名之后与SC’一并广播到区块链上。[0035] 区块链上的所有医院节点接受到该智能合约之后,由于本地公钥Key与SC’中的公钥Key一致,可以确认是由本地医院节点返回数据调用的结果。[0036] 接下来智能合约自动执行验证数据调用请求返回的地址为第一医院节点以及患者的授权,其过程与第一种情况一致。[0037] 在进行数据调用的过程中,若患者在本地医院节点的数据为空值,则说明患者在本地医院节点没有就诊经历或者其病历缺失,不向Key1表示的医院节点地址返回数据;若患者在本地医院节点的数据不为空值,则向Key1表示的医院节点地址返回数据,其过程与第一种情况一致。[0038] 第三种情况。根据本电子病历系统,医院节点调取本地医院节点的数据,仅需直接从本地医院节点链下数据库调取,而无需通过区块链进行调取,可减少数据调用时间。[0039] 以下结合具体的应用实施例对本发明进行详细说明。[0040] 参见图1,此实施例的实现流程如下:[0041] 步骤101:患者的索引区块构建及其注册。患者通过提供其个人信息,如:姓名、性别、出生年月、身份证号、现居住住址、手机号码、就诊医院全名及对应就诊卡号等,用来构建其索引信息,并对其中的重要信息进行加密处理。[0042] 步骤102:然后用基于ECDSA椭圆曲线算法为患者创建一对公钥及私钥地址,然后根据患者的私钥为患者建立唯一病历索引链ID,再提供某一特定公钥对患者公钥发送验证信息,患者检视信息无误后点击确认,生成区块入链从而完成注册。[0043] 步骤103:生成标准文档。由于医疗电子病历数据的共享是以文档的形式进行,考虑到各医院管理系统的差别,因此需要进一步将患者的病史、健康档案、医生诊断信息、影像等按照指定的标准形成文档。其中电子病历采用卫生部制定的标准,健康档案采用卫计委颁布的健康档案基本架构与数据标准,影像采用DCM标准,针对每个医疗机构可能存在的不同情况,也可以采用相适应的标准来生成共享文档存储在缓存数据库。[0044] 步骤104:利用文档索引进行构建交易记录。在完成标准文档的生成之后,需要提取标准文档的一些索引信息,包括:文档创建者、创建时间、文档编号、患者编号、文档哈希值、URI等。提取后使用消息摘要算法对从病历中提取的信息形成数字指纹,再将该数字指纹作为数据交易的脚本信息连同索引信息一起形成一条交易记录,等待打包。[0045] 步骤105:将交易记录打包成区块并注册在链。患者所在就医的医院将患者的病历进行打包上传。通过哈希函数给予新增病历一个哈希值,代表其在数据库中的地址,存在区块链上面供索引。然后此病历将传送到缓冲数据库,采用新型的打包机制,当每次系统发送打包询问请求时且缓冲数据库的病历数量满足打包要求时,就可以进行打包上链。若是不满足,则要在缓冲数据库中等待,等到下一次询问并满足打包最低下限时进行打包上传。[0046] 步骤106:定期将已失效的区块进行删除。固定一段时间对医疗记录进行删除操作,一般定为12个月,进行删除操作的同时,在本地保留链下数据,以备特殊需求。[0047] 具体过程如下:[0048] 1.某一医院节点检测到区块链系统中某个区块医疗数据已经过期,则会向全网广播,申请删除该区块医疗数据。[0049] 2.系统中的其他节点接收到申请后,若同意删除,则该节点会输入本节点的公钥和私钥信息。所有同意删除操作的医院节点的公钥和私钥以及数据m作为输入,经过一系列算法形成一个环签名R。环签名R会广播到全网。[0050] 3.链上的所有节点接收到环签名和同意节点的公钥后,以环签名和同意节点的公钥作为输入,经过一系列算法,可以输出一个决策结果。[0051] 4.若超过三分之二的节点同意该删除操作,输出的决策结果为“接收删除操作”,则所有医院节点都会对该区块的医疗数据进行删除操作,并用此环签名R替代该区块医疗数据,以保证区块链的完整性以及与上下区块之间的链接性。节点可以随时对环签名R进行合法性验证,以检查该删除操作是否合法。[0052] 5.若低于三分之二的节点同意该删除操作,输出的决策结果为“拒绝删除操作”,则所有节点放弃此次删除操作,并等待下一次的区块删除请求。[0053] 步骤3会对删除操作进行进一步的说明。[0054] 步骤107:对于每一个录入数据库的患者病历信息,都有对应在区块链上的哈希值。这些哈希值都由本地医院进行打包,每次打包的数量固定,且若当前数量不足规定数量时,则需等待录入数据库的患者病历数量达到规定数量。[0055] 下面是对跨医院患者数据调取过程的具体化(以第一种情况为例):[0056] 步骤201:该步骤为个人客户端生成病历调用请求的数字签名。当第一医院节点需要调用患者在第二医院节点的数据时,首先需要向患者的客户端发送病历数据调用请求,患者确认后,客户端将该病历数据调用请求为输入,经过一个哈希函数进行处理,输出一个哈希值HA3,再通过患者在注册时产生的私钥进行加密,从而形成数字签名Sin1。该数字签名Sin1包含了来自第一医院节点的病历调用请求的哈希值以及个人私钥信息,由于个人私钥不能暴露,该私钥信息已经过加密处理,只能本人通过私钥还原,不可反破译。[0057] 步骤202:该步骤生成病历调用请求的智能合约并广播在链。智能合约是指一套通过代码构建出的一套约束力体系,使用代码来描述某种规则,并且当满足这种规则的时候,通过代码自动执行该合约内容。首先,第一医院节点从患者的客户端中获取步骤201中的数字签名Sin1和患者的公钥(即患者个人地址)。患者的数字签名Sin1与患者的公钥(用于验证患者信息)、第一医院节点的公钥Key1(用于验证接收节点信息)、第二医院节点的公钥Key2(用于验证发送节点信息)与病历请求消息形成一份智能合约SC,根据约定好的散列算法对该智能合约SC进行哈希得到哈希值hash(SC)=HA1,并且第一医院节点用其私钥对HA1进行加密得到第一医院节点的数字签名Sin2后,将Sin2和SC一并发布并广播到区块链中。[0058] 步骤203:该步骤用于验证是否为发送节点。区块链上的所有医院节点接收到该智能合约的广播后,用该智能合约的发送节点公钥Key2并与自己的公钥Key3对比。若两个公钥不匹配,则该医院节点不为发送节点,放弃对智能合约的处理;若两个公钥匹配,则该医院节点为发送节点,即第二医院节点,并进行后续步骤。[0059] 步骤204:第二医院节点利用哈希匹配算法确认接收节点。从智能合约SC中获取到的第一医院节点的公钥Key1对数字签名Sin2进行解密,得到一个新的哈希值HA2,再根据约定好的散列算法对SC进行处理得到HA1。若HA1=HA2,则表明接收节点为第一医院节点;否则验证失败,该智能合约无效。[0060] 步骤205:该步骤验证数据调用请求是否经患者授权。第一步,从智能合约SC中获取医疗数据调用请求,对数据调用请求使用相同的哈希函数进行处理,得到哈希值HA3。第二步,再从智能合约SC中获取患者的公钥对其患者的数字签名Sin1进行解密,得到哈希值HA4。最后验证两个哈希值是否相等。若哈希值HA3=HA4,则表明已经过患者授权和同意,验证通过;否则该医疗调用请求无效。[0061] 步骤206:当第二医院节点完成以上步骤的验证并通过后,则将本地数据库中的患者病历进行数据格式的标准化处理,并存储在缓冲数据库中,再由缓冲数据库通过第一节点的公钥Key1发送至第一医院节点。[0062] 步骤207:在第二种情况,若第一医院节点需要调用所有医院节点关于该患者的病历数据,则需将以上过程中的发送节点的公钥key2改为本区块链系统的公共公钥Key,在本地医院节点患者数据调取的过程中,若患者在本地医院节点的数据为空值,则说明患者在本地医院节点没有就诊经历或者其病历缺失,不向接收节点返回数据;若患者在本地医院节点的数据不为空值,则向接收节点返回相应患者的医疗病历数据,其过程与步骤201-步骤206一致。[0063] 如图3所示,对本发明实例的区块链删除操作流程进行详细地说明,该方法包括:[0064] 步骤301:某个区块Blockn的交易数据,因数据过期使得链上存储的索引信息不再具有价值,该区块的交易数据无疑是对存储资源的浪费。在此情况下,网络中的相关节点向网络广播“删除区块Biockn交易数据”的请求信息m,m包括区块Blockn基本信息,如序号,索引等;以及删除原因。[0065] 步骤302:其余所有合法节点在接收到请求信息后,会对该删除操作的合理性进行考证。考证过后,合法节点需广播自己关于的意见,即是否同意。最终,每个节点均可统计整个网络对该删除信息的反馈,如果“同意”信息超过设定门限(如合法节点数量的2/3),便认为该删除请求合法。[0066] 步骤303:经过3次算法过程,生成环签名及决策。经过3次算法过程,第一,根据一个多项式时间概率(PPT)算法,输入安全参数k,输出n个环成员的公钥PKn和私钥SKn。第二,输入消息m, 个环成员公钥PK和签名用户私钥SK输出环签名R。第三,输入环成员公钥PK和签名(m,R),输出“接收”或者“拒绝”。[0067] 步骤304:由区块Blockn的删除时间time、删除原因cus和记账者对区块Blockn+1中交易数据的签名sign,生成删除行为对应的消息m。对消息m生成门限环签名,记录在Blockn中。删除区块,即将区块Blockn+1的Hash链接指向区块Blockn‑1,并且环签名会存储于区块Blockn+1和区块Blockn‑1之间,以供验证。[0068] 步骤305:删除操作完成并广播后,网络中所有节点均能对门限环签名进行验证,并将消息m中记账者对区块Blockn中交易数据的签名与签名子块中的签名进行对比验证,如果验证通过,则认可数据删除行为的合法性。[0069] 对于本发明实例的区块链系统中的新型打包机制,使系统可以全天候的进行打包操作,有效地解决了白天系统工作过负荷,而晚上系统工作过于空闲的问题。下面进行了详细地说明,过程包括:[0070] 步骤401:区块链系统会对每个医院节点,每隔一定时间进行一次区块打包请求询问。[0071] 步骤402:若此时该医院节点缓冲数据库中的医疗记录数刚好或超过一个区块所能存储的医疗记录数容量,则此时把一个区块容量的医疗记录数打包进区块,并在区块链系统中广播这个区块,让其余节点对该区块进行认证入链。其余的医疗记录仍存储于缓冲数据库中,等待下一次的打包请求询问。此场景通常出现于白天工作繁忙、患者较多的情况。[0072] 步骤403:若此时该医院节点缓冲数据库中的医疗记录数还未满足一个区块的容量,则该医院节点不对缓冲数据库中的医疗数据进行打包,而是等待下一次的区块打包请求询问,再重复步骤402。此场景通常出现于晚上系统工作空闲的状态。[0073] 综上,本发明各个实施例至少具有如下效果:[0074] 1、在本发明实施例中,将个人身份证信息与个人私钥结合,生成了区块链个人唯一私钥,有效避免了用户重复注册、用户盗用账号的风险。[0075] 2、在本发明实施例中,将区块链技术与数据库技术相结合,并设计了一种新型的区块链数据调用方法。与直接使用本地数据库的系统相比,本系统增强了医院之间的消息相通;与在区块链上直接存储大量医疗信息的系统相比,本系统直接存储医疗信息的索引,减轻了节点存储大量区块数据的压力。且该系统的数据调用方法支持向多个医院节点同时请求数据。[0076] 3、在本发明实施例中,实现了一种新型的区块打包机制,有效地解决了白天系统工作过于繁忙导致过负荷,而晚上系统工作过于空闲的问题。[0077] 4、在本发明实施例中,实现了区块链系统可删除的功能,在删除的信息仍能追溯的前提下,同样减轻了节点存储大量区块数据的压力。[0078] 以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
专利地区:广东
专利申请日期:2021-08-27
专利公开日期:2024-07-26
专利公告号:CN113793665B