• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于區(qū)塊鏈的醫(yī)療信息系統(tǒng)及智能合約設(shè)計(jì)

      2020-07-25 02:48:28孫學(xué)波姜金希
      關(guān)鍵詞:醫(yī)療系統(tǒng)病歷合約

      孫學(xué)波,姜金希

      (遼寧科技大學(xué) 計(jì)算機(jī)與軟件學(xué)院,遼寧 鞍山 114051)

      在醫(yī)療康復(fù)診斷與治療的過(guò)程中,醫(yī)療信息的記錄是不可缺少的一個(gè)環(huán)節(jié),主要包括檢查項(xiàng)目、治療項(xiàng)目、醫(yī)療設(shè)施使用項(xiàng)目以及消費(fèi)記錄。由于醫(yī)療信息的隱私性和目前醫(yī)療信息記錄存儲(chǔ)方法的局限性,大部分患者對(duì)于自己的醫(yī)療信息記錄并沒(méi)有充分的了解和使用,這成為影響醫(yī)療質(zhì)量及發(fā)展的主要因素。除此之外,醫(yī)療信息安全地共享和使用更成為醫(yī)療行業(yè)的難點(diǎn)。

      區(qū)塊鏈技術(shù)通過(guò)哈希索引形成鏈?zhǔn)浇Y(jié)構(gòu),是由多方共同經(jīng)營(yíng)維護(hù)的數(shù)據(jù)庫(kù),區(qū)塊鏈采用數(shù)據(jù)多節(jié)點(diǎn)、分布式多重存取,擺脫對(duì)互聯(lián)網(wǎng)中心服務(wù)器的依賴(lài),避免中心服務(wù)器篡改和丟失數(shù)據(jù)[1]。其核心在于通過(guò)密碼技術(shù)確保存儲(chǔ)在區(qū)塊鏈上的數(shù)據(jù)記錄很難被篡改或者造假。Kuo等[2]采用區(qū)塊鏈私鏈網(wǎng)絡(luò)技術(shù)創(chuàng)建一個(gè)跨機(jī)構(gòu)的醫(yī)療健康預(yù)測(cè)模型。Ekblaw等[3]提出一個(gè)新穎的去中心化電子病歷管理系統(tǒng)。

      根據(jù)區(qū)塊鏈技術(shù)和醫(yī)療系統(tǒng)的特點(diǎn)[4],本文以傳統(tǒng)醫(yī)療信息記錄存儲(chǔ)的局限性為背景,設(shè)計(jì)一種基于區(qū)塊鏈的醫(yī)療系統(tǒng)。此系統(tǒng)可以解決目前醫(yī)療系統(tǒng)中心化存儲(chǔ)存在的問(wèn)題。基于區(qū)塊鏈技術(shù)的醫(yī)療系統(tǒng)可以保證信息的安全,同時(shí)患者可以通過(guò)系統(tǒng)及時(shí)了解自己的信息,有利于患者對(duì)醫(yī)療信息的使用和管理,方便患者的同時(shí)可以提高醫(yī)療保障的效率。

      1 區(qū)塊鏈在醫(yī)療信息系統(tǒng)中的應(yīng)用

      麻省理工學(xué)院Azaria等開(kāi)發(fā)了一個(gè)名為ΜedRec的系統(tǒng)[5],解決數(shù)據(jù)的互操作性和權(quán)限管理問(wèn)題,用于管理醫(yī)療記錄。該系統(tǒng)的運(yùn)行原理如圖1所示。

      該系統(tǒng)創(chuàng)新的關(guān)鍵在于采用新穎的區(qū)塊鏈智能合約,為跨醫(yī)療機(jī)構(gòu)分散的醫(yī)療數(shù)據(jù)創(chuàng)建記錄管理系統(tǒng),即使用區(qū)塊鏈保存和管理電子病歷,以滿(mǎn)足患者、醫(yī)療機(jī)構(gòu)和醫(yī)學(xué)研究人員的需求。

      ΜedRec提出三類(lèi)智能合約,即登記合約(RC)、醫(yī)患關(guān)系合約(PPC)和總結(jié)合約(SC),實(shí)現(xiàn)數(shù)據(jù)的權(quán)限管理。登記合約用來(lái)管理用戶(hù)信息表,公鑰作為其身份實(shí)現(xiàn)患者匿名登錄;醫(yī)患關(guān)系合約定義了一系列指針和相關(guān)訪(fǎng)問(wèn)權(quán)限,通過(guò)指針訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),用于一個(gè)醫(yī)生對(duì)一個(gè)患者的醫(yī)療信息的管理;總結(jié)合約用于管理一個(gè)患者所產(chǎn)生的所有醫(yī)療信息數(shù)據(jù)的集合。

      在ΜedRec系統(tǒng)中,醫(yī)療數(shù)據(jù)并不存儲(chǔ)在區(qū)塊鏈上,而是依然存儲(chǔ)在醫(yī)療機(jī)構(gòu)本地?cái)?shù)據(jù)庫(kù)中,所以不能充分地保證醫(yī)療數(shù)據(jù)的安全性和防篡改性。

      圖1 系統(tǒng)流程圖Fig.1 Flow chart of system

      2 基于區(qū)塊鏈醫(yī)療系統(tǒng)的體系結(jié)構(gòu)

      2.1 傳統(tǒng)的醫(yī)療系統(tǒng)體系結(jié)構(gòu)

      醫(yī)療系統(tǒng)的發(fā)展過(guò)程經(jīng)歷三個(gè)階段[6],分別為基于C/S(客戶(hù)機(jī)和服務(wù)器)結(jié)構(gòu)的醫(yī)療系統(tǒng)、基于B/S(瀏覽器/服務(wù)器模式)和C/S混合結(jié)構(gòu)的醫(yī)療系統(tǒng)、基于B/S結(jié)構(gòu)的醫(yī)療系統(tǒng)[7]。

      2.1.1 基于C/S結(jié)構(gòu)的醫(yī)療系統(tǒng) 早期的醫(yī)療系統(tǒng)使用了基于C/S的體系結(jié)構(gòu),這種醫(yī)療系統(tǒng)僅限于醫(yī)療機(jī)構(gòu)內(nèi)部使用。服務(wù)器主要用于存儲(chǔ)數(shù)據(jù)并通過(guò)內(nèi)部局域網(wǎng)為客戶(hù)端請(qǐng)求做出響應(yīng)。用戶(hù)僅局限于醫(yī)療機(jī)構(gòu)的內(nèi)部人員,甚至不包括患者。這種系統(tǒng)中,信息的管理方式是中心化的??蛻?hù)(或用戶(hù))之間的信息交流也必須通過(guò)服務(wù)器才能完成,客戶(hù)之間一般不能實(shí)現(xiàn)交互。

      2.1.2 基于B/S和C/S混合結(jié)構(gòu)的醫(yī)療系統(tǒng)

      隨著互聯(lián)網(wǎng)的發(fā)展,人們對(duì)基于C/S結(jié)構(gòu)的醫(yī)療系統(tǒng)進(jìn)行了進(jìn)一步的改良,出現(xiàn)了基于B/S結(jié)構(gòu)的醫(yī)療系統(tǒng)。從安全性和效率的角度考慮,建立基于B/S和C/S混合結(jié)構(gòu)的醫(yī)療系統(tǒng)。

      基于B/S和C/S混合的體系結(jié)構(gòu)有效地?cái)U(kuò)大了系統(tǒng)服務(wù)的范圍,為系統(tǒng)增加更多醫(yī)療方面或醫(yī)療相關(guān)的服務(wù),但數(shù)據(jù)管理方式仍然是中心化的并且是封閉的,互聯(lián)網(wǎng)的介入,使得系統(tǒng)的安全性增加了新的隱患。另外,在醫(yī)療系統(tǒng)的運(yùn)作過(guò)程中,醫(yī)療過(guò)程本身的復(fù)雜性也為這種模式下數(shù)據(jù)本身的真實(shí)性和可信度提出新的挑戰(zhàn)。

      2.1.3 基于B/S結(jié)構(gòu)的醫(yī)療系統(tǒng) 基于B/S結(jié)構(gòu)的醫(yī)療系統(tǒng)用戶(hù)界面完全通過(guò)WWW瀏覽器實(shí)現(xiàn)。數(shù)據(jù)庫(kù)服務(wù)器沒(méi)有專(zhuān)門(mén)的應(yīng)用程序,醫(yī)生客戶(hù)端、查詢(xún)?yōu)g覽客戶(hù)端、修改維護(hù)客戶(hù)端、輔助檢查及治療客戶(hù)端、財(cái)務(wù)客戶(hù)端、管理客戶(hù)端和患者服務(wù)客戶(hù)端等應(yīng)用程序基本上都在服務(wù)器端,應(yīng)用程序的升級(jí)和維護(hù)都可以在服務(wù)器端完成,非常方便。圖2為基于B/S的醫(yī)療系統(tǒng)體系結(jié)構(gòu)。

      2.2 區(qū)塊鏈應(yīng)用的層級(jí)架構(gòu)

      區(qū)塊鏈最初作為比特幣系統(tǒng)的底層技術(shù)被應(yīng)用于比特幣[8]。區(qū)塊鏈?zhǔn)怯啥鄠€(gè)區(qū)塊相互鏈接構(gòu)成的一種鏈?zhǔn)浇Y(jié)構(gòu),每個(gè)區(qū)塊由前一區(qū)塊哈希、Μerker根、目標(biāo)哈希、時(shí)間戳、隨機(jī)數(shù)和交易數(shù)據(jù)等構(gòu)成,并且由分布式存儲(chǔ)、加密算法、P2P網(wǎng)絡(luò)和共識(shí)機(jī)制等多個(gè)核心技術(shù)組成。

      本文基于區(qū)塊鏈基本結(jié)構(gòu)創(chuàng)建了可編程的腳本代碼(即智能合約),賦予區(qū)塊鏈存儲(chǔ)醫(yī)療數(shù)據(jù)和醫(yī)患交互的功能[9]。在有智能合約功能的區(qū)塊鏈平臺(tái)、前端的調(diào)用以及各種接口和圖形化的客戶(hù)端的基礎(chǔ)上,開(kāi)發(fā)醫(yī)療系統(tǒng),其層級(jí)架構(gòu)如圖3所示。

      圖2 基于B/S結(jié)構(gòu)的醫(yī)療系統(tǒng)Fig.2 Μedical system based on B/S hybrid structure

      圖3 區(qū)塊鏈醫(yī)療系統(tǒng)層級(jí)架構(gòu)Fig.3 Hierarchy of blockchain medical system

      物理節(jié)點(diǎn)層:每個(gè)節(jié)點(diǎn)進(jìn)行共識(shí)備份和相互連接,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)與節(jié)點(diǎn)相連,沒(méi)有中心化的管理,每個(gè)節(jié)點(diǎn)都擁有服務(wù)器的功能[10],都記錄整個(gè)系統(tǒng)中所有交易信息。

      平臺(tái)層:包括數(shù)據(jù)層、網(wǎng)絡(luò)層和共識(shí)層。數(shù)據(jù)層給整個(gè)系統(tǒng)提供巨大的存儲(chǔ)空間,區(qū)塊內(nèi)存儲(chǔ)交易數(shù)據(jù)或普通醫(yī)療數(shù)據(jù)。網(wǎng)絡(luò)層基于P2P網(wǎng)絡(luò)、作為消息傳播機(jī)制和數(shù)據(jù)驗(yàn)證機(jī)制,其作用是創(chuàng)建節(jié)點(diǎn)和實(shí)現(xiàn)安全的網(wǎng)絡(luò)連接,為系統(tǒng)建立穩(wěn)定和牢固的網(wǎng)絡(luò)體系。共識(shí)層就是在不同節(jié)點(diǎn)之間建立信任,解決數(shù)據(jù)共享中的信任問(wèn)題。

      平臺(tái)層的上一層是以太坊虛擬機(jī)EVΜ和遠(yuǎn)程過(guò)程調(diào)用協(xié)議RPC。RPC保證基于以太坊區(qū)塊鏈開(kāi)發(fā)的程序在節(jié)點(diǎn)之間的相互通信。整個(gè)開(kāi)發(fā)系統(tǒng)的核心是基于以太坊虛擬機(jī)EVΜ(Ethereum virtual machine)建立代碼運(yùn)行環(huán)境[11]。

      合約層:合約層是本系統(tǒng)設(shè)計(jì)的重要步驟[12],系統(tǒng)的所有功能及業(yè)務(wù)邏輯均通過(guò)編寫(xiě)智能合約以及前端的調(diào)用實(shí)現(xiàn)。本文采用的智能合約編程語(yǔ)言為solidity,經(jīng)過(guò)編寫(xiě)后通過(guò)web3.js發(fā)送到solc編譯器上編譯成以太坊識(shí)別的二進(jìn)制碼。

      應(yīng)用層:應(yīng)用層是系統(tǒng)開(kāi)發(fā)出的去中心化應(yīng)用,其中以太坊源碼中提供一套基于JS的SDK—web3.js,開(kāi)發(fā)者可以在自己的瀏覽器網(wǎng)頁(yè)中通過(guò)調(diào)用web3.js執(zhí)行以太坊所有的相關(guān)操作。前端通過(guò)區(qū)塊鏈上的合約地址、接口和nonce值對(duì)其進(jìn)行調(diào)用。

      2.3 基于區(qū)塊鏈的醫(yī)療系統(tǒng)體系結(jié)構(gòu)

      從醫(yī)療系統(tǒng)的發(fā)展現(xiàn)狀、運(yùn)行效率和運(yùn)營(yíng)成本等角度出發(fā),本文提出一個(gè)比較現(xiàn)實(shí)的基于區(qū)塊鏈的系統(tǒng)體系結(jié)構(gòu),如圖4。相對(duì)于傳統(tǒng)的B/S體系結(jié)構(gòu),增加一個(gè)名為區(qū)塊鏈結(jié)點(diǎn)服務(wù)器的新構(gòu)件,可以為醫(yī)療系統(tǒng)提供區(qū)塊鏈數(shù)據(jù)服務(wù)。

      在這個(gè)體系結(jié)構(gòu)中,區(qū)塊鏈結(jié)點(diǎn)服務(wù)器直接與Web服務(wù)器相連接,從而使系統(tǒng)的所有節(jié)點(diǎn)均可以通過(guò)該結(jié)點(diǎn)訪(fǎng)問(wèn)區(qū)塊鏈系統(tǒng)。系統(tǒng)工作時(shí),用戶(hù)可以根據(jù)需要將醫(yī)療信息存儲(chǔ)到區(qū)塊鏈上或訪(fǎng)問(wèn)存儲(chǔ)在區(qū)塊鏈上的數(shù)據(jù),有效提高系統(tǒng)的服務(wù)能力。區(qū)塊鏈系統(tǒng)使用的信息將不再局限于某個(gè)特定的醫(yī)療系統(tǒng)存儲(chǔ)和管理的數(shù)據(jù),突破了中心化的數(shù)據(jù)管理方式,醫(yī)療過(guò)程中產(chǎn)生的各種醫(yī)療數(shù)據(jù)也可以有選擇地存儲(chǔ)到區(qū)塊鏈中,從而進(jìn)入一個(gè)更大的數(shù)據(jù)空間,這將極大地提高數(shù)據(jù)的共享程度。另外,區(qū)塊鏈技術(shù)中的去中心化、可追溯和防篡改等特性為人們提供一個(gè)更為安全可靠的管理和使用醫(yī)療信息的方式。

      圖4 基于區(qū)塊鏈的醫(yī)療系統(tǒng)的體系結(jié)構(gòu)Fig.4 Hierarchical architecture of blockchain-based medical system

      2.3.1 醫(yī)療信息的存儲(chǔ)策略 醫(yī)療系統(tǒng)的核心工作是對(duì)每個(gè)患者的醫(yī)療過(guò)程進(jìn)行有效的管理,醫(yī)療信息就是在這個(gè)過(guò)程中持續(xù)產(chǎn)生并不斷存儲(chǔ)到系統(tǒng)的數(shù)據(jù)庫(kù)中。從系統(tǒng)工作效率、醫(yī)療過(guò)程的風(fēng)險(xiǎn)指數(shù)、疑難程度和用戶(hù)需求等因素出發(fā),一個(gè)合理的存儲(chǔ)策略系統(tǒng)為不強(qiáng)制要求將所有患者的所有病歷信息存儲(chǔ)到區(qū)塊鏈中,而是僅存儲(chǔ)那些有研究?jī)r(jià)值、醫(yī)療風(fēng)險(xiǎn)指數(shù)較高和用戶(hù)要求存儲(chǔ)的那部分病歷。

      從存儲(chǔ)的時(shí)機(jī)考慮,可采用聯(lián)機(jī)實(shí)時(shí)存儲(chǔ)和批處理兩種方式。聯(lián)機(jī)實(shí)時(shí)存儲(chǔ)策略要求將對(duì)區(qū)塊鏈的訪(fǎng)問(wèn)嵌入在必要的醫(yī)療信息處理過(guò)程中,即每產(chǎn)生一份醫(yī)療數(shù)據(jù)即在存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫(kù)的同時(shí)將這份數(shù)據(jù)完整地存儲(chǔ)到區(qū)塊鏈中。批處理方式則指一個(gè)完整的醫(yī)療過(guò)程結(jié)束之后,再將這個(gè)過(guò)程中產(chǎn)生的醫(yī)療數(shù)據(jù)完整地存儲(chǔ)到區(qū)塊鏈中去。

      這兩種方式各有優(yōu)缺點(diǎn)。聯(lián)機(jī)實(shí)時(shí)方式主要優(yōu)點(diǎn)是能夠最大限度地保證數(shù)據(jù)的原始性和真實(shí)性,數(shù)據(jù)幾乎沒(méi)有機(jī)會(huì)被篡改。但數(shù)據(jù)存儲(chǔ)到區(qū)塊鏈耗時(shí)較高,會(huì)影響醫(yī)療系統(tǒng)的運(yùn)行效率,也會(huì)增加系統(tǒng)實(shí)現(xiàn)的難度。批處理方式特點(diǎn)與聯(lián)機(jī)實(shí)時(shí)性恰好相反,會(huì)簡(jiǎn)化系統(tǒng)中醫(yī)療信息處理模塊的復(fù)雜度,僅需要在系統(tǒng)中單獨(dú)設(shè)計(jì)一個(gè)區(qū)塊鏈相關(guān)的子系統(tǒng)用來(lái)處理區(qū)塊鏈數(shù)據(jù)的訪(fǎng)問(wèn),但這種方式也增大了數(shù)據(jù)被篡改的風(fēng)險(xiǎn)。

      一個(gè)比較好的策略是兩種方式并存,使用時(shí)可以事先選擇是否將數(shù)據(jù)存儲(chǔ)到區(qū)塊鏈中,在醫(yī)療過(guò)程中或結(jié)束后,也可以選擇是否繼續(xù)將醫(yī)療數(shù)據(jù)存儲(chǔ)到區(qū)塊鏈中去。

      2.3.2 系統(tǒng)的基本功能 將區(qū)塊鏈醫(yī)療信息系統(tǒng)看成是一個(gè)相對(duì)獨(dú)立的信息系統(tǒng)[13],主要功能為用戶(hù)信息以及用戶(hù)的病歷信息管理。用戶(hù)信息管理主要是用戶(hù)的注冊(cè)、登錄、修改用戶(hù)信息、查看用戶(hù)信息和查看醫(yī)生信息;病歷信息管理主要有查看病歷信息、上傳病歷信息以及醫(yī)生查看病歷信息。系統(tǒng)的具體功能如圖5所示。

      醫(yī)療系統(tǒng)的用戶(hù)分為兩種:一是普通用戶(hù),包括患者和醫(yī)生;二是研究人員,針對(duì)特殊患者數(shù)據(jù)進(jìn)行采集、查看和研究?;颊哂脩?hù)可以有選擇地向醫(yī)生發(fā)送問(wèn)診請(qǐng)求,醫(yī)生用戶(hù)也可以查看患者請(qǐng)求信息以及通過(guò)病歷ID查看患者病歷信息。研究人員可對(duì)有研究?jī)r(jià)值的患者病歷進(jìn)行查看。

      圖5 系統(tǒng)用戶(hù)的功能Fig.5 Functions of system users

      2.3.3 區(qū)塊鏈醫(yī)療信息系統(tǒng)的概念結(jié)構(gòu)模型從功能模型出發(fā)設(shè)計(jì)區(qū)塊鏈醫(yī)療信息系統(tǒng)的概念結(jié)構(gòu)模型,特點(diǎn)是不依賴(lài)具體的系統(tǒng)實(shí)體結(jié)構(gòu)模型,包含的是實(shí)現(xiàn)區(qū)塊鏈醫(yī)療系統(tǒng)本身的目標(biāo)所需要的實(shí)體結(jié)構(gòu)模型。所以,當(dāng)把這個(gè)區(qū)塊鏈醫(yī)療信息系統(tǒng)嵌入到具體的醫(yī)療系統(tǒng)中時(shí),還需要一個(gè)具體的將醫(yī)療信息轉(zhuǎn)換到區(qū)塊鏈概念模型中的過(guò)程。

      圖6為用戶(hù)概念模型。系統(tǒng)用戶(hù)分成患者、醫(yī)生和研究人員三種角色,三者均繼承了抽象用戶(hù)的UserID、用戶(hù)密碼、身份編號(hào)、姓名和出生日期等屬性。每個(gè)醫(yī)生用戶(hù)同時(shí)具有醫(yī)院、科室、專(zhuān)業(yè)職稱(chēng)、專(zhuān)業(yè)領(lǐng)域、一級(jí)分類(lèi)、二級(jí)分類(lèi)、患者滿(mǎn)意度和醫(yī)生擅長(zhǎng)等多個(gè)方面的屬性?;颊哂脩?hù)的屬性為一些簡(jiǎn)單的個(gè)人信息,患者用戶(hù)與病歷信息關(guān)聯(lián),其關(guān)聯(lián)關(guān)系為1對(duì)多,一個(gè)患者可以有零到多份病歷。研究人員的屬性有研究機(jī)構(gòu)、研究領(lǐng)域、國(guó)籍、省或者州、城市和電子郵件地址等。

      圖6 系統(tǒng)用戶(hù)的概念模型Fig.6 Conceptual model of system users

      圖7 為與病歷相關(guān)的結(jié)構(gòu)類(lèi)型。病歷條目與病歷相關(guān)聯(lián),關(guān)聯(lián)關(guān)系為1對(duì)多,一份病歷可以有多個(gè)病歷條目。住院通知單、輔助檢查、用藥記錄、外科治療和出院小結(jié)繼承病歷條目中病歷ID、日期、醫(yī)生等所有屬性。除此之外,每份住院通知單還由初步診斷、當(dāng)前癥狀、主要病史、發(fā)病原因和住院通知單ID等屬性構(gòu)成。輔助檢查中的項(xiàng)目名稱(chēng)、診斷意見(jiàn)和日期的屬性由影像和生理指標(biāo)檢查繼承。其中生理指標(biāo)檢查與生理指標(biāo)檢查條目關(guān)聯(lián),關(guān)聯(lián)關(guān)系為1對(duì)多,一份生理指標(biāo)檢查可以有多個(gè)生理指標(biāo)檢查條目。生理指標(biāo)檢查包括檢查單號(hào)的屬性,生理指標(biāo)檢查條目包括指標(biāo)名稱(chēng)、指標(biāo)下限、指標(biāo)上限和當(dāng)前指標(biāo)的屬性。病歷中的用藥記錄與用藥記錄明細(xì)相關(guān)聯(lián),關(guān)聯(lián)的多重性為1對(duì)多,一份用藥記錄可以有多個(gè)用藥記錄明細(xì),其中用藥記錄明細(xì)包括藥品批號(hào)、藥品名稱(chēng)、用藥方法、每次用量、起始時(shí)間和結(jié)束時(shí)間的屬性。而繼承病歷條目的外科治療由名稱(chēng)、開(kāi)始時(shí)間和結(jié)束時(shí)間的屬性構(gòu)成,出院小結(jié)由入院診斷、出院診斷、治療經(jīng)過(guò)和注意事項(xiàng)等屬性構(gòu)成。

      圖7 病歷的概念模型Fig.7 Conceptual model of case

      3 智能合約的設(shè)計(jì)

      3.1 智能合約概述

      在20世紀(jì),由跨領(lǐng)域法律學(xué)者Nick Szabo提出:“一個(gè)智能合約是一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”。區(qū)塊鏈技術(shù)的出現(xiàn)則為這個(gè)概念的實(shí)現(xiàn)提供了一個(gè)具體的技術(shù)平臺(tái),區(qū)塊鏈技術(shù)的去中心化和信任機(jī)制推動(dòng)了智能合約的發(fā)展。

      傳統(tǒng)的合約可以看成是一個(gè)雙方或者多方協(xié)議[14],任何每一方都必須相互信任各方均會(huì)遵守協(xié)議并履行他所承擔(dān)的義務(wù);而智能合約則提供一個(gè)良好的信任機(jī)制,能夠保證協(xié)議中的信息是真實(shí)可靠的,因此參加協(xié)議的各方無(wú)須彼此信任,只需要根據(jù)獲得的信息作出必要的決策。

      合約的內(nèi)部結(jié)構(gòu)主要由數(shù)據(jù)和方法組成,其中數(shù)據(jù)用于描述參與合約的各方的信息以及它們之間的交互,方法則提供了通過(guò)訪(fǎng)問(wèn)這些數(shù)據(jù)以履行合約的方法。

      3.2 智能合約的程序設(shè)計(jì)機(jī)制

      智能合約中包含很多不同的結(jié)構(gòu)要素,使用這些要素可以有效地構(gòu)建功能完備(所謂的圖靈完備的)的智能合約,包括合約結(jié)構(gòu)、狀態(tài)變量、函數(shù)、函數(shù)修飾器、事件、映射、類(lèi)型推斷、以太幣Ether單位、時(shí)間單位、函數(shù)調(diào)用、動(dòng)態(tài)創(chuàng)建合約、賦值等。

      從合約構(gòu)成機(jī)制的角度來(lái)看,合約的創(chuàng)建、可見(jiàn)性和getter函數(shù)、函數(shù)修飾器modifier、Constant狀態(tài)變量、繼承、抽象合約、接口和庫(kù)等機(jī)制都為合約的設(shè)計(jì)與實(shí)現(xiàn)提供了新的機(jī)制和方法。

      使用solidity語(yǔ)言開(kāi)發(fā)智能合約使用的具體機(jī)制如下:

      (1)數(shù)據(jù)類(lèi)型。開(kāi)發(fā)智能合約時(shí),可以使用的數(shù)據(jù)類(lèi)型主要涉及無(wú)符號(hào)整數(shù)uint、結(jié)構(gòu)體struct、字符串string、布爾bool、映射mapping和地址address等。

      其中mapping是創(chuàng)建合約時(shí)使用的特有的一種數(shù)據(jù)類(lèi)型,一個(gè)映射是一個(gè)由鍵值對(duì)組成的哈希表,每個(gè)value都與一個(gè)唯一的key對(duì)應(yīng)。

      另一個(gè)常用的類(lèi)型是地址address,地址類(lèi)型存儲(chǔ)一個(gè)20字節(jié)的值,用于表示以太坊地址。合約中可以使用該類(lèi)型表示部署的智能合約地址和區(qū)塊鏈中的用戶(hù)的地址。

      與其他語(yǔ)言類(lèi)似,結(jié)構(gòu)用于表示一個(gè)數(shù)據(jù)結(jié)構(gòu)類(lèi)型,結(jié)構(gòu)體可以由各種類(lèi)型的數(shù)據(jù)成員構(gòu)成。也是合約中經(jīng)常使用的數(shù)據(jù)類(lèi)型。

      (2)狀態(tài)變量。狀態(tài)變量是指任何一個(gè)持久存儲(chǔ)在合約中成員變量的值,用于表示合約的狀態(tài)。狀態(tài)變量的當(dāng)前值表示了合約的當(dāng)前狀態(tài),其變化過(guò)程當(dāng)然也就表示了一個(gè)合約的生命歷程。修改狀態(tài)變量的值通常會(huì)改變合約狀態(tài)。

      (3)函數(shù)。與面向?qū)ο蠓椒ㄖ械念?lèi)相似,智能合約中也擁有成員函數(shù),比較特殊的函數(shù)有不修改合約的View函數(shù)、承諾不讀取或修改狀態(tài)的Pure函數(shù)以及沒(méi)有參數(shù)沒(méi)有返回值甚至沒(méi)有名字的Fallback函數(shù)。這些函數(shù)為合約的設(shè)計(jì)提供了新的限制和約束。

      合約函數(shù)也可以分為內(nèi)部調(diào)用函數(shù)和外部調(diào)用函數(shù),內(nèi)部調(diào)用函數(shù)是指在合約內(nèi)調(diào)用其他合約的函數(shù);外部調(diào)用函數(shù)則是可以通過(guò)JSON-RPC接口在外部調(diào)用的函數(shù)。

      (4)合約之間的關(guān)聯(lián)和繼承。與面向?qū)ο蠓椒ㄖ械念?lèi)相似,合約之間也可以有繼承關(guān)系和關(guān)聯(lián)關(guān)系,甚至還可以設(shè)計(jì)抽象合約和合約接口,但由于合約的分布式特性,面向?qū)ο蠓椒ㄖ械念?lèi)的繼承和關(guān)聯(lián)又有一定的不同。使用這些關(guān)系時(shí),像面向?qū)ο蠓椒ㄒ粯訕?gòu)造具有較多層次或復(fù)雜關(guān)聯(lián)關(guān)系的合約可能會(huì)降低合約的訪(fǎng)問(wèn)性。

      (5)合約事件。在智能合約中,還可以使用事件機(jī)制。一個(gè)事件發(fā)生時(shí),訂閱了這個(gè)事件的合約可以以特定的方式響應(yīng)這個(gè)事件。

      3.3 區(qū)塊鏈系統(tǒng)的智能合約設(shè)計(jì)

      從醫(yī)療信息系統(tǒng)本身的特點(diǎn)以及與區(qū)塊鏈存儲(chǔ)技術(shù)相結(jié)合方面的考慮出發(fā),設(shè)計(jì)智能合約來(lái)實(shí)現(xiàn)一個(gè)區(qū)塊鏈醫(yī)療信息系統(tǒng),包括區(qū)塊鏈醫(yī)療信息系統(tǒng)合約、患者合約、醫(yī)生合約、研究人員合約和病歷合約。

      3.3.1 區(qū)塊鏈醫(yī)療系統(tǒng)的智能合約設(shè)計(jì) 用合約及合約之間的關(guān)系來(lái)描述區(qū)塊鏈醫(yī)療系統(tǒng)的邏輯結(jié)構(gòu),表示整個(gè)系統(tǒng)中需要存儲(chǔ)的數(shù)據(jù)和能夠提供的服務(wù)。

      圖8為系統(tǒng)中合約總體關(guān)系結(jié)構(gòu),包括區(qū)塊鏈醫(yī)療信息系統(tǒng)合約(ΜISBC)、患者合約(Patient)、醫(yī)生合約(Physician)、研究人員合約(Researcher)和病歷合約(Case)以及在它們之間的關(guān)聯(lián)關(guān)系。

      (1)區(qū)塊鏈醫(yī)療信息系統(tǒng)合約。區(qū)塊鏈醫(yī)療信息系統(tǒng)(Μedical information system based on block chain,ΜISBC)合約用于表示整個(gè)區(qū)塊鏈醫(yī)療系統(tǒng),存儲(chǔ)和保存所有患者以及患者的病歷信息,還存儲(chǔ)所有注冊(cè)到本系統(tǒng)的醫(yī)生的基本信息,并為其它用戶(hù)訪(fǎng)問(wèn)這些信息提供必要的訪(fǎng)問(wèn)機(jī)制。該合約還存儲(chǔ)注冊(cè)到本系統(tǒng)的所有研究人員的基本信息,用于支持對(duì)系統(tǒng)中研究人員的信息和使用權(quán)限進(jìn)行管理,同時(shí)為研究人員提供信息服務(wù)。另外,還為訪(fǎng)問(wèn)公開(kāi)的病歷信息提供必要的訪(fǎng)問(wèn)機(jī)制。任何人使用這個(gè)區(qū)塊鏈系統(tǒng),都應(yīng)該首先訪(fǎng)問(wèn)這個(gè)合約。

      (2)患者合約。患者合約用于存儲(chǔ)患者用戶(hù)的基本信息,患者可以通過(guò)這個(gè)合約存儲(chǔ)和管理它的病歷信息,還能通過(guò)區(qū)塊鏈醫(yī)療信息系統(tǒng)向醫(yī)生發(fā)出請(qǐng)求,得到系統(tǒng)中醫(yī)生用戶(hù)的服務(wù),醫(yī)生用戶(hù)可根據(jù)患者ID看到患者個(gè)人信息,以及通過(guò)患者發(fā)送的病歷ID查看患者的相關(guān)病歷,并按照請(qǐng)求信息中的患者地址返回響應(yīng)內(nèi)容。

      圖8 區(qū)塊鏈醫(yī)療系統(tǒng)結(jié)構(gòu)圖Fig.8 Structure of blockchain medical system

      (3)病歷合約。病歷合約用于存儲(chǔ)患者需要存儲(chǔ)的病歷信息,一般由患者本人存儲(chǔ)在區(qū)塊鏈系統(tǒng)中,分為公開(kāi)病歷和非公開(kāi)病歷。一般情況下,只有患者本身?yè)碛惺褂貌v信息的權(quán)限。必要時(shí),經(jīng)過(guò)授權(quán)的醫(yī)生可以查看存儲(chǔ)在區(qū)塊鏈之上的病歷信息。對(duì)于公開(kāi)的病歷,系統(tǒng)中的研究人員可以下載并使用這些病歷。

      (4)醫(yī)生合約。醫(yī)生合約用于存儲(chǔ)系統(tǒng)中醫(yī)生用戶(hù)的基本信息,可以查詢(xún)?chǔ)琁SBC中存儲(chǔ)的醫(yī)生成員列表中相關(guān)信息。并且該合約還能通過(guò)區(qū)塊鏈醫(yī)療信息系統(tǒng)為患者提供服務(wù),醫(yī)生可以對(duì)患者發(fā)送的醫(yī)療問(wèn)題請(qǐng)求予以回應(yīng)?;颊呖筛鶕?jù)此種方式與醫(yī)生實(shí)現(xiàn)交互。

      (5)研究人員合約。研究人員合約用于存儲(chǔ)系統(tǒng)中研究人員用戶(hù)的基本信息。該合約用于對(duì)系統(tǒng)中對(duì)公開(kāi)病歷信息有需求的研究人員進(jìn)行存儲(chǔ)和管理,可以查詢(xún)?chǔ)琁SBC中存儲(chǔ)的研究人員列表中的相關(guān)信息。

      3.3.2 區(qū)塊鏈醫(yī)療系統(tǒng)的智能合約中方法的設(shè)計(jì) 智能合約中的方法可以看成是部署到區(qū)塊鏈中的應(yīng)用程序?yàn)橛脩?hù)存儲(chǔ)和訪(fǎng)問(wèn)區(qū)塊鏈中的數(shù)據(jù)提供有效的訪(fǎng)問(wèn)機(jī)制和服務(wù),同時(shí)也為用戶(hù)訪(fǎng)問(wèn)這些數(shù)據(jù)提供必要的權(quán)限控制和權(quán)限管理。另外,合約中的每一個(gè)方法均可以看成是合約對(duì)外提供的一個(gè)功能單元。因此,動(dòng)態(tài)地分析系統(tǒng)的外部行為是一個(gè)有效的智能合約設(shè)計(jì)方法。通過(guò)用例分析的方法逐步細(xì)化系統(tǒng)的動(dòng)態(tài)行為,確定合約方法。

      (1)用例分析方法。設(shè)計(jì)合約方法時(shí),本文使用面向?qū)ο蠓椒ㄖ械挠美治龇椒?。首先分析的是上傳?shù)據(jù)的用例分析方法。上傳數(shù)據(jù)就是將數(shù)據(jù)上傳并存儲(chǔ)到區(qū)塊鏈中。上傳數(shù)據(jù)的形式包括部署一個(gè)智能合約實(shí)例、訪(fǎng)問(wèn)一個(gè)合約方法或上傳一個(gè)交易等多種形式。

      例如,區(qū)塊鏈醫(yī)療系統(tǒng)中,每增加一個(gè)患者、醫(yī)生、研究人員或病歷信息時(shí)都需要向區(qū)塊鏈系統(tǒng)中部署一個(gè)新的合約實(shí)例。當(dāng)向病歷合約中添加病歷明細(xì)時(shí),則需要通過(guò)調(diào)用合約方法的方式向患者病歷合約中添加數(shù)據(jù)。這可以在與此相關(guān)的合約中使用合適的ADD方法添加數(shù)據(jù)。

      圖9為上傳病歷用例的時(shí)序圖模型,這個(gè)模型不僅描述用戶(hù)上傳病歷的交互過(guò)程,還明確地給出實(shí)現(xiàn)這個(gè)過(guò)程時(shí)相關(guān)合約需要的方法。

      圖9 上傳病歷的時(shí)序圖模型Fig.9 Time series graph model of uploaded medical record

      (2)修改數(shù)據(jù)的方法。由于區(qū)塊鏈本身具有不可篡改的特性,使得修改區(qū)塊鏈數(shù)據(jù)的方法與傳統(tǒng)的數(shù)據(jù)修改方法具有很大的區(qū)別。從本質(zhì)上說(shuō),區(qū)塊鏈數(shù)據(jù)的修改是不斷增加新版本的數(shù)據(jù)值。任何對(duì)區(qū)塊鏈數(shù)據(jù)的修改,都必須通過(guò)交易才能夠完成,并且可能需要巨大的開(kāi)銷(xiāo)。因此,修改區(qū)塊鏈數(shù)據(jù)必須通過(guò)特定的策略加以實(shí)現(xiàn),例如需要?jiǎng)h除數(shù)據(jù)時(shí),可以通過(guò)在合約中關(guān)閉訪(fǎng)問(wèn)權(quán)限的方式進(jìn)行,而不是真正刪除區(qū)塊鏈上的數(shù)據(jù)。增加數(shù)據(jù)時(shí),可以向特定的映射表中添加數(shù)據(jù)。修改也只是給狀態(tài)變量增加一個(gè)新版本的值。

      (3)注銷(xiāo)合約。區(qū)塊鏈中的數(shù)據(jù)并不能進(jìn)行篡改和刪除,刪除數(shù)據(jù)方法可以分為兩種:一是對(duì)合約進(jìn)行注銷(xiāo),即在編寫(xiě)合約時(shí)設(shè)置注銷(xiāo)事件和觸發(fā)注銷(xiāo)事件。二是刪除用戶(hù)個(gè)人信息或刪除患者病歷數(shù)據(jù)?;颊呦雱h除系統(tǒng)中的病歷信息,可以將Patient合約中的numofCases改成0,即患者病歷個(gè)數(shù)為0,表示系統(tǒng)中已沒(méi)有此患者病歷信息。

      (4)查詢(xún)數(shù)據(jù)方法。查詢(xún)數(shù)據(jù)方法即患者對(duì)醫(yī)生信息的查詢(xún)和研究人員對(duì)公開(kāi)病歷信息的查詢(xún)。

      3.4 智能合約的設(shè)計(jì)方法

      在區(qū)塊鏈醫(yī)療系統(tǒng)中,智能合約起到主導(dǎo)性的作用[15],可以用來(lái)完成系統(tǒng)中用戶(hù)的管理、醫(yī)療數(shù)據(jù)的上傳和醫(yī)療數(shù)據(jù)的獲取等功能??梢哉J(rèn)為ΜISBC是托管在區(qū)塊鏈上并由智能合約控制的系統(tǒng),允許任何參與者(患者)管理自己的醫(yī)療數(shù)據(jù),或者系統(tǒng)用戶(hù)(某個(gè)醫(yī)生、某醫(yī)療機(jī)構(gòu)或研發(fā)機(jī)構(gòu))根據(jù)醫(yī)療信息的狀態(tài)考慮是否可以對(duì)患者的醫(yī)療信息進(jìn)行訪(fǎng)問(wèn)。

      總結(jié)智能合約的設(shè)計(jì)過(guò)程,能得到智能合約的一般設(shè)計(jì)方法。

      (1)設(shè)計(jì)智能合約的概念模型。智能合約的概念模型來(lái)源于問(wèn)題域,可以將問(wèn)題域中的實(shí)體概念模型作為智能合約的概念模型。

      (2)設(shè)計(jì)智能合約的邏輯模型。將概念模型細(xì)化成合約的邏輯模型,模型的主要構(gòu)成元素包括合約、合約之間的關(guān)系、相關(guān)的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)映射方法以及合約方法等。

      (3)合約的程序設(shè)計(jì)。使用特定的程序設(shè)計(jì)語(yǔ)言,如Solidity語(yǔ)言等,完成合約的編寫(xiě)。

      (4)合約的編譯和部署。將編寫(xiě)完成的智能合約編譯成二進(jìn)制形式并部署到區(qū)塊鏈中。

      本文設(shè)計(jì)的合約分為兩部分,一種是用來(lái)存儲(chǔ)系統(tǒng)中的用戶(hù),此類(lèi)合約的設(shè)計(jì)以系統(tǒng)用戶(hù)為中心,所有參與用戶(hù)通過(guò)注冊(cè)醫(yī)療區(qū)塊鏈系統(tǒng)確定其身份。每個(gè)參與用戶(hù)ID都由以太坊地址表示,以太坊地址由用戶(hù)的私鑰控制。另一種是存儲(chǔ)患者病歷相關(guān)的醫(yī)療數(shù)據(jù),此類(lèi)合約的設(shè)計(jì)以病歷為中心,通過(guò)提供數(shù)據(jù)的哈希函數(shù)和區(qū)塊鏈上的屬性來(lái)維護(hù)數(shù)據(jù)的真實(shí)性。

      4 結(jié)論

      本文對(duì)傳統(tǒng)醫(yī)療系統(tǒng)數(shù)據(jù)共享面臨的挑戰(zhàn)進(jìn)行分析,提出一種基于區(qū)塊鏈的醫(yī)療系統(tǒng)體系結(jié)構(gòu),即在傳統(tǒng)醫(yī)療系統(tǒng)的基礎(chǔ)上增加區(qū)塊鏈服務(wù)節(jié)點(diǎn),擴(kuò)大醫(yī)療數(shù)據(jù)的使用范圍,實(shí)現(xiàn)基于區(qū)塊鏈的醫(yī)療信息系統(tǒng)。討論了區(qū)塊鏈醫(yī)療信息系統(tǒng)的數(shù)據(jù)存儲(chǔ)機(jī)制,給出了區(qū)塊鏈醫(yī)療信息系統(tǒng)的功能結(jié)構(gòu)設(shè)計(jì)、概念結(jié)構(gòu)設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì),并使用智能合約技術(shù)給出了一個(gè)簡(jiǎn)單原型系統(tǒng)的實(shí)現(xiàn)。

      (1)對(duì)現(xiàn)在醫(yī)院的醫(yī)療系統(tǒng)進(jìn)行整體的需求分析,構(gòu)建區(qū)塊鏈平臺(tái)上的醫(yī)療系統(tǒng)概念模型,主要包括醫(yī)療系統(tǒng)的存儲(chǔ)策略、系統(tǒng)的概念結(jié)構(gòu)、智能合約的方法設(shè)計(jì)和設(shè)計(jì)方法等,并詳細(xì)描述了系統(tǒng)的流程設(shè)計(jì)和業(yè)務(wù)邏輯。

      (2)在區(qū)塊鏈醫(yī)療系統(tǒng)上實(shí)現(xiàn)安全存儲(chǔ)和共享的業(yè)務(wù)邏輯進(jìn)行區(qū)塊鏈醫(yī)療系統(tǒng)的功能設(shè)計(jì),主要包括用戶(hù)的注冊(cè)和登錄、患者病歷的上傳、病歷的查詢(xún)以及醫(yī)患交互中的一些功能,并進(jìn)行智能合約的開(kāi)發(fā)設(shè)計(jì)。

      本文所完成的工作僅能為基于區(qū)塊鏈的醫(yī)療信息系統(tǒng)建設(shè)提供一些比較現(xiàn)實(shí)的技術(shù)思路和借鑒。后續(xù)工作中,建立合適的區(qū)塊鏈類(lèi)型、實(shí)現(xiàn)通用的醫(yī)療數(shù)據(jù)析取模塊以及提高區(qū)塊鏈系統(tǒng)的數(shù)據(jù)檢索效率和存儲(chǔ)效率等還有大量的問(wèn)題需要解決和進(jìn)一步完善。另外,對(duì)基于區(qū)塊鏈醫(yī)療系統(tǒng)的前端設(shè)計(jì)技術(shù)和設(shè)計(jì)方法也是一個(gè)亟需解決的重要問(wèn)題。

      猜你喜歡
      醫(yī)療系統(tǒng)病歷合約
      醫(yī)療系統(tǒng)中基于格加密的區(qū)塊鏈隱私保護(hù)研究
      客聯(lián)(2024年7期)2024-12-31 00:00:00
      佳能醫(yī)療系統(tǒng)(中國(guó))有限公司
      佳能醫(yī)療系統(tǒng)(中國(guó))有限公司
      強(qiáng)迫癥病歷簿
      “大數(shù)的認(rèn)識(shí)”的診斷病歷
      可穿戴家居醫(yī)療系統(tǒng)研究
      為何要公開(kāi)全部病歷?
      村醫(yī)未寫(xiě)病歷,誰(shuí)之過(guò)?
      合約必守,誰(shuí)能例外!——對(duì)“情勢(shì)變更”制度不可寄于過(guò)高期望
      东丽区| 台北市| 德庆县| 巴彦淖尔市| 临猗县| 隆安县| 普陀区| 临猗县| 马关县| 德州市| 崇阳县| 滦南县| 保康县| 麻阳| 临洮县| 云霄县| 巩留县| 中山市| 于田县| 丹寨县| 新竹县| 呼伦贝尔市| 沂水县| 乐安县| 商城县| 新野县| 赣州市| 芜湖市| 丽水市| 绥棱县| 漾濞| 杭锦旗| 分宜县| 太仆寺旗| 沧源| 理塘县| 涞源县| 黑山县| 乌兰浩特市| 广州市| 昌宁县|