基于区块链与IPFS的电子病历存储系统设计与实现

作者: 刘桂江 谢海波 汪文明

基于区块链与IPFS的电子病历存储系统设计与实现0

关键词: 医疗信息技术;电子病历系统;区块链;数据安全共享

中图分类号:TP391.1 文献标识码:A

文章编号:1009-3044(2024)28-0065-04

0 引言

随着科技的进步和医疗行业改革的深入,医疗信息化已成为医疗领域中不可忽视的发展方向。传统纸质病历存在诸多弊端,如保存不便、易损坏、难以共享等。而电子病历作为一种替代形式,凭借其方便保存和携带的优点,已成为医疗信息化平台中的重要组成部分[1]。特别是在异地就诊和医疗数据分析领域,电子病历系统展现出广阔的应用前景[2-3]。通过电子病历系统,患者能够轻松地在不同医疗机构之间共享病历信息,便于医生进行精准的诊断和治疗。同时,医疗机构也能通过对电子病历数据的深入分析,提升医疗质量和效率。然而,传统的电子病历系统通常采用集中式数据存储方式,高度依赖于可信任的第三方。这导致一旦第三方数据库发生安全问题,系统便可能面临数据和隐私泄露等风险[4]。

区块链技术的出现为这类问题提供了新的解决方案[5-7]。区块链是一种去中心化的分布式账本技术,具备分布式共识和匿名性等特点。通过将电子病历的共享信息和操作记录于区块链之上,实现了数据的去中心化存储与交换,确保了数据的安全性和可信性。首先,区块链技术凭借其记录所有交易并具备不可篡改性的能力,保障了电子病历数据的完整性和真实性。任何对病历数据的修改都将被记录在区块链上,并应经过多方共识验证,从而有效防止篡改和伪造。其次,区块链的共享性质赋予了患者参与共享过程的权利,确保了共享信息的公开透明。在传统模式下,医院可能出于各种原因隐藏特定病历数据或拒绝其他机构的访问请求,但在区块链环境中,每个参与方都能查看并验证数据,避免了信息的隐瞒和不透明。此外,区块链上的共享操作将形成交易记录,类似于访问日志,并受到多方监管。这种监管机制强化了数据的隐私保护,防止了医院滥用患者医疗数据以及未知的非法访问。综上所述,区块链技术为电子病历系统注入了更高的安全性、可信度和透明度,通过其去中心化、分布式共识和匿名性等特性,有效应对了传统电子病历系统中存在的安全挑战,并为医疗信息化的发展开辟了新的道路。

因此,设计并实现基于区块链的电子病历存储共享系统具有重要的实用价值和理论意义,有望提升病历数据的安全性和共享效率,进一步推动医疗信息化的发展。

1 相关工作

1.1 区块链技术

区块链技术是一种基于密码学和分布式系统的去中心化创新技术,通过将数据按照时间顺序链接成区块,并使用密码学技术确保数据的安全性和完整性[8]。每个区块都包含一定数量的交易记录,并且每个区块都包含了前一个区块的哈希值,从而形成了一个不可篡改的链式结构[9]。区块链技术的应用领域广泛,包括数字货币、供应链管理、智能合约等。它具有去中心化、安全性、透明性、高效性和去信任等优势,能够提供更加公平、透明和高效的交易环境。随着区块链技术的不断发展和成熟,它有望为各行各业带来更多的创新和变革。

1.2 星际文件系统

星际文件系统(IPFS) 是一种基于区块链技术的媒体协议,它通过去中心化的方式实现了多点对多点的传输,展现出更加开放、快速和安全的特点[10]。与传统的HTTP协议不同,IPFS采用内容寻址技术,为每个文件或数据块分配一个唯一的哈希值,从而实现了在网络中的快速查找和传输。IPFS的分布式存储机制能够将内容分散存储于全球各地的节点上,极大地提高了数据的可靠性和冗余度。同时,IPFS还支持离线传输和自我修复功能,能够在网络中自动查找并修复丢失的数据块。IPFS的应用领域广泛,包括数字资产、社交网络、数据备份等,其更高的安全性、可靠性、效率性和去中心化特性,为互联网的未来发展提供了新的方向和可能性。

