基于区块链的数据存储与验证方法、装置及存储介质与流程

阅读: 评论:0



1.本公开涉及区块链技术领域,尤其涉及一种基于区块链的数据存储与验证方法、装置及存储介质。


背景技术:



2.dicom(digital imaging and communications in medicine)即医学数字成像和通信,是医学图像和相关信息的国际标准。在医疗领域中,患者的医学图像都是采用dicom文件格式进行存储的。这个格式包含关于患者的phi(protected health information)信息,例如姓名、性别、年龄,以及其他图像相关信息,例如捕获并生成图像的设备信息、医疗的一些上下文相关信息等。在应用场景中,使用医学图像设备生成dicom影像文件后,医护人员使用dicom阅读器(能够显示dicom影像的计算机软件)阅读并对影像中发现的问题进行诊断。由于单个的医学影像文件会占用大量内存,举例来说,一个患者的ct检查图像的数据量可以达到几百兆大小。一个患者的薄层扫描ct检查图像的数据量可以达到1g大小。所以海量的医疗数据中约80%的数据为医学影像数据。这些海量的医学影像数据对医疗发展具有重要的数据研究价值。
3.目前,部分地区建设了区域影像中心,归集存储了部分医疗机构提供的影像文件数据以供研究和学习。但是由于数据提供方的担心与顾虑,如数据安全、隐私保护和权责不清晰等问题,导致影像文件数据的共享与流转仍处于初级阶段。


技术实现要素:



4.为克服相关技术中存在的问题,本公开提供一种基于区块链的数据存储与验证方法、装置及存储介质。
5.根据本公开实施例的第一方面,提供一种基于区块链的数据存储与验证方法,所述方法包括:
6.响应于接收到数据提供方发送的dicom影像文件,从所述dicom影像文件中筛选目标数据元素,所述目标数据元素用于解读出所述dicom影像文件对应的影像,所述目标数据元素的数量少于所述dicom影像文件中数据元素的总数量;
7.根据所述目标数据元素构建多叉树;
8.将所述dicom影像文件存储于链下存储空间;
9.将所述dicom影像文件的文件id、所述多叉树、以及所述dicom影像文件在所述链下存储空间的存储地址存储于链上存储空间,其中,存储于所述链上存储空间的所述多叉树用于确定存储于所述链下存储空间的所述dicom影像文件是否有效。
10.可选地,所述目标数据元素的数量为多个,每一所述数据元素包括tag标识,所述根据所述目标数据元素构建多叉树,包括:
11.基于所述目标数据元素的目标tag标识所属的tag类别,将多个所述目标数据元素分成多个类集合,所述类集合与所述tag类别一一对应;
12.将各所述类集合对应的类哈希值作为所述多叉树的第二层类节点的节点哈希值,所述多叉树的第二层类节点与所述类集合一一对应;
13.对所有所述类哈希值进行哈希计算,得到所述多叉树的根节点的根哈希值。
14.可选地,所述根据所述目标数据元素构建多叉树,还包括:
15.针对每一所述类集合,按照预设数量n,对所述类集合中的所述目标数据元素进行分组,得到m个目标数据元素组,其中,m-1个目标数据元素组中的目标数据元素数量为n,一个目标数据元素组中的目标数据元素数量小于或等于n;
16.将各所述目标数据元素组对应的组哈希值作为所述类集合对应的第二层类节点下的第三层组节点的节点哈希值,所述类集合对应的第二层类节点下的第三层组节点与所述目标数据元素组一一对应;
17.其中,所述类集合对应的所述类哈希值是对所述类集合对应的第二层类节点下m个第三层组节点的节点哈希值进行哈希计算得到的。
18.可选地,所述根据所述目标数据元素构建多叉树,还包括:
19.针对每一所述目标数据元素组,对所述目标数据元素组中每一所述目标数据元素进行哈希计算,得到元素哈希值;
20.将各所述元素哈希值作为所述目标数据元素组对应的第三层组节点下的第四层元素节点的节点哈希值,所述目标数据元素组对应的第三层组节点下的第四层元素节点与所述目标数据元素组中的所述目标数据元素一一对应;
21.其中,所述目标数据元素组对应的所述组哈希值是对所述目标数据元素组对应的第三层组节点下所有第四层元素节点的节点哈希值进行哈希计算得到的。
22.可选地,所述多叉树为带值多叉树,相应地,所述根节点根据所述根哈希值和所述根节点下的叶子节点数量进行表征;
23.所述多叉树的第二层类节点根据对应的所述类哈希值和该第二层类节点下的叶子节点数量进行表征。
24.可选地,所述方法还包括:
25.响应于接收到数据查询方发送的dicom影像文件查询请求,确定所述查询请求中携带的目标文件id;
26.从链上查询所述目标文件id对应的目标存储地址和第一目标多叉树;
27.根据所述目标存储地址从所述链下存储空间获取目标dicom影像文件;
28.计算所述目标dicom影像文件对应的第二目标多叉树;
29.将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度;
30.在根据所述相似度的大小确定所述目标dicom影像文件有效的情况下,将所述目标dicom影像文件反馈给所述数据查询方。
31.可选地,所述第一目标多叉树和所述第二目标多叉树结构相同,且所述第一目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识和所述第二目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识相同,所述将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度,包括:
32.在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点相同的情况下,确定所述相似度为100%;
33.在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点不相同的情况下,针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四层元素节点的第一数量;
34.根据各所述tag类别下的所述第一数量、各所述tag类别的权重、以及所述第一目标多叉树的叶子节点总数计算得到所述相似度。
35.可选地,所述针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四层元素节点的第一数量,包括:
36.针对每一tag类别,比较所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点是否相同;
37.在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点相同的情况下,确定所述tag类别下的所述第一数量为0;
38.在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点不相同的情况下,确定所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点下相同位置上节点哈希值不相同的目标第三层组节点;
39.确定每一所述目标第三层组节点下,相同位置且节点哈希值不同的所述第四层元素节点的第二数量;并,
40.将各所述目标第三层组节点对应的所述第二数量的和值作为所述第一数量。
41.根据本公开实施例的第二方面,提供一种基于区块链的数据存储与验证装置,所述装置包括:
42.接收模块,用于响应于接收到数据提供方发送的dicom影像文件,从所述dicom影像文件中筛选目标数据元素,所述目标数据元素用于解读出所述dicom影像文件对应的影像,所述目标数据元素的数量少于所述dicom影像文件中数据元素的总数量;
43.构建模块,用于根据所述目标数据元素构建多叉树;
44.第一存储模块,用于将所述dicom影像文件存储于链下存储空间;
45.第二存储模块,用于将所述dicom影像文件的文件id、所述多叉树、以及所述dicom影像文件在所述链下存储空间的存储地址存储于链上存储空间,其中,存储于所述链上存储空间的所述多叉树用于确定存储于所述链下存储空间的所述dicom影像文件是否有效。
46.可选地,所述目标数据元素的数量为多个,每一所述数据元素包括tag标识,所述构建模块,包括:
47.分类子模块,用于基于所述目标数据元素的目标tag标识所属的tag类别,将多个所述目标数据元素分成多个类集合,所述类集合与所述tag类别一一对应;
48.第一执行子模块,用于将各所述类集合对应的类哈希值作为所述多叉树的第二层类节点的节点哈希值,所述多叉树的第二层类节点与所述类集合一一对应;
49.第一计算子模块,用于对所有所述类哈希值进行哈希计算,得到所述多叉树的根节点的根哈希值。
50.可选地,所述构建模块,还包括:
51.分组子模块,用于针对每一所述类集合,按照预设数量n,对所述类集合中的所述
目标数据元素进行分组,得到m个目标数据元素组,其中,m-1个目标数据元素组中的目标数据元素数量为n,一个目标数据元素组中的目标数据元素数量小于或等于n;
52.第二执行子模块,用于将各所述目标数据元素组对应的组哈希值作为所述类集合对应的第二层类节点下的第三层组节点的节点哈希值,所述类集合对应的第二层类节点下的第三层组节点与所述目标数据元素组一一对应;
53.其中,所述类集合对应的所述类哈希值是对所述类集合对应的第二层类节点下m个第三层组节点的节点哈希值进行哈希计算得到的。
54.可选地,所述构建模块,还包括:
55.第二计算子模块,用于针对每一所述目标数据元素组,对所述目标数据元素组中每一所述目标数据元素进行哈希计算,得到元素哈希值;
56.第三执行子模块,用于将各所述元素哈希值作为所述目标数据元素组对应的第三层组节点下的第四层元素节点的节点哈希值,所述目标数据元素组对应的第三层组节点下的第四层元素节点与所述目标数据元素组中的所述目标数据元素一一对应;
57.其中,所述目标数据元素组对应的所述组哈希值是对所述目标数据元素组对应的第三层组节点下所有第四层元素节点的节点哈希值进行哈希计算得到的。
58.可选地,所述多叉树为带值多叉树,相应地,所述根节点根据所述根哈希值和所述根节点下的叶子节点数量进行表征;
59.所述多叉树的第二层类节点根据对应的所述类哈希值和该第二层类节点下的叶子节点数量进行表征。
60.可选地,所述装置还包括:
61.确定模块,用于响应于接收到数据查询方发送的dicom影像文件查询请求,确定所述查询请求中携带的目标文件id;
62.查询模块,用于从链上查询所述目标文件id对应的目标存储地址和第一目标多叉树;
63.获取模块,用于根据所述目标存储地址从所述链下存储空间获取目标dicom影像文件;
64.计算模块,用于计算所述目标dicom影像文件对应的第二目标多叉树;
65.对比模块,用于将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度;
66.反馈模块,用于在根据所述相似度的大小确定所述目标dicom影像文件有效的情况下,将所述目标dicom影像文件反馈给所述数据查询方。
67.可选地,所述第一目标多叉树和所述第二目标多叉树结构相同,且所述第一目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识和所述第二目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识相同,所述对比模块,包括:
68.第一确定子模块,用于在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点相同的情况下,确定所述相似度为100%;
69.第二确定子模块,用于在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点不相同的情况下,针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四
层元素节点的第一数量;
70.第三计算子模块,用于根据各所述tag类别下的所述第一数量、各所述tag类别的权重、以及所述第一目标多叉树的叶子节点总数计算得到所述相似度。
71.可选地,所述第二确定子模块,包括:
72.比较子模块,用于针对每一tag类别,比较所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点是否相同;
73.第三确定子模块,用于在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点相同的情况下,确定所述tag类别下的所述第一数量为0;
74.第四确定子模块,用于在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点不相同的情况下,确定所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点下相同位置上节点哈希值不相同的目标第三层组节点;
75.第五确定子模块,用于确定每一所述目标第三层组节点下,相同位置且节点哈希值不同的所述第四层元素节点的第二数量;并,
76.第四计算子模块,用于将各所述目标第三层组节点对应的所述第二数量的和值作为所述第一数量。
77.根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的基于区块链的数据存储与验证方法的步骤。
78.根据本公开实施例的第四方面,提供一种装置,包括:
79.存储器,其上存储有计算机程序;
80.处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所提供的基于区块链的数据存储与验证方法的步骤。
81.本公开的实施例提供的技术方案可以包括以下有益效果:
82.在接收到数据提供方发送的dicom影像文件的情况下,从dicom影像文件中筛选目标数据元素,这些目标数据元素是用于解读出dicom影像文件对应的影像的数据,这些影像是对医疗发展具有重要的数据研究价值的核心数据。根据目标数据元素构建多叉树。将dicom影像文件存储于链下存储空间,并将dicom影像文件的文件id、多叉树、以及dicom影像文件在链下存储空间的存储地址存储于链上存储空间,其中,存储于链上存储空间的多叉树用于确定存储于链下存储空间的dicom影像文件是否有效。本公开这种方式,因将用于确定存储于链下存储空间的dicom影像文件是否有效的多叉树存储在区块链上,而能够基于区块链的特性防止多叉树被篡改,进而能够保障链下存储空间的dicom影像文件的有效性。
83.并且,由于目标数据元素的数量少于该dicom影像文件中数据元素的总数量,所以根据目标数据元素构建用于确定存储于链下存储空间的dicom影像文件是否有效的多叉树的这种方式,能够在不改变dicom影像文件对应的影像(即能够解读出dicom影像文件对应的影像)的前提下,允许链下存储空间的dicom影像文件中的部分数据丢失或被更改,例如允许用户为了确保病患的隐私信息不被公开而将dicom影像文件中的病患隐私信息进行掩码掩盖处理,从而保障病患的隐私安全。因此,本公开这种数据处理方式,能够在保障病患
的隐私安全的基础之上,确保dicom影像文件的影像有效、且不可被篡改,从而促进dicom影像文件的安全共享与流转。总而言之,采用本公开这种方式,能够在损失dicom影像文件中的部分数据的情况下,仍然能保障dicom影像文件的有效性。
84.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
85.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
86.图1是根据本公开一示例性实施例示出的一种dicom影像文件的文件结构示意图。
87.图2是根据本公开一示例性实施例示出的一种基于区块链的数据存储与验证方法的流程图。
88.图3是根据本公开一示例性实施例示出的一种多叉树示意图。
89.图4是根据本公开一示例性实施例示出的一种数据查询验证过程的流程图。
90.图5是根据本公开一示例性实施例示出的一种基于区块链的数据存储与验证装置的框图。
91.图6是根据本公开一示例性实施例示出的另一种基于区块链的数据存储与验证装置的框图。
具体实施方式
92.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
93.需要说明的是,本技术中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
94.为了便于本领域技术人员更加容易理解本公开的技术方案,下面先对本公开实施例中涉及的区块链技术和dicom影像文件的文件结构进行说明。
95.区块链,是一种按照时间顺序将数据区块组合而成的一种链式数据结构,构造了一个不可篡改和不可伪造的分布式账本。区块链基于密码学、p2p(peer-to-peer,点对点)技术、分布式共识算法等一系列计算机理论和技术,实现了在没有第三方节点介入的情况下,为交易提供安全的记账与存储服务。区块链技术正不断应用在诸多行业的应用场景中,是未来发展数字经济、构建新型信任体系不可或缺的技术之一。
96.dicom影像文件具有固定的文件结构。参见图1,dicom影像文件的文件结构包括导言、前缀、数据元素三部分。前缀部分固定为dicom,代表此文件为dicom格式的文件,若前缀部分不是此固定值,则说明文件损坏,或者代表这不是一个dicom影像文件。数据元素(dataelement)部分,各数据元素根据tag标识进行有序排列。
97.每一数据元素的结构包括tag标识、值表示法、数据长度、以及数据值四部分,其中
tag标识包括组号和元素号(排序依据)。tag标识是dicom协议里定义的数据字典,tag标识决定自身或整个文件的某些数据类型或自身数据元素的内容类别。
98.dicom协议中定义的tag标识约有两千个,在本公开实施例中,将dicom协议中的tag标识分成patient(表征患者相关信息)、study(表征检查相关信息)、series(表征检查序号相关信息)、image(表征影像相关信息)、common(表征其他相关信息)五个tag类别。
99.基于区块链的特性,为解决相关技术中存在的问题,本公开提出使用区块链存储dicom影像文件,以保障dicom影像文件的完整有效性。并采用相关技术中确保数据完整有效性的方法保障dicom影像文件的安全。相关技术中确保数据完整有效性的方法是,对完整的文件数据进行hash运算,得到默克尔根,将默克尔根存储在区块链上,将文件数据存储在区块链之外(即链下)。当对链下的文件数据进行完整有效性验证时,对链下的文件数据重新进行hash运算,得到新的默克尔根。将该新的默克尔根与链上的默克尔根进行比较,如果两者相同,则证明链下被验证的文件数据是完整、且有效(可用)的。如果两者不相同,则证明链下被验证的文件数据已经被篡改或损坏,链下被验证的文件数据不可信。但是,这种方式只能确定文件数据是否有效,而无法确定文件数据的有效程度。应解释的是,有效程度是指当前链下文件数据中的有效数据在原始文件数据中的占比。其中,当前链下文件数据中的有效数据是指与原始文件数据相同的数据部分。而通过比较当前链下文件数据与原始文件数据可确定当前链下文件数据中的有效数据。因此,在本公开实施例中,被验证的文件数据的有效程度是指该被验证的文件数据与原始文件数据的相似度。
100.相关技术中确保数据完整有效性的方法无法确定文件数据的有效程度的原因在于,相关技术中确保数据完整有效性的方法是对整个文件数据进行hash运算,得到默克尔根。该默克尔根只能代表整个文件数据这一整体,而无法代表其中的部分文件数据。那么,在默克尔根只能代表整个文件数据而无法代表部分文件数据的基础上,通过比较默克尔根的方式,只能确定整个文件数据为有效或者无效。在确定整个文件数据无效时,因默克尔根只能代表整个文件数据而无法代表部分文件数据,而无法获知是哪些数据导致整个文件数据无效的,且也无法获知导致整个文件数据无效的数据占整个文件数据的百分比。
101.并且,在链上存储默克尔根之后,无法再基于应用层业务需求对链下存储的文件数据进行更改,如不能进行敏感数据掩码处理。因而这种方式局限性大、不灵活。
102.经过发明人研究发现,在dicom影像文件中的某些数据元素损坏的情况下,通过忽略该损坏的数据元素,仍然可解读出该dicom影像文件的影像,而影像是对医疗发展具有重要的数据研究价值的核心数据。示例地,patient类别下的数据元素可包括patientname(患者姓名数据元素)、patientid(患者id数据元素)、patientsex(患者性别数据元素)、patientage(患者年龄数据元素)、patientaddress(患者地址数据元素)、patienttelephonenumbers(患者电话号码数据元素)等。在dicom影像文件中的patientaddress、patienttelephonenumbers等数据元素丢失时,对解读该dicom影像文件的影像的影响可以忽略不计。有鉴于此,本公开结合对dicom影像文件的结构特征的发现,提出一种新的、且适应于dicom影像文件的基于区块链的数据存储与验证方法、装置及存储介质。
103.下面对本公开的技术方案进行详细的实施例说明。
104.图2是根据一示例性实施例示出的一种基于区块链的数据存储与验证方法的流程
图。该基于区块链的数据存储与验证方法可应用于数据共享系统、数据共享平台、以及区块链网络上的任意节点等,如图2所示,基于区块链的数据存储与验证方法可以包括以下步骤。
105.s11、响应于接收到数据提供方发送的dicom影像文件,从所述dicom影像文件中筛选目标数据元素,所述目标数据元素用于解读出所述dicom影像文件对应的影像,所述目标数据元素的数量少于所述dicom影像文件中数据元素的总数量。
106.本公开实施例中的从dicom影像文件解读出的影像可以是指医学图像设备扫描成像的图像,该图像由像素点及每一像素点的值构成。在一些实施方式中,从dicom影像文件解读出的影像可以是指包括医学图像设备扫描成像的图像以及可辅助医护人员辨别该图像中的图像内容的相关图像信息,例如患者性别、年龄等相关图像信息。
107.应说明的是,相同的图像内容,可能针对不同年龄、不同性别的患者来说,因年龄、性别等对应指标不同,而医生可能得出不同的诊断结果。所以在本公开实施例中,可根据业务层的需求,预先定义哪些数据元素是目标数据元素。示例地,在接收到数据提供方发送的dicom影像文件的情况下,根据业务层的需求,或根据预先定义的目标tag标识集合,从dicom影像文件中筛选目标数据元素,这些目标数据元素用于解读出dicom影像文件对应的影像,目标数据元素的数量少于dicom影像文件中数据元素的总数量,比如,目标数据元素可以不包括patientname、patientaddress、patienttelephonenumbers等数据元素。目标数据元素可以包括slice thickness(层厚)、columns(图像行数)、pixel spacing(像素间距)、window center(窗位)、window wide(窗宽)等数据元素。
108.s12、根据所述目标数据元素构建多叉树。
109.应解释的是,二叉树中每个节点有一个数据项、以及最多有两个子节点。而如果允许树的每个节点可以有两个以上的子节点,那么这种树就称为n阶的多叉树,或者称为n叉树。
110.s13、将所述dicom影像文件存储于链下存储空间。
111.s14、将所述dicom影像文件的文件id、所述多叉树、以及所述dicom影像文件在所述链下存储空间的存储地址存储于链上存储空间,其中,存储于所述链上存储空间的所述多叉树用于确定存储于所述链下存储空间的所述dicom影像文件是否有效。
112.dicom影像文件的文件id用于唯一标识该dicom影像文件。dicom影像文件的文件id可以是在接收到数据提供方发送的dicom影像文件之后生成的,也可以是数据提供方提供的。
113.由于树的高度是命中查的一个不可抗拒的时间下限。所以,在本公开实施例中,可设置多叉树的高度为4,以在根据多叉树确定链下dicom影像文件是否有效时,缩短数据处理时长(即缩短时间复杂度)。
114.采用本公开这种方式,因将用于确定存储于链下存储空间的dicom影像文件是否有效的多叉树存储在区块链上,而能够基于区块链的特性防止多叉树被篡改,进而能够保障链下存储空间的dicom影像文件的有效性。
115.并且,由于目标数据元素的数量少于该dicom影像文件中数据元素的总数量,所以根据目标数据元素构建的用于确定存储于链下存储空间的dicom影像文件是否有效的多叉树,能够用于判定dicom影像文件对应的影像(即能够解读出dicom影像文件对应的影像的
目标数据元素)是否有效,并在此基础上,链上存储的多叉树允许链下存储空间的dicom影像文件中的未参与构建该多叉树的数据丢失或被更改。具体解释如下:多叉树能够判断构建该多叉树的目标数据元素是否有效,而无法判断未参与构建该多叉树的其他数据元素是否有效。也就是说,除了目标数据元素之外的其他数据元素不管是被更改还是未被更改,都影响不了根据多叉树对dicom影像文件的有效性的判定。因此,在区块链上存储本公开的这种多叉树,能够用于避免目标数据元素被用户更改而造成的隐患,且允许除了目标数据元素之外的其他数据元素被更改。例如允许用户/应用软件为了确保病患的隐私信息(如姓名、地址等信息)不被公开而将dicom影像文件中的病患隐私信息进行掩码掩盖处理,从而保障病患的隐私安全。因此,本公开这种数据处理方式,能够在用户有隐私保护需求的情况下既保障病患的隐私安全,又能确保dicom影像文件的影像有效、且不可被篡改,从而可促进dicom影像文件的安全共享与流转。总而言之,采用本公开这种方式,能够在损失dicom影像文件中的部分数据的情况下,仍然能保障dicom影像文件的有效性。
116.可选地,所述目标数据元素的数量为多个,每一所述数据元素包括tag标识,所述根据所述目标数据元素构建多叉树,包括:
117.基于所述目标数据元素的目标tag标识所属的tag类别,将多个所述目标数据元素分成多个类集合,所述类集合与所述tag类别一一对应;将各所述类集合对应的类哈希值作为所述多叉树的第二层类节点的节点哈希值,所述多叉树的第二层类节点与所述类集合一一对应;对所有所述类哈希值进行哈希计算,得到所述多叉树的根节点的根哈希值。
118.在本公开实施例中,将dicom协议中的tag标识分成patient(表征患者相关信息)、study(表征检查相关信息)、series(表征检查序号相关信息)、image(表征影像相关信息)、common(表征其他相关信息)五个tag类别。基于目标数据元素的目标tag标识所属的tag类别,将所有的目标数据元素分成五个类集合。类集合与tag类别一一对应。
119.将五个类集合对应的五个类哈希值作为多叉树的第二层类节点的节点哈希值,多叉树的第二层类节点数量为5个,多叉树的第二层类节点与类集合一一对应。
120.此处应说明的是,在本公开实施例中,为了便于描述多叉树的第二层节点与类集合的关系,将多叉树的第二层节点称为第二层类节点。多叉树的每一第二层类节点的父节点均是第一层节点(即根节点)。因此,对5个类哈希值进行哈希计算,可得到多叉树的根节点的根哈希值。示例地,假设第二层类节点的节点哈希值依次为ha(对应tag类别为patient的类集合)、hb(对应tag类别为study的类集合)、hc(对应tag类别为series的类集合)、hd(对应tag类别为image的类集合)、he(对应tag类别为common的类集合),多叉树的根节点的根哈希值的计算过程可以用公式h
root
=hash(ha||hb||hc||hd||he)表征。哈希计算方法可参见相关技术,本公开不作介绍。
121.其中,类集合对应的类哈希值的计算方式将在后文实施例中进行阐述。
122.可选地,所述根据所述目标数据元素构建多叉树,还包括:
123.针对每一所述类集合,按照预设数量n,对所述类集合中的所述目标数据元素进行分组,得到m个目标数据元素组,其中,m-1个目标数据元素组中的目标数据元素数量为n,一个目标数据元素组中的目标数据元素数量小于或等于n;将各所述目标数据元素组对应的组哈希值作为所述类集合对应的第二层类节点下的第三层组节点的节点哈希值,所述类集合对应的第二层类节点下的第三层组节点与所述目标数据元素组一一对应;其中,所述类
集合对应的所述类哈希值是对所述类集合对应的第二层类节点下m个第三层组节点的节点哈希值进行哈希计算得到的。
124.其中,预设数量n是指多叉树的每一第三层节点下的最大叶子节点数量。例如,n为7、8、9等正整数。m也为整数,m具体根据类集合中目标数据元素的数量和n确定。
125.以n为8为例进行举例说明,针对每一类集合,按照每8个目标数据元素为一组的分组方式,将该类集合分成m组,其中,前m-1个目标数据元素组中的目标数据元素数量为8,最后一个目标数据元素组中的目标数据元素数量小于或等于8。一种实施方式,在分组时,可根据每一目标数据元素的目标tag标识,将连续的每8个目标tag标识对应的目标数据元素分成一组。
126.在分组之后,将各目标数据元素组对应的组哈希值作为类集合对应的第二层类节点下的第三层组节点的节点哈希值,类集合对应的第二层类节点下的第三层组节点与目标数据元素组一一对应。
127.此处应说明的是,在本公开实施例中,为了便于描述多叉树的第三层节点与目标数据元素组的对应关系,将多叉树的第三层节点称为第三层组节点。
128.基于前述实施例中说明的一个第二层类节点对应一个类集合的对应关系,结合一个类集合可分成m个目标数据元素组、以及一个目标数据元素组对应一个第三层组节点的关系,可知,类集合对应的第二层类节点的子节点是该类集合下m个目标数据元素组对应的第三层组节点。
129.相应地,类集合的类哈希值是对该类集合下m个目标数据元素组对应的组哈希值进行哈希计算得到的。或者可理解为,类集合对应的类哈希值(即类集合对应的第二层类节点的节点哈希值)是对该类集合对应的第二层类节点下m个第三层组节点的节点哈希值进行哈希计算得到的。示例地,假设将类集合a分成了f、g、h、i四个目标数据元素组,对应的组哈希值依次为hf、hg、hh、hi。那么类集合a的类哈希值ha计算方式为ha=hash(hf||hg||hh||hi)。
130.其中,目标数据元素组对应的组哈希值的计算方式将在后文实施例中进行阐述。
131.可选地,所述根据所述目标数据元素构建多叉树,还包括:
132.针对每一所述目标数据元素组,对所述目标数据元素组中每一所述目标数据元素进行哈希计算,得到元素哈希值;将各所述元素哈希值作为所述目标数据元素组对应的第三层组节点下的第四层元素节点的节点哈希值,所述目标数据元素组对应的第三层组节点下的第四层元素节点与所述目标数据元素组中的所述目标数据元素一一对应;其中,所述目标数据元素组对应的所述组哈希值是对所述目标数据元素组对应的第三层组节点下所有第四层元素节点的节点哈希值进行哈希计算得到的。
133.其中,基于数据元素的结构,对目标数据元素进行哈希计算时,可以是对目标数据元素中的tag标识、值表示法、数据长度、以及数据值中的至少一者进行哈希计算。
134.示例地,假设目标数据元素组f包括目标数据元素d0、d1、d2、d3、d4、d5、d6、d7,对目标数据元素组f中每一目标数据元素进行哈希计算,得到元素哈希值依次为hash(d0)、hash(d1)、hash(d2)、hash(d3)、hash(d4)、hash(d5)、hash(d6)、hash(d7)。将各元素哈希值作为目标数据元素组f对应的第三层组节点下的第四层元素节点的节点哈希值,目标数据元素组f对应的第三层组节点下的第四层元素节点与目标数据元素组f中的目标数据元素d0、d1、d2、
d3、d4、d5、d6、d7一一对应。其中,目标数据元素组f对应的组哈希值hf是对目标数据元素组f对应的第三层组节点下所有第四层元素节点的节点哈希值hash(d0)、hash(d1)、hash(d2)、hash(d3)、hash(d4)、hash(d5)、hash(d6)、hash(d7)进行哈希计算得到的。计算过程可用公式hf=hash(hash(d0)||hash(d1)||...||hash(d7))表征。
135.此处应说明的是,在本公开实施例中,为了便于描述多叉树的第四层节点(即本公开中多叉树的叶子节点)与目标数据元素的关系,将多叉树的第四层节点称为第四层元素节点。
136.根据前述实施例中说明的一个目标数据元素组对应一个第三层组节点、结合一个目标数据元素组包括多个目标数据元素,一个目标数据元素对应一个第四层元素节点,可知,目标数据元素组对应的第三层组节点的子节点是该目标数据元素组下各目标数据元素对应的第四层元素节点。
137.基于前述实施例可知,本公开中的多叉树的高度为4,多叉树的第一层节点为根节点,第二层节点为第二层类节点,第三层节点为第三层组节点,第四层节点为第四层元素节点。第四层元素节点与目标数据元素一一对应。第三层组节点与目标数据元素组一一对应。第二层类节点与类集合一一对应。根据目标数据元素与目标数据元素组的从属关系可知第四层元素节点与第三层组节点的从属关系,根据目标数据元素组与类集合的从属关系可知第三层组节点与第二层类节点的从属关系。加之所有第二层类节点均从属于根节点,可知多叉树中节点与节点的连接关系,进而可构建得到完整结构的多叉树。示例地,如图3所示的多叉树。
138.应说明的是,在基于上述多叉树构建原理构建多叉树的过程中,可以是先对目标数据元素进行分类、分组处理,然后针对每一组下的目标数据元素进行哈希计算,以构建多叉树的第四层元素节点。再基于目标数据元素与目标数据元素组的从属关系,根据多叉树的第四层元素节点构建多叉树的第三层组节点。然后基于目标数据元素组与类集合的从属关系,根据多叉树的第三层组节点构建多叉树的第二层类节点。最后根据所有的第二层类节点构建多叉树根节点,从而得到构建完成的多叉树。
139.另一种实施方式,可以是先针对每一目标数据元素进行哈希计算,以构建多叉树的第四层元素节点。再对目标数据元素进行分类、分组处理。接着基于目标数据元素与目标数据元素组的从属关系,根据多叉树的第四层元素节点构建多叉树的第三层组节点。然后基于目标数据元素组与类集合的从属关系,根据多叉树的第三层组节点构建多叉树的第二层类节点。最后根据所有的第二层类节点构建多叉树根节点,从而得到构建完成的多叉树。
140.可选地,所述多叉树为带值多叉树,相应地,所述根节点根据所述根哈希值和所述根节点下的叶子节点数量进行表征。例如图3中的多叉树的根节点可用(x+y+z+n+m,r)表征,其中(x+y+z+n+m)表征根节点下的叶子节点数量,r表征h
root

141.相应地,所述多叉树的第二层类节点根据对应的所述类哈希值和该第二层类节点下的叶子节点数量进行表征。例如图3中,对应tag类别为patient的类集合的第二层类节点可表征为patient(x,a),其中x表征该第二层类节点下的叶子节点数量,a表征ha。
142.可选地,多叉树的第三层组节点根据对应的组哈希值和该第三层组节点下的叶子节点数量进行表征。如图3中,目标数据元素组f对应的第三层组节点可表征为(8,f),其中8表征该第三层组节点下有8个叶子节点(即8个第四层元素节点),f表征hf。
143.图4是根据本公开一示例性实施例示出的一种数据查询验证过程的流程图。如图4所示,包括:
144.s41、响应于接收到数据查询方发送的dicom影像文件查询请求,确定所述查询请求中携带的目标文件id。
145.s42、从链上查询所述目标文件id对应的目标存储地址和第一目标多叉树。
146.s43、根据所述目标存储地址从所述链下存储空间获取目标dicom影像文件。
147.s44、计算所述目标dicom影像文件对应的第二目标多叉树。
148.第二目标多叉树的构建方式与链上存储的第一目标多叉树的构建方式一致。
149.s45、将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度。
150.s46、在根据所述相似度的大小确定所述目标dicom影像文件有效的情况下,将所述目标dicom影像文件反馈给所述数据查询方。
151.相似度表征目标dicom影像文件的有效程度。一种实施方式,在相似度大于预设相似度阈值(如90%)的情况下,确定目标dicom影像文件有效。相应地,在相似度小于或等于预设相似度阈值的情况下,确定目标dicom影像文件无效。
152.采用这种方式,由于链上的第一目标多叉树并不是根据整个dicom影像文件构建的,而是根据部分数据元素(即目标数据元素)构建的,所以能够在不改变dicom影像文件对应的影像(即能够解读出dicom影像文件对应的影像)的前提下,允许链下存储空间的dicom影像文件中的部分数据丢失或被更改,例如允许用户为了确保病患的隐私信息不被公开而将dicom影像文件中的病患隐私信息进行掩码掩盖处理,从而保障病患的隐私安全。因此,本公开这种数据处理方式,允许第一目标多叉树和第二目标多叉树存在差异。在差异不大的情况下,也能确定目标dicom影像文件有效,且可计算具体的有效程度(即相似度)。这解决了相关技术中基于默克尔根确保数据完整有效性的方法存在的只能确定文件数据是否有效,而无法确定文件数据的有效程度的问题。本公开这种方式能够在dicom影像文件的多叉树上链之后,对链下dicom影像文件中的敏感信息进行掩码处理,以保障病患的隐私安全,同时还能使掩码处理后的dicom影像文件保持有效。总而言之,采用本公开这种方式,能够在损失dicom影像文件中的部分数据、而未损失重要的图像数据的情况下,仍然能保障dicom影像文件的有效性。
153.可选地,所述第一目标多叉树和所述第二目标多叉树结构相同,且所述第一目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识和所述第二目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识相同,所述将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度,包括:
154.在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点相同的情况下,确定所述相似度为100%;在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点不相同的情况下,针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四层元素节点的第一数量;根据各所述tag类别下的所述第一数量、各所述tag类别的权重、以及所述第一目标多叉树的叶子节点总数计算得到所述相似度。
155.本公开判断第一目标多叉树和第二目标多叉树的节点是否相同时,可以是比较节点的节点哈希值,也可以是比较节点哈希值和节点下的叶子节点数量,本公开后续实施例
以比较节点哈希值为例进行说明。
156.以图3所示的多叉树结构进行示例,假设第一目标多叉树表征为t1,第二目标多叉树表征为t2。t1和t2结构相同,且t1中第i个第四层元素节点对应的目标数据元素的tag标识和t2中第i个第四层元素节点对应的目标数据元素的tag标识相同。如此可知,t1的第j层第k个节点与t2的第j层第k个节点一一对应比较。
157.在t1的根节点的根哈希值r1与t2的根节点的根哈希值r2相同的情况下,表征t1中第i个第四层元素节点和t2中第i个第四层元素节点的节点哈希值均相同。那么,t1和t2相似度为100%。这与比较默克尔根的相关技术的原理类似,此处不再赘述。
158.在t1的根节点的根哈希值r1与t2的根节点的根哈希值r2不相同的情况下,针对t1和t2中的对应tag类别为series的第二层类节点a1和a2,将t1中第二层类节点a1下的第四层元素节点与t2中第二层类节点a2下的第四层元素节点进行同位比较(同位比较是指相同位置上的节点进行比较),得到相同位置上节点哈希值不同的第四层元素节点的第一数量pa。
159.同理地,可得到对应tag类别为study的第二层类节点b1和b2所对应的第一数量pb。对应tag类别为series的第二层类节点c1和c2所对应的第一数量pc。对应tag类别为image的第二层类节点d1和d2所对应的第一数量pd。对应tag类别为common的第二层类节点e1和e2所对应的第一数量pe。
160.根据各tag类别下的所述第一数量、各tag类别的权重、以及第一目标多叉树的叶子节点总数计算得到相似度
[0161][0162]
其中,v表征相似度,a

