前言
之前准备比赛前,写了一个共享病例的系统进行练手,现在分享给大家。
此系统参考的是一篇论文《基于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的表处理有账号和加密的密码,还需要存储该账号在链上的地址和公私钥信息【记得要将这些数据进行数据加密】,然后通过应用层的业务代码进行登录校验,应用层再与联盟链进行交互,实现链上链下数据的相结合的登录处理。
设计图展示
这些是我之前编写代码的时候,设计的实体合约草图,大家可以拿去做参考
医院

科室

科室出诊

医生信息

病历信息

预约挂号信息

病人信息

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

被折叠的 条评论
为什么被折叠?