1.3 Fabric

Fabric是一个基于区块链的平台[11-12],具备高度灵活性和可扩展性,可根据不同行业和场景的需求进行定制。Fabric采用模块化架构,允许开发者选择和配置不同组件来构建区块链网络。其关键功能包括成员服务、分布式账本、链码服务和事务流服务。成员服务确保只有合法参与者才能加入和操作区块链网络,保障数据的安全性和可信度。分布式账本实现数据的共享和一致性,每个参与者都持有完整的账本副本。链码服务支持开发者编写智能合约,并在区块链网络中执行业务逻辑和状态更新。事务流服务则实现高效的交易处理,支持批量处理多个交易并以原子方式提交到账本中。

Fabric的优势在于其灵活性、可扩展性和安全性。它提供丰富的功能和工具,支持根据需要进行定制和扩展。同时,Fabric的架构支持构建私有链或联盟链,以保护敏感数据和隐私,并满足法规和合规要求。总而言之,Fabric是一个成熟的区块链平台,为企业级应用提供安全、可靠和高效的解决方案,推动了区块链技术在实际应用中的广泛推广和应用。

2 系统设计

2.1 系统需求分析

为了解决传统电子病历系统所面临的问题,本文设计的存储系统着重考虑了以下几个方面:病人对自己的电子病历数据的管理和控制、数据的安全性和完整性、去中心化存储、可追溯性和防篡改性以及用户友好的界面和高效的功能模块。首先,系统应该支持病人有效管理和控制自己的电子病历数据,从而使病人能够更好地参与医疗过程,并增进对自身健康状况的了解。其次,系统将通过区块链技术来保障数据的安全性和完整性,可以避免传统中心化存储方式[13]所带来的安全隐患。同时,通过采用IPFS技术对数据进行存储,可以有效减轻区块链系统的负担[14]。此外,本文提出的方案还可以实现数据的可追溯性和防篡改性。通过使用用户公钥对电子病历的索引信息进行加密,并在区块链上存储加密后的索引信息,可以防止数据被篡改。同时,该方案还可以实现数据的可追溯性,方便医疗工作者和患者查看数据更新情况。最后,为了让医疗工作者和患者能够更好地管理电子病历数据,本文提出的系统需要具有用户友好的界面和高效的功能模块。这样可以提高用户的使用体验,并且可以减少用户的操作复杂度。本文设计的存储系统将针对传统电子病历系统所存在的问题进行改进和优化,旨在为医疗行业提供更稳定、安全和可靠的电子病历管理解决方案。

2.2 系统架构

如图1所示,系统的整体架构分为展示层、逻辑层和存储层3个主要层级,各层的主要作用如下:

展示层:展示层旨在提供用户友好的界面,从而减少用户的操作复杂度。系统采用前后端分离的架构,通过HTTP请求与业务端进行通信。

逻辑层:逻辑层负责具体业务功能的实现,主要划分为病人医生信息管理、病历信息管理、医生就诊和系统管理等模块。区块链模块用来管理存储在区块链中的一些加密索引等数据;IPFS通信模块则可以利用IPFS节点进行通信。

存储层:存储层主要用于保存系统数据,包括区块链系统、IPFS文件系统和传统关系型数据库。区块链系统采用Hyperledger Fabric框架搭建,用于存储电子病历的索引信息,并通过Fabric官方提供的SDK进行通信。通过将经过加密处理的患者电子病历存储在IPFS中,可以减轻系统负荷,提高性能。传统关系型数据库用于存储其他业务信息,为系统的运行提供辅助支持。

2.3 系统功能模块

系统功能模块图如图2所示,各模块协同工作,确保系统能够有效管理患者的医疗数据,并保障其隐私与安全。