、b

、c

、d

、e

为各tag类别的权重。
[0163]
可选地,所述针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四层元素节点的第一数量,包括:
[0164]
针对每一tag类别,比较所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点是否相同;在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点相同的情况下,确定所述tag类别下的所述第一数量为0;在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点不相同的情况下,确定所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点下相同位置上节点哈希值不相同的目标第三层组节点;确定每一所述目标第三层组节点下,相同位置且节点哈希值不同的所述第四层元素节点的第二数量;并,将各所述目标第三层组节点对应的所述第二数量的和值作为所述第一数量。
[0165]
以前述实施例中的第二层类节点a1和a2为例进行说明。比较a1和a2是否相同。在a1和a2相同的情况下,确定tag类别series下的第一数量为0。这与根节点相同时相似度为100%的原理类似。
[0166]
在a1和a2不相同的情况下,确定a1和a2下相同位置上节点哈希值不相同的目标第三层组节点。即比较f1和f2,g1和g2,h1和h2,i1和i2(仅以图3中第三层组节点示例到i节点为例进行说明的)是否相同,确定不相同的目标第三层组节点。
[0167]
若假设目标第三层组节点为f1和f2。那么进一步确定目标第三层组节点f1和f2下,
相同位置且节点哈希值不同的第四层元素节点的第二数量。并,将所有目标第三层组节点对应的第二数量的和值作为第一数量。
[0168]
这种从根节点开始,依次往下逐层进行对比的方式,相较于直接对t1和t2中的叶子节点进行同位比较的方式,能减少对比复杂度,原因在于,在某一层的同位节点相同时,无需对该节点的子节点进行比较。例如,对比节点a1和a2,当a1和a2相同时,表征hash(d0)至hash(d
31
)的叶子节点均相同。即无需对比a1和a2的子节点,进而无需对比a1和a2的叶子节点hash(d0)至hash(d
31
)。这种对比a1和a2的方式与对比叶子节点hash(d0)至hash(d
31
)的方式相比,对比复杂度大大减少。
[0169]
可选地,在针对第一目标多叉树和第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的第四层元素节点的第一数量的过程中,可确定相同位置且节点哈希值不同的第四层元素节点具体是哪些目标第四层元素节点。
[0170]
在一些可实现的实施方式中,在确定目标第四层元素节点之后,可向数据查询方展示目标第四层元素节点对应的目标数据元素名称以及相似度大小等信息。并在数据查询方认为可以忽略这些目标数据元素被更改或丢失的情况下,将目标dicom影像文件认为是对数据查询方有效的文件,进而将目标dicom影像文件反馈给数据查询方。
[0171]
图5是根据一示例性实施例示出的一种基于区块链的数据存储与验证装置的框图。如图5所示,该基于区块链的数据存储与验证装置500包括:
[0172]
接收模块510,用于响应于接收到数据提供方发送的dicom影像文件,从所述dicom影像文件中筛选目标数据元素,所述目标数据元素用于解读出所述dicom影像文件对应的影像,所述目标数据元素的数量少于所述dicom影像文件中数据元素的总数量;
[0173]
构建模块520,用于根据所述目标数据元素构建多叉树;
[0174]
第一存储模块530,用于将所述dicom影像文件存储于链下存储空间;
[0175]
第二存储模块540,用于将所述dicom影像文件的文件id、所述多叉树、以及所述dicom影像文件在所述链下存储空间的存储地址存储于链上存储空间,其中,存储于所述链上存储空间的所述多叉树用于确定存储于所述链下存储空间的所述dicom影像文件是否有效。
[0176]
采用上述基于区块链的数据存储与验证装置,因将用于确定存储于链下存储空间的dicom影像文件是否有效的多叉树存储在区块链上,而能够基于区块链的特性防止多叉树被篡改,进而能够保障链下存储空间的dicom影像文件的有效性。
[0177]
并且,由于目标数据元素的数量少于该dicom影像文件中数据元素的总数量,所以根据目标数据元素构建用于确定存储于链下存储空间的dicom影像文件是否有效的多叉树的这种方式,能够在不改变dicom影像文件对应的影像(即能够解读出dicom影像文件对应的影像)的前提下,允许链下存储空间的dicom影像文件中的部分数据丢失或被更改,例如允许用户为了确保病患的隐私信息不被公开而将dicom影像文件中的病患隐私信息进行掩码掩盖处理,从而保障病患的隐私安全。因此,本公开这种方式,能够在保障病患的隐私安全的基础之上,确保dicom影像文件的影像有效、且不可被篡改,从而促进dicom影像文件的安全共享与流转。总而言之,采用本公开这种方式,能够在损失dicom影像文件中的部分数据的情况下,仍然能保障dicom影像文件的有效性。
[0178]
可选地,所述目标数据元素的数量为多个,每一所述数据元素包括tag标识,所述构建模块520,包括:
[0179]
分类子模块,用于基于所述目标数据元素的目标tag标识所属的tag类别,将多个所述目标数据元素分成多个类集合,所述类集合与所述tag类别一一对应;
[0180]
第一执行子模块,用于将各所述类集合对应的类哈希值作为所述多叉树的第二层类节点的节点哈希值,所述多叉树的第二层类节点与所述类集合一一对应;
[0181]
第一计算子模块,用于对所有所述类哈希值进行哈希计算,得到所述多叉树的根节点的根哈希值。
[0182]
可选地,所述构建模块520,还包括:
[0183]
分组子模块,用于针对每一所述类集合,按照预设数量n,对所述类集合中的所述目标数据元素进行分组,得到m个目标数据元素组,其中,m-1个目标数据元素组中的目标数据元素数量为n,一个目标数据元素组中的目标数据元素数量小于或等于n;
[0184]
第二执行子模块,用于将各所述目标数据元素组对应的组哈希值作为所述类集合对应的第二层类节点下的第三层组节点的节点哈希值,所述类集合对应的第二层类节点下的第三层组节点与所述目标数据元素组一一对应;
[0185]
其中,所述类集合对应的所述类哈希值是对所述类集合对应的第二层类节点下m个第三层组节点的节点哈希值进行哈希计算得到的。
[0186]
可选地,所述构建模块520,还包括:
[0187]
第二计算子模块,用于针对每一所述目标数据元素组,对所述目标数据元素组中每一所述目标数据元素进行哈希计算,得到元素哈希值;
[0188]
第三执行子模块,用于将各所述元素哈希值作为所述目标数据元素组对应的第三层组节点下的第四层元素节点的节点哈希值,所述目标数据元素组对应的第三层组节点下的第四层元素节点与所述目标数据元素组中的所述目标数据元素一一对应;
[0189]
其中,所述目标数据元素组对应的所述组哈希值是对所述目标数据元素组对应的第三层组节点下所有第四层元素节点的节点哈希值进行哈希计算得到的。
[0190]
可选地,所述多叉树为带值多叉树,相应地,所述根节点根据所述根哈希值和所述根节点下的叶子节点数量进行表征;
[0191]
所述多叉树的第二层类节点根据对应的所述类哈希值和该第二层类节点下的叶子节点数量进行表征。
[0192]
可选地,所述装置500还包括:
[0193]
确定模块,用于响应于接收到数据查询方发送的dicom影像文件查询请求,确定所述查询请求中携带的目标文件id;
[0194]
查询模块,用于从链上查询所述目标文件id对应的目标存储地址和第一目标多叉树;
[0195]
获取模块,用于根据所述目标存储地址从所述链下存储空间获取目标dicom影像文件;
[0196]
计算模块,用于计算所述目标dicom影像文件对应的第二目标多叉树;
[0197]
对比模块,用于将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度;
[0198]
反馈模块,用于在根据所述相似度的大小确定所述目标dicom影像文件有效的情况下,将所述目标dicom影像文件反馈给所述数据查询方。
[0199]
可选地,所述第一目标多叉树和所述第二目标多叉树结构相同,且所述第一目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识和所述第二目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识相同,所述对比模块,包括:
[0200]
第一确定子模块,用于在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点相同的情况下,确定所述相似度为100%;
[0201]
第二确定子模块,用于在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点不相同的情况下,针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四层元素节点的第一数量;
[0202]
第三计算子模块,用于根据各所述tag类别下的所述第一数量、各所述tag类别的权重、以及所述第一目标多叉树的叶子节点总数计算得到所述相似度。
[0203]
可选地,所述第二确定子模块,包括:
[0204]
比较子模块,用于针对每一tag类别,比较所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点是否相同;
[0205]
第三确定子模块,用于在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点相同的情况下,确定所述tag类别下的所述第一数量为0;
[0206]
第四确定子模块,用于在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点不相同的情况下,确定所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点下相同位置上节点哈希值不相同的目标第三层组节点;
[0207]
第五确定子模块,用于确定每一所述目标第三层组节点下,相同位置且节点哈希值不同的所述第四层元素节点的第二数量;并,
[0208]
第四计算子模块,用于将各所述目标第三层组节点对应的所述第二数量的和值作为所述第一数量。
[0209]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0210]
本公开还提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开提供的基于区块链的数据存储与验证方法的步骤。
[0211]
图6是根据一示例性实施例示出的另一种基于区块链的数据存储与验证装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0212]
参照图6,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出接口812,传感器组件814,以及通信组件816。
[0213]
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便
于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
[0214]
存储器804被配置为存储各种类型的数据以支持在装置800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0215]
电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
[0216]
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当装置800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0217]
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
[0218]
输入/输出接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0219]
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到装置800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0220]
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0221]
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述基于区块链的数据存储与验证方法。
[0222]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述基于区块链的数据存储与验证方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0223]
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的基于区块链的数据存储与验证方法的代码部分。
[0224]
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0225]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

