應用案例:SequoiaDB+Spark搭建醫院臨牀知識庫系統

1.背景介紹

從20世紀90年代數字化醫院概念提出到至今的20多年時間,數字化醫院(Digital Hospital)在國內各大醫院飛速的普及推廣發展,並取得驕人成績。不但有數字化醫院管理信息系統(HIS)、影像存檔和通訊系統(PACS)、電子病歷系統(EMR)和區域醫療衛生服務(GMIS)等成功實施與普及推廣,並且隨着突飛猛進的計算機技術和網絡技術的革新,進一步爲數字化醫院帶來新的交互渠道譬如:遠程醫療服務,網上掛號預定。php

隨着IT技術的飛速發展,80%以上的三級醫院都相繼創建了本身的醫院信息系統(HIS)、電子病歷系統(EMR)、合理用藥系統(PASS)、檢驗管理系統(LIS)、醫學影像存儲與共享系統(PACS)以及移動查房、移動護理系統以及與大量的第三方接口整合應用,IT在醫療領域已經進入了一個大數據時代,隨着HIS的普遍應用及其功能的不斷完善,HIS收集了大量的醫療數據。git

進入2012年,大數據及相關的大數據處理技術愈來愈多地被國人說起,人們也廣泛的接受大數據的概念,大數據技術也影響着咱們的平常生活,互聯網行業已經獲得普遍應用,電信、銀行等行業也已經在普遍嘗試使用大數據技術提供更穩健和優質的服務。數據庫

在目前狀況下,醫療IT系統收集了這些集其有價值的數據,可是這些大量的有價值的歷史醫療數據並無發揮出其應有的價值,不能爲一線臨牀醫生提供醫療診斷輔助,也不能爲醫院管理和經營決策提供必須的支持。編程

針對以上現狀,思考擬利用醫院現有的歷史就診記錄、處方、診斷、病歷數據,挖掘出有價值的基於統計學的醫學規則、知識,並基於這些規則、知識信息構建專業的臨牀知識庫,爲一線醫務人員提供專業的診斷、處方、用藥推薦功能,基於強大的關聯推薦能力,極大的提升醫療服務質量,減輕一線醫療人員的工做強度。瀏覽器

2.主要技術架構介紹

2.1 SequoiaDB服務器

SequoiaDB巨杉數據庫,是一款企業級分佈式NewSQL數據庫,自主研發並擁有徹底自主知識產權,沒有基於任何其餘外部的開源數據庫源代碼。SequoiaDB支持標準SQL、事務操做、高併發、分佈式、可擴展、與雙引擎存儲等特性,並已經做爲商業化的數據庫產品開源。網絡

除了JSON存儲引擎之外,爲了提升非結構化文件的讀寫性能,SequoiaDB核心引擎提供了分佈式塊存儲模式,能夠將非結構化大文件按照固定大小的數據塊進行切分並存放於不一樣分區。這一功能能夠實現海量非結構化文件的存儲,能夠引用於如影像存儲等場景。架構

圖片描述

2.2 Spark併發

Spark是UC Berkeley大學AMP實驗室開源的相似MapReduce的計算框架,它是一個基於內存的集羣計算系統,最初的目標是解決MapReduce磁盤讀寫的開銷問題,當前最新的版本是1.5.0。Spark—經推出,就以它的高性能和易用性吸引着不少大數據研究人員,在衆多愛好者的努力下,Spark逐漸造成了本身的生態系統( Spark爲基礎,上層包括Spark SQL,MLib,Spark Streaming和GraphX),併成爲Apache的頂級項目。框架

Spark的核心概念是彈性分佈式存儲(Resilient Distributed Datasets, RDD)間,它是Spark對分佈式內存進行的抽象,使用者能夠像操做本地數據集同樣操做RDD,從而能夠將精力集中於業務處理。在Spark程序中,數據的操做都是基於RDD的,例如經典的WordCount程序,其在Spark編程模型下的操做方式以下圖所示:

圖片描述

能夠看到Spark先從文件系統抽象出RDD1,而後由RDD1通過flatMap算子轉換獲得RDD2,RDD2再通過reduceByKey算子獲得RDD3,最後RDD3中的數據從新寫回文件系統,一切操做都是基於RDD的。

3.思路與架構

通過多方面的思考,最終決定基於Spark技術進行構建和實現醫院臨牀知識庫系統,採用SequoiaDB構建底層數據存儲平臺,作爲大數據的存儲中心,採用Spark構建大數據分析平臺,基於AgileEAS.NET SOA中間件構建ETL數據抽取轉換工具(後期部分換用了Pentaho Kettle),基於AgileEAS.NET SOA中間件構建知識庫的服務門戶,經過WCF/WebService與HIS系統進行業務整合集成,使用AgileEAS.NET SOA+FineUI構建基礎字典管理之後分析結構的圖像化展現功能。

咱們選擇了SequoiaDB作爲大數據存儲中心,爲此我還特地的爲SequoiaDB完成了C#驅動,最初咱們選擇了Spark1.3.1版本之上使用scala2.10開發完成了醫院臨牀知識庫系統,項目後期咱們把計算框架也由Spark1.3.1升級到了Spark1.6.2(Spark已經於近期發佈了2.0版本,各類性能穩定性大幅提高)。

