一种电子病历的存储方法、装置、设备和存储介质与流程

文档序号:15519774发布日期:2018-09-25 19:09阅读:296来源:国知局

本发明涉及大数据存储技术领域,特别是涉及一种电子病历的存储方法、装置、设备和存储介质。



背景技术:

电子病历是指医务人员在医疗活动过程中,使用信息系统生成的文字、符号、图表、图形、数字、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式,包括门(急)诊病历和住院病历。

根据规范要求,电子病历系统应当为操作人员提供专有的身份标识和识别手段,并设置相应权限。操作人员对自身专有的身份标识的使用负责。同时,医疗机构应当为患者电子病历赋予唯一患者身份标识,以确保患者基本信息及其医疗记录的真实性、一致性、连续性、完整性。另外,由医疗机构保管的门(急)诊电子病历,保存时间自患者最后一次就诊之日起不少于15年;住院电子病历保存时间自患者最后一次出院之日起不少于30年。

目前,电子病历系统使用卫计委(全称:国家卫生和计划生育委员会)统一采购的,数据则直接存储在卫计委管理的机房或每日向卫计委上报。这种集中式数据存储的方案,仍然难以避免甚至发现数据篡改的行为。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种电子病历的存储方法、装置、设备和存储介质,以避免电子病历数据被篡改的行为。

具体技术方案如下:

将生成的电子病历的档案号记录在创建的文件上,获得目标封面文件,其中,所述档案号是按照预设方式生成所述电子病历的唯一编码,所述目标封面文件用于创建初始电子病历的文件;

获取所述目标封面文件的第一哈希值,调用预设的目标区块链系统存储所述第一哈希值,并将所述目标封面文件存储在预设的存储系统中;

获取所述第一哈希值在所述目标区块链系统中的存储位置,其中,所述存储位置由区块号和交易编码唯一确定;

获取用于获得第i个目标数据文件的指令动作,以更新所述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,所述目标封底文件是用于禁止对所述电子病历更新目标数据文件;

获取所述目标封底文件的第二哈希值,调用预设的目标区块链系统存储所述第二哈希值,并将所述目标封底文件存储在预设的存储系统中。

进一步地,所述获取用于获得第i个目标数据文件的指令动作,以更新所述电子病历,包括:

判断获取的指令动作是否包括新增指令或修订指令,其中,所述新增指令为用于获得第i个目标数据文件的指令,所述修订指令为用于对原目标数据文件进行修订后获得的第i个目标数据文件的指令,所述原目标数据文件序号为1,…,i-1中任一序号对应的所需修订的目标数据文件;

若获取的指令动作为新增指令,获取第i个目标数据文件和该目标数据文件对应的第i哈希值,根据所述档案号和所述第一哈希值的存储位置,调用预设的目标区块链系统存储所述第i哈希值,并将所述第i个目标数据文件存储在预设的存储系统中;

若获取的指令动作为修订指令,获取第i个目标数据文件和该目标数据文件对应的第i哈希值;根据所述档案号和所述原目标数据文件,获取原目标数据文件对应哈希值的存储位置,根据所获取的存储位置,调用预设的目标区块链系统存储所述第i哈希值,并将所述第i个目标数据文件存储在预设的存储系统中;其中,修订获得的第i个目标数据文件是采用追加修订内容的方式对原目标数据文件进行修订获得的文件,且修订后的第i个目标数据文件引用所述原目标数据文件在目标区块链系统的存储位置。

进一步地,在所述获取第i个目标数据文件和该目标数据文件对应的第i哈希值,根据所述档案号和所述第一哈希值的存储位置,调用预设的目标区块链系统存储所述第i哈希值,并将所述第i个目标数据文件存储在预设的存储系统中之后,还包括:

获取所述第i哈希值在所述目标区块链系统中的存储位置。

进一步地,所述目标封面文件、目标封底文件均是以预设的编码格式记录第一目标信息,所述第一目标信息包括档案号、文件类型、指令动作和文件内容,所述文件类型为目标封面文件、目标封底文件。

进一步地,所述目标数据文件均是以预设的编码格式记录第二目标信息,所述第二目标信息包括档案号、文件类型、名字文件、指令动作和文件内容,所述文件类型还包括目标数据文件。

进一步地,所述编码格式包括xml编码格式、json编码格式、纯文件格式或二进制格式。

进一步地,所述目标数据文件包括病案首页文件、病程记录文件、护理病历文件、检验检查单或出院记录;

所述指令动作包括新增指令、签署指令或修订指令,其中,所述签署指令为机构或操作人对目标数据文件进行签名的指令;

所述文件内容包括数据内容、产生电子病历的机构编码和患者的唯一识别号。

进一步地,在所述调用预设的目标区块链系统存储所述第i哈希值,并将所述第i个目标数据文件存储在预设的存储系统中之后,还包括:

获取所述第i哈希值在所述目标区块链系统中的存储位置。

进一步地,在所述获取所述目标封底文件的第二哈希值,调用预设的目标区块链系统存储所述第二哈希值,并将所述目标封底文件存储在预设的存储系统中之后,还包括:

获取所述第二哈希值在所述目标区块链系统中的存储位置。

进一步地,在所述获取所述目标封底文件的第二哈希值,调用预设的目标区块链系统存储所述第二哈希值,并将所述目标封底文件存储在预设的存储系统中之后,还包括:

根据接收的签署指令,从预设的配置文件中获取操作人所属机构的编码、操作人对应的编码;

根据所述操作人对应的编码,利用操作人预设的第一密钥对第i个目标数据文件进行签名;

根据操作人所属机构的编码,利用操作人所属机构预设的第二密钥分别对所述第i个目标数据文件和操作人的签名进行签名;

将第i个目标数据签署文件提交到预设的存储系统,其中,所述第i个目标数据签署文件为签名后的第i个目标数据文件;

获取第i个目标数据签署文件的第j哈希值,调用预设的目标区块链系统存储所述第j哈希值,其中,j为第i个目标签署文件对应哈希值的序号,i≤m,m为目标数据文件的总数。

进一步地,在所述获取第i个目标数据签署文件的第j哈希值,调用预设的目标区块链系统存储所述第j哈希值之后,还包括:

从预设的存储系统中按照时间戳依次读取目标文件和目标签署文件,其中,所述目标文件为目标封面文件、第i个目标数据文件或目标封底文件,所述目标签署文件为第i个目标数据文件签署后的文件;

针对每个目标文件,验证该目标文件是否被判定为有效文件;

若该目标文件为有效文件,验证该目标文件对应的目标签署文件是否为有效文件;

若该目标签署文件为有效文件,将该目标文件与该目标签署文件进行关联。

进一步地,所述针对每个目标文件,验证该目标文件是否被判定为有效文件,包括:

针对每个目标文件,判断该目标文件对应的机构编码和机构签名是否一致;

若该目标文件对应的机构编码和机构签名一致,判断该目标文件对应的操作人编码和操作人签名是否一致;

若该目标文件对应的操作人编码和操作人签名一致,判定该目标文件为有效文件。

进一步地,所述验证该目标文件对应的目标签署文件是否为有效文件,包括:

判断该目标文件对应的目标签署文件对应的机构编码和机构签名是否一致;

若该目标签署文件对应的机构编码和机构签名一致,判断该目标签署文件对应的操作人编码和操作人签名是否一致;

若该目标签署文件对应的操作人编码和操作人签名一致,判定该目标签署文件为有效文件。

一种基于区块链的电子病历的存储方法,应用于目标区块链系统,所述方法包括:

对从客户端获取的第一哈希值进行存储,并将获取的所述第一哈希值的存储位置发送到客户端中,其中,所述第一哈希值为客户端创建的目标封面文件的哈希值,所述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,所述档案号是按照预设方式生成所述电子病历的唯一编码,所述存储位置由区块号和交易编码唯一确定;

对从客户端获取的第i哈希值进行存储,并将获取的所述第i哈希值的存储位置发送到客户端中,其中,所述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

对从客户端获取的第二哈希值进行存储,并将获取的所述第二哈希值的存储位置发送到客户端中,其中,所述第二哈希值为客户端生成的目标封底文件的哈希值,所述目标封底文件是用于禁止对所述电子病历更新目标数据文件。

进一步地,在所述对从客户端获取的第一哈希值进行存储,并将获取的所述第一哈希值的存储位置发送到客户端中之后,所述方法还包括:

对从客户端获取的第j哈希值进行存储,并将获取的所述第j哈希值的存储位置发送到客户端中,其中,所述第j哈希值为第i个目标数据签署文件的哈希值,所述第i个目标数据签署文件为签名后的第i个目标数据文件,j为第i个目标签署文件对应哈希值的序号。

