基于fisco-bcos的共享病例智能合约的设计与实现【1】

前言

之前准备比赛前,写了一个共享病例的系统进行练手,现在分享给大家。
此系统参考的是一篇论文《基于FISCO BCOS联盟链技术的共享电子病历应用研究 》,作者是陈伟哲。对共享病例设计部分有兴趣的人可以去知网阅读这篇论文,写的很好。本人写的系统可能与论文所描述的有所不同,部分业务做了修改。

环境

fisco-bcos 2.8
ubuntu 20
solidity 0.4.25[版本有点老,也可以用0.6的版本 ]

系统简述

本系统实现的是利用fisco-bcos的智能合约 功能和椭圆曲线数据签名算法实现电子病历的存储和安全授权共享,使得病人对 自己的病历数据有更高的控制权限,因此电子病历数据可以随着病人的就诊地点 的变化而转移,最大化地实现数据共享。

合约设计

结合智能合约的特性,我们需要设计好各种合约的字段和方法。
我设计的系统有10个合约相关联
在这里插入图片描述
该系统有七个实体,Appointment 挂号单,Department 科室,Doctor 医生,Hospital 医院,Patient 病人,EMR 病历单, Work 出诊信息

然后Roles 合约是智能合约的常用角色库,RBAC 合约 是处理医生,病人,医院,科室这四个实体的增删改查合约。
SyStem合约是整个系统的部署合约。

业务梳理

简单介绍一下这个系统有什么功能

  • 病人:注册账号,更新自己的信息,查看自己的信息,查看自己病历,病历查看授权码生成,查看就诊结果
  • 管理员: 增删改查医院,增删改查科室
  • 医生:注册账号,更新自己的信息,查看自己的信息,出诊,接诊,拿授权码查看病历,填写就诊结果
  • 其他:查看医院科室医生的信息

– 是不是发现这个系统,医生和病人没有登录功能,其实设计的时候,我选择的是结合mysql来进行登录认证,因为区块链对于上链的数据都是透明的,大家都能查看,所以账号和密码都需要存储在链下,mysql的表处理有账号和加密的密码,还需要存储该账号在链上的地址和公私钥信息【记得要将这些数据进行数据加密】,然后通过应用层的业务代码进行登录校验,应用层再与联盟链进行交互,实现链上链下数据的相结合的登录处理。

设计图展示

这些是我之前编写代码的时候,设计的实体合约草图,大家可以拿去做参考

医院

在这里插入图片描述

科室

在这里插入图片描述

科室出诊

在这里插入图片描述

医生信息

在这里插入图片描述

病历信息

在这里插入图片描述

预约挂号信息

在这里插入图片描述

病人信息

在这里插入图片描述

结语

这篇文章简单介绍一下系统的总体和设计思路,下面的文章,将详细解释系统合约代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

已久依依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值