基于联盟链的医疗数据存储方法和系统

文档序号:28328216发布日期:2022-01-05 01:45阅读:157来源:国知局
基于联盟链的医疗数据存储方法和系统

1.本技术涉及数据存储技术领域,具体涉及一种基于联盟链的医疗数据存储方法和系统。


背景技术:

2.传统医疗信息系统中总是存在数据安全存储和共享难的问题,不同身份的人员在访问医疗数据时都存在严格限制,且验证身份和数据真实性需要大量资源和时间。虽然中心化的电子医疗数据的使用给人们带来了一定的便利,但是电子医疗数据一般存储在医院单独的数据库中,集中存储信息价值较大,一旦遭到第三方攻击或者没有职业道德的工作人员恶意倒卖,则数据安全性和不可更改性都无法得到保障。所以,这种中心化的管理和分散式的存储方式已经不是医疗数据存储最优的选择。
3.另外,长久以来医疗数据更多的只是在医疗机构内部流转和共享,不同的医疗机构间信息不通畅,缺乏有效的数据共享机制,随着现代大数据、云计算技术的快速发展,部分研究人员提出了基于云存储服务数据安全机制等方案,但是这些都是基于完全可信任第三方来保证安全性,一旦第三方遭到恶意攻击,则所有的数据将不再安全。
4.目前,区块链已经用于医疗数据存储中,但其中大部分的数据共识算法都采用原始的pbft,这使得所有节点都需要参与共识,通信资源消耗较高,导致在医疗数据存储的区块链系统中效率较低,随着区块链中医疗机构节点的增多,pbft算法的通信复杂度将急剧增加,大大的增加了网络共识时间,不利于医疗数据存储的联盟链的稳定发展。
5.申请内容
6.有鉴于此,本技术实施例中提供了一种基于联盟链的医疗数据存储方法和系统。
7.第一方面,本技术实施例提供了一种基于联盟链的医疗数据存储方法,所述联盟链包括多个医疗节点,多个医疗节点分为若干个节点组,每个所述节点组包括一个主节点和多个次节点;所述方法应用于所述节点组,所述方法包括:
8.对于任意一个节点组,所述节点组的所述主节点获取医疗数据索引,对所述医疗数据索引进行验证,以生产预备信息;
9.所述主节点将所述预备信息发送至所述节点组的每一个所述次节点,以进行第一次pbft共识;
10.当第一次共识通过后,所述主节点将所述预备信息发送至其他节点组的主节点进行第二次pbft共识;
11.在第二次共识通过后,所述其他节点组的主节点将所述预备信息分别发送至所述其他节点组的各所述次节点,以进行验证,在验证通过后将所述医疗数据索引存储至每一个所述医疗节点,其中所述医疗数据索引对根据医疗数据进行哈希运算生成的,所述医疗数据索引用于查找所述医疗数据。
12.第二方面,本技术实施例提供了一种基于联盟链的医疗数据存储系统,所述联盟链包括多个医疗节点,多个医疗节点分为若干个节点组,每个所述节点组包括一个主节点
和多个次节点;所述方法应用于所述节点组,所述系统包括:
13.对于任意一个节点组,所述节点组的所述主节点获取医疗数据索引,对所述医疗数据索引进行验证,以生产预备信息;
14.所述主节点将所述预备信息发送至所述节点组的每一个所述次节点,以进行第一次pbft共识;
15.当第一次共识通过后,所述主节点将所述预备信息发送至其他节点组的主节点进行第二次pbft共识;
16.在第二次共识通过后,所述其他节点组的主节点将所述预备信息分别发送至所述其他节点组的各所述次节点,以进行验证,在验证通过后将所述医疗数据索引存储至每一个所述医疗节点,其中所述医疗数据索引对根据医疗数据进行哈希运算生成的,所述医疗数据索引用于查找所述医疗数据。
17.本技术实施例提供的基于联盟链的医疗数据存储方法和系统,联盟链包括多个医疗节点,多个医疗节点分为若干个节点组,每个节点组包括一个主节点和多个次节点;方法应用于节点组,方法包括:对于任意一个节点组,节点组的主节点获取医疗数据索引,对医疗数据索引进行验证,以生产预备信息;主节点将预备信息发送至节点组的每一个次节点,以进行第一次pbft共识;当第一次共识通过后,主节点将预备信息发送至其他节点组的主节点进行第二次pbft共识;在第二次共识通过后,其他节点组的主节点将预备信息分别发送至其他节点组的各次节点,以进行验证,在验证通过后将医疗数据索引存储至每一个医疗节点,其中医疗数据索引对根据医疗数据进行哈希运算生成的,医疗数据索引用于查找医疗数据。该方法采用两次pbft共识,第一次pbft在分好组的该组内进行,产生的一致性共识结果发送给该组的主节点,然后第二次pbft共识是该组的主节点和其他组的主节点共识,不用和其他组的其他节点共识,大大降低了通信复杂度。由于pbft是一个三阶段的一致性协议,所有节点都需要参与,如果不分组直接使用pbft那么某个医疗节点上传数据达成共识时,其他所有节点都需要参与,本技术中某个节点上传数据达成共识时只在节点组内所有节点第一次共识,然后和其他节点组的主节点第二次共识,减少了共识节点数量。
附图说明
18.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
19.图1为本技术实施例提供的基于联盟链的医疗数据存储方法的流程示意图;
20.图2为本技术一个实施例提供的基于联盟链的医疗数据存储模型结构的示意图;
21.图3为本技术一个实施例提供的联盟链的结构示意图。
具体实施方式
22.下面将对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范
围。
23.为了更详细说明本技术,下面结合附图对本技术提供的一种文本公式的定位方法、装置、终端设备和计算机存储介质,进行具体地描述。
24.本技术实施例中提供了一种基于联盟链的医疗数据存储方法。请参阅图1,图1示出了本技术实施例提供的一种基于联盟链的医疗数据存储方法的流程示意图,联盟链包括多个医疗节点,多个医疗节点分为若干个节点组,每个节点组包括一个主节点和多个次节点;方法应用于节点组,包括以下步骤:
25.步骤s110,对于任意一个节点组,节点组的主节点获取医疗数据索引,对医疗数据索引进行验证,以生产预备信息;
26.步骤s120,主节点将预备信息发送至节点组的每一个次节点,以进行第一次pbft共识;
27.步骤s130,当第一次共识通过后,主节点将预备信息发送至其他节点组的主节点进行第二次pbft共识;
28.步骤s140,在第二次共识通过后,其他节点组的主节点将预备信息分别发送至其他节点组的各次节点,以进行验证,在验证通过后将医疗数据索引存储至每一个医疗节点。
29.其中医疗数据索引对根据医疗数据进行哈希运算生成的,医疗数据索引用于查找医疗数据。
30.请参照图2所示,基于联盟链的医疗数据存储模型结构示意图。其中,基于联盟链的医疗数据存储模型包括医院(又称为医疗机构)、监管中心以及联盟链(即图中的医疗联盟链),联盟链是由多个医院组成,每一个医院称为一个节点(即医疗节点),每一个医疗节点具备自身的分布式服务器。当用户首次进入医疗联盟链时需要向监管中心提交相关注册信息,监管中心验证用户资质身份,使用非对称加密算法为通过用户生成公私钥对,并用私钥对用户的公钥进行签名生成数字证书。当患者取医院就诊时,医生会为患者提供一个个人健康记录(personal health record,phr)信息,又称为医疗数据,患者的phr包含了患者身份、年龄、临床诊断、用药情况等信息,同时我们将该患者的phr信息进行敏感度分级,用键值对的形式对不同敏感度信息进行存储,针对不同的秘钥分配不同的访问权限,将phr信息存储在医疗机构自己的分布式数据库的星际文件系统中(即图中的ipfs),并生成一个phr的索引(即图中的index),这个index是指向存储在医疗机构(即医疗节点)自己的分布式数据库中的文件指针,index使用患者的私钥签名,对未授权的用户隐藏这个索引,将该index加密后录入区块链账本中,这样减轻区块链中数据存储和高频访问的压力。患者通过私钥从区块链中获得index并从医疗机构获取自己的phr。
31.其次,联盟链包括多个医疗节点,多个医疗节点分为若干个节点组,每个节点组包括一个主节点和多个次节点。当某一医疗机构(即医疗节点)需要将医疗数据上传至自身的分布式数据库的星际文件系统中,然后生成医疗数据索引(即index),将医疗数据索引发送至该医疗节点所在节点组的主节点上,该主节点接收到医疗数据索引后会对该医疗数据索引进行排序验证,生成预备信息,继而将排序好的预备信息发送给该节点组的其他医院节点(即次节点)进行第一次pbft共识,当第一次pbft共识成功后,该节点组主节点将生成好的预备信息广播给其他节点组的主节点进行第二次pbft共识,共识过程中每个主节点广播各自的数字签名并收集其他主节点的数字签名,当共识通过后,各个主节点将收集到的所
有签名和请求打包分别发送给节点组内的其他医院节点(即次节点),各节点组内的次节点收到打包好的消息后,验证数字签名集合,验证通过后执行该请求内容,将index更新本地区块链账本,从而完成整个共识过程。
32.此外,pbft(practical byzantine fault tolerance)共识,是联盟币的共识算法的基础。实现了在有限个节点的情况下的拜占庭问题,容错性好,并同时保证一定的性能。pbft原理为在系统中有一个节点会被当做主节点,而其他节点都是子节点。系统内的所有节点都会相互通信,最终目标是大家能以少数服从多数的原则达成数据的共识。
33.另外,联盟链中包括多个节点组,在实际使用中,通过轮循遍历各个节点组,若循环到该节点组内没有医疗节点需要上传医疗数据索引,则跳过该节点组继续向下轮询。当该节点组有医疗节点需要上传医疗数据索引则执行步骤s110