1) 用户信息管理模块是系统的核心功能之一,包括用户登录注册、用户信息查看、用户信息更改和用户密码修改。在使用系统前,用户须进行信息审核和注册账户。需要注意的是,数据生成者和数据访问者在就医时应以患者身份接受服务,并使用患者账户访问相应服务。同样,数据生成者在进行医学研究时,也要注册登录数据访问者的用户账户。

2) 医疗业务管理模块包括挂号就诊、新增患者病历、患者病历加密、患者病历授权和患者病历查看。系统存储的用户电子病历来源于医疗机构的用户电子病历或体检数据,由医疗机构的数据生成者通过程序完成电子病历的处理和上传。患者只能检索和访问自己的数据,不会生成访问日志;数据访问者可检索和访问整个系统的数据,成功访问后系统会生成访问日志,记录访问者ID和访问时间等信息,以便及时向患者反馈数据访问情况。

3) 系统管理模块由系统管理员操作,包括用户信息管理和通道配置设置。其中,节点信息配置和链码部署是系统初始化时必要的操作。系统的统计工作指系统管理员统计相关日志信息,了解系统的运行情况和数据访问统计分析,例如统计所有数据生成者本年度的上传数量、某一时段某地区的数据上传次数等。

3 系统实现

3.1 实验配置

本系统在Linux Ubuntu操作系统上运行实现,采用Docker 容器的版本号为17.06。数据库选用CouchDB,加密算法采用RSA,开发语言为Go 语言,HyperledgerFabric版本为V1.4,IPFS版本为0.4.14。此外,系统配置中还包括了Node.js 等运行环境。

3.2 系统功能的实现

3.2.1 区块链中的智能合约

智能合约是一种受信任的分布式应用程序,通过区块链和对等点之间的共识机制实现对其执行的信任。目前,大多数基于智能合约的区块链平台采用许可制度,将智能合约部署到指定的对等点子集。智能合约使用标准语言编写,以提高开发效率。智能合约具有与用户进行分类账交互的功能,例如创建、更新和查询个人电子病历信息等操作。如图3所示,相关操作通过应用程序接收并执行,将结果追加到区块中,更新分类账的状态,最后将更新结果作为响应返回给应用程序。该部署方式支持并行执行,提高了系统的性能和规模。

3.2.2 RSA 加密算法的实现

为了确保电子病历数据的安全性,系统采用了加密技术对数据进行保护。在用户使用过程中,如图4 所示,系统会为每个用户自动生成一对公私钥,以便对其文件进行安全保护。只有通过有效的私钥解密,才能访问该用户的电子病历数据。为扩大存储容量,系统选择了IPFS作为存储系统。病人在完成加密后,如图5所示,将其电子病历上传至IPFS系统,系统会返回一个唯一的哈希地址,作为该文件在IPFS网络中的标识符。

3.2.3 数据存储功能的实现

用户信息的存储借助IPFS分布式存储模式,系统的主要界面如图6所示。首先,用户将其病人数据进行加密后上传至IPFS系统,而系统则会返回一个加密的哈希地址,通过该地址可访问到已加密的数据。该存储方式在提升存储效率的同时,也降低了运行成本。对于区块链的存储功能,其实现方式为利用用户提供的哈希地址在IPFS上定位相应的电子病历。通过该方式可以获取用户数据并进行更新,实现数据存储的目标。

3.3 系统运行

用户成功注册并登录后,将可以访问如图6所示的界面。当用户创建新的密钥对时,系统会自动生成类似图4的公钥和私钥,这些密钥用于加解密数据。如图5所示,患者有权将其病历进行加密后上传到IPFS,并获取相应的哈希值。同时,医生也可以申请查看患者的病历,并在获得授权后,使用哈希值在IPFS中查看相应的病历。

4 结束语

本系统利用区块链和IPFS技术解决了传统电子病历存储共享中存在的隐私泄露、数据泄露、数据易篡改等安全问题;采用了具有不可篡改性的加密算法,确保了数据的安全性;此外,运用“链上索引,链下储存”的模式,有效解决了医疗机构间数据共享和存储的难题,具有较高的实用价值。

上一篇 点击页面呼出菜单 下一篇