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