s140从而完成医疗数据索引上传。
34.本技术实施例提供的基于联盟链的医疗数据存储方法和系统,联盟链包括多个医疗节点,多个医疗节点分为若干个节点组,每个节点组包括一个主节点和多个次节点;方法应用于节点组,方法包括:对于任意一个节点组,节点组的主节点获取医疗数据索引,对医疗数据索引进行验证,以生产预备信息;主节点将预备信息发送至节点组的每一个次节点,以进行第一次pbft共识;当第一次共识通过后,主节点将预备信息发送至其他节点组的主节点进行第二次pbft共识;在第二次共识通过后,其他节点组的主节点将预备信息分别发送至其他节点组的各次节点,以进行验证,在验证通过后将医疗数据索引存储至每一个医疗节点,其中医疗数据索引对根据医疗数据进行哈希运算生成的,医疗数据索引用于查找医疗数据。该方法采用两次pbft共识,第一次pbft在分好组的该组内进行,产生的一致性共识结果发送给该组的主节点,然后第二次pbft共识是该组的主节点和其他组的主节点共识,不用和其他组的其他节点共识,大大降低了通信复杂度。由于pbft是一个三阶段的一致性协议,所有节点都需要参与,如果不分组直接使用pbft那么某个医疗节点上传数据达成共识时,其他所有节点都需要参与,本技术中某个节点上传数据达成共识时只在节点组内所有节点第一次共识,然后和其他节点组的主节点第二次共识,减少了共识节点数量。
35.在一个实施例中,所述方法还包括:所述医疗数据存储于分布式数据库的星际文件系统中。
36.具体的,对于每一个医疗节点而言,其医疗数据存储于自身非分布式数据库的星际文件系统(即ipfs),一方面方便数据存储,另一方面也方便联盟链中其他医疗节点查询。
37.在一个实施例中,联盟链通过以下方法获得:在一个预设周期内,获取初始医疗节点集,其中初始医疗节点集包括多个初始医疗节点;对初始医疗节点集中的多个初始医疗节点进行分组以生成多个初始节点组;从每一个初始节点组中选出一个医疗节点作为主节点,其他医疗节点作为此节点,以形成多个节点组。
38.在一个实施例中,对初始医疗节点集中的多个初始医疗节点进行分组以生成多个初始节点组,包括:从多个初始医疗节点中任意选择一个作为中心节点;计算中心节点与其他初始医疗节点的距离值;选择距离值小于等于预设阈值的初始医疗节点和中心节点作为一个初始节点组。
39.在一个实施例中,从每一个初始节点组中选出一个医疗节点作为主节点,包括:计算任一初始节点组中每一个初始节点到其他初始节点组的平均距离值;选择最小平均距离
值对应的初始节点作为任一初始节点组的主节点。
40.为了便于理解给出一个详细的实施例。联盟链的获得方式如下:首先,在一个固定的周期t内,根据医院地理位置构建一个初始节点集u,初始节点集u里面有若干医院节点ni,即u={n1,n2,n3...ni..nj..}。
41.其次,在初始集合u内通过分组(即grouping)算法进行分组,grouping算法步骤:在u中随机选取一个医院节点ni,将此医院节点ni作为当前的中心节点,设置一个阈值半径r,其中阈值半径为当前医院节点ni到初始节点集u中的其他医院节点距离的平均值,即其中d
i
j为某一周期内医院当前节点ni到另一节点的最短距离,将医院节点ni本身以及阈值半径r内的其他若干医院节点分为一组g1,然后将分组好的g1从初始节点集u移除,重复上述操作直到分配好m个小组,即g={g1,g2......gm}。在分配好m个小组后,若还有未被包括在g内的医院节点,再逐一计算该医院节点分别到m个小组的距离平均值md,表示节点j到g1的平均值,同理可计算出j到g内其他小组的距离平均值md,将该节点加入距离平均值md最小的组内。
42.然后,分别选举出各g内的m个小组的主节点。对于g中初始的m个小组,先从g1中开始选取其中当值主节点,计算g1组中各个医院节点到{g2,g3......gm}中的距离平均值,即进而通过最小的距离平均值从g1中选择出当前分组的主节点p1,然后将p1放入主节点集pl中,继续计算g2中各医院节点到主节点集pl中距离的平均值同理通过最小距离平均值从g2中选择出当前分组的主节点p2,然后将p2放入主节点集合pl中,重复上述操作,若存在相同的距离平均值md,则通过比较标准差则根据最小的标准差选择每组的唯一主节点,直至pl中有m个主节点,即pl={p1,p2......pm},则主节点选取结束,具体的请参照图3所示。采用上述方式可以快速形成联盟链。
43.需要说明的是,联盟链通常是按照医疗机构(例如医院)的地理位置来确定的,同一地理位置(例如一个省)的医疗机构可以组成一个联盟链,其中每一个医疗机构对应联盟链中的一个医疗节点。
44.在一个实施例中,方法还包括:对于每一个节点组,当主节点故障时,从多个次节点中选择一个作为主节点。
45.在一个实施例中,从多个次节点中选择一个作为主节点,包括:选择到其他节点组的平均距离值最小的次节点为主节点。
46.具体的,对于一个节点组而言,主节点也可能存在故障。当主节点故障时,通常从多个次节点中选择一个来作为主节点。具体过程为:若主节点医院发生了故障或者宕机时,我们将设置一个主节点更换机制:假设在节点组g1内假设分配有x个医疗节点,计算出g1中
除了当前主节点p1之外所有的x

