王小偉,呂友輝
(1鄭州大學體育學院信息管理中心 河南 鄭州 450052)
(2鄭州澍青醫學高等專科學校 河南 鄭州 450064)
傳統的信息系統大都采用中心化部署,這種部署方式對于中心節點依賴性較強,一旦中心節點出現故障或者遭到攻擊,將會導致整個系統癱瘓,極端情況下可能會造成數據丟失,造成巨大的損失。而且,運動員在遇到運動損傷的時候,希望能第一時間接受治療,可能會需要不同醫院的醫生共同會診,因此需要歷史傷病記錄是互信的、可查的,這樣可節約診療時間,避免不必要的重復檢查及醫療費用的額外支出。運動員傷病信息屬于重要的戰略資源,不允許被對手竊取,因此對外需要匿名,對內則需要如實準確記錄,不可篡改。這樣在運動員康復訓練、備戰過程中才能有的放矢,進行有針對性的訓練與治療。如何保證傷病運動員診療信息可靠、可信,是迫切需要解決的問題。
區塊鏈[1]是一種分布式賬本技術,每個節點都存儲一份數據,具有高冗余性、去中心化、高安全性等特點,可有效避免因中心節點遭受攻擊或因管理不當而造成的大規模數據丟失或泄露等問題,十分適合用來存儲重要數據。徐健等[2]提出了一個基于區塊鏈技術的實時安全醫療記錄解決方案(RSMR),在數據存儲過程中利用星際文件系統(IPFS)進行數據存儲,并給出了詳細的智能合約方案。高夢婕[3]根據病人匿名就醫的現實需求,提出了一種基于區塊鏈的醫療數據簽密方案,并給出了系統模型和安全模型,進行了安全性證明和性能分析。張利華等[4]提出了一個基于聯盟鏈的去中心化的雙鏈存儲模型,用于存儲鐵路沿線監測數據。從各類文獻可看出,將區塊鏈技術用于遠程支援平臺具有很好的技術基礎。
本文嘗試構建一個基于區塊鏈的運動醫療與康復遠程支援平臺,將運動員歷史診療信息存儲到區塊鏈平臺,利用區塊鏈技術的不可逆、防篡改等特性,解決在遠程診療過程中存在的互信問題及單點故障問題。
區塊鏈(blockchain)是一種按照時間順序排列的鏈式結構[5],運用了非對稱加密、哈希函數、時間戳、共識機制、點對點網絡等技術,具有去中心化、不可篡改、可追溯、全程留痕、公開可驗證、代碼開源等特點。
傳統分布式數據庫由中心服務器維護數據,對中心服務器依賴性較強,一旦中心服務器出現故障將導致所有服務中斷,還可能造成數據丟失。而區塊鏈中數據由所有節點共同維護,每個節點都保存一份完整的數據,即便某些節點發生故障也不會導致數據的丟失,所有參與節點以共同記賬的方式來維護數據庫。區塊鏈節點之間通過共識算法來保證數據的一致性[6],通過計算哈希值是否發生變化來判斷數據是否被篡改。
一個區塊由區塊頭和區塊體兩部分組成[7-8]。區塊頭中保存的信息有前一區塊哈希、版本、時間戳、難度、隨機數、merle根。區塊體中保存的是每筆交易及其哈希值構成的merle樹,區塊之間通過將前一區塊的hash值添加至后一區塊的區塊頭中,從而形成了鏈式結構,見圖1。
基于區塊鏈的冬季項目遠程支援平臺,主要目的是為運動員遠程診療提供平臺支撐,當隊醫需要場外醫生遠程協助時,能夠隨時開啟遠程會診模式,為專家遠程會診提供平臺支撐。同時為使專家團隊能迅速了解運動員歷史傷病情況,需要能夠及時準確地獲取到傷病運動員的歷史病歷記錄,以便傷病運動員能快速獲取診療援助。考慮到運動員的特殊性,診療信息需要安全、可靠、保密,計劃采用區塊鏈技術來進行診療數據的存儲,鏈上數據不可篡改,可信可靠。在遠程診療過程中的數據不必上鏈接,只需要存儲在本地服務器即可,這樣可節省鏈上空間。
根據前面描述,冬季項目遠程支援平臺主要為冬季項目訓練隊伍提供遠程醫療支撐,主要使用者為隊醫、運動員、教練員及場外醫生團隊。業務功能劃分見圖2。
整個系統分為5個功能模塊:注冊/登錄模塊、運動員病歷管理模塊、處方跟蹤模塊、遠程會議管理模塊、后臺管理模塊。
(1)注冊/登錄模塊:該模塊為不同身份用戶提供相應入口,包括用戶注冊、登錄等功能。考慮到安全性,不允許匿名注冊,所有用戶通過小程序實名認證,認證后賦予相應角色。
(2)運動員病歷管理模塊:該模塊為傷病運動員提供病歷管理。該處病歷通常由隊醫發起,對運動員進行傷病診療,將診療處方及就診情況存儲到區塊鏈上;當運動員需要場外醫生協助診療的時候,可通過授權場外醫生查看歷史病歷處方。個人信息模塊主要是提供查閱或修改患者信息功能。
(3)處方跟蹤模塊:該部分主要是隊醫根據運動員傷病情況開具處方,如果涉及用藥,還需要反興奮劑專員的審核,如果需要場外醫生協助,還需要發起遠程會議進行多方會診。
(4)遠程支援會議管理模塊:當隊醫需要場外醫生協助時,可實時發起線上會議進行遠程會診,這部分內容屬于過程性內容,通常占用空間會比較大,不適合存儲到區塊鏈上,因此該部分內容保存到鏈接下,當需要查詢的時候,可以在鏈接下查詢。
(5)后臺管理模塊:主要包括用戶管理、團隊管理、場外醫生管理等功能。
根據前面功能分析,運動員診療信息需要存儲到區塊鏈上。結合公有鏈、聯盟鏈特性,運動員診療信息屬于重要的戰略資源,不適合存儲在公有鏈上,因此選擇聯盟鏈,聯盟成員要有準入機制。通常的做法是創建一個通道,邀請聯盟內成員進入該通道,信息對于聯盟內成員是公開透明的,但對于通道外的其他成員是無法訪問的,這樣可保證通道內是一個隔離的賬本。有時候,即便是同一個聯盟內也不希望別人輕易獲取到傷病運動員的信息,因此傷病運動員診療信息在上鏈之前可采用非對稱加密算法,對診療信息加密后上傳。診療信息的解密,只有傷病運動員自身的密鑰才能解開,這樣就充分保障了傷病運動員的個人隱私不被泄露。遠程支援平臺的邏輯結構圖見圖3。
表示層:即前端頁面,針對不同登錄用戶,表示層通過導航欄引導,幫助用戶完成相關業務操作。
業務邏輯層:涉及具體業務邏輯,包括注冊登錄管理、運動員病歷管理、處方跟蹤、遠程診療會議管理等操作,屬于網站的后臺服務。
數據訪問層:主要為區塊鏈網絡和本地的數據庫設計數據交互接口。一方面與區塊鏈網絡進行數據交互,另一方面則通過調用 MySQL客戶端操作本地數據庫。
冬季項目遠程支援平臺基本功能實現跟本地平臺大部分相同,唯一不同的地方就在于診療數據是存在區塊鏈上的,需要到區塊鏈上來存取數據。本部分對系統主要部分進行模塊設計。
如圖4所示,用戶在注冊時,通過調用SDK執行智能合約,獲取鏈上身份,注冊完成將得到唯一的加密地址作為用戶ID,以及用戶的公私鑰對(PK,SK),在客戶端上還將獲得一個存放個人病歷信息的文件夾UserFold,用于存放用戶在本次診療過程中產生的各類電子記錄EMR(Electronic medical records)。初始用戶結構體如式(1)所示:
用戶正常登錄時,通過調用智能合約,可根據ID到區塊鏈上查詢個人信息及加密的電子病歷。
病歷管理模塊涉及5個實體,即隊醫、運動員、教練員、區塊鏈、場外醫生。場外醫生和隊醫的角色相類似,教練和運動員的角色類似,他們的角色見圖5。
隊醫負責生成、發布運動員的診療記錄到區塊鏈,運動員可以從鏈上檢索電子診療記錄并授權給場外醫生查看,場外醫生可以在鏈上檢索經授權的電子記錄并診斷,同時將本次診療記錄發布到鏈上。教練員經過授權可查詢運動員的診療記錄。
隊醫:相當于醫生,收到運動員請求后,為運動員診斷并生成傷病診療記錄,經加密處理后上傳到鏈上。該角色在提供診療服務時可要求患者提供歷史傷病記錄,并從區塊鏈檢索相關數據進行驗證。
運動員:即患者,是個人傷病診療信息的擁有者。在接受隊醫或場外醫生診斷后獲取傷病診療記錄的相關證明憑證,利用此憑證驗證電子診療記錄的有效性。在更換其他醫生時,患者可提供歷史電子診療記錄獲取更準確、更高效的醫療服務,但為了避免電子診療記錄被惡意傳播,患者不直接提供電子診療記錄,而是利用加密處理過的電子診療記錄。
教練員:具有運動員診療數據訪問需求,訪問時需要獲得權限。
區塊鏈:采用聯盟鏈,通過創建通道,形成相對隔離的聯盟賬本,聯盟內所有節點共同維護賬本,運動員將在區塊鏈上完成匿名化就醫。
3.2.1 診療信息上鏈
圖6為診療信息上鏈過程,隊醫為受傷運動員診療結束后,形成電子病歷EMR,用受傷運動員的公鑰PK加密診療信息,加密后得到一個唯一文件HDF,加密過程用公式(2)表示:
隊醫或醫生在注冊后也將獲得自己的加密地址作為唯一ID及自己的公私鑰對(PKd,smd),對于醫生的公私鑰,主要用來簽名及驗證身份。
隊醫在診療結束后要為本次診療服務負責,因此需要隊醫用自己的私鑰smd簽名,用于身份驗證,之后將加密后的文件HDF及EMR保存至患者文件夾UserFold,等待上傳至區塊鏈。簽名過程用公式(3)表示:
3.2.2 診療信息查詢與下載
隊醫或醫生在收到傷病運動員請求后,根據運動員提供ID在區塊鏈上查詢運動員傷病診療信息LockFile,這時隊醫/醫生可以查到運動員診療信息,但是無法解密,需要獲得受傷運動員的授權才能夠解密。在解密前,還需要驗證醫生的簽名igd,驗證通過后可得到原文件EMR,見圖7。
驗證簽名過程用公式(4)表示:
解密公式為式(5):
處方跟蹤流程見圖8,隊醫在收到運動員請求后,首先給出初診結果,如果隊醫能夠處理,那么可以直接開出處方,如果需要場外醫生或專家遠程協助,那么需要預約,發起在線診療會議,會議結束后,根據專家意見開出處方。如果處方中沒有藥品,那么可直接確認處方。如果處方中含有藥品,那么還需要反興奮劑專員來確認是否符合反興奮劑要求,如果不符合,那么需要隊醫重新開具處方;如果符合要求,則由隊醫確認處方,流程結束。
遠程會診模塊的實現借助第三方聲網接口,完成實時視頻會議功能,視頻會議系統支持實時通話、實時視頻,還可以發送圖片、小視頻、語音等,支持異步會議,這樣可方便因國內外時差不同而導致的不便。同時為了保障視頻信息的長期存儲以備后查,將視頻會議過程信息拉取到本地服務器,在需要查看時可通過查看歷史記錄來進行查閱。
后臺管理模塊主要包括用戶管理、團隊管理、場外醫生管理等功能。用戶管理主要是系統用戶、小程序用戶,用戶可能存在多個角色。團隊管理主要是運動隊管理,通常一支運動隊包含領隊、隊員、教練、隊醫、反興奮劑專員等。場外醫生管理:主要是當隊醫需要場外協助時,可能會需要不同醫院的醫生共同來會診,才能最終下結論,因此場外醫生管理,其實包含了醫院管理、醫生管理、科室管理。
本文設計了一個基于區塊鏈的冬季項目遠程診療支援平臺,用于解決傷病運動員的遠程會診問題,根據業務需求設計了5個功能模塊,給出了系統的邏輯結構模型,對系統關鍵模塊的流程進行了詳細設計。為保障運動員診療信息的安全可靠可信,使用了區塊鏈技術,一方面解決傳統的集中存儲帶來的單點故障問題,另一方面將運動員病歷信息存儲到區塊鏈上,任何人不能篡改,通過密碼技術使得只有經過授權的教練、醫生才能夠查看特定的信息,充分保障了信息的安全可靠。同時區塊鏈技術還可解決信息的互信問題,當需要不同醫院的醫生共同會診時,需要歷史傷病記錄是互信可查的,具體實現各項功能,真正為運動隊提供服務。