进一步地,在所述对从客户端获取的第一哈希值进行存储,并将获取的所述第一哈希值的存储位置发送到客户端中之前,所述方法还包括:

验证预配的第一物理设备密钥与预设的第一密钥是否一致,其中,所述第一物理设备密钥为一个节点对应的物理设备密钥,第一密钥为与该节点的物理设备密钥匹配的密钥;

若所述第一物理设备密钥与所述第一密钥一致,调用第一目标密钥设备的私钥签名接口;

验证预配的第二物理设备密钥或预设密钥与预设的第二密钥是否一致;其中,所述第二物理设备密钥为操作人员配备的物理设备密钥,每个操作人员的密钥均不同,第一密钥为与该操作人员配备的物理设备密钥匹配的密钥;

若所述第二物理设备密钥或预设密钥与所述第二密钥一致,调用第二目标密钥设备的私钥签名接口。

进一步地,在所述若所述第二物理设备密钥或预设密钥与所述第二密钥一致,调用第二目标密钥设备的私钥签名接口之后,还包括:

判断提交目标文件哈希值交易的机构数字签名和操作人数字签名分别是否与节点预设的密钥和操作人预设的密钥匹配;

若该目标文件哈希值交易的机构数字签名和操作人数字签名分别与节点预设的密钥和操作人预设的密钥匹配,判断该目标文件哈希值所在的存储位置是否正确,其中,目标文件为目标封面文件、目标封底文件或第i个目标数据文件。

若为正确,接收该目标文件,并将该目标文件判定为有效文件。

进一步地,在所述对从客户端获取的第二哈希值进行存储,并将获取的所述第二哈希值的存储位置发送到客户端中之前,还包括:

针对每个节点,判断该节点是否为指定合约节点;

若是指定合约节点,触发预设的智能合约运行器调用所有有效合约的前置条件,判断当前条件是否与预设智能合约n的预设前置条件一致,其中,n为智能合约的编码;

若所述当前条件与所述智能合约n的预设前置条件一致,指示合约节点触发执行预设脚本程序。

一种基于区块链的电子病历的存储装置,应用于客户端,所述装置包括:

封面文件生成模块,用于将生成的电子病历的档案号记录在创建的文件上,获得目标封面文件,其中,所述档案号是按照预设方式生成所述电子病历的唯一编码,所述目标封面文件用于创建初始电子病历的文件;

第一哈希值获取模块,用于获取所述目标封面文件的第一哈希值,调用预设的目标区块链系统存储所述第一哈希值,并将所述目标封面文件存储在预设的存储系统中;

第一存储位置获取模块,用于获取所述第一哈希值在所述目标区块链系统中的存储位置,其中,所述存储位置由区块号和交易编码唯一确定;

电子病历更新模块,用于获取用于获得第i个目标数据文件的指令动作,以更新所述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

封面文件生成模块,用于在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,所述目标封底文件是用于禁止对所述电子病历更新目标数据文件;

第二哈希值获取模块,用于获取所述目标封底文件的第二哈希值,调用预设的目标区块链系统存储所述第二哈希值,并将所述目标封底文件存储在预设的存储系统中。

一种基于区块链的电子病历的存储装置,应用于目标区块链系统,所述装置包括:

第一获取模块,用于对从客户端获取的第一哈希值进行存储,并将获取的所述第一哈希值的存储位置发送到客户端中,其中,所述第一哈希值为客户端创建的目标封面文件的哈希值,所述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,所述档案号是按照预设方式生成所述电子病历的唯一编码,所述存储位置由区块号和交易编码唯一确定;

第二获取模块,用于对从客户端获取的第i哈希值进行存储,并将获取的所述第i哈希值的存储位置发送到客户端中,其中,所述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

第三获取模块,用于对从客户端获取的第二哈希值进行存储,并将获取的所述第二哈希值的存储位置发送到客户端中,其中,所述第二哈希值为客户端生成的目标封底文件的哈希值,所述目标封底文件是用于禁止对所述电子病历更新目标数据文件。

在本发明实施的又一方面,还提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:当其在计算机上运行时,使得计算机执行上述任一所述的基于区块链的电子病历的存储方法。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,当所述计算机程序被处理器执行时,使得计算机执行上述任一所述的基于区块链的电子病历的存储方法。

在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的基于区块链的电子病历的存储方法。

本发明实施例提供的一种电子病历的存储方法、装置、设备和存储介质,可以通过将生成的电子病历的档案号记录在创建的文件上,获得目标封面文件,获取所述目标封面文件的第一哈希值,调用预设的目标区块链系统存储所述第一哈希值,并将所述目标封面文件存储在预设的存储系统中;获取所述第一哈希值在所述目标区块链系统中的存储位置,获取用于获得第i个目标数据文件的指令动作,以更新电子病历,在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,获取所述目标封底文件的第二哈希值,调用预设的目标区块链系统存储所述第二哈希值,并将所述目标封底文件存储在预设的存储系统中。该方法通过将电子病历的数据文件内容存储在预设的存储系统中,将所述数据文件的哈希值存储在目标区块链系统中,并通过设置用于禁止对电子病历更新目标数据文件的目标封底文件,避免了电子病历数据被篡改的行为。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的第一种基于区块链的电子病历的存储方法的流程图;

图2为本发明实施例提供的第二种基于区块链的电子病历的存储方法的流程图;

图3为本发明实施例提供的第三种基于区块链的电子病历的存储方法的流程图;

图4为本发明实施例提供的第四种基于区块链的电子病历的存储方法的流程图;

图5为本发明实施例提供的第五种基于区块链的电子病历的存储方法的流程图;

图6为本发明实施例提供的第一种基于区块链的电子病历的存储装置的示意图;

图7为本发明实施例提供的第二种基于区块链的电子病历的存储装置的示意图;

图8为本发明实施例的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目标区块链系统由一系列物理节点及其上运行的区块链软件程序所构成。节点之间有直接或间接的网络连接,采用p2p(peer-to-peer,点对点)方式通讯。每个节点都有写入数据权限,和同等的投票权。

每个区块链由该区块链对应的节点创建的多个区块构成,每个区块都有该区块数据内容和数据指纹签名,下一区块均会记录上一区块的区块号和指纹签名。

电子病历软件即客户端具有用户界面,使用者是医务人员。电子病历软件的用户界面程序运行在电脑终端上。在一个医疗机构内,通常有多个电脑终端。电子病历软件将会调用目标区块链系统来存取电子病历数据。因此电脑终端与所在医疗机构的节点是有直接网络连接的。通常来说,一个医疗机构有一个节点。

因此,本发明提供的实施例应用于目标区块链系统,以及基于该系统的电子病历软件,二者皆需采用本发明提供的实施例,才可以配合工作。

为了对本发明实施例更加容易理解,现对本发明实施例出现的名称进行如下解释:

区块链(blockchain):是一种最早应用在比特币中的分布式记账技术。区块链可以用于数据存储,区别于集中式存储和一般的分布式存储技术,首先,区块链的数据存储,需要多个分布式节点的同意才被识别为有效,这就避免了由于单一或少数节点有意或无意的错误,引起的数据错误;其次,区块链的存储的数据内容都有数据指纹签名如采用sha(securehashalgorithm,安全哈希算法)算法,根据目前已知的技术这种指纹是无法伪造的,也就保证了数据的不可篡改性或即使篡改了也可以被发现;另外,记账者的身份可以采用基于公钥-密钥机制的数字签名,使得其身份通过公钥容易被识别,而且通过密钥使其行为不可抵赖。区块链作为比特币的基础技术,随着比特币近几年的发展已经得到了验证,开始在金融和支付领域蓬勃发展。

区块(block):是一个存储块,可以设想为一块硬盘。整个目标区块链系统,就是由一块接一块的硬盘组合而成一个巨大的存储空间。每一个区块都有其数据内容和数据指纹签名。下一块区块还会记录上一个区块的区块号和指纹签名,这样保证这个链条是完整的、一致的和不可伪造的。每个区块可以存储一定大小的任意内容,例如比特币的区块内存储的是一条条的“交易”。

节点(node):指加入区块链的一个节点,具备计算和存储能力,且通过网络直接或间接连接。每一个节点作为区块链的一个组成部分,运行目标区块链系统的节点进程。每个节点都可以往一个新区块自由写入数据,其它节点如果认可,也就是说该区块被授权,或被多个其它节点同意的话,该区块就会被所有节点永久记录和存储下来,并且不再被修改。新的数据将由新的区块接在其后来存储。