1个医院节点到pl集合中的距离平均值,按照从小到大排列成主节点候补集合{q1,q2.....qx

1},如果距离平均值相同则按照上述标准差方法计算并按照同小到大排列,最终获得g1分组中x

1个主节点候补节点集合。按照上述操作可分别选出剩下m

1个小组的主节点候补集合。每一组内发生拜占庭错误时,按照该组的主节点候补集合{q1,q2......qx

1}顺序轮换当前主节点,若轮换的候补节点也发生宕机则继续向下轮换。被轮换的主节点将会被移出共识,候补的主节点加入主节点集合pl,为了保证轮换的主节点到pl内其他主节点距离最近,需要重新更新各个小组的主节点候补集合,使得所有的候补节点都有机会成为主节点,防止一家独大导致垄断。
47.在一个实施例中,还包括:当有新的医疗节点加入联盟链时,将新的医疗节点加入距离新的医疗节点平均距离值最小的节点组。
48.在一个实施例中,还包括:当联盟链中的医疗节点想要退出时,想要退出的医疗节点发送退出指令至想要退出的医疗节点所在节点组的主节点;在验证通过后,主节点删除想要退出的医疗节点。
49.具体而言,对于一个联盟链而言,通常会有新的医疗节点想要加入,也会有联盟链中的医疗节点想要退出。具体操作过程为:设置一个动态准入机制,允许医疗节点动态的加入和退出这个医疗联盟链。当有新的医疗节点想要加入时,通过计算该医疗节点到各个节点组的距离平均值md,选择最小的距离平均值节点组,在该节点组内没有医疗节点数据索引上链请求时候,将新的医疗节点加入该小节点组。当有医疗节点想要退出时,想要退出的医疗节点发送退出指令至想要退出的医疗节点所在节点组的主节点,验证通过后,在该节点组空闲时从节点组中删除该医疗节点。同时在一个固定的周期t之后我们可以重新分组,具体的周期t可以根据哪些新建医院以及实际需求设置,来保证最高效的传输效率和降低共识延迟和通信次数。
50.应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
51.上述本技术公开的实施例中详细描述了一种基于联盟链的医疗数据存储方法,对于本技术公开的上述方法可采用多种形式的设备实现,因此本技术还公开了对应上述方法的基于联盟链的医疗数据存储系统,下面给出具体的实施例进行详细说明。
52.本技术实施例公开的一种基于联盟链的医疗数据存储系统,联盟链包括多个医疗节点,多个医疗节点分为若干个节点组,每个节点组包括一个主节点和多个次节点;方法应用于节点组,系统包括:对于任意一个节点组,节点组的主节点获取医疗数据索引,对医疗数据索引进行验证,以生产预备信息;主节点将预备信息发送至节点组的每一个次节点,以进行第一次pbft共识;当第一次共识通过后,主节点将预备信息发送至其他节点组的主节点进行第二次pbft共识;在第二次共识通过后,其他节点组的主节点将预备信息分别发送至其他节点组的各次节点,以进行验证,在验证通过后将医疗数据索引存储至每一个医疗节点,其中医疗数据索引对根据医疗数据进行哈希运算生成的,医疗数据索引用于查找医
疗数据。
53.关于基于联盟链的医疗数据存储系统的具体限定可以参见上文中对于方法的限定,在此不再赘述。
54.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
55.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1