APP下载

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

2021-10-28龙久俊李洪进潘时清

网络安全技术与应用 2021年9期
关键词:病历门诊区块

◆龙久俊 李洪进 潘时清

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

◆龙久俊 李洪进通讯作者潘时清

(遵义医科大学医学信息工程学院 贵州 563000)

门诊病历是患者进行检查、住院等的重要记录,随着医院信息化更新迭代,开发一款更适合医院使用的电子病历系统十分必要。在疫情的背景下,如何优化整理关键医疗交易记录及医疗数据更是一个炙手可热的问题。对此,我们通过研究联盟区块链技术,结合医疗健康信息集成规范IHE,探讨对跨区域电子病历共享模型研究方法,构建了基于联盟区块链的电子病历系统模型。该模型不仅便于患者就医,而且能与医院的其他系统较好地衔接,除此之外,该模型中的电子病历有很强的保密性,窃取、篡改都极为困难,使患者的隐私信息得到很好的保护,同时在必要时又可以在取得患者同意的前提下方便地进行共享。该模型的设计与实现对疫情医疗大数据背景下共享医疗资源和提升医疗系统的服务质量有一定的现实意义。

电子病历;联盟区块链;系统开发

1 引言

随着国家对信息化的高度重视,区块链技术初次被纳为国家信息化发展规划[1]。医疗行业的兴起、医疗数据爆发式增长,诸多医院逐渐重视并使用电子医疗病历(Electronic Health Record,EHR)[2]取而代之原有病历,基于区块链的电子病历系统作为国家信息技术应用重要领域,逐渐变为民众健康信息化建设关注的焦点。在疫情影响下,医疗系统逐渐走进社会人士的视野。面对13亿人的医疗信息,系统数据管理便成了一件炙手可热的问题,由于区块链技术去中心化、不易篡改、方便数据共享等特点,使得许多医院逐渐兴起区块链电子医疗病历系统研究热潮。

在本文中,主要介绍了自主开发的基于联盟区块链的电子病历系统的使用安装说明,以及该系统在虚拟机中的配置流程。该部分区块链利用分布式数据储存技术,具有分布式的容错性、不可篡改、隐私保护等的优点,是解决目前电子病历使用诸多问题的关键技术。

2 门诊电子病历系统设计

2.1 系统功能模块设计

(1)系统功能需求分析

得力于如今的区块链结合电子文件管理的构想[3]所提供的思路。文中在传统医院组织内部的医患就诊与挂号、医者问诊与就诊等基础上,根据现存电子病历模型启发[4],设计能够保护隐私、且能为医生使用共享电子病历系统去远程就诊,进行网络治疗的一套电子病历系统。并且因情况来实现区块链中的病历数据存储从而对其进行分布式管理结果。在医院的实况调研发现,医生于门诊中的诊断、辅助检查等,给病人得出初步的诊断结果,在一部分医生能够实时对症治疗,另一部分病情诊断根据门诊医生要求收入住院病房,而后需在医院作进一步确认病情发展趋势以及发展背景。为此自主设计的病历系统需要配备一些基础功能,比如:医患人员创建、预约看病时间、为增添的医患角色进行授权分配等操作,相应的还需增加对该用户删除和对其他用户增加的功能等。并且在电子病历的功能创建,即为患者创建电子病历的同时,需要医护人员确保患者电子病历记录准确地与患者唯一的身份验证标识号码相对应。而用户角色的建立包括:医院、身份证、个人照片、科室、创建时间、居住地等作为标识,关于来就诊过的患者,电子病历系统相应功能会对过往诊疗信息的储存、管理和呈现。实际调研中,还会出现顾客复发的状况,因此,我们还需要对此种情况相应做出对策。为此该系统理应提供一个病历详情管理功能,其目的为使得医护工作者可以查找以往病历,并做出医药的相关调整,同时还可以提供护理、检查检验结果等电子形式的医疗报告,实现创建、管理、存储和展现等功能。相对应的病历系统还需有功能的要求:其一是使病人享受相应的病历管理权限,从而随时根据自己的病情上报医生,医生可根据判断进行医药调整;其二,需对病历备份使用者进行权限分级,该备份使用者范围包括:创建者个人、患者相应医护等,同时也能因此保护患者的隐私安全,相应的护理记录包含提供患者基础生命特征功能,患者行为特征,手术后护理记录,病危记录等功能。在病历创建成功后相应的信息会反馈到数据库的病历管理系统,医生、护士就可以通过此系统查询病人病历便于配置药物和提供医嘱信息,如图1所示,电子病历系统功能仍在完善,且后续可进行系统更新,更新后还会支持药品管理部门、门诊部门、检验部门等其他部门之间的相互沟通交流,并创建一个共同使用的收费管理系统,可实施院内数据共享,提高医护效率。

