隨著信息化技術及互聯(lián)網(wǎng)技術的發(fā)展,我們的生活已經(jīng)離不開它們,通過它們能夠提高生活及工作效率,在這基礎上,電子健康概念被提出,通過標準化軟件、制度等,逐步搭建起全國健康服務和管理機構間跨地域、跨部門、跨所有制的電子信息共享網(wǎng)絡,實現(xiàn)遠程會診醫(yī)療、遠程教學等,可以使各級各類醫(yī)療保健、疾病預防、計劃生育服務、醫(yī)學科研、健康咨詢和藥品、醫(yī)療器械生產(chǎn)供應銷售以及社會保障、保險等形成一體化醫(yī)療轉(zhuǎn)診和健康服務體系,最大限度的信息互通和資源共享。
【摘要】隨著生活水平的不斷提高,人們對于健康的需求也是與日俱增,傳統(tǒng)的以醫(yī)療為主的健康模式也在逐漸的變化,人們更希望的是通過日常的保健等行為使身體長時間的保持健康,減少疾病的痛苦。人本電子健康系統(tǒng)意在為人們搭建一個平臺,使其可以通過測量記錄日常生活習慣、身體狀況來管理自身的健康,并且通過專家系統(tǒng)的提示,調(diào)整不良生活習慣,保證身體處在良好的健康狀態(tài)。在互聯(lián)網(wǎng)進入到大數(shù)據(jù)時代的現(xiàn)在,單一的關系型數(shù)據(jù)庫已經(jīng)難以滿足日益增長的數(shù)據(jù)存儲規(guī)模和人們對海量數(shù)據(jù)處理方面的需求,而越來越多的非關系型數(shù)據(jù)庫的涌現(xiàn)使數(shù)據(jù)存儲的方式越來越多樣化,其中基于key/value的數(shù)據(jù)庫占了比較大的部分。
【關鍵詞】key/valueredis,人本電子健康,web2.0
1.緒論
借助互聯(lián)網(wǎng)和信息技術的發(fā)展,各個醫(yī)院以及其他醫(yī)療衛(wèi)生服務機構紛紛建設其如HIS(醫(yī)院信息管理系統(tǒng))、LIS(檢驗科信息管理系統(tǒng))、PACS(圖像信息管理系統(tǒng))等信息化系統(tǒng),提高了醫(yī)院的信息化水平和業(yè)務處理水平,更好的為患者提供醫(yī)療衛(wèi)生服務。但是對每個個體的人來講,如何讓他們時時刻刻都了解自己的健康狀況,如何保持健康預防疾病,一旦生病后怎樣在第一時間對病情有所了解采取有效的治療方案,這是人們常常最關心的問題,而這些問題也是目前國內(nèi)外研究關注的問題,讓普通老百姓能夠快速便捷的通過例如互聯(lián)網(wǎng)等媒介獲取健康及醫(yī)療資源信息才是解決公眾健康問題的最有用的途徑。
2.相關技術介紹
2.1NoSQL數(shù)據(jù)存儲介紹
NoSQL的發(fā)展最早可以追溯到1991年Key/Value類型的Hush數(shù)據(jù)庫BerkeleyDB的發(fā)布,它適用于數(shù)據(jù)類型相對簡單但需要極高讀寫速度的場合。而NoSQL概念的提出則是從2009年年初開始,用來為現(xiàn)代互聯(lián)網(wǎng)應用提供可擴展的數(shù)據(jù)庫解決方案。對NoSQL一個較為全面的解釋是“下一代的數(shù)據(jù)庫產(chǎn)品應該具有這幾個特點:非關系型的、分布式的、開源的、可以線性擴展的。”NoSQL的全稱為NotOnlySQL(不只SQL),從名字可以看出,它的提出并不是要取代關系型數(shù)據(jù)庫在現(xiàn)代應用中的廣泛使用,而是采用一種非關系型的方式來解決數(shù)據(jù)的存儲和計算問題。
2.1.1NoSQL與SQL
傳統(tǒng)的關系型數(shù)據(jù)庫難以適應如今Web2.0環(huán)境下某些特定場景的存儲需求,如現(xiàn)今流行的具有超大規(guī)模和高并發(fā)的SNS(社交網(wǎng)絡)類型的Web2.0純動態(tài)網(wǎng)站?偨Y起來,傳統(tǒng)關系型數(shù)據(jù)庫如今面臨的挑戰(zhàn)主要有如下幾點:
(1)對數(shù)據(jù)庫高并發(fā)讀寫的需求
。2)對海量數(shù)據(jù)的高效存儲和訪問的需求
(3)對數(shù)據(jù)庫的高擴展性和高可用性的需求
相比于關系型數(shù)據(jù)庫,NoSQL數(shù)據(jù)庫更加關注這些問題,相對于關系型數(shù)據(jù)庫,NoSQL的主要優(yōu)勢在于:
。1)靈活的可擴展性
(2)海量數(shù)據(jù)處理,高性能
。3)靈活的數(shù)據(jù)模型
NoSQL的優(yōu)勢是顯而易見的,然而相對于關系型數(shù)據(jù)庫他也存在很明顯的不足,主要體現(xiàn)在:
(1)NoSQL很難實現(xiàn)數(shù)據(jù)的完整性,很難在企業(yè)應用中普及。
。2)缺乏強有力的技術支持
。3)成熟度
4)在設計時候,關系型數(shù)據(jù)庫相比NoSQL更能體現(xiàn)實際需求。
2.1.2NoSQL在互聯(lián)網(wǎng)中的應用
NoSQL數(shù)據(jù)庫最早在互聯(lián)網(wǎng)中的典型應用案例是Google的BigTable和Amazon的Dynamo,都是為了解決海量數(shù)據(jù)規(guī)模的的存儲需要設計的,且兩者都是以Key/Value的形式存儲。其中Dynamo所存儲的是非結構化數(shù)據(jù),而BigTable存儲的是結構化或半結構化的數(shù)據(jù)。
隨著互聯(lián)網(wǎng)進入到“大數(shù)據(jù)”時代,出現(xiàn)了很多開源的NoSQL產(chǎn)品,如基于Key/Value的Memcached、TokyoCabinet、Redis等,基于列的HBase、Cassandra等,基于文檔的MongoDB、CouchDB等。國內(nèi)各大互聯(lián)網(wǎng)公司也紛紛推出他們各自的NoSQL產(chǎn)品,豆瓣的BeansDB、人人網(wǎng)的Nubar等。
2.2Redis數(shù)據(jù)庫介紹
Redis(RemoteDictionaryServer)是一個使用ANSIC語言開發(fā)的開源的Key-Value存儲系統(tǒng),其作者是意大利人SalvatoreSanf-ilippo,代碼量大約是1萬多行,目前Redis的主要開發(fā)工作由VMware公司主持。它和目前較流行的Memcached類似,都是基于內(nèi)存(緩存)的數(shù)據(jù)存儲方式,不同的是Redis支持的數(shù)據(jù)類型更加豐富并且對每種數(shù)據(jù)機構提供了豐富的操作,其支持的數(shù)據(jù)類型包括:String(字符串)、List(列表)、Hash(哈希)、Set(集合)、ZSet(有序集合)。同時Redis不同于Memcached的在于它會將更新的數(shù)據(jù)異步的持久化到硬盤中或者把進行過的修改操作寫入日志文件中。
Redis雖然是Key/Value形式的數(shù)據(jù)庫,但是它吸收了部分關系型數(shù)據(jù)庫的優(yōu)點,如在能保存Lists和Sets類型的數(shù)據(jù)的同時,還能完成排序等高級功能,同時在實現(xiàn)INCR(自增)、SETNX(若不存在key則創(chuàng)建并設值)等功能時保證其操作的原子性。在此基礎上還實現(xiàn)了master-slave(主從)同步。3.系統(tǒng)設計與實現(xiàn)
3.1系統(tǒng)整體架構
人本電子健康系統(tǒng)的總體架構采用基于MVC模式的輕量級的CodiIgniter框架,整個系統(tǒng)分為展示層、中間層和數(shù)據(jù)層。其中展示層負責將用戶個性化信息呈現(xiàn)給用戶,并接收用戶請求提交給中間層,再中間層與數(shù)據(jù)層進行交互,中間層經(jīng)過業(yè)務邏輯處理后再通過控制器將用戶請求的數(shù)據(jù)返回給展示層。
前端展示層由PHP頁面組成,它負責為用戶展示系統(tǒng)及用戶個性化信息,同時接收用戶操作請求,并以HTTP請求的形式發(fā)送給服務器。
中間層是整個系統(tǒng)的核心部分,它由控制器(controller)、業(yè)務邏輯層和數(shù)據(jù)模型(Model)層組成?刂破髫撠熃邮涨岸苏故緦影l(fā)送的HTTP請求,并將請求分發(fā)給相應的業(yè)務邏輯單元進行處理,業(yè)務邏輯單元根據(jù)需要會通過數(shù)據(jù)模型層和數(shù)據(jù)層進行交互,將運算結果返回給控制器,最終由控制器返回給前端展示層。
數(shù)據(jù)層是整個系統(tǒng)使用的數(shù)據(jù)庫系統(tǒng),用于存儲支撐整個系統(tǒng)的信息,如用戶資料、知識庫等數(shù)據(jù)。在人本電子健康系統(tǒng)中數(shù)據(jù)層由MySQL數(shù)據(jù)庫和Redis共同組成。
人本電子健康系統(tǒng)的總體架構如圖3.1所示。
3.2健康微博模塊設計與實現(xiàn)
健康微博功能括健康微博的發(fā)表、查看、轉(zhuǎn)發(fā)、回復和收藏等子功能。其中健康微博可發(fā)表普通文本類型的、圖片類型、視頻類型和鏈接。
健康微博是存儲于Redis中的,因為健康微博的查詢是需要對用戶和發(fā)布時間進行篩選的,比如獲取已關注用戶在某一時間后發(fā)布的內(nèi)容,這樣的需求在關系型數(shù)據(jù)庫中很容易實現(xiàn),然而在Key/Value系統(tǒng)中沒有像SQL查詢中強大的篩選能力,因此就需要充分利用Redis中的數(shù)據(jù)結構和對key的良好設計。根據(jù)需求,系統(tǒng)中進行的較多的查詢?yōu)閷τ脩裟骋粫r間段的發(fā)布內(nèi)容的篩選,因此健康微博內(nèi)容將以Hash的格式存入Redis中,Key的格式為mbs:發(fā)布時間的時間戳,例如mbs:1337073948216,該Key在Redis中是唯一存在的。
3.3健康記錄模塊設計與實現(xiàn)
3.3.1健康信息記錄功能
健康信息記錄功能的結構化數(shù)據(jù)分別存于MySQL中的體征信息表(body_info)、血壓信息表(pressure_info)、睡眠信息表(sleep_info)、圍度信息表(circle_info)、和運動信息表(sports_info)中,它們記錄的數(shù)據(jù)說明如下。
body_info:存儲用戶記錄的身體狀態(tài)信息,包括身高、體重、體溫、脂肪率信息。
pressure_info:存儲用戶記錄的血壓信息,其指標包括高壓(Kpa)、低壓(Kpa)、脈搏。
sleep_info:存儲用戶記錄的睡眠信息,包括入睡和起床時間。
circle_info:存儲用戶記錄的身體各個圍度的信息,單位為cm。
sports_info:存儲用戶記錄的運動量信息,包括跑步里程(km)、俯臥撐個數(shù)、仰臥起坐個數(shù)、其他運動項目持續(xù)時間。
3.3.2健康信息展示
健康信息在系統(tǒng)中主要通過兩個方式展現(xiàn)給用戶,分別是健康日程和健康統(tǒng)計兩個子功能。健康日程,將用戶的健康記錄歷史以日歷的形式展現(xiàn)在前端頁面,同時具有健康記錄追加和計劃功能。健康統(tǒng)計,通過前端頁面中嵌入flash插件來實現(xiàn)將用戶一個月內(nèi)的健康記錄狀況線性表示出來。
健康統(tǒng)計功能在網(wǎng)頁中展示了用戶記錄的各個數(shù)據(jù)在一個月內(nèi)的走勢情況。走勢圖通過調(diào)用OpenFlashChart組件在網(wǎng)頁中嵌入flash插件來實現(xiàn)。從后臺獲取到數(shù)據(jù)后由flash插件在前端顯示,依賴的源文件包括:
/js/char.js
/js/swfobject.js
/flash/flash-chart.swf
3.4健康日志模塊設計與實現(xiàn)
健康日志能讓用戶記錄包括檢查/治療記錄、健康日志、病史和治療成功案例三種資料。其中健康日志、病史和成功案例為非結構化數(shù)據(jù),存儲于健康日志表health_log中,而檢查/治療記錄存儲的為半結構化數(shù)據(jù),存儲于健康檢查表health_check中。其設計如表3.1和表3.2所示。
在健康日志的實現(xiàn)方面,考慮到用戶的修改不是很頻繁,為了降低服務器的壓力,采用了頁面靜態(tài)化的技術。
3.5心理健康模塊設計與實現(xiàn)
心理健康模塊通過將心理測試題目推薦給用戶,題目均為選擇題,用戶通過選擇題目選項獲得對個人心理狀況的客觀評估。心理健康模塊題目及相關數(shù)據(jù)在數(shù)據(jù)庫中存儲由心理測試信息(psytest_info)、題目信息(psytest_sub)、題目選項信息(psytest_option)、評分標準信息(psytest_score)、答題臨時信息(psytest_temp)、測試歷史信息(psytest_history)六個數(shù)據(jù)表組成,它們存儲的信息分別為:
psytest_info:心理測試題項目信息,包括測試標題、測試描述等。
psytest_sub:心理測試項目中各個題目信息。
psytest_option:心理測試題目中各個選項信息。
psytest_score:心理測試項目評分標準信息。
psytest_temp:用戶測試過程信息。
psytest_history:用戶心理測試歷史信息。
其實體-關系如圖3.2所示。
心理測試模塊在服務器端主要由testCon-troller和testModel兩個類來實現(xiàn),testCont-roller負責接收前端發(fā)送的請求,而testModel則主要實現(xiàn)流程的處理。4.結束語
人本電子健康是目前較新的一個概念,其系統(tǒng)也是在比較小的范圍內(nèi)進行測試和應用,在今后的工作中,仍然有以下幾個方面有待進一步研究:
。1)應用3G和傳感技術,對用戶的健康進行進一步的更加全面的監(jiān)控,如用戶可隨身攜帶的腕表時時檢測并將數(shù)據(jù)傳回服務器,或者在用戶的居住或工作場所設立環(huán)境傳感器替用戶檢測如空氣質(zhì)量等的生活環(huán)境,并且通過服務器計算將用戶的疑似健康問題進行提醒。
。2)因為目前移動互聯(lián)網(wǎng)正在迅速發(fā)展,手機平臺是人們上網(wǎng)辦公等的主要平臺,因此將人本電子健康系統(tǒng)移植到各個移動平臺如iOS、Android、WindowsPhone是人本電子健康系統(tǒng)下一步研究的目標。
。3)對于健康記錄功能,用戶希望更多的是更加方便快捷的輸入方式,通過能夠連接電腦的家庭醫(yī)療終端如電子血壓計、血糖儀等終端,在用戶測量完畢之后直接記錄到后臺數(shù)據(jù)庫中,免去用戶輸入的步驟。
。4)通過改進推薦算法,采用更加高性能,更加有效的推薦算法,給用戶推送更加全面的健康信息是人本電子健康系統(tǒng)下一步研究面臨的最實際的需求。
。5)全面利用HTML5+CSS3技術對頁面進行優(yōu)化,提高頁面的兼容性和性能,同時優(yōu)化交互方式,進一步提高用戶體驗。
隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,尤其是云計算的迅猛發(fā)展,目前很多亟待解決的問題在將來都會得到有效的解決。然而,解決舊問題的同時,一定會伴隨著新問題的產(chǎn)生,因此對于人本電子健康的研究,仍然需要我們不斷的探索,不斷的研究。相信在將來,展望中提到的前景一定會全部實現(xiàn)。
參考文獻
[1]達科特(JonDuckett).Web編程入門經(jīng)典:HTML、XHTML和CSS(第2版)[M].清華大學出版社,2010:01.
[2]尼古拉斯·澤卡斯(NicholasC.Zakas).JavaScript高級程序設計(第2版)[M].人民郵電出版社,2010:07.
[3]扎卡斯(NicholasC.Zakas).Ajax高級程序設計(第2版)[M].人民郵電出版社,2008:07.
[4]阿蒂雅(HagitAttiya),駱志剛.國外計算機科學教材系列·分布式計算(第2版)[M].電子工業(yè)出版社,2008:04.
[5]BearBibeault.jQuery實戰(zhàn)[M].人民郵電出版社,2009:02.
[6]黃賢立.NoSQL非關系型數(shù)據(jù)庫的發(fā)展及應用初探[J].福建電腦,2010,07(25).
[7]西爾伯沙茨.數(shù)據(jù)庫系統(tǒng)概念(原書第5版)[M].機械工業(yè)出版社,2009-02.
[8]robbin.NoSQL數(shù)據(jù)庫探討之——為什么要用非關系數(shù)據(jù)庫[EB/OL].http://robbin.iteye.com/blog/524977,2009,11(25).
[9]張荔子,譚嘉.電子健康系統(tǒng)讓醫(yī)患信息對稱[J].健康報,2005,08:20-25.
轉(zhuǎn)載請注明來自:http://www.jinnzone.com/gongyeshejilw/31792.html