一种处方执行方法、装置、设备和存储介质与流程

文档序号:15674752发布日期:2018-10-16 19:56阅读:147来源:国知局

本发明涉及医院信息化技术领域,特别是涉及一种处方执行方法、装置、设备和存储介质。



背景技术:

用药治疗是医疗机构的最常见的业务行为。医生为病人开出的处方所包含的药品,如何被正确的使用到患者身上,毫无疑问是最关键的。如果因为管理不善或者人员疏忽,出现了用药错误可能会造成非常严重的后果:例如将a患者的注射药品施加到了b患者身上,或者在用量上出现了错误如短时间内重复用药等。基于此,医院通常使用医院信息化系统(his,hospitalinformationsystem)来管理用药的业务行为。

目前,现有的医院信息化系统在处方执行时,其主要方案为:处方和执行处方均通过电子单据流转,不同角色如医生、护士或药房管理员等在执行处方时需要先输入角色账号密码登录以控制权限和识别身份。如药品如注射剂设有的贴瓶单,该贴瓶单标注有患者姓名等身份信息,护士在执行前会口头或扫码核对药品与患者信息的一致性。

但该方案会存在如下缺陷:第一,首先账号、密码等信息容易泄露,一旦泄漏后就难以成为凭据;第二,处方单据和操作的数据存储的数据库系统,由于该数据库采用集中式存储,虽然该数据库提供了安全审计和日志功能,由于数据库中的数据本身是可以删改的,因此安全审计和日志功能也是可能被hack(增加、删除或者修改、优化)或者关闭的。因此,一旦破坏者拥有数据库和操作系统的最高权限,安全审计和日志功能都无法起到保护作用;由此可知,这种集中式数据存储的方案,仍然难以避免甚至发现业务数据篡改的行为;第三,处方的执行上人的主观随意性较大,处方执行缺乏精准控制,例如药品与患者的一致性确认、护士的药品执行时间没有严格的系统软件控制等,因此,现有的医院信息化系统在处方执行时,安全性较低。



技术实现要素:

本发明实施例的目的在于提供一种处方执行方法、装置、设备和存储介质,以提高处方执行的安全性。具体技术方案如下:

一种处方执行方法,所述方法包括:

解析待执行的目标处方,得到合约输入数据,其中,所述目标处方包括至少一个子项;

根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,其中,所述智能合约包括至少一个子合约,一个子项对应一个子合约;

根据所述子项的执行信息,执行所述部署在所述目标区块链系统的、所述子项对应的子合约;

其中,当所述子合约执行后,所述子合约的执行记录被提交至所述目标区块链系统进行存储。

进一步地,在所述根据所述子项的执行信息,执行所述部署在所述目标区块链系统的、所述子项对应的子合约之后,所述方法还包括:

当所述子合约执行失败时,进行处方异常执行提醒;

其中:

所述执行信息与所述合约输入数据不匹配时,所述子合约执行失败。

进一步地,所述智能合约包括至少两个子合约;

所述至少两个子合约包括第一子合约和第二子合约;

所述根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,包括:

根据所述第一子合约的合约输入数据和预设的程序代码,生成第一子合约;

将所述第一子合约存储在所述预设的目标区块链系统中,并获取所述第一子合约在所述目标区块链系统中的存储位置;

根据所述第二子合约的合约输入数据和预设的程序代码,生成第二子合约;

根据所述第一子合约在所述目标区块链系统的存储位置,将所述第二子合约存储在所述预设的目标区块链系统,以使所述第一子合约和所述第二子合约在所述目标区块链系统关联存储,并获取所述第二子合约在所述目标区块链系统中的存储位置。

进一步地,在所述将生成的智能合约部署在预设的目标区块链系统中后,所述方法还包括:

确定是否需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约;

所述根据所述子项的执行信息,执行所述部署在所述目标区块链系统的、所述子项对应的子合约包括:

当确定需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约时,获取所述子项的执行信息,并根据所述执行信息,执行所述部署在所述目标区块链系统的、所述子项对应的子合约。

进一步地,所述确定是否需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约包括:

确定是否接收到用户发送的子项执行请求,当接收到用户发送的子项执行请求时,确定需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约;

或者,

确定是否接收到子项的执行信息,当接收到子项的执行信息时,确定需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约。

进一步地,所述根据所述子项的执行信息,执行所述部署在所述目标区块链系统的、所述子项对应的子合约包括:

将所述执行信息提交到所述目标区块链系统进行存储,以触发所述部署在所述目标区块链系统的所述子合约根据所述存储在所述目标区块链系统的执行信息进行执行;

或者,

将所述执行信息提交到所述目标区块链系统进行存储,读取所述部署在所述目标区块链系统的所述子合约,根据所述存储在所述目标区块链系统的执行信息执行所述读取的子合约。

进一步地,所述将所述执行信息提交到所述目标区块链系统进行存储,读取所述部署在所述目标区块链系统的所述子合约,根据所述存储在所述目标区块链系统的执行信息执行所述读取的子合约,包括:

根据所述子合约在所述目标区块链系统的存储位置,将所述执行信息提交到所述目标区块链系统进行存储,并获取所述执行信息在所述目标区块链系统的存储位置;

根据所述子合约在所述目标区块链系统的存储位置,从所述目标区块链系统中读取所述子合约;

根据所述执行信息在所述目标区块链系统的存储位置,从所述目标区块链系统中读取所述执行信息;

根据所述读取的子合约和所述执行信息,执行所述子合约。

进一步地,所述方法还包括:

确定所述子合约是否完成,当所述子合约未在第一预设时间内完成时,则进行处方异常执行提醒。

和/或

确定所述智能合约包括的子合约是否全部完成,其中,当所述智能合约包括的子合约全部完成时,所述智能合约完成,当所述智能合约未在第二预设时间内时完成时,则进行处方异常执行提醒。

进一步地,所述确定所述子合约是否完成包括:

获取所述子合约的总执行次数;

确定所述子合约的总执行次数是否等于所述子合约对应的子项的总执行次数,当所述子合约的总执行次数等于所述子项的总执行次数时,确定所述子合约完成。

进一步地,所述子合约的执行记录中包括所述子合约的总执行次数;

所述获取所述子合约的总执行次数包括:

根据所述子合约在所述目标区块链系统中的存储位置,遍历所述目标区块链系统存储的、所述子合约对应的执行记录,得到所述子合约的总执行次数;

其中,所述子合约第一次执行的执行记录作为所述子合约的级联交易被提交至所述目标区块链系统存储,第一次执行后,所述子合约每次执行的执行记录作为所述子合约的上一次执行的执行记录的级联交易被提交到所述目标区块链存储。

进一步地,所述智能合约还包括主合约,用于确定各所述子合约是否已经完成;

所述确定所述智能合约包括的子合约是否全部完成包括:

执行所述部署在所述目标区块链系统的所述主合约,以确定各所述子合约是否已经完成。

进一步地,所述进行处方异常执行提醒包括:

提供异常执行提醒窗口,所述异常执行提醒窗口中显示有异常执行提醒信息,所述异常执行提醒信息包括错误码和/或文本说明;

和/或

以播放语音的方式进行处方异常执行提醒;

和/或

以点亮或闪烁报警灯的方式进行处方异常执行提醒。

进一步地,所述合约输入数据包括所述子合约的合约输入数据;

所述子合约的合约输入数据包括患者id、子项id、执行时间信息;

所述子项的执行信息包括患者id、子项id、执行时间信息;

所述执行信息与所述合约输入数据不匹配包括以下至少一种:

所述执行信息中的子项id与所述合约输入数据中的子项id不同;

所述执行信息中的执行时间信息与所述合约输入数据中的执行时间信息不对应。

进一步地,所述将生成的智能合约部署在预设的目标区块链系统包括:

获取操作人预设的密钥,根据操作人预设的密钥对所述生成的智能合约进行签名;

获取患者预设的密钥,根据所述患者预设的密钥对所述操作人签名后的智能合约进行签名;

将所述操作人和所述患者的签名后的智能合约提交至所述目标区块链系统进行存储,或者,获取所述操作人和所述患者的签名后的智能合约的哈希值,将所述哈希值和所述生成的智能合约提交至所述目标区块链系统进行关联存储。

一种处方执行装置,所述装置包括:

解析模块,用于解析待执行的目标处方,得到合约输入数据,其中,所述目标处方包括至少一个子项;

智能合约生成模块,用于根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,其中,所述智能合约包括至少一个子合约,一个子项对应一个子合约;

合约执行模块,用于根据所述子项的执行信息,执行所述部署在所述目标区块链系统的、所述子项对应的子合约;其中,当所述子合约执行后,所述子合约的执行记录被提交至所述目标区块链系统进行存储。

进一步地,所述装置还包括:

处方提醒模块,用于当所述子合约执行失败时,进行处方异常执行提醒;

其中:

所述执行信息与所述合约输入数据不匹配时,所述子合约执行失败,所述子合约执行失败。

进一步地,所述智能合约包括至少两个子合约;

所述至少两个子合约包括第一子合约和第二子合约;

所述智能合约生成模块,具体用于::

根据所述第一子合约的合约输入数据和预设的程序代码,生成第一子合约;

将所述第一子合约存储在所述预设的目标区块链系统中,并获取所述第一子合约在所述目标区块链系统中的存储位置;

根据所述第二子合约的合约输入数据和预设的程序代码,生成第二子合约;

根据所述第一子合约在所述目标区块链系统的存储位置,将所述第二子合约存储在所述预设的目标区块链系统,以使所述第一子合约和所述第二子合约在所述目标区块链系统关联存储,并获取所述第二子合约在所述目标区块链系统中的存储位置。

进一步地,所述装置还包括:

合约执行确定模块,用于确定是否需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约;

所述合约执行模块,用于包括:

当确定需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约时,获取所述子项的执行信息,并根据所述执行信息,执行所述部署在所述目标区块链系统的、所述子项对应的子合约。

进一步地,所述合约执行确定模块包括:

第一合约执行确定子模块,用于确定是否接收到用户发送的子项执行请求,当接收到用户发送的子项执行请求时,确定需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约;

或者,

第二合约执行确定子模块,用于确定是否接收到子项的执行信息,当接收到子项的执行信息时,确定需要执行所述部署在所述目标区块链系统的、所述子项对应的子合约。

进一步地,所述合约执行模块包括:

合约第一执行子模块,用于将所述执行信息提交到所述目标区块链系统进行存储,以触发所述部署在所述目标区块链系统的所述子合约根据所述存储在所述目标区块链系统的执行信息进行执行;

或者,

合约第二执行子模块,用于将所述执行信息提交到所述目标区块链系统进行存储,读取所述部署在所述目标区块链系统的所述子合约,根据所述存储在所述目标区块链系统的执行信息执行所述读取的子合约。

进一步地,所述合约第二执行子模块包括:

执行信息提交单元,用于根据所述子合约在所述目标区块链系统的存储位置,将所述执行信息提交到所述目标区块链系统进行存储,并获取所述执行信息在所述目标区块链系统的存储位置;

子合约读取单元,用于根据所述子合约在所述目标区块链系统的存储位置,从所述目标区块链系统中读取所述子合约;

执行信息读取单元,用于根据所述执行信息在所述目标区块链系统的存储位置,从所述目标区块链系统中读取所述执行信息;

子合约执行单元,用于根据所述读取的子合约和所述执行信息,执行所述子合约。

进一步地,所述装置还包括:

子合约完成第一确定模块,用于确定所述子合约是否完成;

第一处方提醒模块,用于当所述子合约未在第一预设时间内完成时,则进行处方异常执行提醒。

和/或

子合约完成第二确定模块,用于确定所述智能合约包括的子合约是否全部完成,其中,当所述智能合约包括的子合约全部完成时,所述智能合约完成,

第二处方提醒模块,用于所述智能合约未在第二预设时间内时完成时,则进行处方异常执行提醒。

进一步地,所述子合约完成第一确定模块包括:

总执行次数子模块,用于获取所述子合约的总执行次数;

子合约完成确定子模块,用于确定所述子合约的总执行次数是否等于所述子合约对应的子项的总执行次数,当所述子合约的总执行次数等于所述子项的总执行次数时,确定所述子合约完成。

进一步地,所述子合约的执行记录中包括所述子合约的总执行次数;

所述总执行次数子模块,用于:

根据所述子合约在所述目标区块链系统中的存储位置,遍历所述目标区块链系统存储的、所述子合约对应的执行记录,得到所述子合约的总执行次数;

其中,所述子合约第一次执行的执行记录作为所述子合约的级联交易被提交至所述目标区块链系统存储,第一次执行后,所述子合约每次执行的执行记录作为所述子合约的上一次执行的执行记录的级联交易被提交到所述目标区块链存储。

进一步地,所述智能合约还包括主合约,用于确定各所述子合约是否已经完成;

所述子合约完成第二确定模块,用于:

执行所述部署在所述目标区块链系统的所述主合约,以确定各所述子合约是否已经完成。

进一步地,所述处方提醒模块包括:

异常第一提醒子模块,用于提供异常执行提醒窗口,所述异常执行提醒窗口中显示有异常执行提醒信息,所述异常执行提醒信息包括错误码和/或文本说明;

和/或

异常第二提醒子模块,用于以播放语音的方式进行处方异常执行提醒;

和/或

异常第三提醒子模块,用于以点亮或闪烁报警灯的方式进行处方异常执行提醒。

进一步地,所述合约输入数据包括所述子合约的合约输入数据;

所述子合约的合约输入数据包括患者id、子项id、执行时间信息;

所述子项的执行信息包括患者id、子项id、执行时间信息;

所述执行信息与所述合约输入数据不匹配包括以下至少一种:

所述执行信息中的子项id与所述合约输入数据中的子项id不同;

所述执行信息中的执行时间信息与所述合约输入数据中的执行时间信息不对应。

进一步地,所述智能合约生成模块包括:

第一签名子模块,用于获取操作人预设的密钥,根据操作人预设的密钥对所述生成的智能合约进行签名;

第二签名子模块,用于获取患者预设的密钥,根据所述患者预设的密钥对所述操作人签名后的智能合约进行签名;

部署模块,用于将所述操作人和所述患者的签名后的智能合约提交至所述目标区块链系统进行存储,或者,获取所述操作人和所述患者的签名后的智能合约的哈希值,将所述哈希值和所述生成的智能合约提交至所述目标区块链系统进行存储。

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

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的处方执行方法。

在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的处方执行方法。

本发明实施例提供的一种处方执行方法、装置、设备和存储介质,可以解析读取的目标处方,得到待生成智能合约的输入数据,根据得到的输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,针对智能合约中的每个子合约,根据该子合约所对应的子项的执行信息,执行部署在目标区块链系统的该子合约,当所述子合约执行后,所述子合约的执行记录被提交至所述目标区块链系统进行存储。该方法引入区块链技术,通过根据目标处方生成智能合约,并将智能合约部署在预设的目标区块链系统中,并采用所述目标区块链系统记录所述子合约的执行记录,实现了处方数据的可靠持久化以及防篡改,有效提高了目标处方执行的安全性。而且,利用智能合约技术,可以精准控制处方的执行。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的处方执行方法的第一种流程图;