智能合约(smartcontract):指基于区块链的可信数据存储技术发展起来的一种脚本技术。它允许事先在区块链中存储一段脚本,及其触发的前置条件。一旦该前置条件成立,就会触发脚本运行。例如,前置条件可以是:如果2018年1月4日上证指数收盘大于3000点,脚本是账号a就给账号b转账1个比特币。由于前置条件是客观可验证的,所以一旦条件成立,合约的执行器就会触发脚本运行即转账,并且得到所有节点的信任,因为每个节点也都可以验证。本发明实施例基于智能合约技术,实现电子病历的质控。

电子病历:从数据内容上看,主要包含门或急诊病历:门或急诊病历首页、病历记录、化验报告、医学影像检查资料等。

住院病历:病案首页、入院记录、病程记录、出院记录、死亡记录、手术同意书、麻醉同意书、输血治疗知情同意书、特殊检查或特殊治疗同意书、病危或病重通知单、辅助检查报告单、体温单、护理记录单、护理评估单、医学影像检查报告、病理报告单、医嘱单等。

三级签署:一份电子病历,必须先由主管医生填写完成并提交签署,再交由其上级医生审阅并签署,再由科主任审阅并签署。三级签署主要是为了治疗方案的科学、有效,建立清晰的责任划分,并提高电子病历的质量。同理,护士方面也存在两级签署。

病案室:医院中专门负责电子病历接收、存管的科室。在接收到电子病历时,病案室也会按照规定完善修改病案首页的内容。

签署(sign):医务人员对其填写、审阅或经手的电子病历内容,确认无误后进行签署。

质控:电子病历质量控制。由医院的质控科或科室内专门人员,对电子病历内容的填写质量、时效性和合理性,进行监督和检查。在信息化系统下,也可以由计算机程序按规则自动进行提醒和评判。

本发明实施例是基于一个已有的电子病历系统、结合/改造区块链的核心技术来实现电子病历系统的病历数据存储、签署和质控的功能需求的方法。

图1为本发明实施例提供的一种基于区块链的电子病历的存储方法的流程图,应用于客户端,上述方法包括:

s101,将生成的电子病历的档案号记录在创建的文件上,获得目标封面文件,其中,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

其中,上述预设方式为可以由各个节点在档案创建时按照现有档案号的生成算法生成,一个节点对应一个医疗机构,每个医疗机构选择档案号的生成方法可以不同,本发明实施例对此并不限定。

为了对电子病历理解的更加清楚,现对电子病历的数据文件进行详细描述:每个患者在一次住院过程中会产生一份电子病历,而一份电子病历可以视为一个文件夹或档案袋,里面装有不同时间点的不同类型的文件资料。本发明实施例提出的方法所实现的系统为每一份电子病历(electronicmedicalrecord)分配一个唯一的档案号。电子病历的数据可以分为多个文件(file),其中以某种编码格式记录其信息,文件有不同类型,其中,目标封面(cover)文件为系统特定的类型:该特定类型的文件是特别提出的、隐含的,不属于医患可见的电子病历内容。

需要说明的是,创建一个电子病历等价于当且仅当一个电子病历的目标封面文件被提交存储,每一份电子病历均被分配一个档案号。

另外,目标封面文件的第一哈希值被存储在目标区块链系统中,为的是避免在区块链中存储过大的数据内容,根据区块链的存储机制,虽然区块链可以存储过大的数据内容,但是该存储方案效率较差,区块链不是特别合适存储大体积的文件,所以将数字签名即文件对应的哈希值存储在区块链中,该文件指的是目标封面文件、目标封底文件或m个目标数据文件。

s102,获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

需要说明的是,该第一哈希值的获取可以从其他客户端或系统中获取已经计算好的哈希值,也可以在该客户端计算。

另外,根据区块链的特性,区块链存储目标文件哈希值均是按照时间戳进行存储的,本发明实施例中的目标文件均是为目标封面文件、目标封底文件或第i个目标数据文件。

另外,该目标区块链系统储与分布式网络存储系统类似,也会提供一套api(applicationprogramminginterface,应用程序编程接口),给上层应用即客户端来存取数据。

上述存储系统可以为分布式网络存储系统、集中式存储系统、区块链存储系统、磁带或光盘,上述区块链存储系统包括第一目标区块链系统和可移动介质,可移动介质可以为磁带或光盘。

上述分布式网络存储系统可以理解为将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展,若分布式网络存储系统的采用主从架构,一旦主库被修改,从库的数据也会被修改,从而带来存储数据安全性降低。

基于上述对目标区块链系统的描述,虽然可以将整体备份文件存储在第一目标区块链系统中,但由于区块链不合适存储大体积的文件,因此针对大体积的文件而言,利用分布式网络存储系统可以很好的解决数据持久性存储,由上述对存储系统的描述可知,分布式网络存储系统是一种较佳的存储方式。

具体的,

利用目标封面文件,按照如下表达式计算上述目标封面文件对应的第一哈希值;

上述表达式:hash=hash(file);

其中,hash(·)为哈希函数,hash为第一哈希值,file为目标封面文件的内容;

需要说明的是,本发明实施例提出哈希值的计算方法与上述第一哈希值的计算方法类似,再此不再赘述。

值得一提的是,上述第一哈希值是根据文件的内容的数据通过逻辑运算得到的数值,不同的文件得到的hash值是不同的,相同的hash值对应的文件内容完全相同,与文件的名称无关,hash值与文件内容相关,也就是说,针对不同文件的名字,只要对应的hash值相同,意味着该两个文件对应的内容一样。

s103,获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

需要说明的是,根据区块链的特性,本发明实施例中目标文件的哈希值在目标区块链系统的存储位置均是由其对应存储的区块号和其对应的交易编码唯一确定,可以被作为后续访问存储位置对应的数据,交易编码可以理解为该交易的哈希值;

另外,每当一份目标文件对应的哈希值被提交到目标区块链系统中存储时,都会得到该目标区块链系统的返回值,该返回值为该目标文件对应的哈希值在目标区块链系统中的存储位置。

s104,获取用于获得第i个目标数据文件的指令动作,以更新上述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数

其中,该指令动作可以为修订指令或新增指令。

需要说明的是,更新上述电子病历可以理解为通过新增第i个目标数据文件或修订第i个目标数据文件已达到更新该电子病历的目的。

另外,由上描述可知该目标数据文件均是以预设的编码格式记录第二目标信息,上述第二目标信息包括档案号、文件类型、名字文件、指令动作和文件内容,上述文件类型还包括目标数据文件。该编码格式包括xxml(extensiblemarkuplanguage)编码格式、json(javascriptobjectnotation,js对象标记)编码格式、纯文件格式或二进制格式。该目标数据文件包括病案首页文件、病程记录文件、护理病历文件、检验检查单或出院记录。该指令动作包括新增指令、签署指令或修订指令,上述签署指令为机构或操作人对目标数据文件进行签名的指令;该文件内容包括数据内容、产生电子病历的机构编码和患者的唯一识别号,本发明实施例对该目标数据文件包括的内容并不限制。

具体的,

判断获取的指令动作是否包括新增指令或修订指令,其中,上述新增指令为用于获得第i个目标数据文件的指令,上述修订指令为用于对原目标数据文件进行修订后获得的第i个目标数据文件的指令,上述原目标数据文件序号为1,…,i-1中任一序号对应的所需修订的目标数据文件;

若获取的指令动作为新增指令,获取第i个目标数据文件和该目标数据文件对应的第i哈希值,根据上述档案号和上述第一哈希值的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;

本步骤中,在上述调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中之后,上述方法还包括获取上述第i哈希值在上述目标区块链系统中的存储位置。

获取上述第i哈希值在上述目标区块链系统中的存储位置。

若获取的指令动作为修订指令,获取第i个目标数据文件和该目标数据文件对应的第i哈希值;根据上述档案号和上述原目标数据文件,获取原目标数据文件对应哈希值的存储位置,根据所获取的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;其中,修订获得的第i个目标数据文件是采用追加修订内容的方式对原目标数据文件进行修订获得的文件,且修订后的第i个目标数据文件引用上述原目标数据文件的在目标区块链系统的存储位置。

本步骤中,在调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中之后,还包括:

获取上述第i哈希值在上述目标区块链系统中的存储位置。

s105,在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

其中,该目标封面文件、目标封底文件均是以预设的编码格式记录第一目标信息,上述第一目标信息包括档案号、文件类型、指令动作和文件内容,上述文件类型为目标封面文件、目标封底文件。

