目录

前言

项目背景

设计思路

区块链技术

代理重加密

病例存储

数据集

实验结果

更多帮助

前言

    大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

        对毕设有任何疑问都可以问学长哦!

       大家好,这里是海浪学长计算机毕设专题,本次分享的课题是

       基于区块链的医疗记录病例存储系统

项目背景

       医疗记录和病例的安全存储和查询是医疗行业中的一个重要问题。传统的存储方式存在数据泄露、篡改等安全风险,同时查询效率低下。区块链技术作为一种去中心化、不可篡改的分布式账本技术,具有天生的安全性和平等性,因此,基于区块链的医疗记录病例存储系统成为了解决这一问题的有效途径。此课题的研究对于推动区块链技术在医疗行业的应用,保障医疗数据的安全和高效利用,具有重要意义。

设计思路

区块链技术

       区块链被赋予了新一轮科技革命的潜力,其中最重要的属性之一是去中心化。正是由于共识机制的作用,区块链才具备了如此独特的特性。然而,作为当前最热门的分布式技术,区块链面临的主要挑战之一是一致性问题,即如何在多个独立节点之间达成共识。分布式网络中的一致性问题常常受到故障、通信故障、设备速度不匹配和网络时延等问题的限制,很难实现一致性。

       为了实现分布式系统的一致性,许多算法被提出,如Paxos协议和其变种Raft协议。这些协议能够在分布式网络中的节点发生错误时仍然保持一致,适用于非恶意节点的情况。然而,将这些协议应用于像区块链这样复杂、不受信任且可能存在恶意节点的网络中会面临困难。

       智能合约是一种以信息化方式传播、验证或执行提前拟好的合同的计算机协议。通过智能合约,提前规定好的合约内容可以在满足触发条件时自动执行。与传统合同不同,智能合约能够确保在合约期内双方承诺的准确执行。

       智能合约的执行流程如下:用户之间制定智能合约并上传到区块链网络,全网节点接收合约。合约自动检查触发条件是否满足,并将触发的事件推送到待验证队列。验证节点对事件进行签名验证,确保有效性,并达成共识后执行合约,并通知用户。已执行的合约被移出区块链,未执行的合约继续等待下一轮处理,直至成功执行。

代理重加密

       代理重加密是一种密码学方法,旨在实现机密数据在拥有者和访问者之间的共享,同时保持数据一直处于密文状态。该方法通过代理者将数据拥有者的密文数据进行重加密操作,转换为访问者的密文,访问者可以使用自己的私钥进行解密。代理重加密的过程中,代理者在不知情的情况下完成了密文消息的转换。这种方法适用于需要保护数据隐私同时实现数据共享的场景,确保数据在转换过程中不会泄露明文信息。

       Hyperledger Fabric是一个开源的企业级分布式账本平台,旨在为企业提供可扩展、灵活和安全的区块链解决方案。它具有分布式账本、权限和隐私管理、智能合约、可插拔性和灵活性、扩展性和性能以及机密交易等关键特点。Hyperledger Fabric的目标是为企业提供可信赖的区块链平台,促进跨组织合作和业务流程的优化。它已经在金融、供应链、医疗保健等多个行业得到广泛应用。

       PBFT是一种依赖密码学算法来保障节点间消息传播不可篡改的一致性算法。它的核心思想是通过状态副本复制,需要多于2/3的节点正常运行和诚实行为来确保系统的正常运转。PBFT算法的流程包括Request、Pre-prepare、Prepare、Commit和Reply五个阶段。在Request阶段,客户端向主节点发送请求。在Pre-prepare阶段,主节点验证请求并进行签名后广播给其他节点。在Prepare阶段,副本节点收到Pre-prepare消息后验证并添加自己的签名后发送Prepare消息给其他节点。在Commit阶段,节点收到足够数量的验证通过的Prepare消息后,进行签名并发送Commit消息表示对请求的认同。最后,在Replay阶段,当节点收到足够数量的相同Commit消息后,执行请求操作并将结果返回给客户端。客户端通过接收足够数量的相同Replay消息来确认全网共识,否则需要重新发送请求给主节点。

病例存储

       保险公司在病历存储与共享系统中负责将病历记录上链并同步更新区块链,其他保险公司节点进行备份。病历记录所有者和医院可以执行相同操作,但保险公司更适合这一角色。系统中包含背书节点、排序节点和提交节点,由保险公司扮演这些角色。病历经过验证和排序后,被写入新区块并追加到本地病历账本上。通过医院和病历所有者的加密与验证,病历记录得到保护。保险公司共同协作,确保数据真实性和隐私,并实现安全存储和共享病历记录。

数据集

       由于网络上没有现有的合适的数据集,我决定自己去医院进行拍摄,收集医疗记录和病例并制作了一个全新的数据集。这个数据集包含了各种医疗记录和病例的照片,其中包括病人的个人信息、病历、检验报告等。通过现场拍摄,我能够获取到真实的医疗记录和多样的病例信息,这将为我的研究提供更准确、可靠的数据。

实验结果

       构建区块链网络的具体步骤如下:

安装虚拟机、Ubuntu、docker和docker-compose,下载Fabric源代码和docker镜像,完成Fabric 1.0环境的搭建。生成区块链网络中所有实体的证书和密钥,确保联盟链成员的可验证性。完成相关配置工作,为排序节点和Peer节点配置创世区块和通道。初始化Fabric网络,启动Fabric Docker环境,创建通道并将节点加入通道,更新锚节点。配置Fabric-SDK-Go,添加新的config.yaml配置文件,实现与Fabric的通信。安装链代码,编译客户端指定的Chaincode代码,并将代码发送到每个Peer节点。将Chaincode部署到链上,为Channel生成Docker镜像和容器,制定适当的背书策略。

相关代码示例:

pragma solidity ^0.8.0;

contract MedicalRecords {

struct Record {

uint id;

string patientName;

string recordData;

}

mapping(uint => Record) private records;

uint private recordCount;

event RecordCreated(uint id, string patientName);

function createRecord(string memory _patientName, string memory _recordData) public {

recordCount++;

records[recordCount] = Record(recordCount, _patientName, _recordData);

emit RecordCreated(recordCount, _patientName);

}

function getRecord(uint _id) public view returns (string memory) {

require(_id <= recordCount, "Invalid record ID");

return records[_id].recordData;

}

}

海浪学长项目示例:

更多帮助

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: