《基于區塊鏈的醫療記錄存儲系統設計》18000字(論文)_第1頁
《基于區塊鏈的醫療記錄存儲系統設計》18000字(論文)_第2頁
《基于區塊鏈的醫療記錄存儲系統設計》18000字(論文)_第3頁
《基于區塊鏈的醫療記錄存儲系統設計》18000字(論文)_第4頁
《基于區塊鏈的醫療記錄存儲系統設計》18000字(論文)_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

IV基于區塊鏈的醫療記錄存儲系統設計摘要醫療記錄是具有高度私密和有價值的數據,所以它的存儲和共享面臨著巨大的挑戰。現有的醫療記錄存儲系統大都是將數據存儲在中央數據庫中,而這種中心化存儲模式面臨著信息安全、數據共享等問題。區塊鏈技術的出現為解決現有醫療記錄存儲系統存在的問題提供了新的思路,因其具有去中心化、不可篡改、安全可信等特性,可用于解決現有醫療記錄存儲系統醫療面臨的上述問題。本文介紹了一個基于區塊鏈的電子醫療記錄存儲系統。該系統以web客戶端的形式呈現,使用SSM框架與MySQL實現后端業務邏輯,區塊鏈部分基于Hyperledgerfabric框架實現,使用java語言開發鏈碼。該系統基于區塊鏈技術的天然特性,結合Hyperledgerfabric框架的數據加密功能和自增的授權功能,使得患者擁有自己醫療記錄的絕對控制權,其他人需獲得患者授權才可訪問其醫療記錄,解決了傳統醫療記錄存儲系統的安全存儲和隱私保護問題。本系統結合了web客戶端和區塊鏈存儲技術,借助區塊鏈去中心化和不可篡改等特性實現了醫療記錄的安全存儲和共享,解決了采用中心化存儲模式的醫療記錄存儲系統的存儲共享安全和數據控制權錯位問題,是區塊鏈技術在醫療領域應用的一次嘗試。關鍵詞:區塊鏈;醫療記錄;安全存儲;共享目錄摘要 [17]。Fabric的共識機制主要包括背書、排序、校驗三個階段,具體如圖2-3所示。圖2-3Fabric交易過程/共識過程Figure2-3Fabrictransactionprocess/consensusprocess背書:客戶端首先將交易提案提交到指定的背書節點,背書節點收到交易提案后對其進行驗證簽名,然后對交易提案進行模擬執行,執行完畢后將背書結果和證書簽名一同發給客戶端;不同的背書策略規定了客戶端在收到一定數量的提案同意反饋后,才認為該交易是有效的。排序:排序節點將一個時間段內收到的所有交易按時間順序進行排序,然后將排好序的交易打包成數據塊,再將這些打包好的區塊廣播給通道中的所有成員。校驗:提交節點在接收到由排序節點發送來的交易后,首先對交易進行驗證,包括檢查交易簽名是否正確、交易數據是否完整以及是否滿足背書策略等。區塊鏈中只有通過校驗的交易才被認為是合法的,才可以將其將其寫入賬本。2.3web技術框架本系統web開發采用SSM框架。SSM框架是以標準的MVC模式將springMVC,spring和mybatis框架進行了整合,它是一種適用于搭建大型應用系統的輕量級JavaEE開發框架。Spring是為了解決企業應用開發的復雜性而創建的一個開源框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。

簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。SpringMVC是SpringFramework系列產品,MVC是一種由模型層(Model)、視覺層(View)、控制層(Controller)三部分組成的應用程序分層開發模型。MyBatis是一個基于Java的持久層框架,作為數據對象的持久化引擎,它對jdbc的封裝讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。

需求分析本章系統需求分析主要從功能性需求和非功能性需求兩方面進行了分析。首先簡要闡述了系統的整體需求,然后圍繞系統的整體架構對各個模塊進行了詳細的需求分析,并結合用例分析圖和功能描述表對各模塊涉及的參與角色及其功能進行詳細說明。最后從系統的安全性、可擴展性以及可用性等方面說明了系統的非功能性需求。3.1系統需求概述隨著互聯網的發展,醫療行業也趨于信息化。電子病歷逐漸取代了傳統的紙質醫療記錄,解決了保存管理麻煩、檢索不便的問題。但是現有的電子醫療記錄存儲系統大都采用中心化的數據存儲模式,將醫療機構的醫療數據存儲在某一中心數據庫中,然而這種中心化的存儲模式面臨著數據安全和隱私安全的問題,一旦中央數據庫遭到惡意攻擊,患者的醫療記錄將面臨被盜取和篡改的威脅,而這將極有可能導致患者在醫療糾紛中處于不利地位,使得患者的合法權益無法得到充分保障。而且各醫療機構之間的數據存儲格式可能有所差異,這將容易導致信息孤島問題,使得各醫療機構之間無法共享患者醫療記錄,對病人的跨院治療帶來一定的不便。本系統借助區塊鏈技術,結合HyperledgerFabric框架和web客戶端,針對現有的電子醫療記錄存儲系統的痛點問題,開發一個可以安全存儲、數據共享的醫療記錄存儲系統。由于區塊鏈技術天然的去中心化、不可篡改、信息可溯源等特性,保證了患者的醫療記錄存儲的安全性;同時區塊鏈可以將不同機構之間的醫療數據通過同一格式存儲在鏈上,解決了數據共享難的問題,為患者的跨院治療帶來了便利;系統的參與者有醫生、患者、科研機構、疾控中心,它們只有獲得授權才能查看患者的醫療記錄,同時存儲在區塊鏈中的醫療記錄無法被篡改,具有公信力,能夠在醫療糾紛中協助定責,確保公平性。3.2系統功能性需求系統的參與者有系統管理員、患者、醫生、科研機構、疾控中心,他們在系統中擁有平等的地位,彼此之間相互制約、相互合作,共同組成了一個區塊鏈聯盟。系統底層借助HyperledgerFabric框架完成,數據采用區塊鏈和本地MySQL聯合存儲,區塊鏈存儲患者醫療記錄,MySQL存儲用戶信息。系統管理員主要負責配置環境、用戶注冊管理、查看系統運行狀態以及用戶權限管理等業務,管理員可以審核系統參與者的資格,也可以查看區塊鏈相關的信息,只有通過管理員審核的用戶才可以加入該系統。但是在系統運行過程中不允許管理員干涉實際業務邏輯和訪問用戶隱私數據。醫生和患者在系統中擁有平等地位,屬于區塊鏈網絡中的對等節點,診治醫生根據患者的檢查治療結果為患者生成電子醫療記錄,得到患者的確定后將其上鏈存儲;患者本人對自己的醫療記錄擁有絕對的控制權,可以通過溯源碼或者自己的身份證號查詢追溯自己的醫療記錄,醫生或其他科研人員須得到患者的授權才能訪問醫療記錄。系統主要從三個方面來保證數據存儲的安全性。第一,醫生為患者創建病歷后,需得到或者的檢查確定后才可將其上鏈存儲,這從源頭上確保了數據的準確性;第二,患者的醫療記錄存儲在區塊鏈上,作為分布式的賬本,區塊鏈技術天然的不可篡改性保證數據的安全存儲和不被篡改;第三,出患者之外的所有用戶必須得到患者本人的授權才能訪問其醫療記錄,這保證了患者對自己醫療記錄的絕對控制權和共享時的隱私性。而且系統使用非對稱加密技術對系統中的數據進行安全加密,實現了數據的安全存儲和安全共享。3.2.1系統整體架構系統的整體架構分為四個模塊:系統管理模塊、醫生模塊、患者模塊、疾控中心模塊。如圖3-1所示,將在下文對各模塊的具體功能進行詳細敘述。圖3-1系統整體架構Figure3-1Overallsystemarchitecture3.2.2系統管理在該系統中,系統管理員與傳統管理員不同,它沒有所謂的上帝視角,它只是負責系統的管理和正常運行,不得干涉系統的業務邏輯或者私自訪問數據,這也與區塊鏈的去中心化相呼應。管理員的工作主要包括:搭建系統運行環境,負責用戶的注冊登錄,對加入的醫療機構進行資格審查,查看系統以及區塊鏈部分的運行狀態。系統管理員用例圖如圖3-2所示:圖3-2管理員用例圖Figure3-2Administratorusecasediagram搭建Fabric環境。本系統的區塊鏈部分是借助HyperledgerFabric框架完成,所以需要先配置Fabric環境,搭建區塊鏈網絡。在HyperledgerFabric網絡中,需要先利用聯盟鏈思想進行組織劃分,然后根據劃分的組織來設置通道,由通道來控制數據訪問。主要工作包括配置Order節點、peer節點,劃分組織,加入通道,申請數字證書,編寫智能合約并將其部署在通道中的peer節點上,客戶端便可通過智能合約與區塊鏈網絡進行交互。審核醫療機構。醫療機構作為大家信任的機構,主要負責為患者進行病情診治,然后根據診療結果將其生成醫療記錄并存儲至區塊鏈。為了避免非法機構進入系統,醫療機構加入該系統前需要經過管理員的資格審核,只有通過資格審核的醫療機構才可以加入該系統。查看區塊鏈狀態。根據自己搭建的區塊鏈網絡,借助Fabric搭建一個區塊鏈瀏覽器,管理員可以通過該瀏覽器實時查看區塊鏈網絡中所有的區塊、交易以及通道等關鍵信息。3.2.3醫生模塊醫生進行申請注冊后可以加入該系統,登錄進入系統后,可以進行個人密碼修改,還包括以下工作:根據溯源碼從區塊鏈查詢病歷,為患者創建病歷并在患者的授權下將病歷上傳至區塊鏈,查看自己添加過的醫療記錄列表。醫生用例圖如圖3-3所示:圖3-3醫生用例圖Figure3-3Doctorusecasediagram醫生功能用例分析:建立病歷。醫生為患者進行治療后,將治療過程所涉及的數據進行分類匯總,生成電子病歷,待患者對病歷進行檢查確定無誤后由醫生將其存儲在區塊鏈上。醫療記錄包括患者身份證號、溯源碼、患者基本信息、科室、病情、治療時間等。醫生為患者建立電子病歷功能如表3.1。表3-1建立病歷Table3-1Establishmentofmedicalrecords功能名稱為患者建立病歷功能涉及角色醫生功能具體描述醫生為患者治療,將其診療結果建成電子病歷輸入醫生對患者的治療信息輸出電子醫療記錄查詢病歷。醫生根據患者的溯源碼可以直接查看存儲在區塊鏈上的患者醫療記錄。醫生查看患者的醫療記錄的功能如表3-2。表3-2查看病歷Table3-2Viewmedicalrecords功能名稱查看病歷功能涉及角色醫生功能具體描述醫生根據患者的溯源碼從區塊鏈上查詢患者的醫療記錄輸入溯源碼輸出患者的醫療記錄申請授權因為醫療記錄的所有權歸患者所有,所以醫生在添加病歷時應該向患者申請授權,允許哪些參與者可以查看這個醫療記錄,沒有得到授權的參與者則無法查看患者的醫療記錄。醫生申請患者授權的功能表如表3-3。表3-3申請授權Table3-3Applicationforauthorization功能名稱申請授權功能涉及角色醫生功能具體描述醫生向患者申請哪些參與者可以查看其醫療記錄輸入參與者角色輸出是否對其授權3.2.4患者模塊醫療記錄屬于患者的私有數據,其控制權歸患者所有,患者應該對自己的醫療記錄擁有絕對的控制權,所以在醫生創建病歷時應申請患者的授權以允許哪些參與者可以查看其醫療記錄,只有獲得患者授權的用戶才可以查看其醫療記錄。患者也可以自己根據溯源碼查看存儲在區塊鏈上的醫療記錄。患者模塊功能用例如圖3-4所示:圖3-4患者用例圖Figure3-4Patientusecasediagram患者功能分析:查看病歷。患者可以隨時查看自己的醫療記錄,包括用溯源碼查看某一次醫療記錄和用身份證號查看自己所有的醫療記錄。患者查詢醫療記錄功能如表3-4。

表3-4查看病歷Table3-4Viewmedicalrecords功能名稱查看病歷功能涉及角色患者功能具體描述根據溯源碼查看某一次醫療記錄;根據身份證號查看所有醫療記錄輸入溯源碼或身份證號輸出患者的醫療記錄授權管理。因為患者對自己的醫療記錄擁有絕對的控制權,所以醫生在為患者新建病歷時需要向患者申請授權哪些參與角色可以查看其醫療記錄,只有獲得授權的參與者才能查看其醫療記錄。患者授權管理功能表如表3-5。表3-5授權管理Table3-5Authorizationmanagement功能名稱查看病歷功能涉及角色患者功能具體描述申請患者是否為用戶賦予查看其醫療記錄的權利輸入用戶角色輸出是否授權3.3系統非功能性需求系統不但要實現功能性需求,也要滿足非功能性需求,因為系統的非功能性需求往往是系統穩定運行的關鍵。系統非功能性需求主要包括安全性需求、可擴展性需求、可用性需求。3.3.1安全性保證數據存儲安全是該系統最大的特征之一。醫生提交患者的醫療記錄時須得到患者的檢查確認,從源頭上確保了數據的真實性;存儲數據時借助區塊鏈天然的不可篡改性,且保存至區塊鏈的數據均為加密后的密文,確保了數據的存儲安全;共享數據時需要的得到患者的授權。從以上三個方面確保了該系統的數據安全性。3.3.2可擴展性系統開發各個模塊組件應設計為可插拔式,為后續進行功能添加或更改提供便利,且修改某一模塊時對其他模塊沒有影響。3.3.3可用性操作界面應當美觀簡潔,在輸入輸出時有明確的提示,為用戶的操作提供便捷。

系統設計本章是系統設計,首先對區塊鏈網絡拓撲、智能合約、區塊鏈存儲進行了詳細設計,然后根據系統功能性需求分析,針對各個功能模塊分別給出詳細設計,包括管理員功能模塊、醫生功能模塊以及患者功能模塊。4.1區塊鏈網絡設計本系統使用HyperledgerFabric1.4.4版本搭建區塊鏈網絡。該網絡共包含四個組織,每個組織兩個peer節點,另外有一個order節點和四個CA節點,一個通道mychannel。如圖4-1為區塊鏈網絡拓撲圖。圖4-1區塊鏈網絡拓撲圖Figure4-1Blockchainnetworktopologydiagram客戶端節點。客戶端代表用戶最終的操作實體,所以它必須連接到某一個peer節點或者orderer節點上來完成與區塊鏈網絡之間的通信。首先客戶端向背書節點提交交易提案,背書節點對交易進行模擬執行并對其附加背書,當客戶端收集到足夠背書后,向排序節點提交交易,排序節點對提交的交易按時間順序進行排序,打包成區塊,廣播至所有節點。但是該節點出現故障后并不會影響區塊鏈網絡的正常運行。Peer節點。所有的peer節點都擔任記賬節點,有的peer節點也有可能擔任背書節點、主節點以及錨節點的角色。主節點與排序節點進行連接,負責把接收到的區塊轉發給其他節點。背書節點是與具體的鏈碼綁定的動態角色,它的故障對網絡的影響取決于鏈碼對應的背書策略。錨節點是在一個通道上可以被所有其他節點發現的節點。Order節點。orderer負責接收包含背書簽名的交易,然后對這些交易按時間順序進行打包,最后將打包好的區塊廣播給peer節點。CA節點。CA節點是區塊鏈網絡中的證書頒發機構,它是由服務器(fabric-ca-service)和客戶端組件(fabric-ca-client)組成的,主要負責對網絡中的用戶以及交易進行身份驗證。fabric網絡搭建啟動流程包括為各組織生成證書文件、生成創始區塊、創建通道配置節點信息和部署合約等內容。最后網絡部署成功如圖4-2:圖4-2網絡部署Figure4-2Networkdeployment4.2智能合約設計智能合約是一段部署在區塊鏈上的可以自動執行的計算機程序。在fabric中的智能合約也被稱為chaincode或者鏈碼,主要包含系統智能合約和用戶自定義合約。Fabric智能合約支持java、go、nodejs三種開發語言,并提供多個API函數接口供開發者使用,其中最主要的是Init、Invoke、main三個接口函數,main函數是智能合約的入口,Init函數是合約初始化函數,在實例化智能合約的時候調用,Invoke函數是觸發函數,對智能合約進行除初始化以后的所有操作時都在此函數調用。智能合約的具體部署流程如圖4-3所示:圖4-3鏈碼部署流程Figure4-3Chaincodedeploymentprocess智能合約的部署流程具體如下:(1)將鏈碼進行打包;(2)將鏈碼安裝到各個節點上;(3)組織成員對安裝的合約進行審核批準;(4)檢查提交的合約是否滿足在通道配置中定義的提交策略,該系統定義的背書策略要求超過一半的組織批準即可;(5)合約滿足定義的策略后將其提交;(6)調用Init()方法測試合約。至此,智能合約部署完成。4.3區塊鏈存儲設計4.3.1區塊結構設計眾所周知,比特幣系統是將交易信息保存在區塊鏈上,因此大家通常習慣說區塊記錄的是交易信息,但是并非只有交易信息可以記錄到區塊鏈上。在HyperledgerFabric中,所有區塊通過hash值進行前后連接,所以它也被稱為超級賬本,這些區塊不止可以存儲交易信息,也可以進行數據存儲。在本系統中,鏈上存儲的是醫療記錄,并非傳統的交易記錄。病歷區塊的具體結構如圖4-4所示:整個病歷區塊包含區塊頭和區塊體兩部分。圖4-4病歷區塊結構Figure4-4Medicalrecordblockstructure病歷區塊頭部具體結構如表4-1所示,其中大部分信息與傳統區塊鏈中的區塊頭信息相同,最大的區別在于MerkleRoot,這里的MerkleRoot是由醫療記錄產生的,并非是傳統的關于交易記錄的。表4-1病歷區塊頭Table4-1Medicalrecordblockheader字段字段說明Block_ID區塊的編號Block_Size區塊的大小PrevHash前一個區塊的hash值This_Hash當前區塊的hash值TimeStamp時間戳MerkleRoot醫療記錄的Merkle根病歷區塊體包括代表病歷記錄數量的MRnum、表示病歷記錄的MR*以及MR*之間的hash值,其中病歷記錄的具體結構如表4-2所示:

表4-2醫療記錄結構表Table4-2Thestructureofmedicalrecords字段類型描述Patient_nameString患者姓名Doctor_nameString醫生姓名IDString患者身份證號SexString性別DeskString科室DescriptionString診斷詳情Creat_timeString病歷創建時間Discharge_timeString出院時間moneyint花費金額4.3.2數據庫設計本系統數據存儲分為區塊鏈存儲和本地MySQL數據庫存儲。MySQL主要存儲用戶以及醫療機構信息,區塊鏈進行患者醫療記錄的存儲,本系統選用CouchDB作為狀態數據庫來存儲醫療記錄數據,CouchDB是一個完全局域RESTfulAPI的鍵值數據庫,它可以通過HTTP請求直接操作數據庫。本文搭建了一個區塊鏈瀏覽器,通過該瀏覽器可直接查看區塊鏈的數據存儲情況以及交易的具體信息。CouchDB中的主要字段如表4-3所示:表4-3CouchBD數據庫字段Table4-3CouchBDdatabasefields字段字段類型類型描述IDkeyString患者IDNamevalueString患者姓名AgevalueString患者年齡SexvalueString性別DeskvalueString科室DescriptionvalueString診斷詳情Creat_timevalueString病歷創建時間Discharge_timevalueString出院時間DoctorvalueString診治醫生在CouchDB數據庫中,字段id作為key值存儲,其他信息作為v值存儲。系統可根據ID在區塊中查詢數據。4.4管理員功能模塊設計此模塊對應的是管理員功能設計,主要包括用戶注冊、醫療機構審核。4.1.1用戶注冊管理用戶進入系統首先要進行注冊,將用戶的注冊信息存儲至本地MySQL數據庫,管理員可以為用戶分配角色。用戶登錄時從MySQL數據庫中進行檢索,若有該用戶便允許登錄,若不存在則進行注冊方可登錄。用戶注冊登錄設計到MySQL數據庫的用戶信息表和用戶數量自增表,具體如下:表4-4用戶自增量表Table4-4Userself-incrementtable字段類型描述User_numInt用戶數量,主鍵,自增Last_timedatatime更新時間表4-5用戶信息表Table4-5Userinformationtable字段類型描述User_idint用戶ID,主鍵Namevarchar(30)姓名Passwordvarchar(30)密碼Rolevarchar(30)角色Sexvarchar(10)性別ageint年齡4.1.2醫療機構審核醫療機構具體信息存儲在本地MySQL數據庫中,具體存儲結構見表4-6:表4-6醫療機構表Table4-6ListofMedicalInstitutions字段類型描述hospital_idint醫院機構代碼,主鍵hospital_namevarchar(32)醫院名稱hospital_stateint醫院狀態:1-正常0-待審核2-非法in_datedate提交審核時間審核通過即為審核時間管理員登錄進入系統,可以查看待審核的醫療機構列表,根據醫療機構的具體信息進行資格審核,審核通過的醫療機構才可加入該系統,然后管理員為審核通過的醫療機構申請查看患者醫療記錄的權限,只有獲得查看權限的醫療機構才可查看患者的醫療記錄。資格審核主要分為兩個步驟:首先要獲取待審核機構列表,該請求會輸出一個待審核機構list,如表4-7:表4-7待審核機構列表Table4-7Listoforganizationstobereviewed請求參數無返回參數返回參數描述Hospital_ID醫院IDHospital_Name醫院名稱inDate申請時間根據查詢到的待審核結構信息,管理員可以給出審核結果,通過或者不通過,改變數據庫中醫療機構的狀態,如表4-8表4-8審核醫療機構Table4-8Reviewofmedicalinstitutions請求參數請求參數描述Hospital_ID醫院IDHospital_State審核結果1-合法,2-非法返回參數返回參數描述result修改是否成功0-成功,1-失敗4.5醫生功能模塊設計醫生的主要功能包括個人信息管理、為患者建立病歷以及申請授權查看患者的醫療記錄。4.5.1建立病歷醫生為患者進行診療后,將患者的診斷結果生成電子醫療記錄,在經過患者的檢查確定無誤后將其存儲至區塊鏈上,其中病歷信息存儲結構見表4-2:建立電子病歷功能接口,見表4-9:表4-9建立病歷Table4-9Establishingamedicalrecord請求參數請求參數描述Doctor_ID醫生IDDoctor_Name醫生姓名Patient_Name患者姓名description病情描述返回參數返回參數描述result建立結果,0-成功,1-失敗4.5.2管理信息醫生管理個人信息模塊功能包括查詢與修改。醫生個人信息存儲結構見表4-10:表4-10醫生信息表Table4-10DoctorInformationTable字段類型描述IDstring醫生身份證號,主鍵NameString姓名DaskString科室hospitalString醫院醫生需要修改個人信息時,直接在對應的框里輸入新的信息,提交即可。涉及到的主要功能函數:醫生查詢個人信息接口,如表4-11所示:表4-11查詢個人信息Table4-11Querypersonalinformation請求參數請求參數描述doctorIDint,醫生id返回參數返回參數描述Doctor_Name姓名Hospital_Name所在醫院名稱Dask科室Phone聯系方式4.6患者功能模塊設計患者是醫療記錄的所有者,其主要功能包括個人信息管理以及查看個人醫療記錄。4.6.1管理個人信息與醫生相似,患者的個人信息管理模塊也包括信息查看與修改兩部分,患者的信息存儲結構見表4-12。因其數據流程與邏輯實現和醫生大體相同,此處不再贅述。表4-12患者個人信息表Table4-12PatientPersonalInformationTable字段類型描述IDstring患者身份證號NameString姓名AgeString年齡sexString性別4.6.2查詢病歷患者可以根據溯源碼查詢某一次具體的病歷,也可以根據身份證號查詢自己所有的病歷。患者查詢病歷功能接口如表4-13:表4-13查詢病歷Table4-13Querymedicalrecords請求參數請求參數描述type查詢類型,溯源碼-最新病歷,ID-歷史病歷patientID患者id返回參數返回參數描述result0-成功,1-私鑰錯誤,2-未知錯誤Patient_Name患者姓名Doctor_Name診治醫生姓名Create_Time創建時間description病情描述

系統測試系統測試是對系統正式使用前進行的功能檢查,模擬系統實際使用中可能出現的各種場景。本章先介紹了系統開發使用的相關編程語言以及技術框架,然后就系統的管理員功能模塊、醫生功能模塊和用戶通用功能模塊進行了測試。5.1系統運行環境系統開發過程中所使用的編程語言以及相關技術框架見表5-1:表5-1系統運行環境Table5-1Systemoperatingenvironment名稱版本虛擬機VMware-workstation14.x操作系統Centos7.7Go1.17Docker19.04Docker-compose1.25Fabric1.4.4java1.8Spring4.xMybatis3.4Mysql5.85.2系統功能測試系統功能測試是以用戶為單位,對系統實現的功能單元進行測試,主要包括管理員功能測試、醫生功能測試和系統通用功能測試。5.2.1管理員功能測試管理員功能測試用例如表5-2所示:表5-2管理員功能測試用例Table5-2Testcasesforadministratorfunctions測試用例編號測試功能測試描述預期結果是否通過T-1用戶注冊管理管理員可以進行用戶的注冊管理進行用戶的添加和刪除YT-2用戶角色審核管理員可以對系統參與的用戶角色進行審核分配用戶的角色以及是否可以進入系統Y用戶注冊管理:管理員可以查看目前系統所有的參與用戶,如圖5-1:圖5-1查看用戶信息界面Figure5-1Viewuserinformationinterface可以利用查詢功能快速定位到某一具體用戶,管理員也可以通過“添加”、“刪除”按鈕進行新用戶的添加和原有用戶的刪除,添加用戶功能如圖5-2所示:圖5-2添加用戶界面Figure5-2Adduserinterface用戶角色審核:管理員負責對用戶進行審核,包括確定用戶角色以及狀態,只有通過管理員審核后顯示為正常狀態的用戶才可以使用該系統,管理員也可以將用戶的狀態設置為禁用,這樣該用戶將無法使用該系統,具體如圖5-3所示:圖5-3用戶狀態管理界面Figure5-3Userstatusmanagementinterface5.2.2醫生功能測試醫生功能測試用例如表5-3所示:表5-3醫生功能測試用例測試用例編號測試功能測試描述預期結果是否通過T-1新建病歷醫生為患者新建病歷新增患者病歷YT-2查看自己創建的病歷列表醫生查看自己為患者添加的所有病歷醫生查看添加的所有病歷YT-3設置病歷的查看權限醫生進行授權的用戶可以查看病歷得到授權的用戶能夠查看病歷Y新建病歷:醫生可以根據患者的就診情況為患者新建電子病歷,并將其提交至區塊鏈保存,具體如圖5-4所示:圖5-4新建病歷界面Figure5-4Newmedicalrecordinterface查看病歷列表:醫生可以查看自己創建過的所有病歷,具體如圖5-5所示:圖5-5查看所有病歷界面Figure5-5Viewallmedicalrecordsinterface設置病歷查看權限:醫生在為患者創建病歷時可以采取患者的意愿,決定允許哪些用戶可以查看該病歷,只有被允許的用戶才可以查看該病歷,具體如圖5-6所示:

