潘 恒,潘 磊,姚中原,斯雪明
1.中原工學(xué)院前沿信息技術(shù)研究院,鄭州450007
2.中原工學(xué)院計(jì)算機(jī)學(xué)院,鄭州450007
3.復(fù)旦大學(xué)計(jì)算機(jī)學(xué)院,上海201203
電子病歷(electronic health record, EHR)的廣泛使用和共享能夠有效提高醫(yī)療服務(wù)的效率和靈活性,特別是與云存儲(chǔ)、移動(dòng)應(yīng)用結(jié)合后,可以全面提升公共醫(yī)療的便捷化、智能化、治療精準(zhǔn)化水平[1].然而,電子病歷中存有大量病人隱私和疾病治療等敏感信息.在云環(huán)境中,數(shù)據(jù)集中存儲(chǔ)在云上,大大增加了被攻擊的可能性,使病人隱私等敏感數(shù)據(jù)的保護(hù)變得更加困難[2-3].這不僅嚴(yán)重影響了智能醫(yī)療的發(fā)展,而且極易引發(fā)醫(yī)患糾紛[4-5].
電子病歷安全共享主要研究以下兩個(gè)問(wèn)題:一是要能有效防止未授權(quán)實(shí)體對(duì)病歷的非法訪問(wèn),二是要使病人能夠?qū)ζ渥陨聿v數(shù)據(jù)進(jìn)行全程的跟蹤和管理,增加醫(yī)療服務(wù)透明性,防止醫(yī)患矛盾.在現(xiàn)有的研究中,針對(duì)第1 類問(wèn)題的研究較多,而第2 類問(wèn)題還未引起足夠的重視.實(shí)際上,針對(duì)一些政府要員、企業(yè)高管等特殊人群,其電子病歷的隱私一旦泄露,就可能帶來(lái)嚴(yán)重后果,因此病人在這些情況下要求對(duì)自身病歷信息的訪問(wèn)有足夠的知情權(quán)和控制權(quán).
電子病歷數(shù)量的增加使得分布式存儲(chǔ)成為必然,而區(qū)塊鏈的分布式賬本技術(shù)恰好滿足這一安全需求.區(qū)塊鏈?zhǔn)峭ㄟ^(guò)密碼技術(shù)和多方共識(shí)、以區(qū)塊為單位存儲(chǔ)數(shù)據(jù)、按時(shí)間順序?qū)^(qū)塊組成哈希鏈的一種分布式賬本[6-7].因?yàn)閰^(qū)塊鏈具有分布式、鏈上數(shù)據(jù)難篡改、防抵賴、可溯源等特點(diǎn),所以許多學(xué)者將電子病歷與區(qū)塊鏈技術(shù)相結(jié)合,為解決電子病歷隱私保護(hù)等安全問(wèn)題積極尋找新思路[8-13].
在不同的區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)下,其安全共享解決方法完全不同.在現(xiàn)有的基于區(qū)塊鏈的病歷安全共享及隱私保護(hù)方法中出現(xiàn)了各種新框架和新模型,這些框架和模型的安全共享及隱私保護(hù)等通常是由不同的智能合約來(lái)實(shí)現(xiàn)的[14-16].例如:文獻(xiàn)[2]提出了一個(gè)基于區(qū)塊鏈的醫(yī)療分布式記錄管理原型MedRec,采用3 種不同智能合約為患者提供全面的、不可變的日志,保證病患隱私信息的安全性、可用性及多平臺(tái)的互操作性.GEM 公司聯(lián)合飛利浦區(qū)塊鏈實(shí)驗(yàn)室開(kāi)發(fā)了基于以太坊區(qū)塊鏈的醫(yī)療應(yīng)用Gem Health.這是一個(gè)醫(yī)療保健數(shù)據(jù)共享的區(qū)塊鏈基礎(chǔ)設(shè)施,能提高以患者為中心的醫(yī)療服務(wù)效率,通過(guò)智能合約實(shí)現(xiàn)身份認(rèn)證、數(shù)據(jù)安全存儲(chǔ)和訪問(wèn)控制,解決現(xiàn)有醫(yī)療系統(tǒng)無(wú)法互信的分享醫(yī)療數(shù)據(jù)等問(wèn)題[17-18].文獻(xiàn)[19]設(shè)計(jì)了適用于癌癥治療的基于區(qū)塊鏈的數(shù)據(jù)安全共享框架,借助對(duì)稱密鑰管理實(shí)現(xiàn)對(duì)EHR 數(shù)據(jù)的細(xì)粒度訪問(wèn)控制,但未能充分討論對(duì)稱密鑰的存儲(chǔ)等安全問(wèn)題.文獻(xiàn)[20]根據(jù)治愈患者、醫(yī)生、保險(xiǎn)公司人員總結(jié)的經(jīng)驗(yàn)、技能和協(xié)作成功率等提出了一個(gè)基于熟悉度證明(proof-of-familiarity)的共識(shí)算法及聯(lián)盟區(qū)塊鏈方案,但該機(jī)制的熟悉度證明共識(shí)算法僅采用簡(jiǎn)單加權(quán)實(shí)現(xiàn).文獻(xiàn)[21]基于以太坊平臺(tái)搭建了Fairchain 模型,設(shè)計(jì)了“注冊(cè)”和“訪問(wèn)控制”兩個(gè)智能合約進(jìn)行遠(yuǎn)程癌癥護(hù)理的協(xié)作決策,但在共享病歷時(shí)采用的是將病人私鑰傳遞給授權(quán)用戶的方法,因此存在安全隱患.
上述研究工作雖然取得了一定進(jìn)展,但仍存在一些局限.
1)缺少病人對(duì)自己病歷訪問(wèn)的知情權(quán)和控制權(quán).在現(xiàn)有電子病歷安全共享方法中,僅有少量文獻(xiàn)談到在病歷訪問(wèn)前要知會(huì)病人[5,15],而關(guān)于如何讓病人有效管控自身病歷訪問(wèn)的文獻(xiàn)就更少了.
2)不同機(jī)構(gòu)間病歷的互操作困難.由于區(qū)塊鏈賬本存儲(chǔ)能力有限,通常采用鏈上賬本存儲(chǔ)病歷關(guān)鍵摘要信息,鏈下數(shù)據(jù)庫(kù)存儲(chǔ)病歷完整信息的方法.實(shí)際上,病人的完整醫(yī)療信息可能分散在各個(gè)醫(yī)院和診所的不同鏈下數(shù)據(jù)庫(kù)中,而跨機(jī)構(gòu)病歷的互操作一直是個(gè)難點(diǎn).現(xiàn)有解決方法一般利用多個(gè)智能合約將同一病人的不同病歷關(guān)聯(lián)起來(lái)[5,19-20],但在鏈下訪問(wèn)時(shí)會(huì)涉及到鏈上多個(gè)智能合約的運(yùn)行、多項(xiàng)內(nèi)容的上鏈等,其實(shí)現(xiàn)難度較大,效率不高.針對(duì)上述問(wèn)題,本文提出一個(gè)應(yīng)用于云存儲(chǔ)環(huán)境的電子病歷安全訪問(wèn)方案HyperEHR,該方案具有以下特點(diǎn):
1)考慮到訪問(wèn)及存儲(chǔ)效率,將病人分為普通病人和有特殊病歷管理需求的病人.對(duì)于特殊需求病人,利用公鑰和時(shí)戳等設(shè)計(jì)了由病人管控的病歷安全訪問(wèn)方法,使病人對(duì)自己的病歷訪問(wèn)有足夠的知情權(quán)和管控權(quán).
2)關(guān)于鏈下數(shù)據(jù)的存儲(chǔ)問(wèn)題,采用在云環(huán)境下部署星際文件存儲(chǔ)系統(tǒng)(interplanetary file system, IPFS)的方法.所有存取訪問(wèn)均由IPFS 存取網(wǎng)關(guān)統(tǒng)一進(jìn)行,這種基于IPFS內(nèi)容哈希存儲(chǔ)和查找方式可有效提高病歷的訪問(wèn)效率,且在鏈下病歷訪問(wèn)時(shí)不涉及多個(gè)智能合約的協(xié)同操作和多項(xiàng)內(nèi)容的上鏈操作.為保證病歷管理的可追溯、不可篡改,可將病歷訪問(wèn)的關(guān)鍵操作寫入?yún)^(qū)塊鏈賬本.
區(qū)塊鏈可分為許可鏈和非許可鏈[22].非許可鏈?zhǔn)强梢噪S意加入或退出的公鏈.許可鏈指節(jié)點(diǎn)加入或退出鏈需要許可,通常必須進(jìn)行身份認(rèn)證.根據(jù)許可鏈共識(shí)范圍是否在一個(gè)機(jī)構(gòu)內(nèi)部,還可以將許可鏈分為私有鏈和聯(lián)盟鏈.聯(lián)盟鏈由多個(gè)機(jī)構(gòu)共同參與管理,其中每個(gè)機(jī)構(gòu)運(yùn)行著一個(gè)或多個(gè)節(jié)點(diǎn).節(jié)點(diǎn)間的權(quán)限完全對(duì)等,它們不需要完全互信就可以直接進(jìn)行交互,并由對(duì)等節(jié)點(diǎn)共同記錄交互信息.
超級(jí)賬本(Hyperledger)是目前最具代表性的聯(lián)盟鏈,由Linux 基金會(huì)于2015年發(fā)起,包括4 個(gè)子項(xiàng)目:Fabric、Sawtooth LakeIroha、Blockchain-explorer.Fabric 通過(guò)易配置的權(quán)限管理、可擴(kuò)展的技術(shù)架構(gòu)、開(kāi)放的接口、可插拔的組件來(lái)為不同應(yīng)用提供通用開(kāi)發(fā)平臺(tái)[23-25].Fabric 系統(tǒng)架構(gòu)包括鏈碼服務(wù)(chaincode)、成員服務(wù)和區(qū)塊鏈服務(wù)三部分.其中:鏈碼是擴(kuò)展的智能合約;成員服務(wù)用PKI 和CA 來(lái)認(rèn)證并管理用戶身份;區(qū)塊鏈服務(wù)使用P2P 協(xié)議、可插拔共識(shí)算法來(lái)管理分布式賬本.Fabric 節(jié)點(diǎn)分為背書(endorser)、排序(orderer)、認(rèn)可(committer)等不同角色.
IPFS 是一種分布式文件系統(tǒng),集成了分布式哈希表(distributed Hash table, DHT)、比特流內(nèi)容分發(fā)協(xié)議BitTorrent、自認(rèn)證文件系統(tǒng)SFS 和分布式版本控制Git 等系統(tǒng)的特點(diǎn)和功能[26-28],其突出優(yōu)勢(shì)在于文件的存儲(chǔ)和查找方式.存儲(chǔ)時(shí)先將文件分為相同大小的若干塊,再計(jì)算各塊的雜湊值以構(gòu)建文件檢索表,這樣就將各文件塊分布式地存放于不同服務(wù)器.查找時(shí)只需輸入文件內(nèi)容的雜湊值而不必關(guān)心文件存儲(chǔ)位置,IPFS 系統(tǒng)就會(huì)根據(jù)文件檢索表和內(nèi)部路由表自動(dòng)查找并組合各塊還原原始文件.此外,IPFS 通過(guò)構(gòu)建集群來(lái)管理分布在各處的設(shè)備進(jìn)行統(tǒng)一服務(wù).IPFS 集群可分為私有集群和公有集群.
從廣義上來(lái)說(shuō),智能合約是一段部署在區(qū)塊鏈上可以自動(dòng)觸發(fā)、自動(dòng)執(zhí)行的代碼.智能合約存儲(chǔ)在區(qū)塊鏈上的合約地址中,運(yùn)行于特定環(huán)境(如虛擬機(jī)、容器等)內(nèi),由用戶自己定義編寫業(yè)務(wù)邏輯,通過(guò)交易命令觸發(fā)并調(diào)用執(zhí)行,完成區(qū)塊鏈賬本上的數(shù)字資產(chǎn)管理及其他需要區(qū)塊鏈參與的相關(guān)功能[29].
本文所采用的Hyperledger Fabric 超級(jí)賬本的智能合約也被稱為鏈碼(chaincode),在安全輕量級(jí)的沙箱(docker)中運(yùn)行,支持Go、Java 等語(yǔ)言.鏈碼的正常運(yùn)行需要與世界狀態(tài)(world state)數(shù)據(jù)庫(kù)進(jìn)行狀態(tài)的獲取和交互.此外,F(xiàn)abric 還引入了多通道(multichannel)概念,使得不同業(yè)務(wù)在不同通道上運(yùn)行,確保同通道連接的節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)隔離.
本文提出的HyperEHR 模型采用聯(lián)盟鏈形式,主要包括醫(yī)院、社區(qū)診所、保險(xiǎn)公司、研究所等機(jī)構(gòu),如圖1所示.病人、醫(yī)院醫(yī)護(hù)人員、研究人員、保險(xiǎn)員等個(gè)體作為區(qū)塊鏈網(wǎng)絡(luò)的應(yīng)用用戶,可以通過(guò)手機(jī)APP 或相關(guān)的Web 頁(yè)面來(lái)訪問(wèn)與自身相關(guān)的內(nèi)容并處理事務(wù).區(qū)塊鏈上僅存儲(chǔ)醫(yī)療信息摘要及訪問(wèn)日志,而更詳細(xì)的信息存儲(chǔ)于云端.考慮到多家不同機(jī)構(gòu)之間的互操作性和訪問(wèn)效率等,采用私有IPFS 系統(tǒng)進(jìn)行云存儲(chǔ).存取網(wǎng)關(guān)是IPFS 管理服務(wù)器,能夠存儲(chǔ)云端所有醫(yī)療數(shù)據(jù)的分布式哈希表DHT,同時(shí)參與病歷訪問(wèn)控制過(guò)程.
圖1 HyperEHR 模型架構(gòu)Figure 1 Architecture of HyperEHR model
本文根據(jù)病人對(duì)其病歷是否有全程管控的需求,將病人分為普通和特殊兩類.無(wú)論哪類病人,病歷均由病人就醫(yī)所在醫(yī)療機(jī)構(gòu)生成.對(duì)于普通病人,為了保證病歷的安全,醫(yī)療機(jī)構(gòu)在上傳病歷時(shí)制定了基于屬性的病歷訪問(wèn)控制策略,征得病人同意后將訪問(wèn)策略和病歷數(shù)據(jù)同時(shí)上傳至IPFS.在IPFS存儲(chǔ)時(shí),將訪問(wèn)策略、病歷數(shù)據(jù)作為不同文件分為若干塊存儲(chǔ)在云端不同服務(wù)器上,同時(shí)將病人ID、病歷ID、病歷摘要、訪問(wèn)控制策略摘要等關(guān)鍵信息雜湊后存儲(chǔ)在區(qū)塊鏈網(wǎng)絡(luò)各機(jī)構(gòu)賬本中.
當(dāng)某機(jī)構(gòu)用戶(保險(xiǎn)公司業(yè)務(wù)人員、研究機(jī)構(gòu)人員、醫(yī)院醫(yī)生等)需要申請(qǐng)某病人病歷時(shí),首先向所在機(jī)構(gòu)發(fā)出申請(qǐng),機(jī)構(gòu)審核請(qǐng)求者身份等信息.如果同意,則轉(zhuǎn)發(fā)申請(qǐng)至IPFS 管理服務(wù)器.IPFS 管理服務(wù)器首先恢復(fù)訪問(wèn)控制策略,如果滿足,則恢復(fù)病歷文件,這樣所有病歷均通過(guò)IPFS 系統(tǒng)存儲(chǔ)而不必存儲(chǔ)在本地.根據(jù)IPFS 的存取特點(diǎn),可以保證文件的存取效率,同時(shí)實(shí)現(xiàn)跨機(jī)構(gòu)的病歷訪問(wèn).此外,上述文件的請(qǐng)求和反饋等訪問(wèn)過(guò)程均存入?yún)^(qū)塊鏈,以保證病歷訪問(wèn)的可追溯、不可篡改等特性.
本文重點(diǎn)研究特殊需求病人對(duì)病歷的管控訪問(wèn)方法,因此對(duì)普通病人病歷的管理方法論述不多,具體內(nèi)容可參考訪問(wèn)控制策略[30-32]及病歷結(jié)構(gòu)[33]等相關(guān)文獻(xiàn).
本文提出的HyperEHR 模型主要包括4 部分功能.
1)本地病歷管理
病人就醫(yī)后由醫(yī)院等醫(yī)療機(jī)構(gòu)生成病歷,用病人公鑰對(duì)病歷加密后上傳至IPFS 管理服務(wù)器,并銷毀在醫(yī)療機(jī)構(gòu)本地存儲(chǔ)的病人病歷.
2)云端病歷管理
IPFS 管理服務(wù)器負(fù)責(zé)云端存儲(chǔ),包括將加密后的病歷分塊、雜湊、存儲(chǔ)、訪問(wèn)等工作.
3)病歷訪問(wèn)
特殊病歷請(qǐng)求者向請(qǐng)求者所在機(jī)構(gòu)發(fā)出病歷請(qǐng)求,所在機(jī)構(gòu)審核同意后向IPFS 服務(wù)器發(fā)出病歷申請(qǐng),IPFS 管理服務(wù)器審核通過(guò)后向病人發(fā)出申請(qǐng).若病人同意,則向IPFS 提交病歷訪問(wèn)請(qǐng)求,IPFS 將查詢DHT 表還原加密的病歷反饋給病人,由病人用自己的私鑰解密后反饋給病歷請(qǐng)求者.這個(gè)過(guò)程如圖2所示.
4)區(qū)塊鏈存證
上述醫(yī)療機(jī)構(gòu)、所在機(jī)構(gòu)、IPFS 管理服務(wù)器的所有訪問(wèn)操作都將存儲(chǔ)在區(qū)塊鏈的各個(gè)賬本中.
圖2 病人管控的電子病歷安全訪問(wèn)流程Figure 2 Working flow of patient-controlled security access for EHR
本文所提出的方法構(gòu)建在Hyperledger Fabric 環(huán)境中,假設(shè)系統(tǒng)所有機(jī)構(gòu)、用戶均通過(guò)認(rèn)證,并擁有公私鑰對(duì).機(jī)構(gòu)以及IPFS 服務(wù)器之間互相擁有對(duì)方的公鑰,且各機(jī)構(gòu)和病人均信任IPFS 服務(wù)器,如圖3所示.為了簡(jiǎn)化,在圖3中僅畫出成功訪問(wèn)后上鏈的部分.
圖3 病人可控的安全訪問(wèn)方法Figure 3 Patient-controlled security access method
步驟1訪問(wèn)者R向所在機(jī)構(gòu)DEP 發(fā)起病歷訪問(wèn)請(qǐng)求.
其中,R={IDR,IDP,IDDEP,Rpk,RMR,r,t0},包括發(fā)起請(qǐng)求者IDR、病人IDP、機(jī)構(gòu)IDDEP、請(qǐng)求者公鑰Rpk、請(qǐng)求病歷內(nèi)容Rmr、請(qǐng)求原因r、發(fā)起請(qǐng)求的時(shí)間戳t0.為了防止請(qǐng)求內(nèi)容被篡改,將ReqMsg 進(jìn)行雜湊,并將雜湊值用請(qǐng)求者私鑰進(jìn)行簽名.
步驟2機(jī)構(gòu)DEP 收到請(qǐng)求后,利用請(qǐng)求者公鑰Rpk驗(yàn)證簽名以核實(shí)請(qǐng)求者身份,重新計(jì)算ReqMsg 雜湊值進(jìn)行數(shù)據(jù)完整性認(rèn)證.根據(jù)請(qǐng)求者提供的查看病歷原因r,判斷是否允許同意請(qǐng)求.如果同意,則生成票據(jù)T={IDR,IDDEP,IDP,Rpk,Valtime,t1}.其中,Valtime為該票據(jù)的有效時(shí)間,t1為機(jī)構(gòu)DEP 更改的新時(shí)間戳.接著,使用IPFS 服務(wù)器公鑰加密后生成ET,發(fā)送給IPFS 服務(wù)器.否則拒絕請(qǐng)求.
步驟3IPFS 服務(wù)器首先以自己的私鑰IPFSsk解密獲取票據(jù)T,同時(shí)使用機(jī)構(gòu)公鑰進(jìn)行驗(yàn)證,通過(guò)雜湊值對(duì)比來(lái)保證T來(lái)源和內(nèi)容的可靠性,判斷票據(jù)是否在有效期.如果票據(jù)仍在有效期,則僅將T中時(shí)間戳修改為當(dāng)下時(shí)間t2.接著,IPFS 服務(wù)器用自己的私鑰和病人公鑰重新生成E?T,并將E?T傳給病人.否則拒絕請(qǐng)求.
步驟4病人以自己的私鑰Psk解密獲得T,同時(shí)利用IPFS 的公鑰驗(yàn)證T的完整性.如果同意請(qǐng)求者訪問(wèn),則向IPFS 發(fā)出獲得自己病歷請(qǐng)求GET_EMR 消息.這里為了區(qū)別,將加密后的病歷用EMR 來(lái)表示.否則拒絕請(qǐng)求.
步驟5IPFS 返回加密后的病歷給病人,病人用自己的私鑰解密后還原原始病歷,并用請(qǐng)求者公鑰加密后發(fā)給請(qǐng)求者
本文提出的模型在實(shí)現(xiàn)的過(guò)程中分為3 層,如圖4所示.其中:數(shù)據(jù)層主要包括鏈下和鏈上數(shù)據(jù)庫(kù),即鏈下IPFS 系統(tǒng)的分布式云存儲(chǔ)和鏈上基于Hyperledger Fabric 構(gòu)建的區(qū)塊鏈賬本.業(yè)務(wù)層主要實(shí)現(xiàn)病歷安全存儲(chǔ)和訪問(wèn)功能,包括傳統(tǒng)的Web 及手機(jī)端的醫(yī)療數(shù)據(jù)管理,用于醫(yī)療機(jī)構(gòu)、其他機(jī)構(gòu)相關(guān)人員、病人的注冊(cè)、日常信息訪問(wèn)等.基于IPFS 系統(tǒng)的云存儲(chǔ)管理程序以及區(qū)塊鏈智能合約負(fù)責(zé)病歷信息的鏈下存取以及對(duì)病歷關(guān)鍵信息和關(guān)鍵操作的鏈上存證.與用戶交互的界面層,可以實(shí)現(xiàn)用戶通過(guò)Web 或手機(jī)界面查看和輸入相應(yīng)信息的功能.病人既可以通過(guò)界面管控自己的病歷訪問(wèn)、輸入密鑰、進(jìn)行授權(quán)等操作,又可以查看自己的完整病歷信息以及追溯病歷訪問(wèn)歷史;醫(yī)療機(jī)構(gòu)人員及其他人員可以通過(guò)界面進(jìn)行病歷上傳、請(qǐng)求、下載等操作.
圖4 HyperEHR 實(shí)現(xiàn)框架Figure 4 HyperEHR implementation architecture
HyperEHR 采用Hyperledger Fabric 架構(gòu)實(shí)現(xiàn),其區(qū)塊鏈網(wǎng)絡(luò)如圖5所示.HyperEHR包括為交易排序并打包的order 節(jié)點(diǎn)及醫(yī)療機(jī)構(gòu)、病歷請(qǐng)求機(jī)構(gòu)、IPFS 服務(wù)器.每個(gè)機(jī)構(gòu)均部署Fabric CA,為其下節(jié)點(diǎn)生成公私密鑰對(duì)并頒發(fā)證書,其中Order CA 為上級(jí)CA.
圖5 HyperEHR 區(qū)塊鏈網(wǎng)絡(luò)實(shí)現(xiàn)框架Figure 5 Network implementation architecture for HyperEHR blockchain
為簡(jiǎn)化實(shí)驗(yàn),在阿里云上搭建4 臺(tái)主機(jī)進(jìn)行模擬,其中兩臺(tái)模擬病人節(jié)點(diǎn),一臺(tái)模擬請(qǐng)求者,一臺(tái)模擬IPFS.4 臺(tái)主機(jī)配置均為4 核、8 G 內(nèi)存、Ubutu16.04 操作系統(tǒng),數(shù)據(jù)庫(kù)使用LevelDB,系統(tǒng)采用solo 共識(shí)協(xié)議.設(shè)計(jì)兩個(gè)通道以及病歷管理和病歷訪問(wèn)兩個(gè)智能合約,其中合約由Node.js 實(shí)現(xiàn),部署在所屬通道節(jié)點(diǎn)上,如表1所示.
表1 通道業(yè)務(wù)表Table 1 Channel of transactions
本文所提出了特殊需求病歷安全訪問(wèn)算法中所涉及的、由請(qǐng)求機(jī)構(gòu)向IPFS 服務(wù)器提交的病歷請(qǐng)求,其數(shù)據(jù)結(jié)構(gòu)如下:
其key 值由Prefix 名和ID 組成,value 屬性中UUID 用來(lái)標(biāo)識(shí)病歷請(qǐng)求類型、請(qǐng)求者或應(yīng)答者的身份.其中,病歷請(qǐng)求類型分一般和特殊兩種狀態(tài).當(dāng)申請(qǐng)被接受時(shí),觸發(fā)通知病人審核,同時(shí)啟動(dòng)區(qū)塊鏈各節(jié)點(diǎn)的背書、共識(shí)、認(rèn)定等操作后在區(qū)塊鏈上增加新塊.其對(duì)應(yīng)的算法簡(jiǎn)要描述如下.
由病人向IPFS 服務(wù)器提交的病歷請(qǐng)求,其數(shù)據(jù)結(jié)構(gòu)如下.
其key 值由Prefix 名和其ID 組成,value 屬性中UUID 用來(lái)識(shí)別病歷請(qǐng)求類型、請(qǐng)求者或應(yīng)答者的身份.其中,病歷請(qǐng)求類型分一般和特殊兩種狀態(tài).當(dāng)申請(qǐng)被接受時(shí),同時(shí)啟動(dòng)區(qū)塊鏈各節(jié)點(diǎn)的背書、共識(shí)、認(rèn)定等操作后在區(qū)塊鏈上增加新塊.其對(duì)應(yīng)的算法簡(jiǎn)要描述如下:
本文所提出的HyperEHR 方案采用基于Hyperleger Fabric 聯(lián)盟鏈以及云存儲(chǔ)架構(gòu),與其他以太坊等區(qū)塊鏈架構(gòu)相比,其擴(kuò)展性較好,容易實(shí)現(xiàn)機(jī)構(gòu)以及用戶的擴(kuò)展.相比于現(xiàn)有方案,HyperEHR 具有IPFS 的存取特性,因此實(shí)現(xiàn)不同機(jī)構(gòu)用戶對(duì)醫(yī)療數(shù)據(jù)的互操作效率較高.
醫(yī)療數(shù)據(jù)的安全性針對(duì)普通用戶和特殊用戶兩類.對(duì)于普通用戶來(lái)說(shuō),基于區(qū)塊鏈、IPFS存儲(chǔ)的安全性比一般系統(tǒng)更高.對(duì)特殊用戶來(lái)說(shuō),病歷數(shù)據(jù)生成后通過(guò)用戶公鑰加密上傳.只有用戶同意并采用自己的私鑰解密,才能獲得病歷信息,因而保證了其隱私數(shù)據(jù)的安全,以及病人對(duì)自身病歷的可控性.
從效率上講,雖然公鑰加密的效率不高,但HyperEHR 將用戶分為普通病人和特殊病人兩類,從總體上來(lái)說(shuō)需要公鑰加密病歷存儲(chǔ)的特殊需求病人占比不大.
本文將所提出的HyperEHR 與現(xiàn)有文獻(xiàn)進(jìn)行對(duì)比,如表2所示,可以看出本文方法除效率外,在各方面的性能均有所提高.
表2 不同方案對(duì)比Table 2 Comparision of different schemes
電子病歷的廣泛應(yīng)用可以有效提高醫(yī)療水平、用戶體驗(yàn),并降低相關(guān)費(fèi)用.然而,如何保證電子病歷的安全仍然存在很多問(wèn)題.其中,以病人為中心的電子病歷安全共享是防止醫(yī)患矛盾且保護(hù)病人隱私的一個(gè)重要研究方向.政府要員、企業(yè)高管等特殊人群的病人通常需要有足夠的知情權(quán)和控制權(quán),但現(xiàn)有文獻(xiàn)對(duì)該問(wèn)題研究得不夠充分.本文主要針對(duì)這一問(wèn)題,設(shè)計(jì)了一個(gè)基于聯(lián)盟區(qū)塊鏈和IPFS 的由病人管控的電子病歷安全共享方案.該方案可以將有特殊需求病人的病歷完整信息加密存儲(chǔ)在鏈下,將其關(guān)鍵病歷信息及訪問(wèn)信息存儲(chǔ)在區(qū)塊鏈上,較好地實(shí)現(xiàn)了病人嚴(yán)格控制下的電子病歷安全訪問(wèn)以及不同機(jī)構(gòu)對(duì)電子病歷互操作的目標(biāo).下一步的研究工作是實(shí)現(xiàn)方案中IPFS 的云存儲(chǔ).