白 楓
(山東省濟(jì)南市章丘區(qū)人民醫(yī)院,山東 濟(jì)南 250200)
作為醫(yī)院臨床醫(yī)療信息的重要載體,傳統(tǒng)電子病歷所涉及的醫(yī)療數(shù)據(jù)極為龐雜,這為醫(yī)院、政府及第三方機(jī)構(gòu)等部門的數(shù)據(jù)充分共享帶來了極大的難度,加上電子病歷中不乏病患診療的隱私信息。因此,如何既高效又安全地實(shí)現(xiàn)數(shù)據(jù)共享、涉及電子病歷智能合約成為這個(gè)時(shí)代的全新命題。作為一種多方共同維護(hù)、利用密碼學(xué)保障數(shù)據(jù)安全、確保數(shù)據(jù)一致存儲(chǔ)、難以篡改的新技術(shù),區(qū)塊鏈的出現(xiàn)為傳統(tǒng)電子病歷共享難題及隱私安全保護(hù)提供了解決方案。區(qū)塊鏈自帶的哈希算法與電子認(rèn)證技術(shù)的結(jié)合能夠精準(zhǔn)識(shí)別病患身份,配合同態(tài)加密與零知識(shí)證明等技術(shù)的支持,確保了電子病歷數(shù)據(jù)的真實(shí)性、完整性,加上多冗余分布式數(shù)據(jù)庫,為病患信息存儲(chǔ)及其可追溯性提供了保證。當(dāng)前,國內(nèi)很多醫(yī)院仍采用的是傳統(tǒng)電子病歷系統(tǒng),尚未構(gòu)建起區(qū)塊鏈技術(shù)架構(gòu)。這導(dǎo)致醫(yī)院系統(tǒng)數(shù)據(jù)管理困難、病歷書寫與醫(yī)學(xué)信息支持難以結(jié)合等一系列問題。推進(jìn)基于區(qū)塊鏈技術(shù)的醫(yī)院電子病歷系統(tǒng)的建設(shè)刻不容緩。
隨著時(shí)代的發(fā)展,國內(nèi)醫(yī)院管理水平大幅提升,很多醫(yī)院已然開發(fā)出自己的醫(yī)療健康管理與電子病歷系統(tǒng)。然而,此類系統(tǒng)仍依賴于計(jì)算機(jī)軟件對(duì)電子病歷進(jìn)行存儲(chǔ),加上硬件設(shè)施落后,無法有效保障數(shù)據(jù)充分共享及病患隱私,導(dǎo)致傳統(tǒng)電子病歷系統(tǒng)應(yīng)用面臨諸多痛點(diǎn)。
為了實(shí)現(xiàn)電子病歷系統(tǒng)在醫(yī)院中的高效應(yīng)用,關(guān)鍵是要確保數(shù)據(jù)的充分共享與實(shí)時(shí)獲取功能,為醫(yī)生獲取病患信息、做出科學(xué)診斷提供有力保障。然而,就國內(nèi)醫(yī)院信息化建設(shè)實(shí)際來看,多數(shù)系統(tǒng)均為獨(dú)立搭建,并未建立起統(tǒng)一標(biāo)準(zhǔn)的醫(yī)療信息化平臺(tái)。這導(dǎo)致病患在院際間的醫(yī)療信息難以共享,信息孤島問題愈加突出,醫(yī)生無法全面獲悉病患就醫(yī)史,極大地影響了診病效率與治療效果。隨著大數(shù)據(jù)等技術(shù)的引入,部分醫(yī)院雖建立起醫(yī)療數(shù)據(jù)共享平臺(tái),但由于信任機(jī)制的缺失以及數(shù)據(jù)接口、格式及傳輸協(xié)議的不統(tǒng)一,使得這種共享仍停留在局部、小范圍層面[1]。
傳統(tǒng)電子病歷主要依賴于計(jì)算機(jī)軟件中心化形式存儲(chǔ),無論是數(shù)據(jù)安全性,還是病患隱私性均難以保證,極易引發(fā)信息泄露及隱私侵權(quán)等問題。由于醫(yī)院病患的醫(yī)療數(shù)據(jù)多數(shù)并未經(jīng)過授權(quán)而存儲(chǔ)于中心化數(shù)據(jù)庫中,因而存在部分機(jī)構(gòu)未經(jīng)病患允許便私自調(diào)用其病歷信息,致使病患隱私泄露,引發(fā)不良的社會(huì)影響,加上傳統(tǒng)中心化數(shù)據(jù)存儲(chǔ)模式極易遭受攻擊,醫(yī)院往往又不注重提高網(wǎng)絡(luò)安全級(jí)別,因而很難保證病歷信息的完整性、真實(shí)性[2]。
長期以來,國內(nèi)醫(yī)療領(lǐng)域均存在較為復(fù)雜的利益鏈條,醫(yī)院、醫(yī)療器械、藥品公司等多重利益交織,“以藥養(yǎng)醫(yī)”等醫(yī)療弊端日趨凸顯,“過度醫(yī)療”等問題愈演愈烈。然而,受傳統(tǒng)電子病歷系統(tǒng)的影響,有關(guān)部門難以及時(shí)獲取電子病歷、醫(yī)生處方等醫(yī)療大數(shù)據(jù)。這導(dǎo)致醫(yī)療監(jiān)管困難,無法實(shí)時(shí)取證和處理,加上監(jiān)管機(jī)制的不健全,使得醫(yī)療監(jiān)管難度進(jìn)一步增加[3]。
針對(duì)醫(yī)院傳統(tǒng)電子病歷系統(tǒng)的痛點(diǎn),區(qū)塊鏈技術(shù)提供了有效的解決方案。其不可篡改及加密技術(shù)通過對(duì)病歷信息進(jìn)行確權(quán)與安全可追溯,保障了共享數(shù)據(jù)的真實(shí)性、完整性,加上哈希算法的支持,避免醫(yī)療數(shù)據(jù)或隱私泄露。監(jiān)管部門可利用區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)置監(jiān)管報(bào)警或防御機(jī)制,提供全醫(yī)療流程的監(jiān)管。文章具體就基于區(qū)塊鏈的電子病歷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)展開研究。
根據(jù)醫(yī)院內(nèi)部科室管理、病患掛號(hào)就診、醫(yī)生問診等流程,結(jié)合既有電子病歷模型,本文開發(fā)了能夠保障病患隱私,并為醫(yī)生提供遠(yuǎn)程就診與網(wǎng)絡(luò)治療的電子病歷系統(tǒng),并設(shè)定了一套權(quán)限管理方案,為所需調(diào)用或查看病歷的醫(yī)生提供高效、安全的技術(shù)支持,最終以編寫及部署智能合約到區(qū)塊鏈上來實(shí)現(xiàn)各項(xiàng)業(yè)務(wù)。具體需求涉及如下方面:(1)依循傳統(tǒng)電子病歷系統(tǒng)處理流程,開發(fā)涉及用戶注冊(cè)登錄、課時(shí)管理、醫(yī)生問診及查詢病患?xì)v史記錄、病患授權(quán)管理等一系列流程。(2)針對(duì)病患、醫(yī)生、管理人員三類用戶開發(fā)Client客戶端,創(chuàng)建對(duì)應(yīng)的身份管理鏈碼并編寫鏈碼數(shù)據(jù)結(jié)構(gòu)。(3)搭建NodeJs服務(wù)器,并利用服務(wù)器調(diào)用不同鏈碼的SDK API,對(duì)系統(tǒng)存儲(chǔ)于區(qū)塊鏈的數(shù)據(jù)進(jìn)行存取或增刪修改,將結(jié)果顯示于前端頁面[4]。
根據(jù)應(yīng)用場(chǎng)景及系統(tǒng)需求,選擇區(qū)塊鏈類型中最適宜醫(yī)院、能夠一直增加節(jié)點(diǎn)的聯(lián)盟鏈提供技術(shù)架構(gòu),聯(lián)盟鏈無序集中服務(wù)器,而是利用共識(shí)機(jī)制使節(jié)點(diǎn)無需相互信任即可傳送信息。要保障系統(tǒng)性能,本設(shè)計(jì)需要對(duì)節(jié)點(diǎn)配置及網(wǎng)絡(luò)環(huán)境進(jìn)行驗(yàn)證,通過設(shè)置準(zhǔn)入機(jī)制對(duì)訪問者進(jìn)行限制或驗(yàn)證,以此提高交易的性能。根據(jù)區(qū)塊鏈層次模型構(gòu)建的醫(yī)院電子病歷系統(tǒng)架構(gòu),如圖1所示。
圖1 基于區(qū)塊鏈技術(shù)的醫(yī)院電子病歷系統(tǒng)架構(gòu)
由圖1可知,系統(tǒng)架構(gòu)自下而上共包括5層,即數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、合約層、應(yīng)用層,除了5層基礎(chǔ)架構(gòu)以外,還涉及醫(yī)療數(shù)據(jù)的采集。最基本的醫(yī)療數(shù)據(jù)源自病患就診的個(gè)人信息記錄,這是最初的電子病歷。本設(shè)計(jì)將病歷數(shù)據(jù)依循區(qū)塊鏈“區(qū)塊頭+區(qū)塊體”的格式進(jìn)行封裝,經(jīng)數(shù)據(jù)層的哈希算法與時(shí)間戳等加密處理后,將其鏈接到區(qū)塊鏈內(nèi),在通過網(wǎng)絡(luò)層的多簽名復(fù)雜網(wǎng)絡(luò)設(shè)置與管理機(jī)制連接,利用分布式組網(wǎng)方式使數(shù)據(jù)分布在不同節(jié)點(diǎn)數(shù)據(jù)庫內(nèi)。共識(shí)層負(fù)責(zé)引入共識(shí)機(jī)制,將多機(jī)構(gòu)部門節(jié)點(diǎn)加入?yún)^(qū)塊鏈內(nèi),并將各節(jié)點(diǎn)共識(shí)算法予以封裝,確保共識(shí)信任,并在合約層實(shí)現(xiàn)標(biāo)準(zhǔn)化等內(nèi)容,使之嵌入?yún)^(qū)塊鏈中確保電子病歷的一致性與標(biāo)準(zhǔn)化。應(yīng)用層則借助動(dòng)態(tài)管理平臺(tái)向醫(yī)生、病患、醫(yī)療機(jī)構(gòu)等提供醫(yī)療數(shù)據(jù)查詢、共享等服務(wù)。在系統(tǒng)整體架構(gòu)中,時(shí)間戳、哈希算法等加密技術(shù)、分布式節(jié)點(diǎn)組網(wǎng)機(jī)制、共識(shí)算法、智能合約及動(dòng)態(tài)管理平臺(tái)均保障了醫(yī)院電子病歷管理過程的標(biāo)準(zhǔn)化、規(guī)范化與安全化[5]。
基于區(qū)塊鏈技術(shù)的醫(yī)院電子病歷系統(tǒng)涉及6個(gè)子模塊,分別是病歷管理、病歷權(quán)限管理、文本加解密、區(qū)塊鏈客戶端、錢包管理及登錄管理模塊。其中,病歷管理模塊主要提供新病例的創(chuàng)建與添加、病歷查詢與修改、圖片上傳與管理等功能,支持對(duì)節(jié)點(diǎn)本地的系統(tǒng)數(shù)據(jù)庫訪問。病歷權(quán)限管理模塊負(fù)責(zé)病歷權(quán)限的查詢與添加、病患掛號(hào)與注銷等操作。文本加解密模塊采用PKI體系及密碼學(xué)原理,提供哈希算法、數(shù)字簽名算法等,提供私鑰交易創(chuàng)建與定價(jià)、支付對(duì)應(yīng)金額、發(fā)送私鑰、確認(rèn)私鑰交易、私鑰驗(yàn)證、結(jié)賬、退款及交易列表查詢等功能。登錄模塊用于對(duì)所有用戶身份信息進(jìn)行管理,包括各節(jié)點(diǎn)用戶的注冊(cè)、登錄、賬號(hào)創(chuàng)建、密碼修改、注銷等,所有用戶需要先經(jīng)過系統(tǒng)節(jié)點(diǎn)審核與驗(yàn)證方可加入。客戶端模塊則面向的是后端客戶群體,負(fù)責(zé)響應(yīng)其對(duì)區(qū)塊鏈網(wǎng)絡(luò)的請(qǐng)求,并提供查詢及交易請(qǐng)求管理、網(wǎng)絡(luò)執(zhí)行通道創(chuàng)建、節(jié)點(diǎn)信息配置、鏈代碼部署等子功能。錢包管理模塊則涉及錢包的創(chuàng)建、充值、余額查詢、交易記錄查詢等子功能[6]。為了保障數(shù)據(jù)的完整性,避免病歷信息遭到篡改,醫(yī)院或醫(yī)療機(jī)構(gòu)通過注冊(cè)授權(quán)生成一個(gè)代碼,用戶利用代碼上傳病患病歷信息時(shí)可引入電子簽名技術(shù),以此保障數(shù)據(jù)的可追溯性與安全性。
對(duì)于病患而言,其對(duì)電子病歷享有支配權(quán),具有查看與授權(quán)的能力,卻無修改或添加新病例的能力。病患進(jìn)入系統(tǒng)后需要利用區(qū)塊鏈鏈碼寫入注冊(cè)或登錄信息,就診前還需向管理員出示涉及病人編號(hào)的證件方可掛號(hào),登錄成功后可查詢自身病歷本的授權(quán)列表、病歷信息及歷史就診記錄等。醫(yī)生進(jìn)入系統(tǒng)也需填寫編號(hào)及密碼登錄,登錄成功后可查看掛號(hào)病人列表,也可創(chuàng)建以病人編號(hào)為索引的就診記錄,病人授權(quán)后可獲取其病歷信息、歷史就診信息等,還可將新建病歷存儲(chǔ)至病歷本及科室出診記錄中。管理員負(fù)責(zé)管理科室醫(yī)生列表,醫(yī)生只有被添加至科室內(nèi)方可查看掛號(hào)病患列表,只有當(dāng)病患被添加至掛號(hào)列表內(nèi),醫(yī)生才能選擇其為問診對(duì)象。
病患、醫(yī)生及管理員三類用戶與區(qū)塊鏈之間交互是借助7個(gè)滿足系統(tǒng)要求的鏈碼Chaincode實(shí)現(xiàn)的,包括科室掛號(hào)出診管理、就診記錄管理、病人信息管理、醫(yī)生信息管理、科室信息管理、病人病歷本管理、病歷信息管理等鏈碼Chaincode,每個(gè)鏈碼Chaincode都能分別執(zhí)行一段邏輯處理,同時(shí)又能被HTTP服務(wù)器路由所調(diào)用,最終反映到不同用戶在前端頁面的具體操作中。以科室掛號(hào)出診管理鏈碼Chaincode為例,管理員利用該鏈碼可對(duì)醫(yī)生出診列表DoctorOnList中的醫(yī)生進(jìn)行增減等操作,也可將就診病人信息從掛號(hào)列表PatientRegisterList中增添或移除,以此實(shí)現(xiàn)對(duì)各科室醫(yī)生出診及病人掛號(hào)的管理。就診記錄管理鏈碼為醫(yī)生創(chuàng)建與病患一對(duì)一的就診關(guān)系提供支持,醫(yī)生可利用該鏈碼創(chuàng)建或刪除以病人編號(hào)PatientId為索引的就診記錄。在該過程中,病人需要根據(jù)所創(chuàng)建就診記錄添加病歷授權(quán)碼RecordAuthCode,醫(yī)生可查看病人授權(quán)碼[7]。
綜上所述,醫(yī)院傳統(tǒng)電子病歷系統(tǒng)普遍面臨著信息存儲(chǔ)中心化與孤島化、數(shù)據(jù)共享困難、安全風(fēng)險(xiǎn)大等一系列痛點(diǎn)。而區(qū)塊鏈技術(shù)因其典型的分布式存儲(chǔ)賬本特征、多通道特性及不可篡改性有效彌補(bǔ)了傳統(tǒng)電子病歷系統(tǒng)的缺陷,不僅克服了系統(tǒng)中心化弊端及信息孤島問題,還為多組織成員的有效管理與數(shù)據(jù)安全防護(hù)提供了技術(shù)保障。本文構(gòu)建的基于區(qū)塊鏈技術(shù)的醫(yī)院電子病歷系統(tǒng)雖然基本達(dá)到了預(yù)期目標(biāo),但還涉及諸多完善與補(bǔ)充工作。因此,未來還需就電子病歷系統(tǒng)的功能拓展、數(shù)據(jù)加密操作、數(shù)據(jù)庫與區(qū)塊鏈結(jié)合、系統(tǒng)容量擴(kuò)大等多個(gè)方面展開深入研究,以持續(xù)優(yōu)化電子病歷系統(tǒng)的性能,為智慧醫(yī)院建設(shè)提供有力保障。