考慮到Spark都部署在Linux的狀況,對於Spark分析的結果輸出存儲在也存儲在SequoiaDB巨杉數據庫之中。Spark數據分析部分的代碼使用IntelliJ IDEA 14.1.4工具進行編寫,其餘部分的代碼使用VS2010進行編寫。

3.1 整體架構

整個系統由數據採集層、存儲分析層和應用邏輯層三大部分以及本系統所選因此來的外部數據源。本系統的外部數據源目前主要是醫院信息系統所產生的臨牀數據,目前主要集中在HIS系統之中,後期將採依賴於EMR、LIS、PACS系統。

圖片描述

數據採集層:主要負責從臨牀業務系統採集海量歷史臨牀數據同,歷史記錄採集方式分爲批採集和實時採集,在數據採集過程之中對原始數據進行格工檢查,並對原始數據進行清洗和轉換,並將處理後的數據存儲在大數據倉庫之中。

存儲分析層:主要負責數據存儲以及數據分析兩大部分業務,通過清洗轉換的合理有效數據被存儲在大數據集羣之中,使用JSON格式,大數據存儲引用使用SequoiaDB數據庫,數據分析部分由Spark集羣來完成,大數據存儲經由Spark導入並進行分析,分析結果寫入臨牀知識數據庫,臨牀知識數據庫也使用SequoiaDB巨杉數據庫進行存儲。

應用邏輯層:主要負責人機交互以及分析結構回饋臨牀系統的渠道,經過WebUI的方式向臨牀醫生、業務管理人員提供列表式、圖像化的知識展現,也爲臨牀系統的業務輔助、推薦功能提供調用的集成API,目前API主要經過WebService、WebAPI兩種方式提供。

3.2 系統數據流程

整個系統經由數據源數據採集,寫入大數據存儲SequoiaDB集羣,而後由Spark進行分析計算,分析生成的臨牀知識再寫入SequoiaDB知識庫,經由WebUI以及標準的API交由臨牀使用。

圖片描述

3.3 數據導入流程

圖片描述

歷史數據的採集導入使用初期使用http://AgileEAS.NET SOA 的計劃任務配何C#腳本進行實現,由計劃任務進行協調定時執行,具體的數據導入代碼根據不一樣的臨牀業務系統不一樣進行腳本代碼的調整,也可使用Pentaho Kettle進行實現,經過Pentaho Kettle可配置的實現數據的導入。

3.4 系統物理架構

臨牀數據源爲本系統進行分析的數據來源,源自於臨牀HIS、EMR,目前醫院的HIS使用SQL Server 2008 R2數據庫,EMR使用ORACLE 11G數據庫,運行於Windows2008操做系統之上。

SequoiaDB集羣爲大數據存儲數制庫集羣,目前使用SequoiaDB v2.0,運行於Centos6.5操做系統之上,根據業務來規模使用2-16節點集羣,其用於存儲通過清洗轉換處理的海量歷史臨牀數據,供Spark集羣進行分析,以及供應SOA服務器進行歷史數據查詢和歷史相關推薦使用。

Spark集羣爲本系統的分析計算核心節點,用於對SequoiaDB集羣之中的歷史數據進行分析,生成輔助臨牀醫生使用的醫學知識,本集羣根據業務來規模使用2-16節點集羣,使用Centos6.5操做系統,安裝JAVA1.7.79運行環境、scala2.11.4語言,使用Spark1.3.1分析框架。

同時,SequoiaDB做爲做爲本系統的知識庫存儲數據庫時。Spark集羣所生產的分析結構寫入本數據庫,經由SOA服務器和Web服務處理供臨牀系統集成使用和WebGUI展示。

SOA Server爲本系統的對外接口應用服務器,向臨牀業務系統和Web Server提供業務運算邏輯,以及向臨牀業務系統提供服務API,目前運行於Windows2008操做系統,部署有.NET Framework 4.0環境,運行http://AgileEAS.NET SOA 中間件的SOA服務,由http://AgileEAS.NET SOA 中間件SOA服務向外部系統提供標準的WebService以及WebAPI。

Web Server爲系統提供基於標準的B/S瀏覽器用戶接口,供業務人員經過B/S網頁對系統進行管理,查詢使用知識庫之中的醫學知識,目前運行於Windows2008操做系統,部署有.NET Framework 4.0環境,運行於IIS7.0之中。

臨牀工做站系統運行HIS、EMR系統,兩系統均使用C#語言SOA架構思路進行開發,與本系統集成改造後,使用標準WebService接口本系統,使用本系統所提供的API爲臨牀提供診療輔助。

4.結語

不管是NoSQL技術仍是Spark技術,做爲當前大數據新興的技術架構,都將是大數據應用的核心基礎。SequoiaDB的分佈式架構支持了海量的數據的村存儲,同時其JSON/LOB的架構又能夠知足非結構化數據的存儲。這兩個特性能夠說是醫療行業對於數據的核心需求。同時SequoiaDB做爲數據源又能很好的對接Spark架構(SequoiaDB是Spark官方的全球10多家認證發行商之一),選擇SequoiaDB能夠說也是大大提高了整個數據系統的性能和穩定性。

本文源自巨杉數據庫社區用戶實際應用案例
歡迎關注和加入巨杉數據庫開源社區

SequoiaDB巨杉數據庫2.6最新版下載

SequoiaDB巨杉數據庫技術博客

SequoiaDB巨杉數據庫社區

相關文章
相關標籤/搜索