CN114818010A - 一种基于双链结构的区块链医疗记录安全存储与共享方法 - Google Patents
一种基于双链结构的区块链医疗记录安全存储与共享方法 Download PDFInfo
- Publication number
- CN114818010A CN114818010A CN202210715446.7A CN202210715446A CN114818010A CN 114818010 A CN114818010 A CN 114818010A CN 202210715446 A CN202210715446 A CN 202210715446A CN 114818010 A CN114818010 A CN 114818010A
- Authority
- CN
- China
- Prior art keywords
- nodes
- consensus
- chain
- patient
- medical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H10/00—ICT specially adapted for the handling or processing of patient-related medical or healthcare data
- G16H10/60—ICT specially adapted for the handling or processing of patient-related medical or healthcare data for patient-specific data, e.g. for electronic patient records
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H50/00—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics
- G16H50/70—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics for mining of medical data, e.g. analysing previous cases of other patients
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Public Health (AREA)
- Data Mining & Analysis (AREA)
- Primary Health Care (AREA)
- Epidemiology (AREA)
- Automation & Control Theory (AREA)
- Pathology (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
本发明提供了一种基于双链结构的区块链医疗记录安全存储与共享方法,其特征在于,包括以下具体步骤:S1、初始化角色分配和权限设置;S2、医疗记录安全存储;S3、转诊后医疗记录共享和查询;本发明采用双链结构,将用户链与数据链分开,并利用ID进行关联,释放了数据主链的压力,也提高了运行效率;其次,采用改进的PBFT共识机制,结合积分和升降级制度提高了数据验证的成功率,减少了共识成本;最后,在用户链上设置初始角色权限,提高病人自身对其医疗记录的控制能力和隐私安全性。
Description
技术领域
本发明涉及电子医疗记录领域,具体地说是一种基于双链结构的区块链医疗记录安全存储与共享方法。
背景技术
过去的医疗记录主要是以线下病历本为主,这样的模式使得病人每一次转诊和再问诊都需要携带病历本,且每个医院间的病历本不通用,对于前一次的医疗记录的认可度也不高,增加了病人反复检查的过程。而当线下病历转为电子病历的数字化医疗记录时,多数的医院都将医疗记录存储在自己医院的中央数据库中予以存储。这样的方式虽然在一定程度上减少了病人携带病历本的困扰,但该数字医疗记录仅在问诊医院内部可共享查询。当病人转院、转诊时,无法查询到在别家医院存储的医疗记录,医院间未建立联盟。同时,中央数据库存储易受到医生对病人医疗记录的篡改,也容易受到外部的攻击导致所有医疗记录消失。
发明内容
本发明的目的在于提出一种基于双链结构的区块链医疗记录安全存储与共享方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供以下技术方案:
一种基于双链结构的区块链医疗记录安全存储与共享方法,其特征在于,包括以下具体步骤:
S1、模型构建;
S2、初始化角色分配和权限设置;
S3、医疗记录安全存储;
S4、转诊后医疗记录共享和查询。
再利用智能合约完成上述步骤中的医疗记录的存储、加密、共享、解密以及用户管理、访问权限设置操作。
所述步骤S1具体包括如下:
构建两条区块链结构,一条为用户链,一条为数据链;其中,用户链为公有链,负责所有个人参与节点的身份认证、用户管理、基于用户角色的访问权限设置和密钥发放操作。而数据链则负责对用户链中医生节点上传的医疗记录进行时间戳存储;该数据链是由所有参与医疗记录共享平台建设的医疗机构组成的联盟链类型,还负责医疗记录存储和共享的共识过程;用户链中,病人通过其身份证号与数据联盟链关联,医生通过其所属的医疗机构与联盟链关联;两条链并行发展,互不干扰。
所述步骤S2具体包括如下:
主要参与的实体有医生和病人,其中医生具有写入医疗记录数据的权限,而无权限在病人未批准情况下查看单独病人数据;病人没有写入自身医疗记录的权限,但允许查看并在转诊后能够授予其他医生查看自身数据的权限。
利用区块链上的智能合约功能,并结合RBAC访问控制机制,在用户链中编写用户管理和权限设置链码,针对不同的用户角色预先设置不同的读、写访问控制权限;智能合约的使用可以使用户管理不再受到中心化机构或第三方组织的约束,访问主体与医疗记录数据拥有方之间可以直接进行权限授予的操作。
所述步骤S3具体包括如下:
医疗记录作为病人问诊的隐私信息,由问诊医生为病人诊断治疗,并填写响应情况上传到该医疗机构所在的医疗记录分享的联盟链中,经由联盟共识,打包存储到区块链上。
医疗记录包含了病人的各项诊断信息和个人信息,包括处方单、化验报告、医疗影像资料和医疗费用,以及个人的姓名、性别和年龄,以JSON格式对医疗记录进行存储。
医疗记录由医生书写、产生后,通过该医生在用户管理阶段获取密钥的私钥SKp进行签名,再用病人自己的公钥PKp进行加密,然后上传至区块链上;病人查看自身医疗记录只需用SKp解密即可获得的明文信息;在后续病人转诊或再次问诊时,其他医生想要访问之前该病人的医疗记录,需提出访问请求,由病人自主审批、授权后发送私钥SKp进行解密才可查看。
医疗记录数据上链存储时,需要通过各医院机构组成的联盟链的共识过程,经数
据真实性验证后,才可打包存入区块链中;PBFT共识机制是一种适用于各种节点参与的共
识机制,在PBFT共识机制算法基础上,结合医疗联盟链特性,引入积分和升降级机制,使得
共识算法在出现不诚实节点时,快速恢复到最优状态,提高区块效率。改进后的共识机制将
区块链网络中的节点分成两类,一类为共识节点,数量为-f,共识节点将参与共识过程,
并在此选举主节点;一类节点为候选节点,数量为f,候选节点不参与共识,但接受共识结果
产生的积分奖惩。当共识节点中出现不诚实节点,在完成一次共识操作后将剔除不诚实节
点,并从候选节点中根据积分选择一个节点替补加入共识节点,从而保证共识节点中大概
率都为诚实节点。
所述步骤S3中,PBFT共识机制具体包括以下步骤:
②病人问诊产生医疗记录数据,由某医院的医生将记录存储到该联盟区块链上,发出如块请求。
③主节点接收请求后进行编号,并全网广播。
④参与共识的从节点收到主节点广播后进行共识操作,对区块数据进行验证和确认并进行结果反馈;同时,对其他从节点广播的确认消息进行收集和确认。
⑤最终收到2f+1个以上节点发来的Commit正确性确认消息后,该医疗记录则被有效记录到区块链上。
⑥若共识机制成功完成,则对所有参与共识的主节点和从节点予以积分增加的奖励;若在共识过程中,不诚实节点未成功完成反馈结果的数量超过容忍范围,导致共识难以完成,则快速启动候选节点参与的全网共识过程,控制不诚实节点数量在容忍范围,完成共识;此时,需要对为成功/正确提供反馈结果的从节点予以积分减半的惩罚,对其余完成共识的节点予以积分增加的奖励。
⑦在一轮共识后,根据积分升降级制度,剔除积分小于100的不诚实节点,增补候选节点,保证共识节点集合中大概率都是诚实节点;循环新的PBFT共识机制算法。
所述步骤S4具体包括如下:
通过病人在某一处医疗机构的医生处问诊,在医疗记录撰写和存储到主要由各个医疗机构组成的联盟链后,由区块链全网广播,发送到其他机构共享交互的服务器节点上;在该联盟链上构建医疗记录共享Web平台,各个参与医疗机构和机构下关联的医生节点都可查询到该病人此次的问诊医疗记录,但需在获得病人授权的前提下才可访问最终的明文详细数据。
联盟链中的医疗机构和医生节点,通过智能合约向病人发出所需的数据请求,病人在操作段授予权限和许可后,智能合约调用病人的私钥SKp将该医疗记录解密后以明文形式发送给访问节点查看。
与现有技术相比,本发明有益效果如下:
本发明的方法首先采用双链结构,将用户链与数据链分开,并利用ID进行关联,释放了数据主链的压力,也提高了运行效率;其次,采用改进的PBFT共识机制,结合积分和升降级制度提高了数据验证的成功率,减少了共识成本;最后,本发明方案在用户链上设置初始角色权限,提高病人自身对其医疗记录的控制能力和隐私安全性。
附图说明
图1为本发明总体模型;
图2为本发明区块连接图;
图3为本发明改进的PBFT共识机制过程图;
图4为本发明智能合约序列图;
图5为本发明改进的PBFT机制时延对比;
图6为本发明存储溯源效率对比。
具体实施方式
为阐明技术问题、技术方案、实施过程及性能展示,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释。本发明,并不用于限定本发明。以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
实施例1
如图1所示,一种基于双链结构的区块链医疗记录安全存储与共享方法,其特征在于,包括以下具体步骤:
S1、模型构建;
S2、初始化角色分配和权限设置;
S3、医疗记录安全存储;
S4、转诊后医疗记录共享和查询。
再利用智能合约完成上述步骤中的医疗记录的存储、加密、共享、解密以及用户管理、访问权限设置操作。
所述步骤S1具体包括如下:
构建两条区块链结构,一条为用户链,一条为数据链;其中,用户链为公有链,负责所有个人参与节点的身份认证、用户管理、基于用户角色的访问权限设置和密钥发放操作。而数据链则负责对用户链中医生节点上传的医疗记录进行时间戳存储;该数据链是由所有参与医疗记录共享平台建设的医疗机构组成的联盟链类型,还负责医疗记录存储和共享的共识过程;用户链中,病人通过其身份证号与数据联盟链关联,医生通过其所属的医疗机构与联盟链关联;两条链并行发展,互不干扰。
一次完整的病人问诊和转诊过程如下:病人A患有疾病前往医院A进行挂号治疗,医生A为其诊断并做检查,同时填写医疗记录。该记录包括病人A的个人信息以及本次诊断中涉及的化验、影响、处方药信息。就诊完成后,医生A将该医疗记录上传至联盟链中,由联盟链中的各医疗机构进行共识验证,验证通过的医疗记录存储该联盟链中,并给所有其他医疗机构广播一份数据。病人A在治疗后发现疾病尚未治好,便前往医院B进行转诊,医生B在为其诊断前,需查看前一次的医疗记录方便了解更多情况。此时,医生B所在的医院B已有之前广播获取的备份数据,只需登录即可查看。但该医疗记录是病人A的个人隐私,只能查看到其密文形式,需要在线提出访问请求,由病人A当场在前操作端给予访问权,之后医生B即可查看到经调用病人A的私钥SKp解密后的明文医疗记录,为病人A做二次诊断和治疗。
该过程减少了繁琐的病历流转过程和不统一、不共享的医疗记录的麻烦,提高了用户就诊效率的同时,也使得用户个人医疗隐私更加安全。
所述步骤S2具体包括如下:
用户管理和访问权限的设置是双链中用户链上的功能,用来对参与到医疗记录联盟链中的所有成员节点进行注册、验证、管理和权限分配,用来管理参与节点登入、登出、身份认证、密钥绑定过程。
主要参与的实体有医生和病人,医生:为病人进行治疗和诊断,生成相应的医疗记录并上传至区块链,医生属于并需要与联盟链中某一医院机构关联,验证其医生身份。病人:问诊者,医疗记录的所有者,对医生诊断后生成的医疗记录有绝对的所有权和控制权,并在转诊过程中赋予其余医生查看医疗记录的权限。既医生具有写入医疗记录数据的权限,而无权限在病人未批准情况下查看单独病人数据;病人没有写入自身医疗记录的权限,但允许查看并在转诊后能够授予其他医生查看自身数据的权限。
利用区块链上的智能合约功能,并结合RBAC访问控制机制,在用户链中编写用户管理和权限设置链码,针对不同的用户角色预先设置不同的读、写访问控制权限;智能合约的使用可以使用户管理不再受到中心化机构或第三方组织的约束,访问主体与医疗记录数据拥有方之间可以直接进行权限授予的操作。
用户在登录后选择自身角色:病人还是医生,根据不同的角色发送不同的密钥对给用户。病人密钥对是用来对自身医疗记录进行加密,医生密钥对可对记录进行数字签名以验证数据的真实、完整。无论病人还是医生,每一个用户都拥有一个唯一区块链地址作为个人的身份标识,用以身份认证和关联。病人需提供自身身份证号作为医疗记录数据的唯一标识符,在后续存储、共享和查询过程中身份证号就决定了该医疗记录只能由此身份证号病人来控制,且便于溯源。医生需提供个人执业医生号作为身份证明和创建医疗记录的标识。
所述步骤S3具体包括如下:
医疗记录作为病人问诊的隐私信息,由问诊医生为病人诊断治疗,并填写响应情况上传到该医疗机构所在的医疗记录分享的联盟链中,经由联盟共识,打包存储到区块链上。
如图2所示,区块链的哈希函数作为一种能够将任意长度的信息、数据都映射成固定长度值的函数类型,能够将每一次的病人医疗记录都转化为一个固定长度的Hash值,每一个Hash值都是唯一且不可进行拟操作的。因此,当输入的信息有稍微一点的变动和篡改,那么产生的Hash值可能会发生巨大的变化。其次,区块链是由多个医疗记录按其时间戳顺序存储而形成的区块,再由区块相互连接而形成的链式结构,每一个区块不仅包含其独有的Hash值,相当于它的身份标识码,还包含指向前一个区块的Hash值指针,更改其中一个区块信息时,必须同时改动该区块之后的所有区块,此时消耗的资源和共识算法算力是非常多的。随着添加的信息区块越来越多,想要更改某个区块的信息几乎是不可能的。因此,将区块链运用到医疗记录的存储中,减少了传统中央数据库存储医疗记录时的数据篡改和攻击,可以保证病人数据的真实、不可篡改,为病人后续问诊、转诊提供可靠的病历。
医疗记录包含了病人的各项诊断信息和个人信息,包括处方单、化验报告、医疗影像资料和医疗费用,以及个人的姓名、性别和年龄;以JSON格式对医疗记录进行存储。代码如下所示:
{ “Unique identifier”:
{ “Patient ID number” : “ “
}
“Participating entity” : [
{“Type” : “Doctor”
“Blockchain address” : “ ”
“Doctor practice number” : “12138”
}
{“Type” : “Patient”
“Blockchain address” : “ ”
“Name” : “James”
“Gender” : “Man”
“Age” : “30”
……
}
] ,
“Medical record” :
{“Data hash” : “7597e1dd918a2c657c181e2876af37a0446feda8 ”
“Lab reports” : “postive”
“Medical image results” : “ shadows in lungs”
“Prescription” : “Amoxicillin”
“Medical expenses” : “15”
}
“Parameters” :
{“Time” : “2021-08-30”
“Place” : “Hospital A”
}
}
医疗记录由医生书写、产生后,通过该医生在用户管理阶段获取密钥的私钥SKp进行签名,再用病人自己的公钥PKp进行加密,然后上传至区块链上;病人查看自身医疗记录只需用SKp解密即可获得的明文信息;在后续病人转诊或再次问诊时,其他医生想要访问之前该病人的医疗记录,需提出访问请求,由病人自主审批、授权后发送私钥SKp进行解密才可查看;该过程有效保证了病人医疗记录的隐私性和自主可控性。
如图3所示,医疗记录数据上链存储时,需要通过各医院机构组成的联盟链的共识
过程,经数据真实性验证后,才可打包存入区块链中;PBFT共识机制是一种适用于各种节点
参与的共识机制,由一个内部选举一个Primary节点作为共识过程的发起与引导者,其余共
识节点作为follow节点参与共识验证;PBFT共识机制可以容忍小于1/3个恶意节点的存在,
但是,PBFT共识机制算法在执行共识操作时,节点间会进行大量的通信,并且随着节点数量
和交易数量的增多,不诚实节点会逐渐增多,导致网络通信量快速增长,从而影响共识效率
和区块产生时间。因此,在PBFT算法基础上,结合医疗联盟链特性,引入积分和升降级机制,
使得共识算法在出现不诚实节点时,快速恢复到最优状态,提高区块效率。改进后的共识机
制将区块链网络中的节点分成两类,一类为共识节点,数量为-f,共识节点将参与共识过
程,并在此选举主节点;一类节点为候选节点,数量为f,候选节点不参与共识,但接受共识
结果产生的积分奖惩。当共识节点中出现不诚实节点,在完成一次共识操作后将剔除不诚
实节点,并从候选节点中根据积分选择一个节点替补加入共识节点,从而保证共识节点中
大概率都为诚实节点。
所述步骤S3中,PBFT共识机制具体包括以下步骤:
②病人问诊产生医疗记录数据,由某医院的医生将记录存储到该联盟区块链上,发出如块请求。
③主节点接收请求后进行编号,并全网广播。
④参与共识的从节点收到主节点广播后进行共识操作,对区块数据进行验证和确认并进行结果反馈;同时,对其他从节点广播的确认消息进行收集和确认。
⑤最终收到2f+1个以上节点发来的Commit正确性确认消息后,该医疗记录则被有效记录到区块链上。
⑥若共识机制成功完成,则对所有参与共识的主节点和从节点予以积分增加的奖励;若在共识过程中,不诚实节点未成功完成反馈结果的数量超过容忍范围,导致共识难以完成,则快速启动候选节点参与的全网共识过程,控制不诚实节点数量在容忍范围,完成共识;此时,需要对为成功/正确提供反馈结果的从节点予以积分减半的惩罚,对其余完成共识的节点,包括候选节点予以积分增加的奖励。
⑦在一轮共识后,根据积分升降级制度,剔除积分小于100的不诚实节点,增补候选节点,保证共识节点集合中大概率都是诚实节点;循环新的PBFT共识机制算法。
所述步骤S4具体包括如下:
通过病人在某一处医疗机构的医生处问诊,在医疗记录撰写和存储到主要由各个医疗机构组成的联盟链后,由区块链全网广播,发送到其他机构共享交互的服务器节点上;在该联盟链上构建医疗记录共享Web平台,各个参与医疗机构和机构下关联的医生节点都可查询到该病人此次的问诊医疗记录,但需在获得病人授权的前提下才可访问最终的明文详细数据。
联盟链中的医疗机构和医生节点,通过智能合约向病人发出所需的数据请求,病人在操作段授予权限和许可后,智能合约调用病人的私钥SKp将该医疗记录解密后以明文形式发送给访问节点查看。
医疗记录涉及多用户、多时段,数据产生量大,流转速度快,利用区块链技术以JSON格式存储后的医疗记录,只需输入病人身份证这个唯一标识符,即可快速共享查询到病人所有的医疗记录数据,同时一次医疗记录数据加盖时间戳,便于排序。经哈希函数不可篡改和共识机制验证后的共享病人医疗记录,是可信且真实的。
医疗记录信息以上述条件存入后端联盟区块链后,任何节点需要查询时,都可以在前端共享平台输入溯源查询条件语句,向区块链发起查询请求,区块链收到请求后生成溯源医疗记录数据包,并返回查询结果,最终在前端可视化平台上以窗口的形式显示所需信息。通过医疗记录的共享查询,病人可以在不同的医疗机构进行诊断治疗,所有联盟链上机构都认同上次的医疗记录,能够作为此次转诊、再问诊的有力依据,避免了病人重复检查。而从区块链中提取自己的医疗记录,同时需病人自身授予访问权限,使得病人的医疗隐私受到更加安全的保护。
如图4所示,智能合约是区块链在各领域应用中的得以实施的技术保障,记录了参与实体和相关操作之间的所有信息和逻辑关系,完成医疗记录的存储、加密、共享、解密以及用户管理、访问权限设置操作。展现了在医疗记录安全存储和共享过程中,智能合约与参与实体之间的函数调用和详细操作情况。
智能合约主要涉及三个核心过程:初始化角色分配和权限设置、医疗记录安全存储过程以及转诊后医疗记录共享和查询过程。以下将展示三个过程的详细代码细节。
算法1是***初始化角色分配和访问权限设置过程。在智能合约上预先设置角色属性和角色对应的数据操作权限,病人有查询或读取自身医疗记录和授予权限的权利,医生有写入病人医疗记录和在获批访问请求后的查询权,相应的代码如下:
Algorithm 1: Right setting
1. Input Roles, Rights
2. Event Roles(address){
3. function newRoles( ) public{
4. address User address;
5. unit Patient;
6. unit Doctor;
7. }
8. mapping (address => rights);
9. End }
10. Event Rights{
11. function newRights( ) public{
12. Patient => function (read and permission grant)
13. Doctor => function (write and read conditionally)
14. End }
算法2是将医疗记录由医生上传到区块中,等到共识机制验证。其中医疗记录通过病人自己的公钥PKp进行加密,以密文形式存储,相应的代码如下:
Algorithm 2: Update and store Medical records
Input: address、SP state、Genesis Block
1 address is the address mark of nodes in the process of medicaldiagnosis, and has uniqueness.
2 Genesis Block is the first block of blockchain
3 If address == doctor then
4 If SP state == Not Available information then
5 Create Medical records
6 SP state = information submitted.
7 def create_ block():
8 return Block(data="encrypt(medical records in JSON) ",timestamp=datetime.datetime.now( ),prev_hash=" ")
9 End
算法3是医疗记录共识验证的过程,由医生发起共识请求,由主节点接受共识请求,验证数字签名并全网广播,进行共识操作、积分奖励惩罚以及升降级制度,最终完成共识,医疗记录存储区块连接成区块链结构,相应的代码如下:
Algorithm 3: Consensus operation
Input: Doctor node、master node、consensus node、candidate node
1 Doctor node is responsible for sending information uplink request
2 master node is responsible for the preliminary review of messages,by the supervisor
3 Consensus nodes participate in the round of consensus operation
4 Candidate nodes are candidate sets of consensus nodes
5 Doctor node sends drug information uplink request to the masternode, and the master node verifies
6 If Information signature==ture then
7 broadcast a pre-prepare message containing information to Consensusnodes
8 the Consensus nodes validate the pre-prepare message
9 If Verification passed then
10 broadcast prepare message
11 If Consensus nodes received more than 2f + 1 prepare messages then
12 broadcast commit
13 If Consensus nodes received more than 2f+1 commit then
14 reach a consensus and return the result to the Manufacturer
15 else illegal request discard
16 else illegal request discard
17 else illegal request discard
18 else illegal request discard
19 If round of consensus was successfully completed then
20 point for each consensus node +1
21 else
find out dishonest node, deduct 50 points;
using whole network node to consensus
and select the substitute to enter the consensus node in thecandidate nodes
22 End
算法4为病人在转诊或二次问诊时其他医生对其ID下的过去医疗记录的查询,在未经病人自身许可时只能访问加密后的密文记录,只有发起访问请求并获批时才可以访问明文,相应的代码如下:
Algorithm 4: Sharing and querying medical records
Input: Patient ID、address
1 Patient ID is the only identifier for retrieving medical records
2 address is basis of related medical institutions to access andquery patient records
3 If Patient ID == true and DoctorID == doctor address then
4 Output the medical record ciphertext under this PatientID
5 Doctor initiates visit request
6 If Request=agreed then
7 decrypt (medical records in JSON)
8 Output the medical record Plaintext under this PatientID
9 End
区块链的介入和应用,其去中心化及安全特性在医疗记录安全存储和共享环节很好地发挥效能;同时,使用双链区块链结构使方法更加灵活、高效。
第一,方法分为两条区块链结构,一条为由各个医疗机构组成的联盟链,所有参与记录共享的医疗机构之间无需相互信任,且单一机构无法控制整个联盟链中的医疗记录,每个节点都存储任何一家医疗机构广播的备份记录。因此,单纯攻击某个节点或部分节点将不会对在联盟链中存储和共享的所有病人医疗记录产生损失和篡改。另一条链为支持用户管理、权限设置的用户公有链,将用户身份认证和数据存储分开实施,利用不同用户角色的ID与联盟链进行关联,提高了方案的效率和安全性。
第二,区块链上的哈希函数不可篡改特性,与传统分布式数据库不同,能够很好地保护医疗记录的完整性;假设区块链网络中诚实节点生成区块链的概率是r,不诚实节点即攻击者伪造区块链的概率为w,则攻击者节点控制全网n个节点的概率是:
因此,攻击者成功攻击的概率为:
随着不诚实节点与诚实节点数值的不断增大,攻击者攻击成功的概率P将逐渐下降。而本文提出的改进PBFT共识机制使得共识过程中诚实节点的数量逐渐增大,不诚实节点的数量与诚实节点数量之差远远超过符合攻击的数量,具有更高的容错性,出现大面积主动攻击网络的可能性极小,也保证了链上数据的稳定。
如图5所示,本发明改进的PBFT机制当出现不诚实节点时,其候选节点临时会参与验证过程形成全网共识,其交易时延相较于普通PBFT机制要小,但不存在不诚实节点而成功完成共识的情况下,二者交易时延相似。
第三,本发明在用户链端根据病人和医生不同的用户角色,利用智能合约设置了不同的数据操作和访问权限,并发送密钥以病人自身密钥加密其医疗记录,达到非病人本人不可见,非病人许可不可见的隐私保护目的。
最后,区块链上的时间戳可以将医疗记录按上传先后顺序链式记录,并以病人身份证ID作为唯一查询条件进行溯源。当病人转诊或产生医疗纠纷情况,均可快速追溯到病人就医期间的所有数据。而以JSON格式存储医疗记录可以减少对计算资源的需求,从而减少区块生成的执行时间,提高区块链存储和查询溯源效率。
本发明仿真模拟300条普通格式医疗记录存储溯源和JSON格式医疗记录存储溯源,结果如图6所示,JSON格式下的数据执行时间更少。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (4)
1.一种基于双链结构的区块链医疗记录安全存储与共享方法,其特征在于,包括以下具体步骤:
S1、模型构建;
S2、初始化角色分配和权限设置;
S3、医疗记录安全存储;
S4、转诊后医疗记录共享和查询
再利用智能合约完成上述步骤中的医疗记录的存储、加密、共享、解密以及用户管理、访问权限设置操作;
其中步骤S3中,医疗记录作为病人问诊的隐私信息,由问诊医生为病人诊断治疗,并填写响应情况上传到该医疗机构所在的医疗记录分享的联盟链中,经由联盟共识,打包存储到区块链上;
医疗记录包含了病人的各项诊断信息和个人信息,包括处方单、化验报告、医疗影像资料和医疗费用,以及个人的姓名、性别和年龄;以JSON格式对医疗记录进行存储;
医疗记录由医生书写、产生后,通过该医生在用户管理阶段获取密钥的私钥SKp进行签名,再用病人自己的公钥PKp进行加密,然后上传至区块链上;病人查看自身医疗记录只需用SKp解密即可获得的明文信息;在后续病人转诊或再次问诊时,其他医生想要访问之前该病人的医疗记录,需提出访问请求,由病人自主审批、授权后发送私钥SKp进行解密才可查看;
医疗记录数据上链存储时,需要通过各医院机构组成的联盟链的共识过程,经数据真实性验证后,才可打包存入区块链中;PBFT共识机制是一种适用于各种节点参与的共识机制,在PBFT共识机制算法基础上,结合医疗联盟链特性,引入积分和升降级机制,使得共识算法在出现不诚实节点时,快速恢复到最优状态,提高区块效率;改进后的共识机制将区块链网络中的节点分成两类,一类为共识节点,数量为N-f,共识节点将参与共识过程,并在此选举主节点;一类节点为候选节点,数量为f,候选节点不参与共识,但接受共识结果产生的积分奖惩;当共识节点中出现不诚实节点,在完成一次共识操作后将剔除不诚实节点,并从候选节点中根据积分选择一个节点替补加入共识节点,从而保证共识节点中大概率都为诚实节点;
PBFT共识机制具体包括以下步骤:
②病人问诊产生医疗记录数据,由某医院的医生将记录存储到该联盟区块链上,发出如块请求;
③主节点接收请求后进行编号,并全网广播;
④参与共识的从节点收到主节点广播后进行共识操作,对区块数据进行验证和确认并进行结果反馈;同时,对其他从节点广播的确认消息进行收集和确认;
⑤最终收到2f+1个以上节点发来的Commit正确性确认消息后,该医疗记录则被有效记录到区块链上;
⑥若共识机制成功完成,则对所有参与共识的主节点和从节点予以积分增加的奖励;若在共识过程中,不诚实节点未成功完成反馈结果的数量超过容忍范围,导致共识难以完成,则快速启动候选节点参与的全网共识过程,控制不诚实节点数量在容忍范围,完成共识;此时,需要对为成功/正确提供反馈结果的从节点予以积分减半的惩罚,对其余完成共识的节点予以积分增加的奖励;
⑦在一轮共识后,根据积分升降级制度,剔除积分小于100的不诚实节点,增补候选节点,保证共识节点集合中大概率都是诚实节点;循环新的PBFT共识机制算法。
2.根据权利要求1所述的一种基于双链结构的区块链医疗记录安全存储与共享方法,其特征在于,所述步骤S1具体包括如下:
构建两条区块链结构,一条为用户链,一条为数据链;其中,用户链为公有链,负责所有个人参与节点的身份认证、用户管理、基于用户角色的访问权限设置和密钥发放操作;而数据链则负责对用户链中医生节点上传的医疗记录进行时间戳存储;该数据链是由所有参与医疗记录共享平台建设的医疗机构组成的联盟链类型,还负责医疗记录存储和共享的共识过程;用户链中,病人通过其身份证号与数据联盟链关联,医生通过其所属的医疗机构与联盟链关联;两条链并行发展,互不干扰。
3.根据权利要求1所述的一种基于双链结构的区块链医疗记录安全存储与共享方法,其特征在于,所述步骤S2具体包括如下:
主要参与的实体有医生和病人,其中医生具有写入医疗记录数据的权限,而无权限在病人未批准情况下查看单独病人数据;病人没有写入自身医疗记录的权限,但允许查看并在转诊后能够授予其他医生查看自身数据的权限;
利用区块链上的智能合约功能,并结合RBAC访问控制机制,在用户链中编写用户管理和权限设置链码,针对不同的用户角色预先设置不同的读、写访问控制权限;智能合约的使用可以使用户管理不再受到中心化机构或第三方组织的约束,访问主体与医疗记录数据拥有方之间可以直接进行权限授予的操作。
4.根据权利要求1所述的一种基于双链结构的区块链医疗记录安全存储与共享方法,其特征在于,所述步骤S4具体包括如下:
通过病人在某一处医疗机构的医生处问诊,在医疗记录撰写和存储到主要由各个医疗机构组成的联盟链后,由区块链全网广播,发送到其他机构共享交互的服务器节点上;在该联盟链上构建医疗记录共享Web平台,各个参与医疗机构和机构下关联的医生节点都可查询到该病人此次的问诊医疗记录,但需在获得病人授权的前提下才可访问最终的明文详细数据;
联盟链中的医疗机构和医生节点,通过智能合约向病人发出所需的数据请求,病人在操作段授予权限和许可后,智能合约调用病人的私钥SKp将该医疗记录解密后以明文形式发送给访问节点查看。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210715446.7A CN114818010B (zh) | 2022-06-23 | 2022-06-23 | 一种基于双链结构的区块链医疗记录安全存储与共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210715446.7A CN114818010B (zh) | 2022-06-23 | 2022-06-23 | 一种基于双链结构的区块链医疗记录安全存储与共享方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114818010A true CN114818010A (zh) | 2022-07-29 |
CN114818010B CN114818010B (zh) | 2022-09-16 |
Family
ID=82522155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210715446.7A Active CN114818010B (zh) | 2022-06-23 | 2022-06-23 | 一种基于双链结构的区块链医疗记录安全存储与共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114818010B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115412257A (zh) * | 2022-08-24 | 2022-11-29 | 淮阴工学院 | 一种基于区块链双链的冷链联合节点数据共享方法及装置 |
CN115941692A (zh) * | 2023-03-09 | 2023-04-07 | 中国信息通信研究院 | 基于主从式区块链存储模式的信息标识***、设备和介质 |
CN116168794A (zh) * | 2023-04-23 | 2023-05-26 | 成都本千医疗科技有限公司 | 一种大数据监管的电子病历归集管理平台 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108764925A (zh) * | 2018-05-31 | 2018-11-06 | 李沁福 | 一种基于区块链技术的综合业务平台 |
CN109326337A (zh) * | 2018-09-06 | 2019-02-12 | 西安电子科技大学 | 基于区块链的电子医疗记录存储和共享的模型及方法 |
CN109615474A (zh) * | 2018-12-11 | 2019-04-12 | 南京大学 | 基于区块链的中小企业竞争情报共享平台构建方法 |
CN110797099A (zh) * | 2019-10-28 | 2020-02-14 | 河北北方学院 | 一种基于区块链的医疗数据共享方法及*** |
-
2022
- 2022-06-23 CN CN202210715446.7A patent/CN114818010B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108764925A (zh) * | 2018-05-31 | 2018-11-06 | 李沁福 | 一种基于区块链技术的综合业务平台 |
CN109326337A (zh) * | 2018-09-06 | 2019-02-12 | 西安电子科技大学 | 基于区块链的电子医疗记录存储和共享的模型及方法 |
CN109615474A (zh) * | 2018-12-11 | 2019-04-12 | 南京大学 | 基于区块链的中小企业竞争情报共享平台构建方法 |
CN110797099A (zh) * | 2019-10-28 | 2020-02-14 | 河北北方学院 | 一种基于区块链的医疗数据共享方法及*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115412257A (zh) * | 2022-08-24 | 2022-11-29 | 淮阴工学院 | 一种基于区块链双链的冷链联合节点数据共享方法及装置 |
CN115412257B (zh) * | 2022-08-24 | 2024-07-16 | 淮阴工学院 | 一种基于区块链双链的冷链联合节点数据共享方法及装置 |
CN115941692A (zh) * | 2023-03-09 | 2023-04-07 | 中国信息通信研究院 | 基于主从式区块链存储模式的信息标识***、设备和介质 |
CN115941692B (zh) * | 2023-03-09 | 2023-05-23 | 中国信息通信研究院 | 基于主从式区块链存储模式的信息标识***、设备和介质 |
CN116168794A (zh) * | 2023-04-23 | 2023-05-26 | 成都本千医疗科技有限公司 | 一种大数据监管的电子病历归集管理平台 |
Also Published As
Publication number | Publication date |
---|---|
CN114818010B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11689362B2 (en) | Distributed ledger for generating and verifying random sequence | |
CN108848063B (zh) | 基于区块链的数据处理方法、***和计算机可读存储介质 | |
CN114818010B (zh) | 一种基于双链结构的区块链医疗记录安全存储与共享方法 | |
CN109326337B (zh) | 基于区块链的电子医疗记录存储和共享的模型及方法 | |
Zhou et al. | Med-PPPHIS: blockchain-based personal healthcare information system for national physique monitoring and scientific exercise guiding | |
CN110991622B (zh) | 基于区块链网络的机器学习模型处理方法及节点 | |
CN111986755B (zh) | 一种基于区块链和属性基加密的数据共享*** | |
CN107180350B (zh) | 一种基于区块链的多方共享交易元数据的方法、装置及*** | |
CN110505239B (zh) | 一种基于区块链网络的信息处理方法、装置及电子设备 | |
CN109741803A (zh) | 基于区块链的医疗数据安全协作*** | |
IL262777A (en) | Telemetry Data Evaluation System | |
CN111066283A (zh) | 对区块链网络上实体提供的数据进行通信、存储和处理的***和方法 | |
KR20180115779A (ko) | 디지털 콘텐츠를 제어 및 배포하기 위한 블록체인 구현 방법 | |
CN110299195A (zh) | 基于联盟链的具有隐私保护的电子病历共享***及应用方法 | |
Alshalali et al. | Security and privacy of electronic health records sharing using hyperledger fabric | |
CN110211683A (zh) | 一种基于区块链的支持向量机医疗数据隐私训练*** | |
CN111369730B (zh) | 基于区块链的投票表决处理方法和装置 | |
CN110851878B (zh) | 一种基于区块链的可问责的医疗数据存储方法 | |
TW202020891A (zh) | 取得電子醫療健康記錄的方法與系統 | |
CN112908442A (zh) | 医疗数据共享方法、装置、设备及计算机可读介质 | |
CN112908440A (zh) | 健康管理数据共享方法、装置及远程医疗平台 | |
Yu et al. | Blockchain-based multi-role healthcare data sharing system | |
Swetha et al. | Blockchain enabled secure healthcare Systems | |
Zaghloul et al. | $ d $ d-MABE: Distributed Multilevel Attribute-Based EMR Management and Applications | |
CN102075518A (zh) | 一种基于历史角色的信任协商构建方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |