摘 要:針對傳統(tǒng)電子病歷的數(shù)據(jù)安全和共享問題,基于區(qū)塊鏈技術(shù)構(gòu)建了電子病歷系統(tǒng),系統(tǒng)采用B/S架構(gòu),前端采用Vue+Element-UI,后端采用Spring Boot和Spring Security。通過MySQL數(shù)據(jù)庫持久化,Hperledger Fabric確保數(shù)據(jù)可信。將患者信息和病歷上傳至區(qū)塊鏈,利用區(qū)塊鏈技術(shù)的安全機制降低數(shù)據(jù)泄露風(fēng)險,解決信任問題,提供更安全的醫(yī)患互動。融合傳統(tǒng)電子病歷與跨機構(gòu)就醫(yī),為每位患者創(chuàng)造個人終身病歷存儲,推進終身醫(yī)療體制的發(fā)展。
關(guān)鍵詞:數(shù)據(jù)共享;區(qū)塊鏈技術(shù);電子病歷;數(shù)據(jù)安全;B/S架構(gòu)
中圖分類號:TP311.1 文獻標識碼:A 文章編號:2096-4706(2024)08-0064-05
DOI:10.19850/j.cnki.2096-4706.2024.08.015
收稿日期:2023-08-09
基金項目:2022年國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目(202210595081X)
0 引 言
隨著時代和社會的發(fā)展、經(jīng)濟水平不斷提高,人們的生活質(zhì)量也得到了不斷提高,人們在醫(yī)療健康服務(wù)方面也逐步轉(zhuǎn)向更高層次的追求,進而醫(yī)療資源服務(wù)方面的需求也在不斷地增長,但是我國目前醫(yī)療資源總體來說還是相對匱乏,并且各地區(qū)的分布也并不平衡?;颊咴诋惖鼗虮镜氐牟煌t(yī)療機構(gòu)進行問診的情況是比較常見的,但是由于各個醫(yī)療機構(gòu)系統(tǒng)異構(gòu),造成了“數(shù)據(jù)孤島”現(xiàn)象。而且傳統(tǒng)的醫(yī)學(xué)數(shù)據(jù)管理存在諸多問題,包括數(shù)據(jù)安全性、完整性、可追溯性和隱私保護等方面的挑戰(zhàn)。與傳統(tǒng)的中心化數(shù)據(jù)管理系統(tǒng)相比,區(qū)塊鏈技術(shù)具有分布式、去中心化和可追溯的特點,為醫(yī)學(xué)數(shù)據(jù)管理帶來了全新的解決方案。
本文提出了基于Fabric的區(qū)塊鏈技術(shù),整體設(shè)計為個人患者端、機構(gòu)管理端“雙端”的系統(tǒng)平臺。為患者和醫(yī)院提供了更為方便的醫(yī)療服務(wù)?;颊呖梢栽谌魏螘r間、任何地點使用患者端,輕松地預(yù)約醫(yī)生、查看自己的病歷,既能保障好患者的個人隱私、數(shù)據(jù)的客觀性,又給予問診醫(yī)生在看病范圍內(nèi)的足夠權(quán)限,這更好的打破了“數(shù)據(jù)孤島”的壁壘,符合區(qū)塊鏈技術(shù)要求的流程及策略,架構(gòu)起服務(wù)區(qū)塊鏈電子病歷的網(wǎng)絡(luò),使用B/S技術(shù)來實現(xiàn)電子病歷共享溯源平臺。
1 區(qū)塊鏈技術(shù)特點介紹
區(qū)塊鏈是一種去中心化的分布式賬本技術(shù),通過加密算法、分布式共識機制和智能合約等技術(shù)手段,確保數(shù)據(jù)的安全性和可信度。本質(zhì)上是一種對等網(wǎng)絡(luò)中對存儲數(shù)據(jù)進行協(xié)同維護且不能被篡改的分布式數(shù)據(jù)庫。在結(jié)構(gòu)上區(qū)塊鏈由一個個數(shù)據(jù)塊組成,每個數(shù)據(jù)塊包含一定數(shù)量的交易記錄,并通過Hash函數(shù)和前后區(qū)塊的引用構(gòu)建起塊與塊之間的鏈接。這種鏈式結(jié)構(gòu)使得區(qū)塊鏈中的數(shù)據(jù)具有不可篡改的特性,具有去中心化、可追溯性、安全性等特征。
1.1 去中心化
傳統(tǒng)醫(yī)療數(shù)據(jù)存儲技術(shù)和區(qū)塊鏈相比,最大的優(yōu)化之一就是去中心化。傳統(tǒng)的數(shù)據(jù)存儲技術(shù),通常是在網(wǎng)絡(luò)中以一個固定的節(jié)點作為主節(jié)點進行數(shù)據(jù)持久化的功能,即所有的數(shù)據(jù)都要存儲到主節(jié)點中。這樣做對于數(shù)據(jù)的安全是很危險的,當(dāng)出現(xiàn)服務(wù)器過載或者單點故障時,整個系統(tǒng)的可用性和穩(wěn)定性都會受到影響。數(shù)據(jù)的丟失或不可訪問可能導(dǎo)致重大損失和服務(wù)中斷。而區(qū)塊鏈技術(shù)則在根本上就解決了這個問題,它不依賴于任何一個單節(jié)點,數(shù)據(jù)由分布在網(wǎng)絡(luò)中的多個節(jié)點共同維護和驗證,不存在單一中心機構(gòu)的控制,不會受到單點故障的影響。
1.2 安全性
區(qū)塊鏈技術(shù)本身的安全機制是其核心特性所決定的,這也是相比于傳統(tǒng)技術(shù)來說最大的一個不同點。傳統(tǒng)技術(shù)一般是基于關(guān)系型數(shù)據(jù)庫,這使得數(shù)據(jù)庫容易受到攻擊或未經(jīng)授權(quán)的訪問。區(qū)塊鏈采用加密算法對數(shù)據(jù)進行加密存儲,保護數(shù)據(jù)的安全性。同時,由于區(qū)塊鏈中的數(shù)據(jù)是分布式存儲的,攻擊者要篡改數(shù)據(jù)需要同時攻擊多個節(jié)點,增加了攻擊的難度。
1.3 共享性
區(qū)塊鏈技術(shù)提供了共享性,這是它最有特色的亮點,這也是它最具有特色的一個創(chuàng)新點。傳統(tǒng)的醫(yī)療病歷數(shù)據(jù)庫通常是基于關(guān)系型數(shù)據(jù)庫管理系統(tǒng)構(gòu)建的,而傳統(tǒng)數(shù)據(jù)庫的中心化存儲和管理方式,而這種單節(jié)點只能在同一個機構(gòu)進行管理,這會導(dǎo)致醫(yī)療病歷數(shù)據(jù)只能在一個機構(gòu)使用。而區(qū)塊鏈存儲方式從根本上就解決了這種問題,由于區(qū)塊鏈是分布式結(jié)構(gòu),同一聯(lián)盟鏈上的區(qū)塊鏈從屬于不同的醫(yī)療機構(gòu),數(shù)據(jù)在不同的區(qū)塊鏈之間相互同步且同一聯(lián)盟鏈上的區(qū)塊鏈是公開透明的,任何聯(lián)盟鏈上的區(qū)塊鏈都可以查看和驗證其中的交易和數(shù)據(jù)。這些區(qū)塊鏈節(jié)點都存儲了完整的數(shù)據(jù)備份,并對區(qū)塊的數(shù)據(jù)驗證和記錄。保證了數(shù)據(jù)的可靠性與權(quán)威性的同時還能讓數(shù)據(jù)進行共享。
2 區(qū)塊鏈技術(shù)在電子病歷中的應(yīng)用
2.1 數(shù)據(jù)隱私安全保護
醫(yī)療機構(gòu)中的數(shù)據(jù)安全系數(shù)要求很高,患者的歷史數(shù)據(jù)更是需要重點保護。電子病歷平臺旨在于各大醫(yī)院系統(tǒng)中實現(xiàn)患者信息的共享,從而方便就醫(yī)和診斷,數(shù)據(jù)要求安全存儲在物理設(shè)備中。傳統(tǒng)的數(shù)據(jù)存儲和傳輸方式容易受到黑客攻擊、數(shù)據(jù)篡改等威脅。區(qū)塊鏈技術(shù)將數(shù)據(jù)記錄在分布式網(wǎng)絡(luò)中的多個節(jié)點上,每個節(jié)點都可以驗證數(shù)據(jù)的真實性,確保數(shù)據(jù)不被篡改。攻擊者通過竊取憑據(jù)、繞過訪問控制或利用安全漏洞能夠獲得數(shù)據(jù)庫的訪問權(quán)限,他們可能修改、刪除或偽造數(shù)據(jù)庫中的病歷數(shù)據(jù),而很難被管理者發(fā)現(xiàn)。但區(qū)塊鏈技術(shù)可以很好地解決,結(jié)構(gòu)上區(qū)塊鏈由一個個數(shù)據(jù)塊組成,每個數(shù)據(jù)塊都存有上一區(qū)塊的Hash值,通過Hash值構(gòu)建起區(qū)塊與區(qū)塊之間的鏈接。區(qū)塊與區(qū)塊之間是相互驗證的,數(shù)據(jù)發(fā)生改變Hash值就發(fā)生改變。若修改了鏈上其中一個區(qū)塊的數(shù)據(jù),將需要整條鏈上的區(qū)塊記錄,這給非法偽造數(shù)據(jù)和非法獲取數(shù)據(jù)制造了很大的難度,使得數(shù)據(jù)幾乎是不可能被偽造和非法獲取,保證了病歷的安全可靠性。
基于Hperledger Fabric框架搭建的區(qū)塊鏈平臺可以通過其去中心化、分布式存儲和多種密碼學(xué)算法實現(xiàn)更可靠的數(shù)據(jù)隱私保護。保證了患者數(shù)據(jù)信息在各個階段的安全性,從而可以避免信息泄露帶來的診治出錯或者患者個人受到不必要的麻煩。只有獲得唯一授權(quán),才能解密這些信息。該機制可以確?;颊叩尼t(yī)療數(shù)據(jù)和個人信息的安全性和隱私性,同時確保第三方無法在獲取到區(qū)塊中的信息,有效做到了數(shù)據(jù)安全保護和數(shù)據(jù)隔離。
2.2 數(shù)據(jù)無法篡改
患者醫(yī)療數(shù)據(jù)是治療過程中的重要記錄,在未來的就醫(yī)中提供重要的參考信息,數(shù)據(jù)的不可篡改非常重要。得益于共識拜占庭算法(PBFT),在鏈中的數(shù)據(jù)只能增加且不可修改,也不支持事務(wù)的回滾。存儲病歷數(shù)據(jù)時,上鏈數(shù)據(jù)需要經(jīng)過各個節(jié)點達成共識后能成功記錄。在通過多輪投票和多數(shù)派原則后,大多數(shù)節(jié)點達成共識的情況下,才會執(zhí)行操作并返回結(jié)果。本平臺使用的共識機制結(jié)合SM3密碼雜湊算法的安全保護機制可以更好地保護數(shù)據(jù)。該技術(shù)通過將數(shù)據(jù)分割成多個碎片,并將這些碎片存儲在不同的節(jié)點上,從而防止黑客入侵或數(shù)據(jù)泄露。同時為用戶提供更靈活、更可靠的身份驗證和授權(quán)機制,以確保使用者使用DNA身份驗證才可獲取信息。這樣保證了鏈上患者醫(yī)療數(shù)據(jù)的真實和準確性,有效地防止了惡意節(jié)點的攻擊和數(shù)據(jù)篡改。
2.3 數(shù)據(jù)可溯源性
在患者未來就醫(yī)時,過往的醫(yī)療數(shù)據(jù)具有重大的參考價值,或是在發(fā)生醫(yī)療糾紛時可以提供有效的證據(jù),需要避免傳統(tǒng)溯源中推卸責(zé)任、篡改病歷、私鉆空子和信息遺失的情況。區(qū)塊鏈中的每個數(shù)據(jù)塊都包含了前一個塊的哈希值,形成了一個不可更改的鏈條。這種鏈式結(jié)構(gòu)使得數(shù)據(jù)的變更可以被追溯,增加了數(shù)據(jù)的可信度和可追溯性。數(shù)據(jù)記錄在分布式網(wǎng)絡(luò)中的多個節(jié)點上,每個節(jié)點都會驗證新的區(qū)塊,并通過共識算法來決定是否接受該區(qū)塊。只有經(jīng)過驗證的區(qū)塊才能添加到區(qū)塊鏈中,同時會記錄加密算法生成的唯一哈希,一旦發(fā)生修改唯一哈希也會改變,節(jié)點間使用Gossip協(xié)議來廣播和狀態(tài)同步。遍歷區(qū)塊鏈,可以追蹤每個數(shù)據(jù)記錄的來源和修改歷史。每個區(qū)塊都包含了前一個區(qū)塊的哈希值,因此可以通過逐個驗證區(qū)塊的哈希值來確保數(shù)據(jù)的完整性和一致性。這種機制可以追蹤每個數(shù)據(jù)記錄的來源和歷史變化,基于其分布式、不可篡改和透明的特性,確保數(shù)據(jù)的真實和完整。
2.4 數(shù)據(jù)的訪問控制
患者病歷數(shù)據(jù)在醫(yī)療機構(gòu)數(shù)據(jù)中心中實現(xiàn)共享,但并非機構(gòu)中任何人都可以進行訪問的,采用患者身份認證來進行授權(quán)訪問數(shù)據(jù)。當(dāng)醫(yī)生需要訪問患者醫(yī)療數(shù)據(jù)時,需要患者提供身份標識認證(DNA身份證),通過需要區(qū)塊網(wǎng)絡(luò)中的節(jié)點驗證,使用公鑰驗證身份,驗證通過才會獲得數(shù)據(jù)的訪問權(quán)限。本平臺使用可靠的Attribute-Based Access Control(ABAC)控制模型,以患者唯一標識信息(DNA身份證)為控制屬性,確保只有授權(quán)用戶能夠訪問數(shù)據(jù),并記錄所有訪問記錄以便審計。客戶端和節(jié)點之間的通信使用TLS協(xié)議驗證兩端之間的通信。確保需要患者的實時參與驗證才可獲取訪問權(quán)。
3 區(qū)塊鏈電子病歷平臺的搭建
3.1 區(qū)塊鏈的構(gòu)建
區(qū)塊鏈主要有公有鏈、私有鏈和聯(lián)盟鏈三種形式。考慮到電子病歷平臺需要多個組織或個人組成,共同維護區(qū)塊鏈網(wǎng)絡(luò),對于病歷信息的安全性、可信度要求高??紤]到聯(lián)盟鏈的高效性、可定制性以及在隱私保護和共享資源中的優(yōu)異表現(xiàn),選擇聯(lián)盟鏈。基于Hperledger Fabric框架搭建區(qū)塊鏈。網(wǎng)絡(luò)拓撲初始設(shè)計四個節(jié)點(也就是四所醫(yī)療機構(gòu))。鏈只對初始的四所機構(gòu)開放,區(qū)塊生成和后續(xù)加入的新醫(yī)療機構(gòu)都需要這些節(jié)點的共同決定,每個節(jié)點都有總賬本的副本,共同維護總賬本的一致性。動態(tài)同步區(qū)塊數(shù)據(jù)功能主要基于智能合約和鏈上節(jié)點間的共識來完成,以實現(xiàn)區(qū)塊鏈的擴展和數(shù)據(jù)同步。鏈中的節(jié)點之間可以共享資源,參與者也可以根據(jù)自身機構(gòu)的特點來進行個性定制。
3.2 系統(tǒng)設(shè)計與應(yīng)用
3.2.1 系統(tǒng)分為患者端和機構(gòu)端
患者端:患者可通過管理模塊查看到從機構(gòu)端錄入的信息,針對部分使用電子產(chǎn)品不便的患者,可綁定親屬信息,幫助查看醫(yī)療數(shù)據(jù),用戶可通過親屬信息管理模塊查看已綁定的親屬信息。親屬也可通過與當(dāng)前賬號用戶所建立的綁定關(guān)系,可通過當(dāng)前賬戶去查看親屬的病歷信息,患者端功能設(shè)計如圖1所示。
機構(gòu)端:機構(gòu)端需要劃分角色,其權(quán)限也有所區(qū)別。需要機構(gòu)管理員、科室主任和機構(gòu)醫(yī)生,以便將更多的管理功能下發(fā)至每個機構(gòu)。機構(gòu)醫(yī)生是與患者端交互的直接角色,在認證后,可以對患者進行新的病歷數(shù)據(jù)寫入和修改,機構(gòu)端功能設(shè)計如圖2所示。
基于區(qū)塊鏈的電子病歷系統(tǒng)架構(gòu)設(shè)計上采用目前開發(fā)中主流的前后端分離架構(gòu)。前端使用Vue+Element-UI+Axios架構(gòu),后端采用SpringBoot+MySQL+Redis,數(shù)據(jù)持久層使用MyBatisPlus框架,系統(tǒng)的技術(shù)架構(gòu)如圖3所示。
前端為視圖層,包括用戶界面、顯示效果、頁面交互邏輯等,負責(zé)用戶與系統(tǒng)之間的交互。后端應(yīng)用的業(yè)務(wù)功能可以劃分為數(shù)據(jù)層、數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和控制層。數(shù)據(jù)層主要負責(zé)數(shù)據(jù)的持久化存儲。數(shù)據(jù)訪問層則負責(zé)操作數(shù)據(jù)庫,提供接口供業(yè)務(wù)邏輯層調(diào)用。業(yè)務(wù)邏輯層則是處理業(yè)務(wù)相關(guān)的邏輯和計算,同時調(diào)用數(shù)據(jù)訪問層的接口進行數(shù)據(jù)讀寫??刂茖觿t負責(zé)處理前端頁面的請求,并將請求轉(zhuǎn)發(fā)給相應(yīng)的業(yè)務(wù)邏輯層進行處理,同時也負責(zé)將處理結(jié)果返回給前端頁面。用戶身份識別、授權(quán)認證上使用Spring Security + JWT來實現(xiàn),業(yè)務(wù)架構(gòu)如圖4所示。
通過將電子病歷數(shù)據(jù)存儲于區(qū)塊鏈中,醫(yī)生可以將患者的診療信息錄入數(shù)據(jù)庫,并通過醫(yī)生的身份標識認證驗證身份后登錄進入?yún)^(qū)塊鏈聯(lián)盟鏈。借助SM3加密算法,醫(yī)生可以將患者的相關(guān)信息寫入?yún)^(qū)塊鏈,同時為患者生成唯一的用戶身份標識符(DNA身份證)。患者唯一標識信息(DNA身份證)為控制屬性,確保只有患者自己或授權(quán)用戶能夠訪問數(shù)據(jù)。當(dāng)患者需要到其他醫(yī)療機構(gòu)治療時,只有通過授權(quán)才將電子醫(yī)療數(shù)據(jù)的查詢權(quán)限交出來,整個過程的數(shù)據(jù)流圖如圖5所示。
3.2.2 就醫(yī)模塊功能實現(xiàn)
就醫(yī)申請模塊功能為模擬患者就醫(yī)的前期掛號活動,本系統(tǒng)在此簡化了操作流程?;颊咴诖丝上炔榭醋詸C構(gòu),并可通過機構(gòu)名、機構(gòu)類型、機構(gòu)地址進行篩選查看。選擇一個機構(gòu)可查看醫(yī)生信息。病歷查看模塊如圖6所示,其中信息包括科室信息、醫(yī)生信息等,患者可通過科室名進行科室醫(yī)生篩選。點擊就醫(yī)申請之后就可生成一條就醫(yī)記錄。以上為整個就醫(yī)模塊所實現(xiàn)的功能。
就診模塊支持查看當(dāng)前需接診的患者信息,查看病歷需要先填寫患者授權(quán)碼,經(jīng)服務(wù)器后臺校驗之后會跳轉(zhuǎn)至患者病歷管理模塊?;颊卟v管理模塊在本章節(jié)患者端已介紹,在此不展開說明。病歷上鏈為在填寫病歷之后科室主任角色擁有病歷上鏈權(quán)利。就醫(yī)患者模塊如圖7所示。
4 結(jié) 論
盡管區(qū)塊鏈技術(shù)在醫(yī)學(xué)領(lǐng)域的應(yīng)用面臨一些挑戰(zhàn),其仍然具有廣闊的未來前景。隨著區(qū)塊鏈技術(shù)的不斷發(fā)展和成熟,其可擴展性和性能將得到進一步提升。新的區(qū)塊鏈架構(gòu)和共識機制的出現(xiàn)將促使區(qū)塊鏈系統(tǒng)處理更大規(guī)模的數(shù)據(jù)和更高的交易速度,從而為醫(yī)學(xué)領(lǐng)域的應(yīng)用提供更好的支持。此外,零知識證明、多方計算和加密算法等技術(shù)的應(yīng)用可以在保護數(shù)據(jù)隱私的同時實現(xiàn)高效的數(shù)據(jù)共享和利用。
參考文獻:
[1] 王媛,彭愛群.區(qū)塊鏈助力醫(yī)療病歷數(shù)據(jù)流通及治理變革探析 [J].通化師范學(xué)院學(xué)報,2022,43(1):50-54.
[2] 劉芬,朱壯友,許勇.基于區(qū)塊鏈的電子病歷共享數(shù)據(jù)模型研究 [J].安徽師范大學(xué)學(xué)報:自然科學(xué)版,2021,44(6):536-544.
[3] 李亞輝.基于區(qū)塊鏈的電子病歷共享系統(tǒng)的設(shè)計與實現(xiàn) [D].杭州:浙江大學(xué),2021.
[4] 張圣垚.基于區(qū)塊鏈的電子病歷系統(tǒng)的設(shè)計與實現(xiàn) [D].哈爾濱:哈爾濱工業(yè)大學(xué),2018.
[5] 孫翔.基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)存儲與共享方案研究 [D].南京:南京郵電大學(xué),2021.
[6] 靳碧媛.基于區(qū)塊鏈的醫(yī)聯(lián)體電子病歷安全共享研究 [D].北京:北京交通大學(xué),2022.
[7] 穆康松.基于區(qū)塊鏈電子病歷共享系統(tǒng)的設(shè)計與實現(xiàn) [D].佛山:佛山科學(xué)技術(shù)學(xué)院,2021.
[8] 朱西平,賴宇,龍文濤,等.基于區(qū)塊鏈的電子病歷共享與可驗證方案 [J].科學(xué)技術(shù)與工程,2023,23(14):6113-6122.
[9] 戴佳偉.基于區(qū)塊鏈的電子病歷隱私保護共享系統(tǒng)的研究與實現(xiàn) [D].綿陽:西南科技大學(xué),2022.
[10] 張磊,鄭志勇,袁勇.基于區(qū)塊鏈的電子醫(yī)療病歷可控共享模型 [J].自動化學(xué)報,2021,47(9):2143-2153.
作者簡介:李松澤(2001—),男,漢族,廣西羅城人,本科在讀,研究方向:軟件開發(fā)、區(qū)塊鏈技術(shù);陳樂(2002—),男,漢族,廣西玉林人,本科在讀,研究方向:軟件開發(fā)。
Design of an Electronic Medical Record System Based on Blockchain Technology
LI Songze, CHEN Le
(School of Computer Science and Information Security, Guilin University of Electronic Technology, Guilin 541004, China)
Abstract: In response to the data security and sharing issues of traditional electronic medical records, an electronic medical record system is constructed based on blockchain technology. The system adopts a B/S architecture, with Vue+Element UI as the front-end and Spring Boot and Spring Security as the back-end. Through MySQL database persistence, Hperledger Fabric ensures data trustworthiness. It uploads patient information and medical records to blockchain, utilizes the security mechanism of blockchain technology to reduce the risk of data leakage, solves trust issues, and provides safer doctor-patient interaction. It integrates traditional electronic medical records with cross institutional healthcare, creating personal lifelong medical record storage for each patient, and promoting the development of a lifelong healthcare system.
Keywords: data sharing; blockchain technology; electronic medical record; data security; B/S architecture