需要说明的是,目标封底文件是用于禁止对上述电子病历更新目标数据文件,也可以理解为:目标封底文件是用于禁止对电子病历进行新增目标数据文件或禁止对电子病历中的目标数据文件进行修订的文件;

值得一提的是,结案一份电子病历等价于为其添加一个封底类型的文件即目标封底文件。一旦目标封底文件被提交存储,其后的任何新增文件及修订文件均视为无效。对该电子病历有效的操作只有对已有文件的签署。由此可知,封底类型的文件有且只有一个。

s106,获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中。

由上描述可知,目标封底文件与目标封面文件类似,二者均是本发明实施例提供的特定类型的文件,该文件是隐含的,也就是说,不属于医患可见的电子病历内容。

需要说明的是,病案室在生成目标封面文件之前,也可以按照规定完善修改病案首页的内容。

针对电子病历的文件,定义了一种操作:签署(sign)。它代表由特定节点的特定人员对一个或多个文件进行签署。即在s106之后,还包括:

根据接收的签署指令,从预设的配置文件中获取操作人所属机构的编码、操作人对应的编码;

根据上述操作人对应的编码,利用操作人预设的第一密钥对第i个目标数据文件进行签名;

根据操作人所属机构的编码,利用操作人所属机构预设的第二密钥分别对上述第i个目标数据文件和操作人的签名进行签名;

将第i个目标数据签署文件提交到预设的存储系统,其中,上述第i个目标数据签署文件为签名后的第i个目标数据文件;

获取第i个目标数据签署文件的第j哈希值,调用预设的目标区块链系统存储上述第j哈希值,j为第i个目标签署文件对应哈希值的序号。

其中,该签署可以为三级签署。

根据区块链的特性可知,由于返回的存储位置是唯一的,也就意味着,已知存储位置,便可知哪一个目标数据文件。

需要说明的是,对每一个文件的哈希值和对应签署文件的哈希值,都视为一段数据依照节点的提交顺序存储到区块链中。就某一个目标区块的结构来说,根据区块链的区块结构,只需要定义“交易”的结构即可。

由于目标区块链系统中存储了目标数据文件对应的签署文件的哈希值,因此当一条数据生成并提交时,客户端使用操作人的密钥对数据进行签名,由此可以保证操作人对数据内容和时间的不可抵赖性;然后客户端使用机构的密钥对数据和操作人的签名进行签名,由此可以保证机构对于数据内容和其操作人的不可抵赖性。

由区块头的时间戳可以大致确定该区块内目标数据文件哈希值的产生时间,其中,该时间戳由提交数据的节点生成。在一个区块内,文件是按时间戳升序排序的。下一个区块的时间戳,又会大于上一个区块时间戳。由此特性保证,数据存储的顺序与节点提交顺序是基本一致的,使得对于该目标数据文件哈希值的时间是不可事后篡改、不可抵赖的,该数据为目标数据文件的哈希值。

在上述获取第i个目标数据签署文件的第j哈希值,调用预设的目标区块链系统存储上述第j哈希值之后,还包括:

从预设的存储系统中按照时间戳依次读取目标文件和目标签署文件,其中,上述目标文件为目标封面文件、第i个目标数据文件或目标封底文件,上述目标签署文件为第i个目标数据文件签署后的文件;

针对每个目标文件,验证该目标文件是否被判定为有效文件;

若该目标文件为有效文件,验证该目标文件对应的目标签署文件是否为有效文件;

若该目标签署文件为有效文件,将该目标文件与该目标签署文件进行关联。

需要说明的时候,读取程序可以从任一存储了电子病历的全部目标数据文件的存储系统中按照时间戳从头依次读取区块的内容,并筛选每个电子病历的从首个目标封面文件到首个目标封底文件之间的所有文件,并对任一存储了电子病历的全部文件的哈希值按照时间戳依次读取。由此可以得到电子病历文件序列及其签署,即一份为电子病历。其有唯一的档案号和患者id。利用目标数据文件的哈希值可以验证该目标数据文件或对应的签署文件是否被篡改。

针对每个目标文件,验证该目标文件是否被判定为有效文件的一种实施方式为:

针对每个目标文件,判断该目标文件对应的机构编码和机构签名是否一致;

若该目标文件对应的机构编码和机构签名一致,判断该目标文件对应的操作人编码和操作人签名是否一致;

若该目标文件对应的操作人编码和操作人签名一致,判定该目标文件为有效文件。

该实施方式通过识别机构和操作人的身份,进一步地提高了电子病历中目标文件的安全性。

验证该目标文件对应的目标签署文件是否为有效文件的一种实施方式为:

判断该目标文件对应的目标签署文件对应的机构编码和机构签名是否一致;

若该目标签署文件对应的机构编码和机构签名一致,判断该目标签署文件对应的操作人编码和操作人签名是否一致;

若该目标签署文件对应的操作人编码和操作人签名一致,判定该目标签署文件为有效文件。

该实施方式通过识别机构和操作人的身份,进一步地提高了电子病历中签署文件的安全性。

由此可知,本发明实施例提供的方法通过新增目标封底文件,保证了电子病历的目标数据文件不能被更新,且将构成电子病历的所有数据文件内容存储在预设的存储系统中,将每个目标文件对应的哈希值存储在目标区块链系统中,避免了电子病历数据被篡改的行为。

图2为本发明实施例提供的第二种基于区块链的电子病历的存储方法的示意图,应用于目标区块链系统,上述方法包括:

s201,对从客户端获取的第一哈希值进行存储,并将获取的上述第一哈希值的存储位置发送到客户端中,其中,上述第一哈希值为客户端创建的目标封面文件的哈希值,上述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述存储位置由区块号和交易编码唯一确定;

基于对目标封面文件的描述可知,当获得第一哈希值,目标区块链系统选择第一哈希值后并将其按照时间戳存储,并将第一哈希值的存储位置返回至客户端中。

在s201之前,还包括:

验证预配的第一物理设备密钥与预设的第一密钥是否一致,其中,上述第一物理设备密钥为一个节点对应的物理设备密钥,第一密钥为与该节点的物理设备密钥匹配的密钥;

若上述第一物理设备密钥与上述第一密钥一致,调用第一目标密钥设备的私钥签名接口;

验证预配的第二物理设备密钥或预设密钥与预设的第二密钥是否一致;其中,上述第二物理设备密钥为操作人员配备的物理设备密钥,每个操作人员的密钥均不同,第一密钥为与该操作人员配备的物理设备密钥匹配的密钥;

若上述第二物理设备密钥或预设密钥与上述第二密钥一致,调用第二目标密钥设备的私钥签名接口。

在若上述第二物理设备密钥或预设密钥与上述第二密钥一致,调用第二目标密钥设备的私钥签名接口之后,还包括:

判断提交目标文件哈希值交易的机构数字签名和操作人数字签名分别是否与节点预设的密钥和操作人预设的密钥匹配;

若该目标文件哈希值交易的机构数字签名和操作人数字签名分别与节点预设的密钥和操作人预设的密钥匹配,判断该目标文件哈希值所在的存储位置是否正确,其中,目标文件为目标封面文件、目标封底文件或第i个目标数据文件。

若为正确,接收该目标文件,并将该目标文件判定为有效文件。

值得一提的是,为了确保拥有写入权限的节点是合法的节点,同样采用公钥-密钥机制为每一个节点配备物理的密钥设备即第一物理设备密钥,一旦该设备与节点分离,则该节点就无法调用密钥设备的私钥签名接口,从而使其后续提交的数据不被区块链内其它节点所接纳。每个密钥设备都有唯一的密钥,可以唯一标示一个节点。

同样的,为了确保签署来自对应的签署人,同样采用公钥-密钥机制为每一个医护人员配备物理的第二物理设备密钥或预设密钥即软件虚拟的密钥设备。进行签署时,须将该设备连接到操作终端,否则系统无法就无法调用密钥设备的私钥签名接口,从而使其提交的数据不被本地节点和区块链内其它节点所接纳。每个密钥设备都有唯一的密钥,可以唯一标示一个签署人的身份。

由于区块链的数据被同等的、全部的存储在各个节点上,因此这种分布式的存储系统天然具有数据可靠性,能够轻易的应对长期保存和各种灾难。

另外,本发明实施例可以规定:任何一个区块如果被组成目标区块链系统的一半以上数量节点所接受,则该区块内的所有数据视为已存储成功。根据区块链协议,节点接受一个区块b的方法创建一个新的区块接在b之后。这样可以保证,区块内的任何数据不可能再被篡改。因为一旦篡改,则该区块的hash值会发生变化,必然与其后续的区块记录的hash值不吻合。

s202,对从客户端获取的第i哈希值进行存储,并将获取的上述第i哈希值的存储位置发送到客户端中,其中,上述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

基于对目标数据文件的描述可知,当获得第i哈希值,目标区块链系统选择第i哈希值后并将其存储,并将第i哈希值的存储位置返回至客户端中。

s203,对从客户端获取的第二哈希值进行存储,并将获取的上述第二哈希值的存储位置发送到客户端中,其中,上述第二哈希值为客户端生成的目标封底文件的哈希值,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件。

基于对目标封底文件的描述可知,当获得第二哈希值,目标区块链系统选择第二哈希值后并将其存储,并将第二哈希值的存储位置返回至客户端中。

在s203之前,还包括:

针对每个节点,判断该节点是否为指定合约节点;

若是指定合约节点,触发预设的智能合约运行器调用所有有效合约的前置条件,判断当前条件是否与预设智能合约n的预设前置条件一致,其中,n为智能合约的编码;

若上述当前条件与上述智能合约n的预设前置条件一致,指示合约节点触发执行预设脚本程序。

本发明实施例利用智能合约来提供电子病历的质控功能,首先定义某种编码格式的合约内容,包括条件和脚本。

节点上的智能合约运行器自动调用所有有效合约的条件。一旦条件被满足,即由合约指定的合约方节点执行动作脚本。脚本执行产生的结果不必与区块链有关系,例如可以是发送一个短信提醒给某人。

有了脚本语言,就可以实现如下的质控功能:

1)一旦检测到对某一电子病历有封底类型文件被签署,就结案该份电子病历。

2)一旦电子病案被创建即封面类型文件提交,应该触发通知要求在8小时内创建首次病程记录。

3)在目标文件如出院记录被签署前,对于病危患者应该每天提醒医护人员创建日常病程记录。

4)当且仅当下级医生签署文件后,提示上级医生签署文件。

在s203之后,还包括:

对从客户端获取的第j哈希值进行存储,并将获取的上述第j哈希值的存储位置发送到客户端中,其中,上述第j哈希值为第i个目标数据签署文件的哈希值,上述第i个目标数据签署文件为签名后的第i个目标数据文件,j为第i个目标签署文件对应哈希值的序号。

本发明实施例提供的方法通过将客户端获取的哈希值按照时间戳进行存储,并将获取的哈希值的存储位置发送到客户端中,防止了电子病历被篡改,为后续检查电子病历的目标数据文件是否被篡改作了准备。

图3为本发明实施例提供的第二种基于区块链的电子病历的存储方法的流程图,应用于客户端,上述方法包括:

s301,将生成的电子病历的档案号记录在创建的文件上,获得目标封面文件,其中,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

其中,步骤s301~s303分别与图1实施例中的步骤s101~s103执行的方法相同。因此,图1中的所有实施例均适用于图3,且均能达到相同或相似的有益效果,在此不再赘述。

s302,获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

s303,获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

s304,判断获取的指令动作是否包括新增指令或修订指令,其中,上述新增指令为用于获得第i个目标数据文件的指令,上述修订指令为用于对原目标数据文件进行修订后获得的第i个目标数据文件的指令,上述原目标数据文件序号为1,…,i-1中任一序号对应的所需修订的目标数据文件,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;若获取的指令动作为新增指令,执行s305,若获取的指令动作为修订指令,执行s307;

s305,获取第i个目标数据文件和该目标数据文件对应的第i哈希值,根据上述档案号和上述第一哈希值的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;

需要说明的是,存储系统存储第i个目标数据文件,目标区块链系统存储该目标数据文件对应的第i哈希值,从而实现对电子病历文件无篡改的永久存储,若存储系统的其中一台设备存储的数据文件被篡改,也能够被发现,即由目标区块链存储对应的该数据文件的哈希值进行验证该数据文件是否被篡改,从而实现对电子病历进行一致性的检查。

另外,本步骤的第i个目标数据文件是增加的新目标数据文件。

s306,获取上述第i哈希值在上述目标区块链系统中的存储位置;

其中,本步骤在将调用预设的目标区块链系统存储第i哈希值后,获取目标区块链系统中第i哈希值的存储位置的返回值,便于利用该存储位置后续访问该数据即第i哈希值。

s307,获取第i个目标数据文件和该目标数据文件对应的第i哈希值;根据上述档案号和上述原目标数据文件,获取上述原目标数据文件对应哈希值的存储位置,根据所获取的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;其中,修订获得的第i个目标数据文件是采用追加修订内容的方式对原目标数据文件进行修订获得的文件,且修订后的第i个目标数据文件引用上述原目标数据文件的在目标区块链系统的存储位置;

需要说明的是,由目标区块链系统的特性决定,任何数据一旦被存储,是不可以修改和删除的。因此如果要修订一个文件,则是采用追加修订内容的方式。例如:对病历首页进行修订,要指出其是基于哪个目标数据文件即病历首页,以及本次修订的内容,该修订的内容可以在原目标数据文件的基础上是新的数据、或增量的数据,但是修订后获得的目标数据文件即第i个目标数据文件为一个新目标数据文件,原目标数据文件内容不变且其内容和其哈希值依旧保存在对应的存储系统中,新增指令、修改指令使客户端与操作人的交互更加便利、人性化。

s308,获取上述第i哈希值在上述目标区块链系统中的存储位置;

s309,在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

其中,步骤s309~s310分别与图1实施例中的步骤s105~s106执行的方法相同。因此,图1中的所有实施例均适用于图3,且均能达到相同或相似的有益效果,在此不再赘述。

s310,获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中;

s311,获取上述第二哈希值在上述目标区块链系统中的存储位置;

s312,根据接收的签署指令,从预设的配置文件中获取操作人所属机构的编码、操作人对应的编码;

其中,预设的配置文件是客户端预先配置和分配的文件,可以理解为操作人登录客户端后,便可读取到该配置文件,获取该操作人所属机构的编码、操作人对应的编码。

s313,根据上述操作人对应的编码,利用操作人预设的第一密钥对第i个目标数据文件进行签名;

本步骤中,根据操作人对应的编码便可获知该操作人的身份,从而利用密钥对该目标数据文件进行签名,该密钥为事先设置好的密钥,每个操作人均有密钥,由此可以保证操作人对数据内容即该目标数据文件和时间的不可抵赖性。

s314,根据操作人所属机构的编码,利用操作人所属机构预设的第二密钥分别对上述第i个目标数据文件和操作人的签名进行签名;

本步骤中,第二密钥为操作人所属机构的密钥,使用机构的密钥对数据和操作人的签名进行签名,由此可以保证机构对于数据内容即该目标数据文件和其操作人的不可抵赖性。

s315,将第i个目标数据签署文件提交到预设的存储系统,其中,上述第i个目标数据签署文件为签名后的第i个目标数据文件;

需要说明的是,利用存储系统返回的键值可以很容易读取到该文件的存储位置。

s316,获取第i个目标数据签署文件的第j哈希值,调用预设的目标区块链系统存储上述第j哈希值,其中,j为第i个目标签署文件对应哈希值的序号。

本步骤中的j和i是一一对应的,也就是说,每个目标数据文件均对应一个目标数据签署文件。

由此可知,本发明实施提供的方法通过新增目标封底文件,保证了电子病历不能被新增或修订,并将构成电子病历的所有目标文件内容和该目标文件对应的签署文件存储在预设的存储系统中,将每个目标文件对应的哈希值和该目标文件对应的签署文件存储在目标区块链系统中,通过签署可以达到对电子病历的质控,也可以保证操作人对数据内容和时间的不可抵赖性,以及保证机构对于数据内容和其操作人的不可抵赖性,进一步防止提交的数据被篡改的行为。

图4为本发明实施例提供的第四种基于区块链的电子病历的存储方法的示意图,应用于客户端,上述方法包括:

s401,将生成的电子病历的档案号记录在创建的文件上,获得目标封面文件,其中,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

其中,步骤s401~s416分别与图3实施例中的步骤s301~s316执行的方法相同。因此,图3中的所有实施例均适用于图4,且均能达到相同或相似的有益效果,在此不再赘述。

s402,获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

s403,获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

s404,判断获取的指令动作是否包括新增指令或修订指令,其中,上述新增指令为用于获得第i个目标数据文件的指令,上述修订指令为用于对原目标数据文件进行修订后获得的第i个目标数据文件的指令,上述原目标数据文件序号为1,…,i-1中任一序号对应的所需修订的目标数据文件,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;若获取的指令动作为新增指令,执行s405,若获取的指令动作为修订指令,执行s407;