图2为医生出具的处方的一种示例性示意图;

图3为本发明实施例提供的处方执行方法的第二种流程图;

图4为本发明实施例提供的处方执行方法的第三种流程图;

图5为本发明实施例提供的处方执行装置的结构示意图;

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

具体实施方式

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

为了更好的理解本发明,并对区块链系统更加清楚,首先对本发明实施例中涉及的区块链系统进行如下详细的描述,具体为:

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

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

整个区块链系统,就是由一块接一块的区块组合而成一个巨大的存储空间,每一个区块都有其数据内容和数据指纹签名。

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

区块链也可以理解为是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

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

需要说明的是,本发明实施例提供的区块链系统一般需要包括如下特性:

1)具备n个(n≥3,且为奇数)对等的节点。且任何一个机构或个人所管理和控制的节点数不超过全部节点数的1/2。节点通过网络互联,节点间通信采用p2p方式。

2)选取适合实际需求的平均区块生成期望时间t,以此决定节点获得新区块写入权的计算证明。并且,可根据需要确定设定每个区块的大小(c),该值决定每个区块可容纳的数据量大小。例如,比特币区块链的t值为10分钟,c值为1mb。

3)节点对收到的有效数据,节点会将其按接收时的时间升序暂存在当前的区块中,当前区块位于内存中。当区块即将写满时,节点间会竞争当前区块的永久记账权,也就是写到磁盘中。这里规定:一旦有一半以上的节点接受了上一个区块,那么该区块视为生效,其内所有交易被确认。一个节点接受一个区块的条件是:该节点与自己记录的当前区块内的交易进行对比,认为该区块内的所有交易与自己记录一致、合法。而接受的表现是:该节点在接受的区块后,开始下一个区块。

4)为了确保本区块链系统安全,只有信任的节点可以加入区块链系统,为此要求节点间通信进行加密,并且使用数字签名身份认证机制,即所有节点以私钥对通信消息进行签名,接收方使用其公钥验证,非法的数据会被丢弃。

5)收到数据的每个节点,还要对该交易数据进行校验。如果发现一个交易的前置交易是虚假的,则节点可以拒绝记录该条数据。这与比特币区块链的机制是类似的。

图1为本发明实施例提供的处方执行方法的第一种流程图,应用于医院信息系统his侧,具体由his侧的服务器或客户端执行,如图1所示,该方法包括:

s101,解析待执行的目标处方,得到合约输入数据,其中,上述目标处方包括至少一个子项;

具体的,上述待执行的目标处方可以为患者交完费后被标定为有效的处方。

在通常的就医流程中,医生会开具处方,患者会进行交费,交费后处方就被标定为有效,将被实际执行,例如,患者根据交费的处方去药房拿药,药房医务人员按照处方给患者发放药品,或者,注射室的护士为患者进行处方开具的药品的注射,或者,医生为患者进行处方开具的检验项目等。因此,可在患者对处方交费后,将处方标记为有效,在检测到处方有效时,执行本步骤s101。

安全用药从医生的处方开具开始,医生为病人开具的处方中,可能会包含不同的药品和药剂,有不同的用法和用量要求。举例说明,如图2所示,该目标处方包括2个子项,分别为:

1、10%葡萄糖注射液+尼可刹米注射液

2、阿苯达挫胶囊

根据一般规范,本发明实施例中,每一子项为一次注射或检验/检查操作,或者为单一口服药品。

s102,根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中。

其中,上述智能合约包括至少一个子合约,一个子项对应一个子合约。

从原理上讲,本发明实施例中,用智能合约来表示处方,智能合约的子合约来表示处方的子项,子合约和子项一一对应,在处方执行时,执行智能合约,即在处方的某个子项执行时,执行该子项对应的子合约,实现对处方执行的精准控制。而智能合约是部署在区块链上的,而且,合约执行后,区块链上会保存合约的执行记录,因此,基于区块链技术,实现了处方数据的可靠持久化存储以及有效防止篡改。

需要说明的是,由于处方的某些子项的执行时相对安全的,例如,一般的口服药品,通常由病人领取后按医嘱自行服用。口服药品的安全性较高,而且是病人自行使用,只要药品正确发放,一般不会出现严重后果。因此,在本发明的具体实施中,智能合约可以不包括这些子项的子合约,即,智能合约可以包括处方项包括的所有子项对应的子合约,还可以仅包括处方项包括的子项中部分子项对应的子合约。

上述步骤s101的合约输入数据为用于后续生成智能合约的输入数据,因此,步骤s101得到的合约输入数据可以包括上述子合约的合约输入数据。

举例而言,上述子合约的合约输入数据可以包括患者id、子项id、执行时间信息、子项总执行次数等信息。其中:患者id包括患者姓名、患者编码等患者的唯一标识等,而子项id可以理解为子项的唯一标识,例如,检查/检验名称、药品名称等,具体可以为根据目标项目名称生成的唯一编码,上述目标项目名称包括药品名称、材料名称、检验名称或检查名称等;执行时间信息可以包括子项开始执行时间,具体可以为子项允许执行时间,执行时间信息还可以包括子项每次执行时间间隔和/或执行时长。子项总执行次数即处方规定的子项执行的次数。举例而言,某种注射药剂,处方中写明的用法是,每日1次,用药3天。则,总执行次数为3次,子项允许执行时间为处方生效后,每次执行时间间隔为24小时。

需要强调的,本发明实施例中,后续会获得处方子项的真实执行信息,例如,患者id、子项id、执行时间信息等,根据真实执行信息来执行该子合约。可以理解的是,为实现处方的安全执行,真实执行信息和合约输入数据通常是需要完全匹配的,例如,患者和药品的匹配,患者和检验的一致,当不完全匹配时,则该处方子项的执行异常,即子合约的执行是失败的,因此,可以基于上述设计思路来确定要从处方中获得的合约输入数据为何数据,具体不做限定,一般至少需要包括患者id和子项id。

举例而言,得到合约数据的一种实施方式可以为:解析目标处方,得到待生成智能合约的第一输入数据,其中,上述第一输入数据可以包括患者姓名、患者id和目标处方包括的第一数量个子项,上述第一数量为目标处方中包括子项的总数;

根据获取的第一输入数据,获得患者id和/或患者姓名;

解析目标处方中的每一子项,得到子项对应的目标项目名称或子项id、开始时间、总执行次数和每次执行时间间隔,若得到的是目标项目名称,则将上述目标项目名称生成子项id,上述目标项目名称包括药品名称、材料名称、检验名称或检查名称;

将得到的患者姓名和/或患者id、子项id、执行时间信息(开始时间、总执行次数和每次执行时间间隔)作为上述子项对应子合约的输入数据。

可见,本实施方式能够快速有序地生成每一子合约的输入数据,且不会遗漏输入数据。

在步骤s102中,根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中。

其中,由上述对合约输入数据的描述可知,上述的输入数据就是生成智能合约的待输入数据。

智能合约(smartcontract)可以理解为基于区块链的可信数据存储技术发展起来的一种脚本技术,因此基于数据的安全性,智能合约需被部署在目标区块链系统中。

现对目标处方和智能合约的关系进行如下举例说明:

利用一个目标处方r生成区块链的智能合约cs,其中,r包括n个子项,r中的每一子项对应生成一个智能合约ci,i=1,2,…,n,n为r中包含的子项数,则c1,c2,…,cn为cs的n个子合约。

根据上述定义显然有,执行目标处方就是执行目标处方对应的智能合约cs。当且仅当其所有子合约c1,c2,…,cn执行完毕,则cs执行完毕。可将cs称之为主合约,ci称之为子合约。

具体的,步骤s102中,根据合约输入数据和预设的程序代码,生成智能合约,即,根据子合约的合约输入数据和预设的子合约的程序代码,生成子合约。

具体的部署,第一种实施方式,将生成的智能合约部署在预设的目标区块链系统包括:

获取操作人预设的密钥,根据操作人预设的密钥对上述生成的智能合约进行签名;

获取患者预设的密钥,根据上述患者预设的密钥对上述操作人签名后的智能合约进行签名;

获取所述操作人和所述患者的签名后的智能合约的哈希值,将所述哈希值和智能合约提交至所述目标区块链系统进行关联存储。

本发明实施例中,所谓两者关联存储,是指当获取到其中一者时,可以根据该其中一者的存储地址或者其中一者的内容,获取到其中另一者,例如,根据其中一者的存储地址经过进一步计算,得到其中另一者的存储地址。

需要说明的是,签名后的智能合约可以理解为患者和医疗机构的医生或护士等操作人员之间针对智能合约内容达成的协议,该签名后的智能合约的生成就意味着智能合约内容操作人员和患者均同意智能合约的内容。

生成哈希值后,智能合约可以与哈希值以关联存储方式存储在目标区块链系统中。

上述关联存储方式可以理解为先将上述哈希值以一次交易存储在上述目标区块链系统中,并返回上述哈希值在上述目标区块链系统中的存储位置,根据上述哈希值对应的存储位置,将智能合约提交至上述目标区块链系统中进行存储。

值得一提的是,本实施方式可以先生成签名后的智能合约,再将签名后的智能合约和智能合约以关联方式部署在目标区块链系统中,也可以在部署各个子合约之前,生成针对该子合约对应的签名后的子合约,并将该签名后的子合约存储在目标区块链系统中,再根据该签名后的子合约在目标区块链系统中的存储地址,将该子合约存储在目标区块链系统中。

第二种实施方式,上述将生成的智能合约部署在预设的目标区块链系统包括:

获取操作人预设的密钥,根据操作人预设的密钥对上述生成的智能合约进行签名;

获取患者预设的密钥,根据上述患者预设的密钥对上述操作人签名后的智能合约进行签名;

获取所述操作人和所述患者的签名后的智能合约,将所述签名后的智能合约提交至所述目标区块链系统进行存储。

可见,本实施方式为了使合约缔结方即医院的操作人员和患者均认可该智能合约,将智能合约中的每个子合约作为交易存储在目标区块链系统中,使用了多重签名,使得医疗机构和患者对合约内容都不可抵赖,而且后续对该智能合约状态的修改均需要双方的共同签名才可以,从而避免了处方被施加到错误的患者身上,由此可以保证医院机构对于数据内容和其操作人的不可抵赖性。

具体的,举例而言,在部署智能合约时,针对一种实施方式为上述智能合约包括至少两个子合约的情况,假设上述至少两个子合约包括第一子合约和第二子合约;则,上述根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,包括:

根据上述第一子合约的合约输入数据和预设的程序代码,生成第一子合约;

将上述第一子合约存储在上述预设的目标区块链系统中,并获取上述第一子合约在上述目标区块链系统中的存储位置;

根据上述第二子合约的合约输入数据和预设的程序代码,生成第二子合约;

根据上述第一子合约在上述目标区块链系统的存储位置,将上述第二子合约存储在上述预设的目标区块链系统,以使上述第一子合约和上述第二子合约在上述目标区块链系统关联存储,并获取上述第二子合约在上述目标区块链系统中的存储位置。

其中,预设的程序代码为预先编写设定好的,通常是按照智能合约和区块链技术要求的程序代码,可以将合约输入数据带入到这些程序代码中,从而生成智能合约。

可见,本实施方式针对智能合约的不同子合约,对子合约在目标区块链系统中关联部署,不仅不能被篡改,且能精准控制处方的执行、药品的使用和药品剂量的使用。

为了对第一子合约和第二子合约理解的更加透彻,现举一示例:当智能合约中的子合约为第一子合约,即为待生成的第一个子合约时,将上一次子合约执行时间设置为预设时刻,根据上述该子合约的输入数据、上一次子合约执行时间和预设的程序代码,生成第一子合约;由于第一子合约为第一个子合约,因此上一次子合约执行时间可以为0,或是预先设置一个起始时间。

上述第一子合约被提交至目标区块链系统存储,并获取上述第一子合约在上述目标区块链系统中的存储位置,其中,上述存储位置由区块号和交易编码唯一确定;

当子合约为第二子合约,即不是待生成的第一个子合约时,根据上述该合约的输入数据、上一次子合约执行时间和预设的程序代码,生成第二子合约;

根据上述第一子合约的上一个子合约的存储位置,第二子合约被提交至目标区块链系统存储,并获取上述第二子合约在上述目标区块链系统中的存储位置。

值得一提的是,第一子合约或第二子合约被提交至目标区块链系统中可以理解为目标区块链系统获取第一子合约或第二子合约并存储,也可以理解为本地客户端将第一子合约或第二子合约提交至目标区块链系统中存储。

s103,根据上述子项的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

其中,当上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储。

在合约部署后,在处方实际执行时,各处方子项执行者,例如检验医生、药房医生或者注射护士,将提交子项的执行信息,执行信息与上述合约输入数据类似,可包括患者id,子项id,执行时间信息等,本步骤中,将获取到这些执行信息,来执行部署在区块链的子合约,合约执行后,子合约的执行记录将被提交到目标区块链系统中,该执行记录中可以包括执行者信息,患者id、子项id、执行时间信息、总执行次数等等多种信息,本领域技术人员可以任意合理设置。由于智能合约部署在预设的目标区块链系统中,并采用所述目标区块链系统记录所述子合约的执行记录,实现了处方数据的可靠持久化以及防篡改,有效提高了目标处方执行的安全性。

需要说明的是,概括的讲,本发明实施例中,将处方设计为部署在区块链上的智能合约,处方执行即智能合约执行,智能合约的部署和执行均相当于进行交易,基于区块链的分布式存储、区块前后级联、多数共识、交易签名等机制特性,可以有效实现数据的可靠持久化、数据防止篡改。进一步的,可以理解的是,智能合约的有效执行需要满足合约设立时的约定,在本发明实施例中,即合约输入数据需要与处方实际执行时的执行信息相匹配,合约才能够正确执行,因此,可以精准控制处方的执行和药品、剂量的使用。

可选的,在上述s102将生成的智能合约部署在预设的目标区块链系统中后,s103前,上述方法还可包括:

确定是否需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

可见,在部署智能合约后,需要在处方实际执行时,来执行智能合约,因此,需要确定是否需要执行子合约,由于本实施方式增加子项对应子合约的确定功能,使智能合约的执行更加安全和有序。

上述确定是否需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约可以包括:

确定是否接收到用户发送的子项执行请求,当接收到用户发送的子项执行请求时,确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

用户即处方子项的执行者可以发送执行请求,来指示子合约的执行。

或者,还可以检测子项的执行信息,确定是否接收到子项的执行信息,当接收到子项的执行信息时,确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