圖5-6設置查看權限界面Figure5-6Setviewauthorityinterface5.2.3通用功能測試通用功能模塊包括用戶修改個人密碼和查看電子病歷,其中查看電子病歷時可以根據溯源碼查看某一個具體病歷,也可以根據患者身份證號查看該患者的所有病歷記錄,所有系統參與者都具有修改密碼和查看醫療記錄的功能,但是只能查看被授權的醫療記錄,通用功能測試用例如表5-4所示:表5-4通用功能測試用例Table5-4Commonfunctionaltestcases測試用例編號測試功能測試描述預期結果是否通過T-1修改密碼用戶修改自己密碼密碼修改成功YT-2電子醫療記錄溯源用戶根據溯源碼查看某一特定醫療記錄查詢到特定醫療記錄YT-3患者醫療記錄溯源用戶根據身份證查看某人所有醫療記錄查詢到某人所有醫療記錄Y修改密碼:醫生、患者、疾控中心、科研機構等所有系統參與者均可使用該功能進行個人密碼修改,具體如圖5-7所示:圖5-7修改密碼界面Figure5-7Changepasswordinterface電子醫療記錄溯源:根據溯源碼查詢某一特定的病歷,具體如圖5-8所示:圖5-8電子醫療記錄溯源界面Figure5-8Traceabilityinterfaceofelectronicmedicalrecords患者醫療記錄溯源:根據患者身份證號查詢該患者的所有醫療記錄,具體如圖5-9所示:圖5-9患者醫療記錄溯源界面Figure5-9Traceabilityinterfaceofpatientmedicalrecords