s405,获取第i个目标数据文件和该目标数据文件对应的第i哈希值;根据上述档案号和上述第一哈希值的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;

s406,获取上述第i哈希值在上述目标区块链系统中的存储位置;

s407,获取第i个目标数据文件和该目标数据文件对应的第i哈希值;根据上述档案号和上述原目标数据文件,获取上述原目标数据文件对应哈希值的存储位置,根据所获取的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;其中,修订获得的第i个目标数据文件是采用追加修订内容的方式对原目标数据文件进行修订获得的文件,且修订后的第i个目标数据文件引用上述原目标数据文件的在目标区块链系统的存储位置;

s408,获取上述第i哈希值在上述目标区块链系统中的存储位置;

s409,在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

s410,获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中;

s411,获取上述第二哈希值在上述目标区块链系统中的存储位置;

s412,根据接收的签署指令,从预设的配置文件中获取操作人所属机构的编码、操作人对应的编码;

s413,根据上述操作人对应的编码,利用操作人预设的第一密钥对第i个目标数据文件进行签名;

s414,根据操作人所属机构的编码,利用操作人所属机构预设的第二密钥分别对上述第i个目标数据文件和操作人的签名进行签名;

s415,将第i个目标数据签署文件提交到预设的存储系统,其中,上述第i个目标数据签署文件为签名后的第i个目标数据文件;

s416,获取第i个目标数据签署文件的第j哈希值,调用预设的目标区块链系统存储上述第j哈希值,j为第i个目标签署文件对应哈希值的序号;

s417,从预设的存储系统中按照时间戳依次读取目标文件和目标签署文件,其中,上述目标文件为目标封面文件、第i个目标数据文件或目标封底文件,上述目标签署文件为第i个目标数据文件签署后的文件;

基于上述对存储系统的描述,可知存储系统按照时间戳存储电子病历的所有文件内容,按照时间戳将存储的目标文件一一读取,按照时间先后顺序展示了一个完整的电子病历。

s418,针对每个目标文件,判断该目标文件对应的机构编码和机构签名是否一致;若该目标文件对应的机构编码和机构签名一致,执行s419;

本步骤中利用检查机构编码和机构签名的一致性,排除不一致性,也就是说,排除非法文件。

需要说明的是,s418~s420中的该目标文件可以理解为电子病历中的任一目标文件。

s419,判断该目标文件对应的操作人编码和操作人签名是否一致,若该目标文件对应的操作人编码和操作人签名一致,执行s420;

本步骤中利用检查操作人编码和操作人签名的一致性,确保每个目标文件是有效文件。

s420,判定该目标文件为有效文件,判断该目标文件对应的目标签署文件对应的机构编码和机构签名是否一致;若该目标签署文件对应的机构编码和机构签名一致,执行s421;

在判断目标文件是否为有效文件后,还需要判断目标签署文件是否为有效文件。

需要说明的是,本发明实施例对判断目标文件和目标签署文件的顺序不限定。

另外,s420~s422中的该目标签署文件可以理解为电子病历中的任一目标文件对应的目标签署文件。

s421,判断该目标签署文件对应的操作人编码和操作人签名是否一致;若该目标签署文件对应的操作人编码和操作人签名一致,执行s422;

本步骤中利用检查操作人编码和操作人签名的一致性,确保每个目标签署文件是有效文件。

s422,判定该目标签署文件为有效文件,将该目标文件与该目标签署文件进行关联。

在判断目标文件和目标签署文件均为有效文件后,需要将二者进行关联,使其读取一个目标文件后,便能直接找到该目标文件对应的目标签署文件。

由此可知,本发明实施提供的方法通过新增目标封底文件,保证了电子病历的目标数据文件不能被添加或修订,并将构成电子病历的所有目标文件内容和该目标文件对应的签署文件存储在预设的存储系统中,将每个目标文件对应的哈希值和该目标文件对应的签署文件存储在目标区块链系统中,可以保证操作人对数据内容和时间的不可抵赖性和机构对于数据内容和其操作人的不可抵赖性,防止提交的数据被篡改的行为;另外,通过分别验证签署的机构和操作人的有效性,排除了无效的签署,保证了电子病历文件序列及其签署的正确性。

图5为本发明实施例提供的第五种基于区块链的电子病历的存储方法的示意图,应用于目标区块链系统,上述方法包括:

s501,验证预配的第一物理设备密钥与预设的第一密钥是否一致,若上述第一物理设备密钥与上述第一密钥一致,执行s502,其中,上述第一物理设备密钥为一个节点对应的物理设备密钥,第一密钥为与该节点的物理设备密钥匹配的密钥;

本步骤利用物理密钥设备来提供密钥访问,可以保证个人身份、机构身份的安全性。

需要说明的是,一个机构对应于一个节点。

s502,调用第一目标密钥设备的私钥签名接口;

本步骤在调用该私钥签名接口是为了对机构进行签名,第一目标密钥设备是用于唯一标识一个节点,且具有唯一的密钥。

s503,验证预配的第二物理设备密钥或预设密钥与预设的第二密钥是否一致;若预配的第二物理设备密钥或预设密钥与预设的第二密钥一致,执行s504,其中,上述第二物理设备密钥为操作人员配备的物理设备密钥,每个操作人员的密钥均不同,第一密钥为与该操作人员配备的物理设备密钥匹配的密钥;

本步骤设置第二物理设备密钥均是为了增加电子病历的安全性。

s504,调用第二目标密钥设备的私钥签名接口;

本步骤在调用该私钥签名接口是为了分别对操作人进行签名,第二目标密钥设备是用于唯一标识一个签署人即操作人,且具有唯一的密钥。

s505,判断提交目标文件哈希值交易的机构数字签名和操作人数字签名分别是否与节点预设的密钥和操作人预设的密钥匹配;若该目标文件哈希值交易的机构数字签名和操作人数字签名分别与节点预设的密钥和操作人预设的密钥匹配,执行s506;

本步骤是用于判断节点是否该接收该机构数字签名和操作人数字签名。

该数字签名可以理解为对目标文件哈希值交易进行加密,获得一串字符串,需要利用节点或操作人对应的密钥对该字符串进行解密,若能将该字符串解开,则认为二者匹配,该交易可以理解为数据的存储。

另外,数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的,二是数字签名能确定消息的完整性。

数字签名的工作原理为:发送目标文件时,发送方用一个哈希函数从目标文件哈希值交易中生成其摘要,然后用自身的私钥对摘要进行加密,加密后的摘要将作为该目标文件哈希值交易的数字签名和目标文件哈希值交易一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始目标文件哈希值交易中计算出报文摘要,接着再用发送方的公钥来对该交易附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。

s506,判断该目标文件哈希值所在的存储位置是否正确,若为正确,执行s507,其中,目标文件为目标封面文件、目标封底文件或第i个目标数据文件。

本步骤通过验证目标文件哈希值的存储位置,来判断该节点是否接收该目标文件。

s507,接收该目标文件,并将该目标文件判定为有效文件;

在对该目标文件按照s505~s506验证后,才可以判定该节点是否接收该目标文件,并判定其为有效文件。

s508,对从客户端获取的第一哈希值进行存储,并将获取的上述第一哈希值的存储位置发送到客户端中,其中,上述第一哈希值为客户端创建的目标封面文件的哈希值,上述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述存储位置由区块号和交易编码唯一确定;

其中,步骤s508~s509分别与图2实施例中的步骤s201~s202执行的方法相同。因此,图2中的所有实施例均适用于图5,且均能达到相同或相似的有益效果,在此不再赘述。

s509,对从客户端获取的第i哈希值进行存储,并将获取的上述第i哈希值的存储位置发送到客户端中,其中,上述第i哈希值为客户端按照新增指令或修订指令获得的第i个目标数据文件的哈希值,i为自然数,i≤m,m为目标数据文件的总数;

s510,针对每个节点,判断该节点是否为指定合约节点;若是指定合约节点,执行s511;

需要说明的是,本发明提供的实施例对s510的顺序并不限定,合约节点为提前达成合约协议的节点。

s511,触发预设的智能合约运行器调用所有有效合约的前置条件,判断当前条件是否与预设智能合约n的预设前置条件一致,若上述当前条件与上述智能合约n的预设前置条件一致,执行s512,其中,n为智能合约的编码;

该有效合约是指一个合约是有效的;该预设前置条件是指事先设置好的运行条件,例如前置条件为时间条件如每日0点,或事件条件如收到消息。

