區塊鏈在電子病歷存儲中運用思考

前言:尋找寫作靈感?中文期刊網用心挑選的區塊鏈在電子病歷存儲中運用思考,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。

區塊鏈在電子病歷存儲中運用思考

摘要:針對傳統醫療信息管理系統中電子病歷存儲存在的數據篡改、隱私泄露、分享困難問題,提出將區塊鏈技術應用于電子病歷存儲與管理方案,結合去中心化的思想設計了系統中節點的行為,提出了一個可行的基于區塊鏈的電子病歷管理方案。通過驗證實驗驗證所提方法可行,利用區塊鏈對電子病歷進行管理在數據安全性上具有較大優勢。

關鍵詞:電子病歷;信息存儲;區塊鏈;訪問控制

信息化是各個行業發展的趨勢。在信息化的進程中,多數的醫院基本已經完成了辦公信息化、網絡化。在目前的醫療信息化結構下,醫院有各自的電子病歷數據庫,該數據庫處于醫院內部網絡中,不對外開放,形成信息孤島[1]。當患者到其他醫院就診時,患者的歷史就診信息無法共享給其他醫院,這就對歷史就診信息造成了浪費。同時,患者電子病歷集中存儲在一個數據庫服務器中,一旦遭受攻擊,極易造成大面積的信息泄露甚至是信息損壞,電子病歷數據在這種模式下極易被竄改。區塊鏈的特征在于去中心化[2],數據以區塊鏈的形式存儲是一種分布式的存儲方式,每個服務器結點都持有一個所有數據的副本,所有的服務器結點都按照一定的規則保持同步。使用區塊鏈技術存儲電子病歷,利用其分布式、不可修改的特性,可以解決電子病歷數據的共享問題,同時還保證了電子病歷不被修改。

1傳統電子病歷管理系統存在的問題

醫療信息管理系統一般基于C/S架構或B/S架構,在表現層一般使用桌面UI或者基于Web的用戶界面,數據處理后端則一般使用Java、C#、PHP等編程語言對數據庫進行操作。系統的總體架構如圖1所示。傳統電子病歷管理系統中,根據開發技術不同,表現層的實現方案也不同,但存儲方案比較單一,都是將醫療信息數據存儲到數據庫中。在各個醫院都各自建立醫療信息數據庫的背景下,由于不需要連接到外網,安全威脅較小,因此所有醫療數據幾乎都存儲在一個物理服務器中。這樣做在局部實現了信息化并且保證了一定的安全性,但是醫療信息無法與其他醫院共享,如果貿然接入外網共享醫療信息,則要面臨各個醫院數據接口不一致以及來自外網的各種高風險因素。區塊鏈的出現給醫療信息的存儲與共享提供了新的思路。

2基于區塊鏈的電子病歷存儲管理方案

2.1電子病歷的存儲內容

電子病歷包含了多項內容,需要存儲的信息包括病人的ID、姓名、性別等自然信息,病人的入院、出院、轉院、轉科等流轉情況,病人就診期間的各項檢查記錄、治療記錄,病人的護理記錄等等[3]。每個醫院根據自身情況,對電子病歷應當包含的信息大致相同,但一些數據項的細節可能稍有不一樣,這樣一來數據接口就難以統一。為了統一數據接口,可以考慮將電子病歷中所有的數據項都以JSON的形式進行序列化,將JSON串視為一整個數據大項。在需要獲取數據時,通過反序列化再次得到結構化的數據即可,然后根據特定系統提供的數據格式結構解析JSON得到最終數據。因此,電子病歷的具體存儲內容在文中的架構上不做固定要求,要獲取數據時只需要提供JSON格式的數據接口即可,這樣就保證了每個醫院的電子病歷信息兼容。

2.2基于區塊鏈的電子病歷存儲方案

整套存儲方案通過HTTP協議提供訪問接口與其他子系統進行交互,即存儲系統以HTTP服務器的方式提供服務,數據通過HTTP請求和響應的方式進行傳輸。Web服務器從用戶界面獲取到病歷信息,然后將病歷信息序列化成JSON格式的字符串,序列化以后的整個信息首先以患者ID為標識存入醫院的本地數據庫中。本地數據庫中的電子病歷字符串按照一定的周期(每3天、一周)由區塊鏈結點服務器查詢數據庫得到部分未同步過的本地病歷數據,經過由本地服務器持有的對稱密鑰加密后同步到區塊鏈中。圖2為該過程示意圖。

2.3電子病歷的分享模型

如果有需要將電子病歷進行共享,那么操作過程與電子病歷的存儲過程有些類似,只不過需要使用非對稱加密電子病歷數據,該過程描述如下。醫院存有本地的電子病歷數據庫,可以通過患者ID和區塊哈希值查詢到對應的電子病歷,然后將該病歷的JSON串通過數據請求方給定的公鑰加密并同步到區塊鏈當中。上述過程完成后,將帶有加密病歷數據的區塊對應的哈希值發送給數據請求方,數據請求方根據哈希值在區塊鏈中找到對應的區塊并將其取回,然后使用自己的私鑰解密得到最終病歷數據。在病例數據共享過程中,所有的未加密信息僅有患者ID和區塊哈希值,具體的電子病歷信息并沒有公開。由于患者在多個醫院都可以有電子病歷,若每個醫院把所有患者的全部病歷都保存在本地,則對醫院本地數據存儲及更新是一個負擔,而采用區塊鏈中的共識算法,每個醫院只要保存患者的前次病歷哈希值以及本次醫療信息即可(即最保存了最新病歷信息的一個區塊),避免了把患者的所有病歷都保存在本地而導致的存儲膨脹問題。由于把前次病歷的哈希值保存在本地數據庫,同時又防止了其他單位篡改患者病歷的可能性。

2.4電子病歷數據回溯模型

利用區塊鏈技術存儲電子病歷還能夠給病歷數據提供較高的安全保障,當本地數據庫因為攻擊或其他不可抗力受到損害時,可以利用區塊鏈的特性進行數據回溯,對丟失的數據進行找回,圖3展示了電子病歷數據回溯的模型。由于使用了區塊鏈技術,因此排除區塊鏈中數據被篡改的可能性,即區塊鏈中的數據完全可靠。當本地數據庫數據丟失時,可以從網絡中任一區塊鏈服務器中找到完整的歷史數據。注意到本地同步到區塊鏈上的區塊中存有經過本地對稱密鑰加密過的電子病歷信息,因此只需要沿著最后一個區塊將區塊鏈中最后一些區塊各個取回,然后使用本地密鑰解密即可還原出本地的歷史電子病歷。由于每個區塊保存的電子病歷都是由其同步的區塊鏈節點的本地密鑰進行加密,因此不必擔心未授權的電子病歷被其他節點看見。

3仿真實驗以及結果分析

為了驗證上述方案的可行性,使用Flask[4]對上述方案進行仿真實驗。仿真實驗運行在Windows平臺,基于python語言,實驗計算機具有16G內存和至強Sliver4110CPU。

3.1區塊的同步與獲取可以通過

previous_hash找到某一個區塊的前一個區塊,也可以通過hash來查找對應區塊。當以URL查詢區塊鏈時,結果如圖5所示。

3.2電子病歷回溯測試

假設某醫院的數據庫損壞,需要進行數據回溯,則可以通過新建一個區塊鏈節點注冊到區塊鏈任一節點實現數據同步,然后可以將數據解密后寫回數據庫,從而實現數據回溯。仿真實驗中新建了一個節點并注冊到區塊鏈,驗證共識算法的有效性(較短的區塊鏈會被較長的區塊鏈替代)。測試結果如圖6所示。

4結語

區塊鏈技術實際上提供了一個良好的分布式數據庫解決方案,其共識機制保證了所有節點數據一致,其數據結構又提供了修改區塊鏈要付出巨大代價這一特性,也就保證了數據不會被修改。利用區塊鏈的特性,文中提出了基于區塊鏈的電子病歷存儲方案,并給出了核心算法的實施方案。但是區塊鏈距離真正推廣運用還有很多問題需要解決,例如龐大區塊鏈的存儲問題,由此帶來的查找性能問題以及單個大數據的存儲問題等。

作者:秦嘉奇 單位:桂林信息科技學院

亚洲精品一二三区-久久