本文旨在介紹區域醫療信息系統建設和大數據分析技術的發展,并總結出健康云上的大數據分析面臨的特殊挑戰和提出初步解決方案。
一、健康云的興起
隨著我國經濟持續穩定的發展和現代科技的日益進步,越來越多的人們開始重點關注自身健康。在滿足日常工作和生活的需求之外,規律的健身休閑活動、年度體檢、健康飲食已經成為越來越普遍的想象。與此同時,隨著國家新醫改政策的頒布和實施,與健康直接相關的醫療行業也正在迅猛發展。這里重點介紹一下我國醫療行業IT解決方案市場呈現的發展趨勢:
1、 漸增的多樣醫療數據源:醫療數據的生成和采集已經不再僅局限于醫院這個單一環境。它還可以來自于體檢中心、社區/鄉鎮衛生院、私人診所、實驗室檢驗中心、急救中心、家庭,隨著物聯網(IoT, Internet of Things)相關技術的發展,我們甚至可以說:個人醫療數據可以采自于任何適合的地方。
2、 醫療數據的高度集中化:區域醫療信息系統(RHIS, Regional Health Information System)將逐步取代現有的基于醫院的信息系統。并且,它將更廣泛的覆蓋一個特定區域內的所有醫院、社區、急救中心、體檢中心、實驗室檢驗中心、社會保險機構等。居民個人來自各個數據源的全周期醫療數據將集中保存在統一的區域數據中心中。醫療數據將不再只是某家醫院獨享的資源,而是與整個區域中的所有醫療機構共享,甚至可以與更上層的大區域級、國家級信息系統進行數據交換。
3、 從醫療信息系統到醫療信息服務:區域醫療信息系統的逐步建立將使先進的醫療信息服務的設計和開發變得更加便捷。例如:流行病分析、公共衛生事件預測、臨床決策支持、慢性病管理、個性化的健康照護計劃、日常衛生保健管理等。其原因是因為這些信息服務必須建立在數據集中化的基礎上。這些服務的受眾群體將是整個社會。
正是如上所述的發展趨勢使得“健康云(Healthcare Cloud)”的建立才會成為可能。試想一下:在不久的將來,我們可以通過手機統一查詢在不同醫院的就診記錄、生化檢驗結果、處方和收費清單;慢性病患者在家中可以自測血壓、血糖等指標并通過無線網絡上傳到區域醫療數據中心,醫生也可以遠程分析患者自測數據判斷其病情發展;大量的知識和規則從海量數據中自動提取出來,并用來協助社區及基層衛生機構的初級醫生對患者作出準確的診斷和用藥決策;各個社區居民的醫療數據將會自動匯總,并進行統計分析,用以進行流行病、慢性病的自動篩查、趨勢分析和爆發預警,為公共衛生機構制定防治干預計劃和行動提供有力的依據和參考;患者的癥狀、生命體征、檢驗檢測結果、醫療影像、診斷、處方、醫囑、手術、住院和賬單等全周期數據將會進行全方位的跟蹤和分析,為新藥開發、新治療方案的設計提供支持。上述這些事例都將是我們通過健康云可以逐步實現的。
當然,健康云不是一天就可以建成的,這將是個階段性的工程。除了國家政策和地方支持等外圍因素之外,云計算和大數據技術將會起決定性作用。從構建底層云基礎架構、云存儲方案,到中層的云計算平臺,最后到上層的云應用服務設計和開發,至少需要3~5年的長期規劃。其中,大數據分析部分更是縱向貫穿于云基礎架構、云平臺和云服務三層,需要整體設計和逐步實施。基于現有技術和需求,在本文中,我們暫且把健康云簡化定義為:基于區域醫療信息系統的醫療信息服務,并重點關注1~3年的市場需求。
二、大數據分析技術的發展
區域醫療信息系統中的醫療數據是典型的大數據。我們知道所謂的“大數據”并不只是數量上的“大”。在此,我們簡單套用一下大數據的4V(Volume,Velocity,Variety,Value)定義:
1、 Volume:區域醫療數據通常是來自于擁有上百萬人口和上百家醫療機構的區域,并且數據量持續增長。按照醫療行業的相關規定,一個患者的數據通常需要保留50年以上。我們可以想象這是多么巨大的數據量。
2、 Velocity:醫療信息服務中可能包含大量在線或實時數據分析處理的需求。例如:臨床決策支持中的診斷和用藥建議、流行病分析報表生成、健康指標預警等。
3、 Variety:醫療數據通常會包含各種結構化數據表、非(半)結構化文本文檔(XML和敘述文本)、醫療影像等多種多樣的數據存儲形式。
4、 Value:醫療數據的價值不必多說,它不僅與我們個人生活息息相關,更可用于國家乃至全球的疾病防控、新藥研發和頑疾攻克。
近年來,在衛生部的領導下和國家財政支出的支持下,絕大多數的三甲醫院和部分二級醫院已經先后建立了先進的數字化信息系統和電子健康檔案系統。但至今為止,大部分系統和數據仍然只限于內部使用。據了解,2010年底,衛生部完成了“十二五”衛生信息化建設工程規劃編制工作,初步確定了我國衛生信息化建設路線圖,簡稱“3521工程”,即建設國家級、省級和地市級三級衛生信息平臺,加強公共衛生、醫療服務、新農合、基本藥物制度、綜合管理5項業務應用,建設健康檔案和電子病歷2個基礎數據庫和1個專用網絡建設。由此可看出,今后的幾年,隨著云計算技術的成熟和實用化,大規模區域醫療信息系統和大型數據中心的建立將逐步展開。然而,隨著海量醫療數據被保存下來,一個棘手的問題出現了:我們如何通過高效的分析這些數據來提供有價值的服務?
讓我們先回顧一下大數據分析的發展史。我們知道,大數據分析技術最初起源于互聯網行業。網頁存檔、用戶點擊、商品信息、用戶關系等數據形成了持續增長的海量數據集。這些大數據中蘊藏著大量可以用于增強用戶體驗、提高服務質量和開發新型應用的知識,而如何高效和準確的發現這些知識就基本決定了各大互聯網公司在激烈競爭環境中的位置。首先,以Google為首的技術型互聯網公司提出了MapReduce的技術框架,利用廉價的PC服務器集群,大規模并發處理批量事務。
利用文件系統存放非結構化數據,加上完善的備份和容災策略,這套經濟實惠的大數據解決方案與之前昂貴的企業小型機集群+商業數據庫方案相比,不僅沒有丟失性能,而且還贏在了可擴展性上。之前,我們在設計一個數據中心解決方案的前期,就要考慮到方案實施后的可擴展性。通常的方法是預估今后一段時期內的業務量和數據量,加入多余的計算單元(CPU)和存儲,以備不時只需。
這樣的方式直接導致了前期一次性投資的巨大,并且即使這樣也依然無法保證計算需求和存儲超出設計量時的系統性能。而一旦需要擴容,問題就會接踵而來。首先是商業并行數據庫通常需要各節點物理同構,也就是具有近似的計算和存儲能力。而隨著硬件的更新,我們通常加入的新硬件都會強于已有的硬件。這樣,舊硬件就成為了系統的瓶頸。為了保證系統性能,我們不得不把舊硬件逐步替換掉,經濟成本損失巨大。其次,即使是當前最強的商業并行數據庫,其所能管理的數據節點也只是在幾十或上百這個數量級,這主要是由于架構上的設計問題,所以其可擴展性必然有限。
而MapReduce+GFS框架,不受上述問題的困擾。需要擴容了,只需增加個機柜,加入適當的計算單元和存儲,集群系統會自動分配和調度這些資源,絲毫不影響現有系統的運行。如今,我們用得更多的是Google MapReduce的開源實現,即Hadoop。除了計算模型的發展,與此同時,人們也在關注著數據存儲模型。傳統的關系型數據庫由于其規范的設計、友好的查詢語言、高效的數據處理在線事務的能力,長時間地占據了市場的主導地位。
然而,其嚴格的設計定式、為保證強一致性而放棄性能、可擴展性差等問題在大數據分析中被逐漸暴露。隨之而來,NoSQL數據存儲模型開始風行。NoSQL,也有人理解為Not Only SQL,并不是一種特定的數據存儲模型,它是一類非關系型數據庫的統稱。其特點是:沒有固定的數據表模式、可以分布式和水平擴展。NoSQL并不是單純的反對關系型數據庫,而是針對其缺點的一種補充和擴展。典型的NoSQL數據存儲模型有文檔存儲、鍵-值存儲、圖存儲、對象數據庫、列存儲等。而比較流行的,不得不提到Google提出的Bigtable。
Bigtable是一種用于管理海量結構化數據的分布式存儲系統,其數據通常可以跨成千個節點進行分布式存儲,總數據量可達PB級(10的15次方字節,106GB)。HBase是其開源實現。如今,在開源社區,圍繞Google MapReduce框架,成長出了一批優秀的開源項目。這些項目在技術和實現上相互支持和依托,逐漸形成了一個特有的生態系統。這里我們借用Cloudera所描繪的架構圖來展現Hadoop生態系統。這個系統為我們實現優質廉價的大數據分析提供了堅實的技術基礎。
綜上所述,面對大數據分析的挑戰,不管是計算模型還是存儲模型技術都有了超前的進步。然而,僅憑借當前的技術,我們準備好面對健康云上的大數據分析的挑戰了嗎?下一節,我們將重點分析醫療數據的特有性質為大數據分析帶來的挑戰。
[page]
三、健康云上的大數據分析
由于醫療數據的一些特有的性質,給健康云上的大數據分析帶來了特殊的挑戰。
1、 醫療數據是持續、大量增長的大數據。根據估算,中國一個中等城市(一千萬人口)50年所積累的醫療數據量就會達到10PB級。并且,隨著時間的推移和業務系統的不斷升級換代,醫療數據模式的一致性也無法保證。因此,每天都會有大量的數據持續不斷的導入區域醫療數據中心,并且每當有數據模式的更改,相關的歷史數據也需要做相應的調整。所以,區域醫療數據中心并不是簡單的傳統數據倉庫概念。相比之下,它的模式更靈活、寫入和更新的操作更多,而對數據存儲的水平可擴展性的要求也更高。
2、 醫療數據是關系復雜的多維數據。由于醫療數據是多種數據源數據的匯總,數據之間的關系非常復雜。比如:一個簡單的實驗室檢驗檢測值,必須同時記錄這個值對應的編碼系統和編碼、單位、檢測時間、檢驗項目、標本編碼,以及相關聯的患者主索引號、就診機構、申請科室、申請醫師標識號、報告醫師標識號、審核醫師標識號、正常值參考等等。一條檢測記錄就可以把患者、醫生、醫療機構多個實體在不同層次上關聯起來。而不同的醫療信息服務更需要從不同的視角來觀察這些數據,如下圖所示。比如:以患者為中心的服務需要把一個患者的全周期數據按照時間軸排列,并分析診斷、用藥和患者生命體征、檢驗檢測值之間的關聯;以醫生為中心的服務又需要把與一個醫生相關的患者數據挑揀出來,并進行分類;以科室為中心的服務可能需要即從科室所屬醫生的角度,又要從在該科室就診患者的角度進行分析;針對社區的服務可能需要統計整個社區居民某項指標(比如血壓、血糖)的達標率。總之,醫療數據的多維度多粒度為各種信息服務的多角度多層次分析提供了可能,但同時也為大數據分析帶來了挑戰。因為我們不可能為每一種信息服務存儲一份特定的優化模式的數據,況且我們也無法枚舉出所有可能的信息服務需求。這就需要醫療數據的存儲模型能夠適應靈活多變的多維統計分析需求。
3、 醫療數據是具有語義的數據。大家可能聽說過語義網(Semantic Web),它是為讓數據能跨應用進行共享和重用所設計的框架體系。我們可以把語義網簡單地理解為:一個讓機器(machines)讀懂的維基百科(Wikipedia),主要包括了各種條目的定義以及各個條目之間的關系。如果數據也采用這些條目和關系組織內容,那么機器就可以自動理解數據的語義,并推理出各種知識。所以建立語義網的關鍵就是如何制作一本百科全書(有個專有名詞叫Ontology)。由于醫學是一門非常嚴謹的科學,其在全球的標準化水平很高,對疾病名稱、藥物成分、臨床特征、儀器設備等都有嚴格的定義以及關聯描述。所以,語義網在醫學領域得到了廣泛應用。進而,醫療數據也越來越多的采用基于語義網的臨床文檔框架(CDA)格式的XML文檔來保存。這些XML文檔通過Ontology的解釋,就變成了一個無比巨大的概念+事實+關系的網絡。雖然機器能夠讀懂這個網絡,并能夠在上面進行邏輯推理,從而發現知識,但是其計算代價也是相當高的。當前的醫療系統通常會把復雜的臨床文檔解析成簡單的屬性值,并存入自定義的關系表中。這樣做雖然會有大量的語義及關系的丟失,但卻能夠滿足日常業務系統對數據處理性能的要求。但是對于未來的區域醫療信息系統來說,為了能夠提供豐富全面的信息服務,我們必須盡可能的保留臨床文檔中的語義信息。這樣,醫療數據分析的過程中就不可避免的需要對大量XML文檔進行解析、對各種關系進行推理。這樣的數據分析處理過程比我們之前提到的互聯網數據處理要復雜得多。
通過上述的分析可見,簡單地將現有的大數據分析技術套用在健康云服務上是行不通的。我們需要充分考慮健康云服務的特點和充分利用現有技術框架的靈活性,已達到最好的大數據分析性能。EMC中國研究院大數據實驗室正在涉足于健康云領域的大數據分析技術。根據我們已掌握的技術,我們提出了如下的初步解決方案:
1. 基于Hadoop生態系統構建健康云數據中心,用以解決數據存儲水平擴展的挑戰。利用MapReduce并行處理批量事務的能力,從多個數據源(主要是醫療機構的各個業務系統)抽取數據、轉換格式、并導入基于HBase的數據存儲模型。
2. 在數據存儲模型的設計上,我們將充分借鑒已有的數據倉庫中多維數據模型的設計思想,比如:星型模式和數據立方體的概念。在考慮應用需求的基礎上,利用HBase中行鍵、列鍵、列族設計的靈活性,將多維醫療數據有效地組織在一起。而在索引技術上,我們會結合RDBMS領域的成熟技術,用以進一步提高HBase的查詢性能。對于數據模式的更新,HBase特有的多版本共存的特性正好成了解決問題的關鍵。
3. 為了保留醫療數據中大量的語義關系,我們將采用結構化數據+XML文檔混合存儲的方式。在數據導入的同時,提取XML文檔中特定的元數據,(比如:患者主索引、就診科室、主治醫師等),并將XML文檔根據不同粒度打散成大小不一的子文檔。根據不同粒度的查詢條件,系統將自動選擇相應的子文檔進行進一步信息的解析,從而避免為提取少量信息而不得不解析大量XML文檔的問題。
4. 數據模型的接口將采用Hive提供的類SQL查詢的方式。這樣更有利于數據分析人員設計分析算法。同時,我們的系統中將嵌入多種數據挖掘算法供數據分析師使用。
綜上所述,為解決健康云上的大數據分析問題,我們必須同時利用RDBMS和NoSQL的優勢,并且采用結構化和非結構化數據混合存儲的形式,相互彌補缺陷,已達到最靈活和最高效的設計。而這套基于健康云的大數據分析平臺,也將有希望擴展到其他類似行業,比如:電信、能源、物聯網和公共事業等。
總結
在我國,健康云的發展才是剛剛起步。我們相信,在不久的將來,我國的區域醫療解決方案市場將會有突飛猛進的發展,文中提到的醫療信息服務將會真正的走入我們的日常生活。為此,EMC中國研究院已經走在了技術發展的前列,旨在為健康云的實現提供先進的技術支持。