s512,指示合约节点触发执行预设脚本程序;

当当前条件与前置条件匹配时,需要执行该脚本程序。

s513,对从客户端获取的第二哈希值进行存储,并将获取的上述第二哈希值的存储位置发送到客户端中,其中,上述第二哈希值为客户端生成的目标封底文件的哈希值,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件。

其中,步骤s513与图2实施例中的步骤s203执行的方法相同。因此,图2中的所有实施例均适用于图5,且均能达到相同或相似的有益效果,在此不再赘述。

s514,对从客户端获取的第j哈希值进行存储,并将获取的上述第j哈希值的存储位置发送到客户端中,其中,上述第j哈希值为第i个目标数据签署文件的哈希值,上述第i个目标数据签署文件为签名后的第i个目标数据文件,j为第i个目标签署文件对应哈希值的序号。

本步骤的j与i的值是一一对应的,即i为1时,j也为1,i最大值为m,j也为m。

由此可知,本发明实施提供的方法通过将客户端获取的哈希值按照时间戳进行存储,并将获取的哈希值的存储位置发送到客户端中,防止了电子病历被篡改,为后续检查电子病历的目标数据文件是否被篡改作了准备,另外,通过采用公钥-密钥机制为每一个节点配备物理的密钥设备,确保了拥有写入权限的节点是合法的节点,通过采用公钥-密钥机制为每一个医护人员配备物理的或软件虚拟的密钥设备,保证了签署来自对应的签署人,由于区块链的数据被同等的、全部的存储在各个节点上,因此这种分布式的存储系统能够保证数据的可靠性,能够应对长期保存和各种灾难。

与上述基于区块链的电子病历存储方法相对应,本申请实施例还提供了基于区块链的电子病历存储装置。

图6为本发明实施例提供的第一种基于区块链的电子病历存储装置的示意图,应用于客户端,上述方法包括:

封面文件生成模块601,用于将生成的电子病历的档案号记录在创建的文件上,获得目标封面文件,其中,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

第一哈希值获取模块602,用于获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

第一存储位置获取模块603,用于获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

电子病历更新模块604,用于获取用于获得第i个目标数据文件的指令动作,以更新上述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

封面文件生成模块605,用于在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

第二哈希值获取模块606,用于获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中。

其中,上述电子病历更新模块604可以包括:

第一判断子模块,用于判断获取的指令动作是否包括新增指令或修订指令,其中,上述新增指令为用于获得第i个目标数据文件的指令,上述修订指令为用于对原目标数据文件进行修订后获得的第i个目标数据文件的指令,上述原目标数据文件序号为1,…,i-1中任一序号对应的所需修订的目标数据文件;若获取的指令动作为新增指令,触发第i哈希值新增子模块,若获取的指令动作为修订指令,触发第i哈希值修订子模块;

上述第i哈希值新增子模块,用于获取第i个目标数据文件和该目标数据文件对应的第i哈希值,根据上述档案号和上述第一哈希值的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;

上述第i哈希值修订子模块,用于获取第i个目标数据文件和该目标数据文件对应的第i哈希值;根据上述档案号和上述原目标数据文件,获取上述原目标数据文件对应哈希值的存储位置,根据所获取的存储位置,调用预设的目标区块链系统存储上述第i哈希值,并将上述第i个目标数据文件存储在预设的存储系统中;其中,修订获得的第i个目标数据文件是采用追加修订内容的方式对原目标数据文件进行修订获得的文件,且修订后的第i个目标数据文件引用上述原目标数据文件的在目标区块链系统的存储位置;

上述装置还可以包括:

第一存储位置获取模块,用于获取上述第i哈希值在上述目标区块链系统中的存储位置。

上述装置还可以包括:

第二存储位置获取模块,用于获取上述第二哈希值在上述目标区块链系统中的存储位置。

上述装置还可以包括:

编码获取模块,用于根据接收的签署指令,从预设的配置文件中获取操作人所属机构的编码、操作人对应的编码;

第一签名获取模块,用于根据上述操作人对应的编码,利用操作人预设的第一密钥对第i个目标数据文件进行签名;

第二签名获取模块,用于根据操作人所属机构的编码,利用操作人所属机构预设的第二密钥分别对上述第i个目标数据文件和操作人的签名进行签名;

第一提交模块,用于将第i个目标数据签署文件提交到预设的存储系统,其中,上述第i个目标数据签署文件为签名后的第i个目标数据文件;

第j哈希值获取模块,用于获取第i个目标数据签署文件的第j哈希值,调用预设的目标区块链系统存储上述第j哈希值,其中,j为第i个目标签署文件对应哈希值的序号,i≤m,m为目标数据文件的总数。

上述装置还可以包括:

读取模块,用于从预设的存储系统中按照时间戳依次读取目标文件和目标签署文件,其中,上述目标文件为目标封面文件、第i个目标数据文件或目标封底文件,上述目标签署文件为第i个目标数据文件签署后的文件;

第一验证模块,用于针对每个目标文件,验证该目标文件是否被判定为有效文件,若该目标文件为有效文件,触发第二验证子模块;

上述第二验证模块,用于验证该目标文件对应的目标签署文件是否为有效文件,若该目标签署文件为有效文件,触发关联子模块;

上述关联模块,用于将该目标文件与该目标签署文件进行关联。

具体的,上述第一验证模块包括:

第二判断子模块,用于针对每个目标文件,判断该目标文件对应的机构编码和机构签名是否一致,若该目标文件对应的机构编码和机构签名一致,触发第三判断子模块;

上述第三判断子模块,用于判断该目标文件对应的操作人编码和操作人签名是否一致;若该目标文件对应的操作人编码和操作人签名一致,触发第一有效文件判定子模块;

上述第一有效文件判定子模块,用于判定该目标文件为有效文件。

具体的,上述第二验证模块包括:

第四判断子模块,用于判断该目标文件对应的目标签署文件对应的机构编码和机构签名是否一致;若该目标签署文件对应的机构编码和机构签名一致,触发第五判断子模块;

上述第五判断子模块,用于判断该目标签署文件对应的操作人编码和操作人签名是否一致,若该目标签署文件对应的操作人编码和操作人签名一致,触发第二有效文件判定子模块;

上述第二有效文件判定子模块,用于判定该目标签署文件为有效文件。

图7为本发明实施例提供的第二种基于区块链的电子病历存储装置的示意图,应用于目标区块链系统,上述方法包括:

第一获取模块701,用于对从客户端获取的第一哈希值进行存储,并将获取的上述第一哈希值的存储位置发送到客户端中,其中,上述第一哈希值为客户端创建的目标封面文件的哈希值,上述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述存储位置由区块号和交易编码唯一确定;

第二获取模块702,用于对从客户端获取的第i哈希值进行存储,并将获取的上述第i哈希值的存储位置发送到客户端中,其中,上述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

第三获取模块703,用于对从客户端获取的第二哈希值进行存储,并将获取的上述第二哈希值的存储位置发送到客户端中,其中,上述第二哈希值为客户端生成的目标封底文件的哈希值,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件。

其中,上述装置还可以包括:

第四获取模块,用于对从客户端获取的第j哈希值进行存储,并将获取的上述第j哈希值的存储位置发送到客户端中,其中,上述第j哈希值为第i个目标数据签署文件的哈希值,上述第i个目标数据签署文件为签名后的第i个目标数据文件,j为第i个目标签署文件对应哈希值的序号。

上述装置还可以包括:

第三验证模块,用于验证预配的第一物理设备密钥与预设的第一密钥是否一致,其中,上述第一物理设备密钥为一个节点对应的物理设备密钥,第一密钥为与该节点的物理设备密钥匹配的密钥,若上述第一物理设备密钥与上述第一密钥一致,触发第一签名接口调用模块;

上述第一签名接口调用模块,用于调用第一目标密钥设备的私钥签名接口;

第四验证模块,用于验证预配的第二物理设备密钥或预设密钥与预设的第二密钥是否一致,若上述第二物理设备密钥或预设密钥与上述第二密钥一致,触发第二签名接口调用模块,其中,上述第二物理设备密钥为操作人员配备的物理设备密钥,每个操作人员的密钥均不同,第一密钥为与该操作人员配备的物理设备密钥匹配的密钥;

上述第二签名接口调用模块,用于调用第二目标密钥设备的私钥签名接口。

上述装置还可以包括:

第六判断模块,用于判断提交目标文件哈希值交易的机构数字签名和操作人数字签名分别是否与节点预设的密钥和操作人预设的密钥匹配,若该目标文件哈希值交易的机构数字签名和操作人数字签名分别与节点预设的密钥和操作人预设的密钥匹配,触发第七判断模块;

上述第七判断模块,用于判断该目标文件哈希值所在的存储位置是否正确,若为正确,触发目标文件接收模块,其中,目标文件为目标封面文件、目标封底文件或第i个目标数据文件。

目标文件接收模块,用于接收该目标文件,并将该目标文件判定为有效文件。

上述装置还可以包括:

第八判断模块,用于针对每个节点,判断该节点是否为指定合约节点,若是指定合约节点,触发智能合约运行器;

上述智能合约运行器,用于触发预设的智能合约运行器调用所有有效合约的前置条件,判断当前条件是否与预设智能合约n的预设前置条件一致,若上述当前条件与上述智能合约n的预设前置条件一致,触发指示模块;其中,n为智能合约的编码;

上述指示模块,用于指示合约节点触发执行预设脚本程序。

本发明实施例还提供了一种电子设备,包括处理器和机器可读存储介质,上述机器可读存储介质存储有能够被上述处理器执行的机器可执行指令,上述处理器被上述机器可执行指令促使:实现本发明实施例提供的两种基于区块链的电子病历的存储方法。

具体的,第一种基于区块链的电子病历的存储方法,包括:

上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

获取用于获得第i个目标数据文件的指令动作,以更新上述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中。

由此可见,执行本实施例提供的电子设备,通过新增目标封底文件,保证了电子病历的目标数据文件不能被更新,并将构成电子病历的所有数据文件内容存储在预设的存储系统中,将每个目标文件对应的哈希值存储在目标区块链系统中,避免了电子病历数据被篡改的行为。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

第二种基于区块链的电子病历的存储方法,包括:

对从客户端获取的第一哈希值进行存储,并将获取的上述第一哈希值的存储位置发送到客户端中,其中,上述第一哈希值为客户端创建的目标封面文件的哈希值,上述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述存储位置由区块号和交易编码唯一确定;

对从客户端获取的第i哈希值进行存储,并将获取的上述第i哈希值的存储位置发送到客户端中,其中,上述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

对从客户端获取的第二哈希值进行存储,并将获取的上述第二哈希值的存储位置发送到客户端中,其中,上述第二哈希值为客户端生成的目标封底文件的哈希值,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

由此可知,执行本实施例提供的电子设备,通过将客户端获取的哈希值按照时间戳进行存储,并将获取的哈希值的存储位置发送到客户端中,防止了电子病历被篡改,为后续检查电子病历的目标数据文件是否被篡改作了准备。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

在本发明提供的又一实施例中,还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,

存储器803,用于存放计算机程序;

处理器801,用于执行存储器803上所存放的程序时,实现本发明实施例提供的两种基于区块链的电子病历的存储方法。

具体的,第一种基于区块链的电子病历的存储方法,包括:

上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

获取用于获得第i个目标数据文件的指令动作,以更新上述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中。

由此可见,执行本实施例提供的电子设备,通过新增目标封底文件,保证了电子病历的目标数据文件不能被更新,并将构成电子病历的所有数据文件内容存储在预设的存储系统中,将每个目标文件对应的哈希值存储在目标区块链系统中,避免了电子病历数据被篡改的行为。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

第二种基于区块链的电子病历的存储方法,包括:

对从客户端获取的第一哈希值进行存储,并将获取的上述第一哈希值的存储位置发送到客户端中,其中,上述第一哈希值为客户端创建的目标封面文件的哈希值,上述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述存储位置由区块号和交易编码唯一确定;

对从客户端获取的第i哈希值进行存储,并将获取的上述第i哈希值的存储位置发送到客户端中,其中,上述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

对从客户端获取的第二哈希值进行存储,并将获取的上述第二哈希值的存储位置发送到客户端中,其中,上述第二哈希值为客户端生成的目标封底文件的哈希值,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例提供的方法可以应用于电子设备。具体的,该电子设备可以为:台式计算机、便携式计算机、智能移动终端、服务器等。在此不作限定,任何可以实现本发明的电子设备,均属于本发明的保护范围。

由此可知,执行本实施例提供的电子设备,通过将客户端获取的哈希值按照时间戳进行存储,并将获取的哈希值的存储位置发送到客户端中,防止了电子病历被篡改,为后续检查电子病历的目标数据文件是否被篡改作了准备。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,当上述计算机程序被处理器执行时,使得计算机执行上述实施例两种基于区块链的电子病历的存储方法。

具体的,第一种基于区块链的电子病历的存储方法,包括:

上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

获取用于获得第i个目标数据文件的指令动作,以更新上述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中。

由此可见,执行本实施例提供的计算机可读存储介质中存储的应用程序时,通过新增目标封底文件,保证了电子病历的目标数据文件不能被更新,并将构成电子病历的所有数据文件内容存储在预设的存储系统中,将每个数据文件对应的哈希值存储在目标区块链系统中,避免了电子病历数据被篡改的行为。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

第二种基于区块链的电子病历的存储方法,包括:

对从客户端获取的第一哈希值进行存储,并将获取的上述第一哈希值的存储位置发送到客户端中,其中,上述第一哈希值为客户端创建的目标封面文件的哈希值,上述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述存储位置由区块号和交易编码唯一确定;

对从客户端获取的第i哈希值进行存储,并将获取的上述第i哈希值的存储位置发送到客户端中,其中,上述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

对从客户端获取的第二哈希值进行存储,并将获取的上述第二哈希值的存储位置发送到客户端中,其中,上述第二哈希值为客户端生成的目标封底文件的哈希值,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件。

由此可知,执行本实施例提供的计算机可读存储介质中存储的应用程序时,通过将客户端获取的哈希值按照时间戳进行存储,并将获取的哈希值的存储位置发送到客户端中,防止了电子病历被篡改,为后续检查电子病历的目标数据文件是否被篡改作了准备。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例两种基于区块链的电子病历的存储方法。

具体的,第一种基于区块链的电子病历的存储方法,包括:

上述档案号是按照预设方式生成上述电子病历的唯一编码,上述目标封面文件用于创建初始电子病历的文件;

获取上述目标封面文件的第一哈希值,调用预设的目标区块链系统存储上述第一哈希值,并将上述目标封面文件存储在预设的存储系统中;

获取上述第一哈希值在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

获取用于获得第i个目标数据文件的指令动作,以更新上述电子病历,其中,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

在获得m个目标数据文件后,根据获取的结案指令生成目标封底文件,其中,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件;

获取上述目标封底文件的第二哈希值,调用预设的目标区块链系统存储上述第二哈希值,并将上述目标封底文件存储在预设的存储系统中。

由此可见,执行本实施例提供的计算机程序产品时,通过新增目标封底文件,保证了电子病历的目标数据文件不能被更新,并将构成电子病历的所有数据文件内容存储在预设的存储系统中,将每个数据文件对应的哈希值存储在目标区块链系统中,避免了电子病历数据被篡改的行为。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

第二种基于区块链的电子病历的存储方法,包括:

对从客户端获取的第一哈希值进行存储,并将获取的上述第一哈希值的存储位置发送到客户端中,其中,上述第一哈希值为客户端创建的目标封面文件的哈希值,上述目标封面文件是由客户端将生成的电子病历的档案号记录在创建的文件上获得的,用于创建初始电子病历的文件,上述档案号是按照预设方式生成上述电子病历的唯一编码,上述存储位置由区块号和交易编码唯一确定;

对从客户端获取的第i哈希值进行存储,并将获取的上述第i哈希值的存储位置发送到客户端中,其中,上述第i哈希值为客户端按照用于获得第i个目标数据文件的指令动作获得的第i个目标数据文件的哈希值,i为目标数据文件的序号,i为自然数,i≤m,m为目标数据文件的总数;

对从客户端获取的第二哈希值进行存储,并将获取的上述第二哈希值的存储位置发送到客户端中,其中,上述第二哈希值为客户端生成的目标封底文件的哈希值,上述目标封底文件是用于禁止对上述电子病历更新目标数据文件。

由此可知,执行本实施例提供的计算机程序产品时,通过将客户端获取的哈希值按照时间戳进行存储,并将获取的哈希值的存储位置发送到客户端中,防止了电子病历被篡改,为后续检查电子病历的目标数据文件是否被篡改作了准备。

上述的相关内容电子病历存储方法的实施方式与前述方法实施例部分提供的存储方式相同,这里不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行上述计算机程序指令时,全部或部分地产生按照本发明实施例上述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质或计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上上述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1