具体的,可以提供ui界面给处方子项的执行者,执行者可通过ui界面输入子项执行信息,一旦接收到执行信息,就代表需要执行子项对应的子合约。

可见,本实施方式利用执行信息或执行请求确定子合约是否执行的方法,确保了执行智能合约的安全性。

其中,子合约还可以包括多个功能接口,第一功能接口,用于检查各个子合约是否可执行的接口,第二功能接口用于记录子合约被执行一次的接口,第三功能接口,用于检查一个子合约是否被执行完毕的接口。

基于s102的实施方式,第一种实施方式为:确定是否需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

当确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约时,获取上述子项的执行信息,并根据上述执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

可见,该实施方式通过确定是否执行存储在目标区块链系统的子合约,使得智能合约的执行更加有序且智能,提高用户的体验效果,利用目标执行信息,执行部署在目标区块链系统的、子项对应的子合约,能够提高子合约执行的安全性。

第二种实施方式为:确定是否接收到用户发送的子项执行请求,当接收到用户发送的子项执行请求时,确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

当确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约时,获取上述子项的执行信息,并根据上述执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

可见,该实施方式通过用户发送的子项执行请求确定是否执行存储在目标区块链系统的子合约,使得智能合约的执行更加有序且智能,提高用户的体验效果,根据用户发送的子项执行请求,执行部署在目标区块链系统的、子项对应的子合约,能够提高子合约执行的安全性。

第三种实施方式为:确定是否接收到子项的执行信息,当接收到子项的执行信息时,确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

当确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约时,获取上述子项的执行信息,并根据上述执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

可见,该实施方式通过用户发送的子项执行请求确定是否执行存储在目标区块链系统的子合约,使得智能合约的执行更加有序且智能,提高用户的体验效果,根据用户发送的子项执行请求,执行部署在目标区块链系统的、子项对应的子合约,能够提高子合约执行的安全性。

s103的一个实施方式为:

将上述执行信息提交到上述目标区块链系统进行存储,以触发上述部署在上述目标区块链系统的上述子合约根据上述存储在上述目标区块链系统的执行信息进行执行。

s103的一个实施方式为:

将上述执行信息提交到上述目标区块链系统进行存储,读取上述部署在上述目标区块链系统的上述子合约,根据上述存储在上述目标区块链系统的执行信息执行上述读取的子合约。

可见,本实施方式利用执行信息执行部署在上述目标区块链系统中的子合约,确保了子合约执行的安全性。

上述将上述执行信息提交到上述目标区块链系统进行存储,读取上述部署在上述目标区块链系统的上述子合约,根据上述存储在上述目标区块链系统的执行信息执行上述读取的子合约,包括:

根据上述子合约在上述目标区块链系统的存储位置,将上述执行信息提交到上述目标区块链系统进行存储,并获取上述执行信息在上述目标区块链系统的存储位置;

根据上述子合约在上述目标区块链系统的存储位置,从上述目标区块链系统中读取上述子合约;

根据上述执行信息在上述目标区块链系统的存储位置,从上述目标区块链系统中读取上述执行信息;

根据上述读取的子合约和上述执行信息,执行上述子合约。

需要说的是,本实施方式的执行信息也可以在执行上述子合约前进行存储,也可以在执行完子合约后进行存储。

可见,本实施方式将执行信息存在目标区块链系统中,不仅能够控制上述执行信息对应的处方被有序地执行,而且也能使目标执行信息不容易被篡改。

举例而言,以一次注射为例,需要扫描患者的二维码(唯一编码),以及药剂的二维码(唯一编码),将这些执行信息(患者姓名,患者唯一id、药品唯一id、医务人员)作为一个交易提交到区块链存储(会得到该交易的地址address)。假设合约本身的区块链地址是addr1,合约的实例对象为contract,则,调用:

contract=read_contract_from_adress(addr1);//从地址读取合约并建立实例contract->excute_once(address);//执行一次该合约

在上述根据上述子项的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约之后,即s103之后,上述方法还包括:

当上述子合约执行失败时,进行处方异常执行提醒;

其中:

上述执行信息与上述合约输入数据不匹配时,上述子合约执行失败,上述子合约执行失败。

假设执行信息中的药品id和合约输入数据中的药品id不一致时,则子合约执行失败,将进行处方异常提醒,通知处方执行者即医护人员予以注意,因此,可以精准控制处方子项的执行,有效保证处方的安全执行。

具体的,进行处方异常执行提醒包括:

方式1,提供异常执行提醒窗口,上述异常执行提醒窗口中显示有异常执行提醒信息,上述异常执行提醒信息包括错误码和/或文本说明;其中,可以对执行失败原因用错误码标识,比如,错误码01表示药品错误。

方式2,以播放语音的方式进行处方异常执行提醒。

方式3,以点亮或闪烁报警灯的方式进行处方异常执行提醒。

具体报警方式不限。

在s103之后的一种实施方式为:确定上述子合约是否完成,当上述子合约未在第一预设时间内完成时,则进行处方异常执行提醒。

在s103之后的一种实施方式为

具体异常执行提醒方式请见上文描述。

确定上述智能合约包括的子合约是否全部完成,其中,当上述智能合约包括的子合约全部完成时,上述智能合约完成,当上述智能合约未在第二预设时间内时完成时,则进行处方异常执行提醒。

可见,本实施方式通过确定上述子合约的完成情况,并对异常执行情况进行提醒,使得智能合约的执行更加完善,也有利于第一时间发现未能够成功执行的子合约。

上述确定上述子合约是否完成的一种实施方式为:

获取上述子合约的总执行次数;

确定上述子合约的总执行次数是否等于上述子合约对应的子项的总执行次数,当上述子合约的总执行次数等于上述子项的总执行次数时,确定上述子合约完成。

可见,本实施方式通过上述子合约的总执行次数与上述子合约对应的子项的总执行次数的对应关系,确定子合约的完成情况,实施过程既简单又准确。

一种实施方式为:上述子合约的执行记录中包括上述子合约的总执行次数;

上述获取上述子合约的总执行次数包括:

根据上述子合约在上述目标区块链系统中的存储位置,遍历上述目标区块链系统存储的、上述子合约对应的执行记录,得到上述子合约的总执行次数;

其中,上述子合约第一次执行的执行记录作为上述子合约的级联交易被提交至上述目标区块链系统存储,第一次执行后,上述子合约每次执行的执行记录作为上述子合约的上一次执行的执行记录的级联交易被提交到上述目标区块链存储。

可见,本实施方式获取上述子合约的总执行次数的实施方式,有助于防止还存在未被执行的子合约,提高了智能合约的执行效果。

基于上述对执行信息的描述,现举一执行信息获取的示例:针对智能合约中的每个子合约,获取用户发送的执行请求;

显示执行请求对应子项对应的第一预设界面,获取目标执行信息,上述目标执行信息包括患者姓名、患者id、子项id和医务人员信息,上述第一预设界面用于提示用户扫描或输入执行信息;

在获取目标执行信息后,执行上述子项对应的子合约。

可见,本实施方式针对智能合约中的每个子合约,按照用户发送的执行请求,执行上述子项对应的子合约,并调用目标区块链系统存储目标执行信息,不仅能够控制上述子项被有序地执行,而且也能使目标执行信息不容易被篡改。

基于上述对智能合约的描述可知可以设置多个功能接口,现对各功能接口举一示例进行详细描述,具体为:

根据上述执行请求,显示子项对应的第二预设界面,获取目标信息,上述第二预设界面用于提示用户扫描或输入目标信息,上述目标信息包括患者姓名和/或患者id;

利用上述子合约在上述目标区块链系统中的存储位置,从上述目标区块链系统中调用上述子合约;

在调用子合约后,调用第一预设接口,第一预设接口用于检查子合约是否可执行的接口;

基于上述第一预设接口,当所获得的目标信息与上述子合约的输入数据匹配时,则将上述子合约标定为可执行;

显示执行请求对应子项对应的第一预设界面,获取目标执行信息,上述目标执行信息包括患者姓名和/或患者id、子项id和医务人员信息,上述第一预设界面用于提示用户扫描或输入目标执行信息;

在获取目标执行信息后,执行上述子合约;

当上述子合约执行后,调用第二预设接口,记录上述子合约的执行次数,上述次数值为子合约的执行次数,第二预设接口用于记录子合约被执行一次的接口;

将上述目标执行信息和记录的子合约的执行次数作为上述子合约的目标数据存储在目标区块链系统中。

在上述在执行子合约后,调用第二预设接口,记录上述子合约的执行次数之后,上述方法还包括:

在记录上述子合约的次数值后,调用第三预设接口,第三预设接口用于检查子合约是否被执行完毕的接口;

利用上述第三预设接口,获取子合约的输入数据包括的总执行次数,当上述子合约包括的总执行次数等于上述子合约的执行次数时,则将上述子合约标定为执行完毕;

当上述子合约包括的总执行次数不等于上述子合约的执行次数时,执行显示子项对应的第一预设界面,获取目标执行信息的步骤。

可见,本实施方式通过调用第三预设接口检验上述第一子合约是否被执行完毕,能够精确控制上述智能合约被快速、有序地执行,也避免智能合约被篡改的行为。

值得一提的是,本发明实施例提供的方法通过将目标处方中每个子项生成的智能合约中对应的子合约部署在目标区块链系统中,在执行智能合约的每个子合约后,通过调用第一预设接口、第二预设接口和第三预设接口,以使该子合约有秩序地顺利完成子合约的执行,且能够精准控制处方的执行、药品的使用和药品剂量的使用。

在上述根据上述子项的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约之后,上述方法还包括:

当上述子合约执行失败时,进行处方异常执行提醒;

其中:

上述执行信息与上述合约输入数据不匹配时,上述子合约执行失败,上述子合约执行失败。

上进行处方异常执行提醒包括:

提供异常执行提醒窗口,上述异常执行提醒窗口中显示有异常执行提醒信息,上述异常执行提醒信息包括错误码和/或文本说明;

和/或

以播放语音的方式进行处方异常执行提醒;

和/或

以点亮或闪烁报警灯的方式进行处方异常执行提醒。

可见,本实施方式通过通过显示预设错误码,以备用户自查该错误原因,减少了该处方异常执行事件的占用空间,也易于用户熟记该错误码对应的错误原因,以备用户快速处理,播放语音、点亮或闪烁报警灯的方式,使用户能够在第一时间获悉该异常执行事件。

进行处方异常执行提醒还可以包括:当所获得的目标信息与上述子合约对应的输入数据不匹配时,则将上述子合约标定为不可执行,并将第一报警事件以预设报警方式发送到用户的客户端以进行显示,其中,上述第一报警事件是由上述子合约不可执行生成的报警事件。

需要说明的是预设报警方式可以预先设置为邮件或短信等方式。

可见,本实施方式通过预设报警方式如邮件方式向客户端发送第一报警事件,以备用户随时都可以阅读该邮件,即使用户忙于其他事件,也不会错过该第一报警事件,以备用户快速处理。

当上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储,可以保证子合约产生的数据不被篡改,保证了数据的真实性和一致性。

一种实施方式,上述智能合约还包括主合约,用于确定各上述子合约是否已经完成;

上述确定上述智能合约包括的子合约是否全部完成包括:

执行上述部署在上述目标区块链系统的上述主合约,以确定各上述子合约是否已经完成。

其中,该主合约可以包括至少一个功能接口,具体为:根据主合约在目标区块链系统中的存储位置,从上述目标区块链系统中获取主合约;

当执行上述主合约时,调用上述主合约的第五预设接口;

利用第五预设接口,检查上述主合约中的各个子合约是否在预设时间内被全部完成;

若未全部完成,将预设的提醒信息生成第二报警事件,并将上述第二报警事件发送给用户的客户端进行显示,其中,上述第二报警事件是由上述智能总合约在预设时间内未完成的子项生成的报警事件。

可见,本实施方式通过通过部署智能主合约在目标区块链中,以备检查智能合约中全部子合约是否全部执行成功,针对未全部执行完毕的处方,生成第二报警事件进行提醒,进而使得智能合约更加能够有序地顺利完成,并采用目标区块链系统记录子合约执行过程产生的数据,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

上述利用第五预设接口,检查上述智能合约中的所有子合约是否在预设时间内被全部完成,一种实施方式包括:

针对智能合约中每个子合约,根据每个子合约对应执行次数在上述目标区块链系统中的存储位置,遍历在目标区块链系统中每个子合约对应执行次数的交易,将每个目标数据对应交易的次数进行累加,得到总交易次数;

通过判断上述总交易次数是否等于目标执行次数以检查上述智能合约中的所有子合约是否在预设时间内被全部完成,上述目标执行次数为上述智能合约中每个子合约包括的总执行次数的总和。

可见,本实施方式通过遍历在目标区块链系统中每个子合约对应目标数据的交易,进而判断上述总交易次数是否等于目标执行次数,以用于检查所有子合约是否在预设时间内被全部完成,有助于防止还存在未被执行的子合约,提高了智能合约的执行效果。

由此可见,本发明实施例提供的方法通过将目标处方生成的智能合约部署在预设的目标区块链系统中,并在上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

举例而言,主合约cs和子合约ci的代码如下:

每个子合约类ci都需要实现如上几个接口方法:

functionshould_execute()。用于检查该合约是否可以执行。是返回true,否则反馈false;

functionexecute_once(stringexecute_address)。用于记录执行了一次该合约。参数execute_address为执行信息在区块链上的存储地址(交易地址)。一个子合约可以被执行多次。例如注射液每日一次,开了3天,这个子合约应该被每天执行一次,供3次。返回true表示执行信息无误并记录成功,否则返回false。

functionis_done()。用于检查该合约是否执行完毕。

其中,send_transaction()函数会将该子项的一次执行记录作为一次级联交易提交到区块链存储。每一笔级联交易都会将上一个级联交易作为其输入交易,第一个级联交易的输入交易为合约本身的交易。这样,只需要从头到尾读取所有级联交易,就可以知道合约的内部状态数据的变化和最终值。例如,this->count在第一笔关联交易中记录的是1,在其后的某一笔记录记录为2,那么最终值就是2.

cs的接口同ci,但实现不同。cs并不需要具体实现execute_once(),因为具体子项的执行在子合约中。也因此cs的is_done()则检查每一个子项是否已经完成。

图3为本发明实施例提供的处方执行方法的第二种流程图,应用于医院信息系统侧的服务器或客户端,上述方法包括:

s201,解析待执行的目标处方,得到合约输入数据;

其中,该目标处方可以从生成有效目标处方对应的客户端读取。

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

s202,根据上述第一子合约的合约输入数据和预设的程序代码,生成第一子合约;上述智能合约包括至少两个子合约;上述至少两个子合约包括第一子合约和第二子合约;

其中,第一子合约为智能合约的第一个子合约,第二子合约为智能合约中非第一个子合约的合约。

s203,将上述第一子合约存储在上述预设的目标区块链系统中,并获取上述第一子合约在上述目标区块链系统中的存储位置;