結論與展望結論本論文開發了一個基于區塊鏈的醫療記錄存儲系統。文章首先對現有的采用中心化存儲模式的醫療記錄存儲系統所面臨的痛點問題進行了分析,然后通過查閱文獻了解了國內外區塊鏈技術在醫療記錄存儲系統中的研究現狀,對比各種方案的優缺點,并結合自身能力,設計出本文基于HyperledgerFabric的解決方案。本系統采用web客戶端的形式完成測試,在centos系統中利用HyperledgerFabric技術框架搭建部署了區塊鏈網絡,在IDEA中用java進行智能合約以及后端業務邏輯的實現。本文在前人所做研究的基礎上,將區塊鏈技術與現有醫療記錄存儲系統結合起來,針對現有醫療記錄存儲系統存在的存儲共享安全和數據控制權錯位等痛點問題提出了自己的解決方案,也是區塊鏈技術在醫療記錄存儲領域應用的一次嘗試。傳統的醫療記錄存儲系統采用的中心化存儲模式,這種存儲模式面臨數據流失和被篡改的威脅,同時各醫療機構數據存儲模式的差異造成了數據共享困難,為患者跨院就診帶來不便。利用區塊鏈技術的去中心化、不可篡改等特性,能夠解決現有醫療記錄存儲系統所面臨的痛點問題,保證患者醫療數據的安全存儲。系統用戶分為管理員、醫生、患者以及科研機構四類。這里的管理員主要負責維護系統正常運行、查看系統運行狀態、進行用戶注冊管理以及用戶權限審核;醫生負責為患者創建病歷并將之上鏈存儲,同時也可以查看自己添加過的所有病歷;科研機構只有獲得患者授權才可以查看其醫療記錄。系統在區塊鏈技術的基礎上,新增授權環節,除患者之外的所有角色需獲得患者的授權才可訪問其醫療記錄,保證了患者對自己醫療記錄數據的絕對控制權,解決了傳統醫療記錄存儲系統數據控制權錯位的問題。本文基于區塊鏈技術的特性,構建了一個可以安全存儲醫療記錄的存儲系統,實現了醫療數據跨機構、跨平臺共享,保證了患者對自己醫療記錄數據的絕對控制權,為解決現有醫療記錄存儲系統的數據共享難、存儲安全性差以及數據控制權錯位等問題提出了新的思路。展望本系統利用區塊鏈技術的特性,與現有醫療記錄存儲系統結合起來,針對目前醫療記錄存儲系統的痛點問題初步提出了自己的解決思路,在區塊鏈與醫療記錄存儲系統結合的后續研究中,計劃從以下方面進行研究:使用IPFS文件系統嘗試解決區塊鏈數據存儲不足問題;從共識算法、數據并發操作等方面改進區塊鏈存儲效率問題。

參考文獻Nakamoto S. Bitcoin: A Peer-to-Peer Electronic Cash System[EB/OL]. (2009,02,08).

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論