◆龍久俊 李洪進(jìn) 潘時(shí)清
基于區(qū)塊鏈的電子病歷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
◆龍久俊 李洪進(jìn)通訊作者潘時(shí)清
(遵義醫(yī)科大學(xué)醫(yī)學(xué)信息工程學(xué)院 貴州 563000)
門(mén)診病歷是患者進(jìn)行檢查、住院等的重要記錄,隨著醫(yī)院信息化更新迭代,開(kāi)發(fā)一款更適合醫(yī)院使用的電子病歷系統(tǒng)十分必要。在疫情的背景下,如何優(yōu)化整理關(guān)鍵醫(yī)療交易記錄及醫(yī)療數(shù)據(jù)更是一個(gè)炙手可熱的問(wèn)題。對(duì)此,我們通過(guò)研究聯(lián)盟區(qū)塊鏈技術(shù),結(jié)合醫(yī)療健康信息集成規(guī)范IHE,探討對(duì)跨區(qū)域電子病歷共享模型研究方法,構(gòu)建了基于聯(lián)盟區(qū)塊鏈的電子病歷系統(tǒng)模型。該模型不僅便于患者就醫(yī),而且能與醫(yī)院的其他系統(tǒng)較好地銜接,除此之外,該模型中的電子病歷有很強(qiáng)的保密性,竊取、篡改都極為困難,使患者的隱私信息得到很好的保護(hù),同時(shí)在必要時(shí)又可以在取得患者同意的前提下方便地進(jìn)行共享。該模型的設(shè)計(jì)與實(shí)現(xiàn)對(duì)疫情醫(yī)療大數(shù)據(jù)背景下共享醫(yī)療資源和提升醫(yī)療系統(tǒng)的服務(wù)質(zhì)量有一定的現(xiàn)實(shí)意義。
電子病歷;聯(lián)盟區(qū)塊鏈;系統(tǒng)開(kāi)發(fā)
隨著國(guó)家對(duì)信息化的高度重視,區(qū)塊鏈技術(shù)初次被納為國(guó)家信息化發(fā)展規(guī)劃[1]。醫(yī)療行業(yè)的興起、醫(yī)療數(shù)據(jù)爆發(fā)式增長(zhǎng),諸多醫(yī)院逐漸重視并使用電子醫(yī)療病歷(Electronic Health Record,EHR)[2]取而代之原有病歷,基于區(qū)塊鏈的電子病歷系統(tǒng)作為國(guó)家信息技術(shù)應(yīng)用重要領(lǐng)域,逐漸變?yōu)槊癖娊】敌畔⒒ㄔO(shè)關(guān)注的焦點(diǎn)。在疫情影響下,醫(yī)療系統(tǒng)逐漸走進(jìn)社會(huì)人士的視野。面對(duì)13億人的醫(yī)療信息,系統(tǒng)數(shù)據(jù)管理便成了一件炙手可熱的問(wèn)題,由于區(qū)塊鏈技術(shù)去中心化、不易篡改、方便數(shù)據(jù)共享等特點(diǎn),使得許多醫(yī)院逐漸興起區(qū)塊鏈電子醫(yī)療病歷系統(tǒng)研究熱潮。
在本文中,主要介紹了自主開(kāi)發(fā)的基于聯(lián)盟區(qū)塊鏈的電子病歷系統(tǒng)的使用安裝說(shuō)明,以及該系統(tǒng)在虛擬機(jī)中的配置流程。該部分區(qū)塊鏈利用分布式數(shù)據(jù)儲(chǔ)存技術(shù),具有分布式的容錯(cuò)性、不可篡改、隱私保護(hù)等的優(yōu)點(diǎn),是解決目前電子病歷使用諸多問(wèn)題的關(guān)鍵技術(shù)。
(1)系統(tǒng)功能需求分析
得力于如今的區(qū)塊鏈結(jié)合電子文件管理的構(gòu)想[3]所提供的思路。文中在傳統(tǒng)醫(yī)院組織內(nèi)部的醫(yī)患就診與掛號(hào)、醫(yī)者問(wèn)診與就診等基礎(chǔ)上,根據(jù)現(xiàn)存電子病歷模型啟發(fā)[4],設(shè)計(jì)能夠保護(hù)隱私、且能為醫(yī)生使用共享電子病歷系統(tǒng)去遠(yuǎn)程就診,進(jìn)行網(wǎng)絡(luò)治療的一套電子病歷系統(tǒng)。并且因情況來(lái)實(shí)現(xiàn)區(qū)塊鏈中的病歷數(shù)據(jù)存儲(chǔ)從而對(duì)其進(jìn)行分布式管理結(jié)果。在醫(yī)院的實(shí)況調(diào)研發(fā)現(xiàn),醫(yī)生于門(mén)診中的診斷、輔助檢查等,給病人得出初步的診斷結(jié)果,在一部分醫(yī)生能夠?qū)崟r(shí)對(duì)癥治療,另一部分病情診斷根據(jù)門(mén)診醫(yī)生要求收入住院病房,而后需在醫(yī)院作進(jìn)一步確認(rèn)病情發(fā)展趨勢(shì)以及發(fā)展背景。為此自主設(shè)計(jì)的病歷系統(tǒng)需要配備一些基礎(chǔ)功能,比如:醫(yī)患人員創(chuàng)建、預(yù)約看病時(shí)間、為增添的醫(yī)患角色進(jìn)行授權(quán)分配等操作,相應(yīng)的還需增加對(duì)該用戶刪除和對(duì)其他用戶增加的功能等。并且在電子病歷的功能創(chuàng)建,即為患者創(chuàng)建電子病歷的同時(shí),需要醫(yī)護(hù)人員確?;颊唠娮硬v記錄準(zhǔn)確地與患者唯一的身份驗(yàn)證標(biāo)識(shí)號(hào)碼相對(duì)應(yīng)。而用戶角色的建立包括:醫(yī)院、身份證、個(gè)人照片、科室、創(chuàng)建時(shí)間、居住地等作為標(biāo)識(shí),關(guān)于來(lái)就診過(guò)的患者,電子病歷系統(tǒng)相應(yīng)功能會(huì)對(duì)過(guò)往診療信息的儲(chǔ)存、管理和呈現(xiàn)。實(shí)際調(diào)研中,還會(huì)出現(xiàn)顧客復(fù)發(fā)的狀況,因此,我們還需要對(duì)此種情況相應(yīng)做出對(duì)策。為此該系統(tǒng)理應(yīng)提供一個(gè)病歷詳情管理功能,其目的為使得醫(yī)護(hù)工作者可以查找以往病歷,并做出醫(yī)藥的相關(guān)調(diào)整,同時(shí)還可以提供護(hù)理、檢查檢驗(yàn)結(jié)果等電子形式的醫(yī)療報(bào)告,實(shí)現(xiàn)創(chuàng)建、管理、存儲(chǔ)和展現(xiàn)等功能。相對(duì)應(yīng)的病歷系統(tǒng)還需有功能的要求:其一是使病人享受相應(yīng)的病歷管理權(quán)限,從而隨時(shí)根據(jù)自己的病情上報(bào)醫(yī)生,醫(yī)生可根據(jù)判斷進(jìn)行醫(yī)藥調(diào)整;其二,需對(duì)病歷備份使用者進(jìn)行權(quán)限分級(jí),該備份使用者范圍包括:創(chuàng)建者個(gè)人、患者相應(yīng)醫(yī)護(hù)等,同時(shí)也能因此保護(hù)患者的隱私安全,相應(yīng)的護(hù)理記錄包含提供患者基礎(chǔ)生命特征功能,患者行為特征,手術(shù)后護(hù)理記錄,病危記錄等功能。在病歷創(chuàng)建成功后相應(yīng)的信息會(huì)反饋到數(shù)據(jù)庫(kù)的病歷管理系統(tǒng),醫(yī)生、護(hù)士就可以通過(guò)此系統(tǒng)查詢病人病歷便于配置藥物和提供醫(yī)囑信息,如圖1所示,電子病歷系統(tǒng)功能仍在完善,且后續(xù)可進(jìn)行系統(tǒng)更新,更新后還會(huì)支持藥品管理部門(mén)、門(mén)診部門(mén)、檢驗(yàn)部門(mén)等其他部門(mén)之間的相互溝通交流,并創(chuàng)建一個(gè)共同使用的收費(fèi)管理系統(tǒng),可實(shí)施院內(nèi)數(shù)據(jù)共享,提高醫(yī)護(hù)效率。
圖1 電子病歷功能分析圖
(2)系統(tǒng)功能模塊設(shè)計(jì)
結(jié)合實(shí)際的醫(yī)院門(mén)診的業(yè)務(wù)需要要求,本問(wèn)設(shè)計(jì)了包含門(mén)診病歷管理系統(tǒng)、病歷權(quán)限管理系統(tǒng)、醫(yī)囑通知管理系統(tǒng)、可自主掛號(hào)系統(tǒng)、公告信息管理系統(tǒng)、系統(tǒng)服務(wù)等服務(wù)管理系統(tǒng),該系統(tǒng)與實(shí)際的聯(lián)系如圖2。
圖2 門(mén)診電子病歷系統(tǒng)功能模塊圖
(3)物理結(jié)構(gòu)設(shè)計(jì)
這里就需要用到虛擬機(jī)Oracle VM VirtualBox為鏈接媒介。Centos7(Docker-compose)作為背景平臺(tái),在SPRING TOOL SUITE 4里利用JAVA、go為基礎(chǔ)語(yǔ)言構(gòu)建系統(tǒng),鏈接則用MYSQL數(shù)據(jù)庫(kù)來(lái)提供所有病人的基礎(chǔ)數(shù)據(jù)和系統(tǒng)變量,如:基本信息表、醫(yī)囑信息表、系統(tǒng)日志等,且使用較多的功能,如:視圖、存儲(chǔ)及索引。在該系統(tǒng)中區(qū)塊鏈數(shù)據(jù)庫(kù)的使用一方面是便捷、高效的,另一方面,需要數(shù)據(jù)發(fā)布人員采取適當(dāng)?shù)拇胧┤?duì)數(shù)據(jù)進(jìn)行防護(hù),不然可能會(huì)造成個(gè)別患者或醫(yī)護(hù)記錄的敏感數(shù)據(jù)泄露使數(shù)據(jù)所有者帶來(lái)?yè)p害[5]。
2.2.1門(mén)診病歷系統(tǒng)結(jié)構(gòu)體
結(jié)構(gòu)體是機(jī)器語(yǔ)言中一種重要的數(shù)據(jù)類型,該數(shù)據(jù)類型由一組稱為成員(或稱為域,或稱為元素)的不同數(shù)據(jù)組成,其中每個(gè)成員可以具有不同的類型。結(jié)構(gòu)體通常用來(lái)表示類型不同但是又相關(guān)的若干數(shù)據(jù),有了一個(gè)好的結(jié)構(gòu)體才能很好映射到整個(gè)系統(tǒng)。對(duì)于門(mén)診病歷系統(tǒng)的go語(yǔ)言編寫(xiě)部分:
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門(mén)診病歷系統(tǒng)需要配置說(shuō)明
(1)Spring Tool Suite 4 配置說(shuō)明
在使用eclipse進(jìn)行Spring Boot或Spring Cloud應(yīng)用開(kāi)發(fā)時(shí),同時(shí)為了方便起見(jiàn),最好安裝STS插件,目前最新版本是Spring Tool Suite 4,該軟件則是編寫(xiě)電子病歷系統(tǒng)的核心軟件,我們利用GO、JAVA在該平臺(tái)開(kāi)發(fā)得到電子病歷系統(tǒng),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 接下來(lái)編輯當(dāng)前用戶的環(huán)境變量
vi ~/.profile 在最后添加以下內(nèi)容
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
圖3 Go語(yǔ)言安裝圖
添加好后執(zhí)行:wq保存并退出,最后載入環(huán)境變量,source~/.profile(如果沒(méi)有重載環(huán)境變量則不會(huì)生效),go version查看Go版本。
(2)虛擬機(jī)Oracle VM VirtualBox配置安裝說(shuō)明
由于該電子病歷系統(tǒng)需要在虛擬機(jī)上運(yùn)行.因此同樣也需要了解虛擬機(jī)的使用以及配置安裝過(guò)程。首先我們?cè)谧灾鞯膙irtual box的主程序下載安裝后,需要知道到很多時(shí)候需要使用一個(gè)不同于普通主機(jī)的操作系統(tǒng),且需要一個(gè)實(shí)驗(yàn)環(huán)境來(lái)測(cè)試一些不穩(wěn)定的軟件,這個(gè)時(shí)候就可以使用虛擬機(jī)。VirtualBox是一個(gè)功能完善且優(yōu)質(zhì)的x86和AMD/Intel64平臺(tái)虛擬化的軟件,它能滿足普通用戶和滿足企業(yè)級(jí)別的應(yīng)用.它是能在Windows,Linux,Macintosh和Solaris系統(tǒng)上運(yùn)行,并且遵循GNU General Public License(GPL)version 2協(xié)議。
Docker的配置及安裝通常我們?cè)陂_(kāi)發(fā)一個(gè)項(xiàng)目會(huì)有兩個(gè)環(huán)境,一是本地測(cè)試環(huán)境,二是線上環(huán)境。而項(xiàng)目開(kāi)發(fā)上線的時(shí)候,還會(huì)把項(xiàng)目打成一個(gè)jar包或war包上傳到線上的服務(wù)器,此時(shí)為了讓項(xiàng)目能夠運(yùn)行,我們還要為線上的服務(wù)器配置項(xiàng)目的運(yùn)行環(huán)境JDK,Tomcat,ES,Mysql,Redis,Hadoop等,配置十分復(fù)雜煩瑣,特別對(duì)于搭建集群的時(shí)候更是如此,甚至有時(shí)候還會(huì)因?yàn)楸镜丨h(huán)境和線上環(huán)境的不一致導(dǎo)致問(wèn)題的發(fā)生,如果是舊版本的Docker,需重新安裝。
將該用戶添置Docker用戶組:
#第一步:創(chuàng)建Docker用戶組
sudo groupadd Docker
#第二步:將當(dāng)前用戶添置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安裝成功
(1)在Ubuntu打開(kāi)fabric-sdk-java-release-1.4下的src下的test下的fixture下的sdkintegration,單擊右鍵打開(kāi)系統(tǒng)命令界面,輸入shfabric.shup -d,啟動(dòng)fabric網(wǎng)絡(luò)。
(2)在sts中選擇剛剛新建項(xiàng)目的src下的main下的fabricitem.com.psq文件夾下的fabricapplication,打開(kāi),點(diǎn)擊右鍵選擇run as,Java application.
(3)打開(kāi)瀏覽器,輸入local host:8080;點(diǎn)擊登錄,輸入admin,密碼123456;點(diǎn)擊區(qū)塊鏈網(wǎng)絡(luò),點(diǎn)擊初始化,等待初始化完成。
(4)再次打開(kāi)瀏覽器,輸入local host:8080;點(diǎn)擊注冊(cè),注冊(cè)完成后,由管理員登錄系統(tǒng)后臺(tái),給用戶進(jìn)行審核,分配角色,完成后用戶才可登錄系統(tǒng)。
首次登錄系統(tǒng)的用戶需要在fabric網(wǎng)絡(luò)中在注冊(cè)一次,方可登錄。
就目前來(lái)講,電子病歷管理系統(tǒng)于國(guó)內(nèi)外而言也是不成熟的,本文結(jié)合實(shí)際醫(yī)院調(diào)研,并通過(guò)研究了聯(lián)盟區(qū)塊鏈,利用Golang等語(yǔ)言進(jìn)行系統(tǒng)開(kāi)發(fā),且綜合了國(guó)內(nèi)外已有的標(biāo)準(zhǔn),自主開(kāi)發(fā)了一套適應(yīng)性廣、可變性高的基于區(qū)塊鏈的電子病歷系統(tǒng),同時(shí)解決了人工記錄數(shù)據(jù)難、處理效率低的難題。實(shí)現(xiàn)了門(mén)診電子病歷的多元化,實(shí)現(xiàn)了區(qū)域之間的信息溝通與數(shù)據(jù)共享,多層次權(quán)限管理的同時(shí)也很好保護(hù)了用戶的數(shù)據(jù)隱私。
這個(gè)平臺(tái)的實(shí)現(xiàn)可以便于患者跨區(qū)域跨院看病,是對(duì)醫(yī)療數(shù)據(jù)的整合、挖掘和研究,提升了醫(yī)療系統(tǒng)的服務(wù)質(zhì)量,對(duì)當(dāng)今醫(yī)療大數(shù)據(jù)背景下共享醫(yī)療資源提供了理論參考。
[1]中共中央、國(guó)務(wù)院.國(guó)務(wù)院印發(fā)《“十三五”國(guó)家信息化規(guī)劃》[J].電子政務(wù),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]王子鵬,李璐璐.基于區(qū)塊鏈技術(shù)的電子文件管理模式研究[J].浙江檔案,2018(02):18-20.
[5]周水庚,李豐,陶宇飛,等面向數(shù)據(jù)庫(kù)應(yīng)用的隱私保護(hù)研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2009,32(5):847-861.
基于區(qū)塊鏈技術(shù)的共享電子病歷系統(tǒng)研究(貴州省科技計(jì)劃項(xiàng)目(黔科合平臺(tái)人才[2018]5772-050);遵義市科技局基金項(xiàng)目(遵市科合HZ字(2020)43號(hào)))