图1 电子病历功能分析图

(2)系统功能模块设计

结合实际的医院门诊的业务需要要求,本问设计了包含门诊病历管理系统、病历权限管理系统、医嘱通知管理系统、可自主挂号系统、公告信息管理系统、系统服务等服务管理系统,该系统与实际的联系如图2。

图2 门诊电子病历系统功能模块图

(3)物理结构设计

这里就需要用到虚拟机Oracle VM VirtualBox为链接媒介。Centos7(Docker-compose)作为背景平台,在SPRING TOOL SUITE 4里利用JAVA、go为基础语言构建系统,链接则用MYSQL数据库来提供所有病人的基础数据和系统变量,如:基本信息表、医嘱信息表、系统日志等,且使用较多的功能,如:视图、存储及索引。在该系统中区块链数据库的使用一方面是便捷、高效的,另一方面,需要数据发布人员采取适当的措施去对数据进行防护,不然可能会造成个别患者或医护记录的敏感数据泄露使数据所有者带来损害[5]。

2.2 门诊电子病历系统实现

2.2.1门诊病历系统结构体

结构体是机器语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据,有了一个好的结构体才能很好映射到整个系统。对于门诊病历系统的go语言编写部分:

type Mrecordchaincode struct{}

type Medicalrecord struct {

CreateTime string `json:"CreateTime"`

IDCardNumber string `json:"IDCardNumber"`

PatientName string `json:"PatientName"`

Birthday string `json:"Birthday"`

Gender string `json:"Gender"`

Nation string `json:"Nation"`

HomeAddress string `json:"HomeAddress"`

Phone string `json:"Phone"`

Email string `json:"Email"`

AllowQuery int `json:"AllowQuery"`

AllowAppend int `json:"AllowAppend"`

MedicalContens []Mainmedicalrecordinform `json:"MedicalContens"`

}

2.2.2门诊病历系统需要配置说明

(1)Spring Tool Suite 4 配置说明

在使用eclipse进行Spring Boot或Spring Cloud应用开发时,同时为了方便起见,最好安装STS插件,目前最新版本是Spring Tool Suite 4,该软件则是编写电子病历系统的核心软件,我们利用GO、JAVA在该平台开发得到电子病历系统,Golang的安装如下:

Ubuntu的apt-get自带的Go版本低,需重新安装,输入指令:

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz然后解压:

sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz 接下来编辑当前用户的环境变量

vi ~/.profile 在最后添加以下内容

export PATH=$PATH:/usr/local/go/bin

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export PATH=$PATH:$HOME/go/bin

图3 Go语言安装图

添加好后执行:wq保存并退出,最后载入环境变量,source~/.profile(如果没有重载环境变量则不会生效),go version查看Go版本。

(2)虚拟机Oracle VM VirtualBox配置安装说明

由于该电子病历系统需要在虚拟机上运行.因此同样也需要了解虚拟机的使用以及配置安装过程。首先我们在自主的virtual box的主程序下载安装后,需要知道到很多时候需要使用一个不同于普通主机的操作系统,且需要一个实验环境来测试一些不稳定的软件,这个时候就可以使用虚拟机。VirtualBox是一个功能完善且优质的x86和AMD/Intel64平台虚拟化的软件,它能满足普通用户和满足企业级别的应用.它是能在Windows,Linux,Macintosh和Solaris系统上运行,并且遵循GNU General Public License(GPL)version 2协议。

