天津衛寧健康科技有限公司 楊娜
近年來隨著數據存儲技術的迅猛發展,區塊鏈已經被越來越多的人所認識,憑借區塊鏈的技術優勢它被迅速應用于多種場景。醫療機構信息化建設經過多年的發展已趨向成熟,電子病歷做為醫療信息化系統中重要的組成部分,已經逐漸代替了傳統的紙質病歷,為病患就醫提供了極大的便利。但電子病歷由于數據存儲在醫院內部,缺乏必須要監管和安全措施,給一些非法數據造假行為提供了便利條件。本文將區塊鏈技術優勢與電子病歷實際應用場景相結合,提出一種解決當前電子病歷安全性問題的可行思路。
區塊鏈與傳統的數據存儲技術相比,最大的特征之一就是“去中心化”。傳統的數據存儲技術,在網絡中通常都是由一個固定的節點或者集群來完成數據持久化的功能,即所有數據都會存儲到一個特定位置或區域[1]。這樣做會給系統帶來很大的負面影響,當數據訪問量過大使系統出現過載或者發生單點故障的時候,整個系統就會處于失效狀態,從而無法保持系統對外提供服務。而區塊鏈技術則從根本上解決了這個問題,它不再依賴于任何單個節點,而是將數據以分布式架構的方式分散存儲到所有的節點,不再受到單點故障的影響,從根本上避免了傳統技術架構存在的缺陷,如圖1所示。
區塊鏈技術本身的安全機制成為它最有特色的亮點,也成為它與傳統技術最大的區別點。在傳統的基于關系型數據庫中,由于任何具有權限訪問數據庫的人都可以對已有數據進行操作,從而為不法分子帶來可乘之機,他們可以隨意在數據庫中修改、偽造數據,而很難被其他人發現。區塊鏈采用了鏈式的存儲結構,多個區塊首尾相連形成一條數據鏈,同時每個區塊都會記錄上一個區塊的Hash值,可以理解為不同區塊之間相互驗證真實性[2]。如果要修改其中一個區塊的數據值,就必須要修改整條數據鏈上所有的區塊記錄,因此為數據造假提供了極大的難度,避免了為人故意偽造數據帶來的安全隱患。
數據集體維護也是區塊鏈存儲技術的又一大創新。由于傳統的數據庫只能存儲在單節點架構,而單節點通常只能從屬于一個機構維護和管理,因此數據的準確性、安全性和權威性都無法得到保證。區塊鏈存儲方式從根本上解決了這種問題,由于區塊鏈是分布式結構,同一聯盟鏈中的區塊鏈從屬于不同的組織機構,數據采用同步的形式在不同區塊鏈之間同步。因此同一個區塊數據會被同步到不同的區塊鏈當中,這些互為備份的區塊節點不僅保證了數據的安全性,同時也起到相互之間驗證和監督的作用,任何一個數據節點被非法篡改后,其他區塊備份數據會立即發現異常情況,從而有效的解決單點存儲數據的可信性問題,使數據在信息系統中的權威性更加凸顯。
醫療機構對信息安全的要求非常高,數據不僅有保密的要求,而且對于同類機構通常也并不共享。這就對電子病歷的網絡存儲和數據隔離提出了一定的要求,數據不僅要安全、合規的存儲在物理硬件上,而且也不能被其他第三方非法訪問。區塊鏈雖說采用了分布式存儲機制,有著數據集體維護的技術特性,但這并不意味著數據可以被除所有者之外的第三方隨意訪問[3]。因為每個區塊在上鏈之前,存儲方會使用非對稱加密算法對數據進行加密,這種方式確保了存儲在區塊鏈上的數據只能由生成者進行解密,而其他人不能獲取存儲在區塊中的具體內容。這種操作機制既可以充分發揮數據分布式存儲的優勢,又能夠有效的保證存儲內容不被非法訪問。
病歷數據是治療過程的重要記錄文件,為患者未來就醫提供了可供參考的重要信息,或者在發生醫療糾紛時為醫患雙方提供有效的證據,因此病歷數據的真實性非常重要,不能被隨意篡改和偽造[4]。在使用區塊鏈技術存儲病歷時,所有上鏈數據必須先由生成者使用非對稱加密的私鑰,對上鏈區塊進行數字簽名后,連同簽名后的文檔一起存儲在區塊鏈中。由于使用了私鑰進行簽名,第三方無法模仿生成區塊節點數據,同時也不隨意修改區塊內的任何內容,這樣就可以保證存儲在區塊鏈中的內容真實、準確,在任何情況下都可以使用對應的公鑰對區塊數據進行驗證,確認存儲數據的準確性和真實性。
在發生醫療糾紛時,當事方為了保證自己的利益,通常會否認病歷數據不是由自己編寫,或者被第三方偽造,此時通過區塊鏈的安全機制就可以避免此類問題的發生。在醫生將患者病歷數據存儲到區塊鏈之前,需要先使用醫生的U盾(內部存儲醫生本人的數字證書)對當前的區塊內容進行簽名,完成后將區塊數據連同簽名后的文件一起上傳到區塊鏈中進行存儲[5]。上鏈后的數據可以被隨時下載并通過醫生的公鑰反向檢查,如果數據通過了驗證則表明當前區塊的數據真實有效,沒有被惡意修改或偽造,醫生也無法否認已經上鏈的數據。通過這種方式可以在發生醫療糾紛時,提供真實有效的病歷信息。
通常區塊鏈有3種構建方式,分別為公有鏈、私有鏈和聯盟鏈。(1)公有鏈上每個節點都可以根據自己的意愿加入或退出網絡,并參與到區塊鏈上的數據讀寫工作,在網絡中不存在任何中心化的管理節點。(2)私有鏈也稱之為專有鏈,它與公有鏈正好相反,各節點的寫入權限歸內部控制,而讀寫權限則有選擇性的對外開放。(3)聯盟鏈則是介于兩者之間的一種類型,在聯盟鏈上各個節點通常與實體機構相對應,通過授權后才能進入與退出,各機構共同完成區塊鏈的維護工作。
按照醫療業務場景特征,同時結合區塊鏈不同形態,聯盟鏈與醫療機構業務場景信息化最為匹配。使用聯盟鏈存儲電子病歷,首先需要建立其于至少3家以上醫療機構的區塊聯盟鏈。這個區塊鏈只針對這些醫療機構開放,其他外部實體無法訪問,醫療聯盟鏈里有多個預選節點做為信息的記賬人,每個區塊的生成由所有預選節點共同決定完成。在聯盟鏈中所有區塊數據都會被及時進行同步和備份,保證數據的安全性同時各鏈之間形成相互驗證和監督的機制。
區塊數據結構如何設計,成為電子病歷區塊化的重要基礎,區塊中由為3個主要部分構成,分別為區塊頭數據存儲區、業務數據存儲區、區塊簽名數據存儲區,它們共同組成了一個完整的區塊數據存儲部分。在向區塊鏈系統中提交一個新的區塊時,首先需要建立一個新的區塊,然后分別向這個新的區塊的不同部分填寫信息。
在區塊頭數據存儲區,需要記錄當前區塊的ID信息(通常是由程序生成UUID值,并寫入到區塊頭中對應的屬性),還需要使用MD5算法計算當前區塊的散列值,以保證本區塊寫入數據沒有發生變化。同時還要記錄當前區塊寫入的時間戳信息等內容,最后還要記錄當前區塊寫入時,它的上級區塊的Hash值數據,用來記錄區塊鏈條的每一個節點與它上游節點的連接關系。
區塊鏈業務數據存儲區中,則需要保存與本次就診有關的病歷數據,如患者ID、患者姓名、身份證號、出生日期、就診科室、醫生ID、醫生姓名、診斷結果、就診日期等關鍵業務數據,這些內容可以與其他系統的數據進行關聯,如本次就診涉及到CT數據,則可以將CT檢查結果的ID號記錄到區塊業務數據存儲區。業務數據是區塊鏈最核心的部分,因此在設計時必須嚴格遵守醫療機構信息系統規范,以便與其他的業務系統進行橫向關聯。
一個區塊節點的尾部,記錄了區塊簽名數據,它用來保證區塊內業務信息真實有效。此時需要醫生使用數字密鑰對當前的區塊進行電子簽名,形成區塊數字簽名證書,隨后將此證書附加到區塊的末尾。至此完成了電子病歷區塊化的全部流程,可以通過網絡接口將本區塊提交到聯盟區塊鏈上進行保存。
當區塊提交到區塊鏈后,在區塊聯盟鏈中所有的區塊鏈都會定期同步數據,即一個區塊會被同步到所有的區塊鏈,以保證聯盟鏈中數據的一致性,如圖2所示。
區塊鏈是未來數據存儲技術發展的一個重要方向,它與生俱來的安全性、可靠性已經成為解決業務領域眾多痛點的突破口,將區塊鏈的技術特性與醫療信息化系統相結合,也為未來醫療信息化帶來了新的發展機遇。電子病歷是最為常見的醫療信息化系統,與區塊鏈技術結合后可以解決當前電子病歷系統中常見的數據安全問題,打造安全、可信的醫療信息化系統。隨著區塊鏈技術的發展,未來的區塊鏈可以與更多的醫療場景相結合,催生出一批全新的應用場景,為醫療信息化領域建設提供了一個可供探索的新領域。