在“歪評”區塊鏈之后,前IBM認知醫療研究總監、平安科技首席醫療科學家謝國彤回歸本行,聚焦MIT基于區塊鏈的電子病歷共享系統MedRec,從Linked Data角度思考區塊鏈的醫療行業應用。
自從今年3月份寫完《最具娛樂精神的區塊鏈科普》以后,一直沒有寫下篇。最近看了MIT Media Lab做的MedRec,一個基于區塊鏈的電子病歷共享系統,有點兒感想,分享一下。
萬維網和Linked Data
每當聽到有人說要把醫療數據放到區塊鏈上的時候,我的第一個問題都是:什么信息應該放到鏈上?什么不應該放到鏈上?在區塊鏈誕生的“比特幣”場景下,鏈上記錄的是比特幣交易信息,這類金融信息的特點是交易頻次高,但結構簡單,每次交易的數據量小。
電子病歷數據卻不太一樣。相比金融交易系統,電子病歷的頻次要低很多。在這個“買買買”的時代,一個人可以在一天內輕輕松松掃20次以上的支付寶或微信支付,但他/她一年也不見得會有20次電子病歷數據交易。可是單次電子病歷數據卻相當復雜度,一個患者一次就診就可以產生掛號信息、病歷信息、檢驗單、檢查結果、醫學影像、入院記錄、手術記錄、護理記錄和出院小結等結構復雜、模態多樣的電子病歷數據。
這時問題就來了:難道我們要把這些數據都放到鏈上嗎?把這些數據在區塊鏈的每個節點上都復制一遍?這看起來不像個好主意。
類似的跨系統、多模態復雜數據的共享平臺其實我們每天都在用,就是萬維網(World Wide Web)。當你刷著淘寶追著劇,同時不停在微信上積贊換購物紅包,或者在微博上點評劇中男/女主的時候,你已經在多個復雜的異構系統中進行了信息訪問和共享。只不過這個信息共享系統的設計實在太優美,簡潔直觀,以至于你都沒有意識到自己做了這么復雜的事情。
這個優美系統的設計者就是Tim Berners-Lee(TBL),他在1990年圣誕節實現了第一次HTTP通訊,并于2016年因為這個偉大的設計獲得了圖靈獎。
Tim Berners-Lee因為發明了萬維網獲得了2016年的圖靈獎
在完成萬維網的設計后,TBL在2006年提出了Web 2.0的概念,Linked Data。顧名思義,就是把數據,而不是網頁,通過鏈接關聯起來;讓程序,而不是人,可以在數據的海洋中沖浪。
這個希望在Web之上構建一個分布式結構化數據共享平臺的想法遠遠沒有Web成功,但它的一些設計指導原則在基于區塊鏈的電子病歷共享系統方面其實很有借鑒意義。
Linked Data有四個設計原則:
用URI(Uniform Resource Identifier)標識所有的數據資源
用戶可以通過HTTP協議訪問URI
當URI被訪問時,返回一些基于標準的有用信息
在URI之間建立鏈接,這樣用戶可以發現更多的信息
基于區塊鏈的電子病歷共享系統設計
參考Linked Data的四大設計原則,會發現在基于區塊鏈的電子病歷共享系統設計中,有一些基本的問題要思考:
什么是數據資源?在Web時代,最基本的數據資源是一個網頁、一張圖片或者一段視頻。在電子病歷共享系統中的資源是什么?一個患者,一個醫療機構,一次就診,一次就診中產生的一個臨床文檔?
用什么做數據資源的URI?用什么協議訪問這個URI?這里應該用區塊鏈的程序訪問協議來代替HTTP。
當用戶訪問某個URI的時候,應該由誰返回信息?返回什么信息?是由區塊鏈的分布式賬本,還是每個醫療機構的本地服務器來返回信息?是返回患者的就診列表,還是患者的電子病歷數據集?返回的信息格式應該如何設計才能更好的支持互操作性(Interoperability)。
URI之間有什么樣的語義鏈接?如何讓程序可以在通過鏈接在數據的海洋中穿梭遨游?
看完MedRec的系統設計,雖然它并沒有提Linked Data,不過我覺得它無意中遵循了一些LInked Data的設計原則。想想也不奇怪,畢竟MedRec也是在解決分布式異構數據共享問題,只不過從Web平臺換到了區塊鏈平臺上。
MedRec的智能合約設計
MedRec采用智能合約(Smart Contract)來表示區塊鏈上的患者、醫療機構、病歷信息指針和患者-機構之間的就診關系,這屬于電子病歷的元數據(metadata),而真正的數據依然存儲在每個醫療機構本地的數據庫中。
從智能合約中可以找到醫療機構本地數據庫的指針,然后程序通過這個指針可以查詢到最終的數據。類似你從谷歌和百度的搜索結果頁面中找到Web鏈接,然后再通過鏈接訪問包含原始數據的網站,獲取鏈接內容。它主要包含三個合約:
管理合約(Registrar Contract):它承擔了資源定義的工作。目前MedRec里只有兩類資源:患者(Patient)和醫療機構(Provider)。每個資源定義了唯一的URI:Eth addr(Ethereum address),是這個資源在Ethereum區塊鏈平臺上唯一的地址,類似一個RDFResource的集合。
摘要合約(Summary Contract):以每個資源(患者或醫療機構)為索引,把這個資源相關的所有數據(關系)都整合起來。這樣從一個資源的URI出發,就可以找到所有跟它有關的數據。類似一個RDFGraph,記錄了所有以某個RDFResource為subject的RDFStatement的集合。
醫患關系合約(Patient Provider Relationship):它表示的是兩類URI(患者和醫生)之間的語義關系:就診,類似一個RDFStatement。但它還要表示很多其他信息,所以采用了類似屬性圖(Property Graph)的方法,在二元關系上附加了很多屬性,比如:
Access info:包含實際存儲了原始電子病歷數據的醫療機構的本地數據庫訪問信息,如IP地址,數據庫用戶名等;
EMR queries & hashes:在醫療機構本地數據庫中查詢某個患者電子病歷信息的SQL語句,還有電子病歷信息的哈希值。這樣如果數據上傳區塊鏈之后,醫療機構又對本地電子病歷數據進行了修改,通過哈希值是可以發現的,這體現了區塊鏈的不可篡改性和可溯源性;
Permission:它是個哈希表,記錄了第三方訪問者可以調用哪些額外的SQL查詢,類似rdfs:seeAlso的設計,告訴訪問者還有哪些有意思的信息可以“順便”看看;
Mining Bounties:非常區塊鏈風格的賞金設計,很有趣。為了激勵區塊鏈上的礦工們(Miner)參與平臺的計算,當包含這個電子病歷數據更新的block(塊)被挖到的時候,礦工自動會得到訪問這個賞金(bounty)查詢的權限。賞金查詢主要是針對人群的一些統計信息,比如“最近一個月來醫院A就診的糖尿病患者的血糖均值”,不會泄漏患者的個人信息,所以也不需要患者的授權。
MedRec的智能合約基本還是從數據庫設計的角度出發,考慮的是如何簡潔高效地把數據的關系表示清楚,但它無意中遵循了一些Linked Data對數據建模的原則。如果一開始就從Linked Data的設計原則(而不是具體的RDF語法或者W3C標準)出發,這個智能合約的結構應該還可以優化。
另外,請各位RDF(Resource Description Framework)大神不要追究我對RDFStatement,RDFResource,RDFGraph或者Reification等概念的語義內涵或外延不嚴謹的陳述,這里只是示意而已。
MedRec的系統實現
我覺得MedRec最核心的是智能合約設計,至于系統的實現會因為底層區塊鏈平臺的不同選擇(Ethereum或HyperLedger或其它平臺),或者架構師對工程美學的不同理解而千差萬別。
出于完整性的角度,我也非常簡單地介紹一下MedRec的系統實現。
MedRec設計了4個模塊,通過9個步驟完成資源的注冊、病歷信息的上鏈更新、患者授權和病歷信息查詢等關鍵過程:
Backend API Library:主要是一些utility功能,簡化系統操作的AP;
Ethereum Client:參與和使用Ethereum區塊鏈平臺的客戶端模塊;
Database Gatekeeper:在區塊鏈下訪問醫療機構本地數據庫的模塊I;
EHR Manager:MedRec系統對終端用戶的前端用戶界面
MedRec可以改進的方面
MedRec比很多隨便在HyperLedger上搭的所謂區塊鏈電子病歷共享系統的質量高很多,不愧是MIT Media Lab出品。不過它依然只是個原型系統,還有很多方面可以提高,我拋幾塊磚:
智能合約的設計:Web是目前最成功的異構多模態數據訪問和共享架構,Linked Data是Web向結構化數據共享邁進的一步,它的很多設計原則可以應用在基于區塊鏈的電子病歷共享系統中,讓資源的表示和訪問模式更加簡潔優美,提高系統的可擴展性和魯棒性
避免單點失敗:目前真正的電子病歷數據還是存儲在醫療機構本地的數據庫中。Web系統設計的初衷就是為了支持大規模多用戶訪問的,而醫療機構的數據庫不是為這個目標設計的,它只是為了支持醫院自身的流程管理和分析應用而已。一旦醫療機構的數據庫不能被訪問,就像微博宕機一樣,什么數據都訪問不了。目前MedRec去中央數據庫的設計并不能避免單點失敗的尷尬,也許可以參考Hadoop的思想,在區塊鏈平臺的另外2-3個可信賴的節點中保存數據的備份,保證即使某個醫療機構的數據庫掛了,真個電子病歷共享系統依然不受影響
數據的互操作性:數據共享平臺輸出的數據格式要滿足互操作性的要求。簡單的說,就是要讓數據使用方能理解查詢到的數據,就像Web系統用HTML,Linked Data系統用RDF一樣。在醫療領域,除了數據格式的規范,還有醫療術語的語義互操作性。可以考慮目前比較流行的FHIR格式,加上SNOMED-CT這樣的醫療術語標準
分布式機器學習:目前MedRec只是個數據查詢系統,但并不支持跨醫療機構的數據分析,即使是最基本的統計。可以考慮“加載”類似MapReduce的分布式計算框架,甚至是分布式機器學習框架,支持跨醫療機構的分布式數據分析。
-
醫療
+關注
關注
8文章
1824瀏覽量
58813 -
數據共享
+關注
關注
0文章
56瀏覽量
10891 -
區塊鏈
+關注
關注
111文章
15562瀏覽量
106244
原文標題:謝國彤:解決分布式異構數據共享,交叉視角看區塊鏈電子病歷系統
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論