其中,上述存储位置由区块号和交易编码唯一确定;

第一子合约为智能合约部署的第一个子合约;

此步骤是将第一子合约部署在目标区块链系统中,以备防止被篡改,保证第一子合约中输入数据的真实性。

s204,根据上述第二子合约的合约输入数据和预设的程序代码,生成第二子合约;

可以理解为:由于第二子合约不是第一个待生成的第一个子合约,因此该第二子合约有上一次子合约,则该第二子合约的输入数据中的开始时刻为上一个子合约的执行时间,以备执行的第二子合约是否超过预设间隔时间,以备决定是否需要触发提醒事件,该提醒事件是用于提醒医护人员或患者是否该执行该第二子合约。

s205,根据上述第一子合约在上述目标区块链系统的存储位置,将上述第二子合约存储在上述预设的目标区块链系统,以使上述第一子合约和上述第二子合约在上述目标区块链系统关联存储,并获取上述第二子合约在上述目标区块链系统中的存储位置;

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

另外,每当一份子合约被提交到目标区块链系统中存储时,都会得到该目标区块链系统的返回值,该返回值为该子合约在目标区块链系统中的存储位置。

s206,确定是否需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

该步骤可以提高执行子合约的安全性,提高用户的体验效果。

s207,当确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约时,获取上述子项的执行信息,并根据上述执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

s208,当确定不需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约时,结束。

由此可见,本发明实施例提供的方法将第一子合约和第二子合约有秩序地部署在目标区块链中,并通过获取的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约,使得能够精准控制处方的执行和药品、剂量的使用,并在上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

图4为本发明实施例提供的处方执行方法的第三种流程图,上述方法包括:

s301,解析待执行的目标处方,得到合约输入数据,其中,上述目标处方包括至少一个子项;

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

s302,根据上述第一子合约的合约输入数据和预设的程序代码,生成第一子合约;上述智能合约包括至少两个子合约;上述至少两个子合约包括第一子合约和第二子合约;

s303,获取操作人预设的密钥,根据操作人预设的密钥对上述生成的智能合约进行签名;

其中,预设的密钥的获取可以根据操作人在所属机构的编码确定该操作人的预设的密钥,操作人的编码可以被存放在预设的配置文件。

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

基于对预设密钥的描述可知,根据操作人对应的编码便可获知该操作人的身份,从而利用密钥对智能合约进行签名,该密钥为事先设置好的密钥,每个操作人均有密钥,由此可以保证操作人对数据内容即该智能合约和时间的不可抵赖性。

s304,获取患者预设的密钥,根据上述患者预设的密钥对上述操作人签名后的智能合约进行签名;

本步骤中,使用患者预设的密钥对智能合约和操作人对应的签名进行签名,由此可以保证机构对于数据内容即该智能合约和其操作人的不可抵赖性。

s305,获取上述操作人和上述患者的签名后的智能合约的哈希值,将上述哈希值提交至上述目标区块链系统进行存储;

需要说明的是,创建该智能合约的区块链账户即签名后的智能合约使用多重签名,保证了医院和患者对合约内容的不可抵赖,而且后续对该智能合约状态的修改均需要双方的共同签名才可以,从而避免了该目标处方被施加到错误的患者身上.

将签名后的智能合约的哈希值进行存储,以防止医院或患者对该智能合约内容的抵赖。

s306,根据哈希值的存储位置,将上述第一子合约存储在上述预设的目标区块链系统中,并获取上述第一子合约在上述目标区块链系统中的存储位置;

s307,根据上述第二子合约的合约输入数据和预设的程序代码,生成第二子合约;

s308,根据上述第一子合约在上述目标区块链系统的存储位置,将上述第二子合约存储在上述预设的目标区块链系统,以使上述第一子合约和上述第二子合约在上述目标区块链系统关联存储,并获取上述第二子合约在上述目标区块链系统中的存储位置;

s309,确定是否接收到用户发送的子项执行请求,当接收到用户发送的子项执行请求时,确定是否需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

其中,子项执行请求为用于执行某一子项的请求,通过执行请求也可以获知该执行请求是哪一个用户发送,从而获得用户的执行信息。

s310,当确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约时,获取上述子项的执行信息,并根据上述执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

根据用户发送的请求,获取该子项的执行信息,该执行信息的获取可以通过用户输入或扫描获取需要的执行信息,也可以解析用户发送的执行请求获取需要的执行信息。

s311,获取上述子合约的总执行次数;

s312,确定上述子合约的总执行次数是否等于上述子合约对应的子项的总执行次数;

s313,当上述子合约的总执行次数等于上述子项的总执行次数时,确定上述子合约完成;

s314,当上述子合约的总执行次数不等于上述子项的总执行次数时,则进行处方异常执行提醒。

由此可见,本发明实施例提供的方法通过将目标处方中每个子项生成的智能合约中对应的子合约部署在目标区块链系统中,在每次执行智能合约对应的交易时设置了多重签名,以备医疗机构和患者对合约内容均不可抵赖,从而避免了目标处方被施加到错误的患者身上,根据获取的执行信息,执行智能合约的每个子合约后,执行记录被提交至目标区块链系统中,以使该子合约有秩序地顺利完成子合约的执行,且能够精准控制处方的执行、药品的使用和药品剂量的使用,且通过检查智能合约中全部子合约是否全部执行成功,针对未全部执行完毕的处方,生成进行处方异常执行提醒,进而使得智能合约更加能够有序地顺利完成,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

与上述处方执行方法相对应,本申请实施例还提供了处方执行装置。

图5为本发明实施例提供的处方执行方法的一种结构示意图,上述装置包括:

解析模块401,用于解析待执行的目标处方,得到合约输入数据,其中,上述目标处方包括至少一个子项;

智能合约生成模块402,用于根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,其中,上述智能合约包括至少一个子合约,一个子项对应一个子合约;

合约执行模块403,用于根据上述子项的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约;其中,当上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储。

一种实施方式中,上述装置还包括:

处方提醒模块,用于当上述子合约执行失败时,进行处方异常执行提醒;

其中:

上述执行信息与上述合约输入数据不匹配时,上述子合约执行失败,上述子合约执行失败。

一种实施方式中,上述智能合约包括至少两个子合约;

上述至少两个子合约包括第一子合约和第二子合约;

上述智能合约生成模块,具体用于:

根据上述第一子合约的合约输入数据和预设的程序代码,生成第一子合约;

将上述第一子合约存储在上述预设的目标区块链系统中,并获取上述第一子合约在上述目标区块链系统中的存储位置;

根据上述第二子合约的合约输入数据和预设的程序代码,生成第二子合约;

根据上述第一子合约在上述目标区块链系统的存储位置,将上述第二子合约存储在上述预设的目标区块链系统,以使上述第一子合约和上述第二子合约在上述目标区块链系统关联存储,并获取上述第二子合约在上述目标区块链系统中的存储位置。

一种实施方式中,上述装置还包括:

合约执行确定模块,用于确定是否需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

上述合约执行模块,用于:

当确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约时,获取上述子项的执行信息,并根据上述执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

一种实施方式中,上述合约执行确定模块包括:

第一合约执行确定子模块,用于确定是否接收到用户发送的子项执行请求,当接收到用户发送的子项执行请求时,确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

或者,

第二合约执行确定子模块,用于确定是否接收到子项的执行信息,当接收到子项的执行信息时,确定需要执行上述部署在上述目标区块链系统的、上述子项对应的子合约。

一种实施方式中,上述合约执行模块包括:

合约第一执行子模块,用于将上述执行信息提交到上述目标区块链系统进行存储,以触发上述部署在上述目标区块链系统的上述子合约根据上述存储在上述目标区块链系统的执行信息进行执行;

或者,

合约第二执行子模块,用于将上述执行信息提交到上述目标区块链系统进行存储,读取上述部署在上述目标区块链系统的上述子合约,根据上述存储在上述目标区块链系统的执行信息执行上述读取的子合约。

一种实施方式中,上述合约第二执行子模块包括:

执行信息提交单元,用于根据上述子合约在上述目标区块链系统的存储位置,将上述执行信息提交到上述目标区块链系统进行存储,并获取上述执行信息在上述目标区块链系统的存储位置;

子合约读取单元,用于根据上述子合约在上述目标区块链系统的存储位置,从上述目标区块链系统中读取上述子合约;

执行信息读取单元,用于根据上述执行信息在上述目标区块链系统的存储位置,从上述目标区块链系统中读取上述执行信息;

子合约执行单元,用于根据上述读取的子合约和上述执行信息,执行上述子合约。

一种实施方式中,上述装置还包括:

子合约完成第一确定模块,用于确定上述子合约是否完成;第一处方提醒模块,用于当上述子合约未在第一预设时间内完成时,则进行处方异常执行提醒。

和/或

子合约完成第二确定模块,用于确定上述智能合约包括的子合约是否全部完成,其中,当上述智能合约包括的子合约全部完成时,上述智能合约完成,

第二处方提醒模块,用于当上述智能合约未在第二预设时间内时完成时,则进行处方异常执行提醒。

一种实施方式中,上述子合约完成第一确定模块包括:

总执行次数子模块,用于获取上述子合约的总执行次数;

子合约完成确定子模块,用于确定上述子合约的总执行次数是否等于上述子合约对应的子项的总执行次数,当上述子合约的总执行次数等于上述子项的总执行次数时,确定上述子合约完成。

一种实施方式中,上述子合约的执行记录中包括上述子合约的总执行次数;

所述总执行次数子模块,用于:

根据上述子合约在上述目标区块链系统中的存储位置,遍历所述目标区块链系统存储的、所述子合约对应的执行记录,得到所述子合约的总执行次数;

其中,所述子合约第一次执行的执行记录作为所述子合约的级联交易被提交至所述目标区块链系统存储,第一次执行后,所述子合约每次执行的执行记录作为上述子合约的上一次执行的执行记录的级联交易被提交到上述目标区块链存储。

一种实施方式中,上述智能合约还包括主合约,用于确定各上述子合约是否已经完成;

上述子合约完成第二确定模块,用于:

执行上述部署在上述目标区块链系统的上述主合约,以确定各上述子合约是否已经完成。

一种实施方式中,上述处方提醒模块包括:

异常第一提醒子模块,用于提供异常执行提醒窗口,上述异常执行提醒窗口中显示有异常执行提醒信息,上述异常执行提醒信息包括错误码和/或文本说明;

和/或

异常第二提醒子模块,用于以播放语音的方式进行处方异常执行提醒;

和/或

异常第三提醒子模块,用于以点亮或闪烁报警灯的方式进行处方异常执行提醒。

一种实施方式中,上述合约输入数据包括上述子合约的合约输入数据;

上述子合约的合约输入数据包括患者id、子项id、执行时间信息;

上述子项的执行信息包括患者id、子项id、执行时间信息;

上述执行信息与上述合约输入数据不匹配包括以下至少一种:

上述执行信息中的子项id与上述合约输入数据中的子项id不同;

上述执行信息中的执行时间信息与上述合约输入数据中的执行时间信息不对应。

一种实施方式中,智能合约生成模块包括:

第一签名子模块,用于获取操作人预设的密钥,根据操作人预设的密钥对上述生成的智能合约进行签名;

第二签名子模块,用于获取患者预设的密钥,根据上述患者预设的密钥对上述操作人签名后的智能合约进行签名;

部署模块,用于将所述操作人和所述患者的签名后的智能合约提交至所述目标区块链系统进行存储,或者,获取所述操作人和所述患者的签名后的智能合约的哈希值,将所述哈希值和所述生成的智能合约提交至所述目标区块链系统进行关联存储。

由此可见,本发明实施例提供的装置通过将目标处方生成的智能合约部署在预设的目标区块链系统中,并在上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

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

具体的,处方执行方法包括:

解析读取的目标处方,得到待生成智能合约的输入数据,其中,目标处方为患者交完费后被标定为有效的处方,目标处方至少包括一个子项;

根据得到的输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,其中,智能合约包括多个子合约,一个子项对应一个子合约;

针对智能合约中的每个子合约,根据用户发送的执行请求,执行第一子合约,其中,执行请求为执行第一子合约的请求,第一子合约为第一子项对应的子合约,第一子项为目标处方中任一子项;

采用目标区块链系统记录第一子合约执行过程产生的数据。

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

由此可见,执行本实施例提供的电子设备,通过通过将目标处方生成的智能合约部署在预设的目标区块链系统中,并采用目标区块链系统记录上述第一子合约执行过程产生的数据,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

上述的相关内容处方执行方法的实施方式与前述方法实施例部分提供的处方执行方式相同,这里不再赘述。

本发明实施例还提供了一种电子设备,如图6所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,

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

处理器501,用于执行存储器xx3上所存放的程序时,实现本发明实施例提供的处方执行方法。

具体的,处方执行方法包括:

解析待执行的目标处方,得到合约输入数据,其中,上述目标处方包括至少一个子项;

根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,其中,上述智能合约包括至少一个子合约,一个子项对应一个子合约;

根据上述子项的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

其中,当上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储。

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

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

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

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

由此可见,执行本实施例提供的电子设备,通过将目标处方生成的智能合约部署在预设的目标区块链系统中,并在上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

上述的相关内容处方执行方法的实施方式与前述方法实施例部分提供的处方执行方式相同,这里不再赘述。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当上述计算机程序被处理器执行时,使得计算机执行上述实施例处方执行方法。

具体的,处方执行方法包括:

解析待执行的目标处方,得到合约输入数据,其中,上述目标处方包括至少一个子项;

根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,其中,上述智能合约包括至少一个子合约,一个子项对应一个子合约;

根据上述子项的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

其中,当上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储。

由此可见,执行本实施例提供的计算机可读存储介质中存储的应用程序时,通过将目标处方生成的智能合约部署在预设的目标区块链系统中,并在上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

上述的相关内容处方执行方法的实施方式与前述方法实施例部分提供的处方执行方式相同,这里不再赘述。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例处方执行方法。

具体的,处方执行方法包括:

解析待执行的目标处方,得到合约输入数据,其中,上述目标处方包括至少一个子项;

根据得到的合约输入数据,生成智能合约,并将生成的智能合约部署在预设的目标区块链系统中,其中,上述智能合约包括至少一个子合约,一个子项对应一个子合约;

根据上述子项的执行信息,执行上述部署在上述目标区块链系统的、上述子项对应的子合约;

其中,当上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储。

由此可见,执行本实施例提供的计算机程序产品时,通过将目标处方生成的智能合约部署在预设的目标区块链系统中,并在上述子合约执行后,上述子合约的执行记录被提交至上述目标区块链系统进行存储,不仅提高了目标处方执行的安全性,还提高了目标处方执行效率。

上述的相关内容处方执行方法的实施方式与前述方法实施例部分提供的处方执行方式相同,这里不再赘述。

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

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

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

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

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