邵輝



摘要:文章設計并實現了一種基于區塊鏈的共享病歷系統,通過醫院、病人、醫生三種用戶類型進行使用,有效促進了共享病歷的發展,改變了當前病歷信息不標準、不規范、內容少的問題。電子共享病歷能全面客觀地描述病情,更好地促進醫療事業的發展,而區塊鏈技術也有力保障了病人的隱私問題。
關鍵詞:區塊鏈;共享病歷;共識協議;智能合約;加密
中圖分類號:TP301.6 ? ? ?文獻標識碼:A
文章編號:1009-3044(2022)13-0063-02
醫療衛生領域的改革雖然一直在進行,但是效果有限,看病難最大的一個原因是各級醫院間的信息不暢通[1],特別是醫療數據只在醫院內部流轉和共享[2],導致診治醫生不能看到病人完整的歷史就診記錄,無法實施精準施治。為破解這個難題,文章提出共享病歷的構想,建設以共享病歷為基礎的區域衛生信息平臺[3],促進各級醫療衛生機構之間數據共享。當病歷實現共享后,病人就沒有必要做同樣的化驗和檢驗,在不同的醫院也可以采用同一版病歷。醫生在得到病人授權后,就可以直接調取病人病歷,查看其所有的看病情況。
但是如何構建數據共享機制來指導共享病歷的建設是目前的一大問題[4],各個醫院參與意愿很低,而且病人的隱私也容易被不法分子竊取,傳統的技術很難滿足這兩點要求。但區塊鏈技術出現后,它的特性決定了能有效破解安全、共享兩大難題。
區塊鏈利用塊鏈式數據結構來驗證與存儲數據,它是一種去中心化和防篡改的分布式網絡數據庫,還具備很多新型計算機技術應用模式,包括加密機制、共識算法、分布式數據存儲、點對點傳輸等。共享病歷采用區塊鏈技術,首先因為區塊鏈擁有時間戳,這樣保存在鏈上的數據都會帶有時間標識,更因為在每次交易時采用密碼學方法使區塊和鄰近的兩個區塊均有聯系,因此任何一次交易均可追溯,所以可以保證病歷記錄可追溯;其次可以保證病歷數據不被篡改,因為區塊鏈利用分布式節點共識算法來生成和更新數據,存儲的數據都是不可篡改的日志類型數據;最后可以保證病歷數據的安全性,因為區塊鏈利用密碼學的技術,保證數據傳輸和訪問的安全。
1系統架構
基于區塊鏈的共享病歷系統采用區塊鏈網絡Hyperledger Fabric,該網絡串聯起各個醫院等機構組成聯盟。醫院聯盟提供數據共享的基礎設施,可以實現多個醫院組織間共享電子病歷。每一條醫療鏈完整的區塊鏈服務均存放于每家醫院,利用此鏈可以完成醫療數據的查詢、驗證等服務。另外還建立一臺訪問服務器用以提供對外訪問服務,此訪問服務器保存的內容有:醫療服務的服務器地址、醫療信息的文件權限信息。當存儲地址變更時,只需修改訪問服務器。系統建立在一個分散的網絡上[5],連接所有的醫療大型機構,如圖1所示。
2 系統關鍵問題
本系統有三個關鍵問題,分別是加密算法、智能合約和共識算法。
2.1 區塊鏈的加密算法
當前采用基于屬性基加密的方案有兩種:采用密文策略的屬性基加密[6]和采用密鑰策略的屬性基加密[7]。在現代密碼體制下,密碼系統的安全性更多地取決于密鑰的保密性。一般不聯網訪問的私鑰存儲為冷錢包,聯網訪問的為熱錢包。冷錢包避免了黑客盜取私鑰的風險,比熱錢包更安全,但是熱錢包可以隨時交易。本系統為實現安全的病歷數據共享,采用KP-ABE算法來生成公私鑰對,用公鑰對病歷進行加密。
在KP-ABE算法里一個訪問控制對應一個密鑰、一個屬性集合對應一個密文,只有當屬性集合中的屬性可以滿足此訪問結構時才能進行解密。也就是說利用相關的屬性對密文加密后保存于服務器,然后讓用戶利用授予的特定的訪問結構來訪問相應的消息。
2.2 區塊鏈的智能合約
區塊鏈系統使用智能合約來管理對病歷的授權,除非得到用戶授權,否則他人查看到的只是加密后的數據。區塊鏈的智能合約[8]是一種具有狀態的、由事件觸發的協議,它能夠自行進行驗證并能自動執行。
在Fabric架構中智能合約也稱為鏈碼,包括:系統鏈碼、用戶鏈碼。通常用GO語言或者JAVA語言來實現鏈碼所要求的接口代碼;鏈碼對不同的運算操作會分別設置不同的函數,并且對其進行一定的邏輯判斷;鏈碼與其他數據庫中的所有數據之間能夠實現交互是基于運算方法getstate()和putstate();通常將鏈碼在背書節點上安裝,定義好背書策略再于某通道進行實例化后才能運行鏈碼;鏈碼作為訪問賬本的基本方法,在一個安全的背書節點創建和管理的沙盒內運行,這樣可以將背書節點隔離于鏈碼的運行環境。
2.3 區塊鏈的共識算法
共識算法使一組節點能夠基于特殊節點列表形成共識。區塊鏈數據的一致性是利用共識協議來保證,共識算法不同則適用情況也不同。常用的共識算法包括權益證明算法、工作量證明算法、股份授權證明算法和PBFT算法。實用拜占庭容錯算法是首個解決拜占庭將軍問題的方案,在Hyperledger Fabric中應用十分廣泛。PBFT算法使用較少的預選定將軍數,即參與投票節點的身份是事先知道的,因此運行非常高效,交易的確認時間只需幾秒鐘。
PBFT算法有三個重要階段:預準備、準備和確認。預準備階段和準備階段要確定同一個view里每個副本節點均認可的序列,然后按照序列執行;準備階段和確認階段則確保已經達到確認狀態的請求在發生view change后仍然在新的view里維持原序列。
算法具體做法如下:
1)客戶端發起請求后,系統輪流選舉出主節點,初始化時發出View-new消息,同步所有節點的數據。
2)用戶將請求轉發給主節點并由其驗證通過后再進行廣播,發起預準備消息給所有的下一個節點并且保存。
3)所有的下節點收到預準備消息后進行校驗,防止造假或者篡改。
4)下節點驗證正確之后永久寫入,再廣播預準備消息并一起進入預準備階段。
5)根據所有節點統計的結果,當超過2f個節點后,大部分節點均已持久化,則進入確認階段。
6)把確認消息進行廣播并統計收到的確認消息的數量,當超過2f節點后,則寫入數據。利用狀態機更新,然后將最后一次請求返回給用戶端。
7)當用戶端統計消息超過f個節點后,則交易已被確認成功。如果超時則向所有的非主節點廣播。
PBFT共識遵循核心成員的“51%權利”,它的初始特殊節點列表要接納一個新成員,必須由51%的會員投票通過;PBFT算法具備權限分級能力,性能更高,耗能更低;PBFT算法是采用“許可投票、少數服從多數”來選舉領導者并進行記賬的共識機制,它使用拜占庭容錯機制,而且每輪記賬都會由全網節點共同選舉領導者,允許20%的節點作惡,也就是說容錯率為20%,如果區塊鏈上總的節點數是n個,則可以容忍(n-1)/5個節點出現拜占庭錯誤。
因為醫療系統是一個相對安全、穩定的環境,而且實用拜占庭容錯算法在吞吐量以及交易確認時間方面有著巨大的優勢,因此本系統使用PBFT共識機制來使系統快速達成共識,每個區塊鏈服務器都會保存一份病歷鏈的完整副本。
3 系統實現
系統設計如圖2所示:
系統分為前端和后端。前端的邏輯業務層為各種用戶可以訪問的頁面提供支持。前端系統包含三類用戶:病人、醫生、醫院管理人員,區塊鏈中的賬本數據都是由這三類用戶來操作。例如病人、醫生和醫院管理人員的登錄界面如圖3所示:
前端系統包括以下主要功能模塊:身份認證模塊用來確認登錄賬號是否正確,并根據賬號角色來分配相應的操作權限。無論是具有管理權限的賬號還是只能瀏覽查看的賬號,身份認證模塊均可以記錄所有用戶的操作行為到日志文件作為存證,病人也可以授權給醫生是否可以查看自己病歷,如圖4所示;查詢模塊用來根據用戶所輸入的查詢指令在區塊鏈數據庫中獲取相應的信息,例如病人想查看自己的病歷,則查詢模塊根據病人的指令要求,顯示相應的病歷信息;加密模塊用非對稱加密的方式來將區塊鏈數據庫的病歷信息進行加密,進一步防止病歷信息的泄露;處理模塊用來將電子病歷信息保存到區塊鏈型數據庫中。
后端為與Fabric交互的數據信息操作層,后端系統主要包括共識機制模塊、區塊鏈驗證模塊和交易執行與存儲模塊。
4結束語
本文基于區塊鏈設計并實現了共享病歷系統,此系統設計了符合醫院需求的業務設計,并通過編寫和部署智能合約到區塊鏈上來實現,最后利用VUE框架和JAVA語言完成了前端頁面實現。本系統的實現會促進共享病歷的發展,有效改變當前病歷信息不標準、不規范、內容少的問題。電子共享病歷將能更全面客觀地描述病情,促進醫療事業的發展,而區塊鏈技術也有力保障了病人的隱私問題。
參考文獻:
[1] 高敏,葉晰,蔣靜,等.電子病歷信息安全共享關鍵技術[J].計算機系統應用,2012,21(12):12-16.
[2] 尤麗玨.區域性電子病歷信息共享的探索和研究[J].中國醫療設備,2009,24(2):84-85.
[3] 馬錫坤,楊國斌,于京杰.國內電子病歷發展與應用現狀分析[J].計算機應用與軟件,2015,32(1):10-12,38.
[4] 林娟娟,陳小嫦.構建醫療聯合體的關鍵問題分析及其對策建議[J].南京醫科大學學報(社會科學版),2014,14(2):104-108.
[5] 張辰,馬素剛,李宥謀,等.基于區塊鏈的醫療系統[J].現代電子技術,2021,44(4):133-137.
[6] Bethencourt J, Sahai A, Waters B. Ciphertext-policy attribute-based encryption[C]//Berkeley,CA,USA:2007 IEEE Symposium on Security and Privacy.IEEE,2007:321-334.
[7] 周正強,陳玉玲,李濤,等.基于聯盟鏈的醫療數據安全共享方案[J].應用科學學報,2021,39(1):123-134.
[8] Szabo N.Smart contracts: building blocks for digital markets[EB/OL].[2020-08-26]. https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool20 06/szabo.best.vwh.net/smart_contracts_2.html.
【通聯編輯:張薇】