Docker的配置及安装通常我们在开发一个项目会有两个环境,一是本地测试环境,二是线上环境。而项目开发上线的时候,还会把项目打成一个jar包或war包上传到线上的服务器,此时为了让项目能够运行,我们还要为线上的服务器配置项目的运行环境JDK,Tomcat,ES,Mysql,Redis,Hadoop等,配置十分复杂烦琐,特别对于搭建集群的时候更是如此,甚至有时候还会因为本地环境和线上环境的不一致导致问题的发生,如果是旧版本的Docker,需重新安装。

将该用户添置Docker用户组:

#第一步:创建Docker用户组

sudo groupadd Docker

#第二步:将当前用户添置Docker用户组

sudo usermod -aG Docker $USER

#退出终端 Exit

将Docker镜像更改为阿里云的地址:

sudo mkdir -p /etc/Docker

sudo gedit /etc/Docker/daemon.json

{"registry-mirrors":

图4 Docker 安装图

["https://obou6wyb.mirror.aliyuncs.com"]}

保存并退出

sudo systemctl daemon-reload

sudo systemctl restart Docker

查看Docker版本

Docker version

图4 显示Docker安装成功

3 运行系统

(1)在Ubuntu打开fabric-sdk-java-release-1.4下的src下的test下的fixture下的sdkintegration,单击右键打开系统命令界面,输入shfabric.shup -d,启动fabric网络。

(2)在sts中选择刚刚新建项目的src下的main下的fabricitem.com.psq文件夹下的fabricapplication,打开,点击右键选择run as,Java application.

(3)打开浏览器,输入local host:8080;点击登录,输入admin,密码123456;点击区块链网络,点击初始化,等待初始化完成。

(4)再次打开浏览器,输入local host:8080;点击注册,注册完成后,由管理员登录系统后台,给用户进行审核,分配角色,完成后用户才可登录系统。

首次登录系统的用户需要在fabric网络中在注册一次,方可登录。

4 结论

就目前来讲,电子病历管理系统于国内外而言也是不成熟的,本文结合实际医院调研,并通过研究了联盟区块链,利用Golang等语言进行系统开发,且综合了国内外已有的标准,自主开发了一套适应性广、可变性高的基于区块链的电子病历系统,同时解决了人工记录数据难、处理效率低的难题。实现了门诊电子病历的多元化,实现了区域之间的信息沟通与数据共享,多层次权限管理的同时也很好保护了用户的数据隐私。

这个平台的实现可以便于患者跨区域跨院看病,是对医疗数据的整合、挖掘和研究,提升了医疗系统的服务质量,对当今医疗大数据背景下共享医疗资源提供了理论参考。

[1]中共中央、国务院.国务院印发《“十三五”国家信息化规划》[J].电子政务,2017(1):40.

[2]HEART T,BEN-ASSULI O,SHABTAl I.A review of PHR,EMR and EHR integration:a more personalized healthcare and public health policy[J].Health Policy and Technology,2017,6(1):20-25.

[3]Yuan B,LinW,McDonnell C.Blockchains and electronic health records[J].Mcdonnell.mit.edu,2017.

[4]王子鹏,李璐璐.基于区块链技术的电子文件管理模式研究[J].浙江档案,2018(02):18-20.

[5]周水庚,李丰,陶宇飞,等面向数据库应用的隐私保护研究综述[J].计算机学报,2009,32(5):847-861.

基于区块链技术的共享电子病历系统研究(贵州省科技计划项目(黔科合平台人才[2018]5772-050);遵义市科技局基金项目(遵市科合HZ字(2020)43号))

猜你喜欢

病历门诊区块
门诊支付之变
强迫症病历簿
区块链:一个改变未来的幽灵
“大数的认识”的诊断病历
区块链:主要角色和衍生应用
区块链+媒体业的N种可能
读懂区块链
汉字小门诊系列(四)
为何要公开全部病历?
汉字小门诊系列(九)