◆龍久俊 李洪進 潘時清
基于區塊鏈的電子病歷系統設計與實現
◆龍久俊 李洪進通訊作者潘時清
(遵義醫科大學醫學信息工程學院 貴州 563000)
門診病歷是患者進行檢查、住院等的重要記錄,隨著醫院信息化更新迭代,開發一款更適合醫院使用的電子病歷系統十分必要。在疫情的背景下,如何優化整理關鍵醫療交易記錄及醫療數據更是一個炙手可熱的問題。對此,我們通過研究聯盟區塊鏈技術,結合醫療健康信息集成規范IHE,探討對跨區域電子病歷共享模型研究方法,構建了基于聯盟區塊鏈的電子病歷系統模型。該模型不僅便于患者就醫,而且能與醫院的其他系統較好地銜接,除此之外,該模型中的電子病歷有很強的保密性,竊取、篡改都極為困難,使患者的隱私信息得到很好的保護,同時在必要時又可以在取得患者同意的前提下方便地進行共享。該模型的設計與實現對疫情醫療大數據背景下共享醫療資源和提升醫療系統的服務質量有一定的現實意義。
電子病歷;聯盟區塊鏈;系統開發
隨著國家對信息化的高度重視,區塊鏈技術初次被納為國家信息化發展規劃[1]。醫療行業的興起、醫療數據爆發式增長,諸多醫院逐漸重視并使用電子醫療病歷(Electronic Health Record,EHR)[2]取而代之原有病歷,基于區塊鏈的電子病歷系統作為國家信息技術應用重要領域,逐漸變為民眾健康信息化建設關注的焦點。在疫情影響下,醫療系統逐漸走進社會人士的視野。面對13億人的醫療信息,系統數據管理便成了一件炙手可熱的問題,由于區塊鏈技術去中心化、不易篡改、方便數據共享等特點,使得許多醫院逐漸興起區塊鏈電子醫療病歷系統研究熱潮。
在本文中,主要介紹了自主開發的基于聯盟區塊鏈的電子病歷系統的使用安裝說明,以及該系統在虛擬機中的配置流程。該部分區塊鏈利用分布式數據儲存技術,具有分布式的容錯性、不可篡改、隱私保護等的優點,是解決目前電子病歷使用諸多問題的關鍵技術。
(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.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安裝成功
(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網絡中在注冊一次,方可登錄。
就目前來講,電子病歷管理系統于國內外而言也是不成熟的,本文結合實際醫院調研,并通過研究了聯盟區塊鏈,利用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號))