技术特征:


1.一种基于区块链的数据存储与验证方法,其特征在于,所述方法包括:响应于接收到数据提供方发送的dicom影像文件,从所述dicom影像文件中筛选目标数据元素,所述目标数据元素用于解读出所述dicom影像文件对应的影像,所述目标数据元素的数量少于所述dicom影像文件中数据元素的总数量;根据所述目标数据元素构建多叉树;将所述dicom影像文件存储于链下存储空间;将所述dicom影像文件的文件id、所述多叉树、以及所述dicom影像文件在所述链下存储空间的存储地址存储于链上存储空间,其中,存储于所述链上存储空间的所述多叉树用于确定存储于所述链下存储空间的所述dicom影像文件是否有效。2.根据权利要求1所述的方法,其特征在于,所述目标数据元素的数量为多个,每一所述数据元素包括tag标识,所述根据所述目标数据元素构建多叉树,包括:基于所述目标数据元素的目标tag标识所属的tag类别,将多个所述目标数据元素分成多个类集合,所述类集合与所述tag类别一一对应;将各所述类集合对应的类哈希值作为所述多叉树的第二层类节点的节点哈希值,所述多叉树的第二层类节点与所述类集合一一对应;对所有所述类哈希值进行哈希计算,得到所述多叉树的根节点的根哈希值。3.根据权利要求2所述的方法,其特征在于,所述根据所述目标数据元素构建多叉树,还包括:针对每一所述类集合,按照预设数量n,对所述类集合中的所述目标数据元素进行分组,得到m个目标数据元素组,其中,m-1个目标数据元素组中的目标数据元素数量为n,一个目标数据元素组中的目标数据元素数量小于或等于n;将各所述目标数据元素组对应的组哈希值作为所述类集合对应的第二层类节点下的第三层组节点的节点哈希值,所述类集合对应的第二层类节点下的第三层组节点与所述目标数据元素组一一对应;其中,所述类集合对应的所述类哈希值是对所述类集合对应的第二层类节点下m个第三层组节点的节点哈希值进行哈希计算得到的。4.根据权利要求3所述的方法,其特征在于,所述根据所述目标数据元素构建多叉树,还包括:针对每一所述目标数据元素组,对所述目标数据元素组中每一所述目标数据元素进行哈希计算,得到元素哈希值;将各所述元素哈希值作为所述目标数据元素组对应的第三层组节点下的第四层元素节点的节点哈希值,所述目标数据元素组对应的第三层组节点下的第四层元素节点与所述目标数据元素组中的所述目标数据元素一一对应;其中,所述目标数据元素组对应的所述组哈希值是对所述目标数据元素组对应的第三层组节点下所有第四层元素节点的节点哈希值进行哈希计算得到的。5.根据权利要求2所述的方法,其特征在于,所述多叉树为带值多叉树,相应地,所述根节点根据所述根哈希值和所述根节点下的叶子节点数量进行表征;所述多叉树的第二层类节点根据对应的所述类哈希值和该第二层类节点下的叶子节点数量进行表征。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:响应于接收到数据查询方发送的dicom影像文件查询请求,确定所述查询请求中携带的目标文件id;从链上查询所述目标文件id对应的目标存储地址和第一目标多叉树;根据所述目标存储地址从所述链下存储空间获取目标dicom影像文件;计算所述目标dicom影像文件对应的第二目标多叉树;将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度;在根据所述相似度的大小确定所述目标dicom影像文件有效的情况下,将所述目标dicom影像文件反馈给所述数据查询方。7.根据权利要求6所述的方法,其特征在于,所述第一目标多叉树和所述第二目标多叉树结构相同,且所述第一目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识和所述第二目标多叉树中第i个第四层元素节点对应的所述目标数据元素的tag标识相同,所述将所述第一目标多叉树和所述第二目标多叉树进行对比,得到相似度,包括:在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点相同的情况下,确定所述相似度为100%;在所述第一目标多叉树的根节点与所述第二目标多叉树的根节点不相同的情况下,针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四层元素节点的第一数量;根据各所述tag类别下的所述第一数量、各所述tag类别的权重、以及所述第一目标多叉树的叶子节点总数计算得到所述相似度。8.根据权利要求7所述的方法,其特征在于,所述针对所述第一目标多叉树和所述第二目标多叉树中的每一tag类别对应的第二层类节点,确定该第二层类节点下,相同位置且节点哈希值不同的所述第四层元素节点的第一数量,包括:针对每一tag类别,比较所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点是否相同;在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点相同的情况下,确定所述tag类别下的所述第一数量为0;在所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点不相同的情况下,确定所述第一目标多叉树和所述第二目标多叉树中所述tag类别对应的第二层类节点下相同位置上节点哈希值不相同的目标第三层组节点;确定每一所述目标第三层组节点下,相同位置且节点哈希值不同的所述第四层元素节点的第二数量;并,将各所述目标第三层组节点对应的所述第二数量的和值作为所述第一数量。9.一种基于区块链的数据存储与验证装置,其特征在于,所述装置包括:接收模块,用于响应于接收到数据提供方发送的dicom影像文件,从所述dicom影像文件中筛选目标数据元素,所述目标数据元素用于解读出所述dicom影像文件对应的影像,所述目标数据元素的数量少于所述dicom影像文件中数据元素的总数量;构建模块,用于根据所述目标数据元素构建多叉树;第一存储模块,用于将所述dicom影像文件存储于链下存储空间;
第二存储模块,用于将所述dicom影像文件的文件id、所述多叉树、以及所述dicom影像文件在所述链下存储空间的存储地址存储于链上存储空间,其中,存储于所述链上存储空间的所述多叉树用于确定存储于所述链下存储空间的所述dicom影像文件是否有效。10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时实现权利要求1-8中任一项所述方法的步骤。11.一种装置,其特征在于,包括:存储器,其上存储有计算机程序;处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-8中任一项所述方法的步骤。

技术总结


本公开涉及一种基于区块链的数据存储与验证方法、装置及存储介质。该方法包括:响应于接收到数据提供方发送的DICOM影像文件,从DICOM影像文件中筛选目标数据元素,目标数据元素用于解读出DICOM影像文件对应的影像,目标数据元素的数量少于DICOM影像文件中数据元素的总数量;根据目标数据元素构建多叉树;将DICOM影像文件存储于链下存储空间;将DICOM影像文件的文件ID、多叉树、以及DICOM影像文件在链下存储空间的存储地址存储于链上存储空间,其中,多叉树用于确定DICOM影像文件是否有效。本公开这种方法能够在允许损失DICOM影像文件中的部分数据的情况下,仍然保障DICOM影像文件的有效性。件的有效性。件的有效性。


技术研发人员:

武二亮 何光宇 徐石成

受保护的技术使用者:

东软集团股份有限公司

技术研发日:

2022.08.05

技术公布日:

2022/11/25

本文发布于:2022-11-28 10:08:27,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/10083.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   节点   目标   元素
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图