基于C#開(kāi)發(fā)電子病歷系統體溫曲線(xiàn)圖設計
電子病歷(Electronic Medical Record,EMR)系統是一個(gè)數字技術(shù)、計算機技術(shù)、通訊技術(shù)、軟件工程、圖形圖像綜合技術(shù)等多學(xué)科的高新科技項目。其完整資料、數據處理、網(wǎng)絡(luò )傳輸、診療支援、統計分析等均是紙質(zhì)病歷無(wú)法比擬的。
體溫是電子病歷系統中一個(gè)重要的數據,比如某病人體溫升高可以讓臨床醫生知道該病人有發(fā)熱的癥狀。在電子病歷系統中,體溫單所針對的用戶(hù)是醫院的護士。護士每天記錄病人的體溫等各項信息,錄入到數據庫中,系統自動(dòng)生成電子體溫單,并繪制成曲線(xiàn)圖。體溫曲線(xiàn)圖直觀(guān)地顯示了病人的體溫等相關(guān)數據,這些數據與有關(guān)疾病和治療的知識相結合,可作為進(jìn)一步診斷及確定治療方案的基礎。
筆者參與開(kāi)發(fā)的電子病歷系統根據某大型醫院的實(shí)際需求,在.NET平臺下全程采用C#語(yǔ)言開(kāi)發(fā)實(shí)現。本文著(zhù)重介紹電子病歷系統中體溫曲線(xiàn)圖的設計和實(shí)現。
1 電子病歷系統主要功能
本系統根據醫院的實(shí)際需求,最主要的目的是采集病人的數據,使之能為臨床醫生提供所需要的診斷和決策信息,更進(jìn)一步的目的是這些信息能夠用于臨床科研。系統主要功能如圖1所示。
2 體溫曲線(xiàn)圖的設計與實(shí)現
2.1 體溫表的生成
在電子病歷系統中,每個(gè)來(lái)院就診的病患在醫院就診期間會(huì )產(chǎn)生一個(gè)病歷號,這是標志病人的確定碼,通常在數據庫系統中也作為惟一的對應碼和關(guān)鍵字。病人人院后,護士對病人進(jìn)行體溫、脈搏、呼吸等各個(gè)方面的檢測,將這些數據錄入到電子病歷系統中,系統則自動(dòng)生成體溫單。
在病人的體溫單中,需要記錄并分析病人的體溫變換情況。體溫單信息的“體溫”、“脈搏”、“呼吸”這三項信息是要每隔4個(gè)小時(shí)記錄1次,分別在4時(shí)、8時(shí)、12時(shí)、16時(shí)、20時(shí)、24時(shí)這幾個(gè)時(shí)間段。而“大便次數”、“小便次數或量”、“攝人量”、“排出量”、“血壓”、“體重”等信息是1天記錄1次。根據體溫單信息,以1天為1個(gè)單位,畫(huà)出1天內病人在各個(gè)時(shí)間段的“體溫”、“脈搏”、“呼吸”的曲線(xiàn)變化情況,以及記錄的“大便次數”、“小便次數或量”、“攝入量”、“排出量”、“血壓”、“體重”等信息。整個(gè)體溫圖1次只顯示7天的情況。在體溫圖中用坐標以及曲線(xiàn)描述病人體溫的連續變化情況,直觀(guān)地滿(mǎn)足了護士對患者的體溫、呼吸、脈搏等信息的錄入和查詢(xún)的需要。圖2是體溫單顯示界面。
2.2 體溫圖的繪制
體溫圖是根據體溫單的數據自動(dòng)生成的。由于體溫圖每次只顯示病人7天的體溫變化情況,所以設計了翻頁(yè)的功能,對住院時(shí)間久的病人通過(guò)翻頁(yè)每次跳過(guò)7天,保證病人的體溫信息完整的顯示。
2.2.1 C#的GDI+繪圖
體溫圖的繪制由.NET基類(lèi)集組成的GDI+實(shí)現,這些基類(lèi)可用于在屏幕上完成定制繪圖,能把合適的指令發(fā)送到圖形設備的驅動(dòng)程序上,確保在顯示器屏幕上顯示正確的輸出。
在GDI中,識別輸出設備的方式是使用對象設備環(huán)境(DC)。該對象存儲特定設備的信息,并能把GDI API函數調用轉換為要發(fā)送給該設備的指令。實(shí)現畫(huà)圖的功能要使用到GDI+畫(huà)圖技術(shù)。通過(guò)重寫(xiě)Form類(lèi)中的OnPaint(PaintEventArgs e)執行畫(huà)圖操作。
在OnPaint()中,首先從PaintEventArgs中引用Graphics對象,繪制圖形。最后調用基類(lèi)的OnPaint()方法。
在應用程序第一次啟動(dòng),窗口第一次顯示出來(lái)時(shí),也調用了OnPaint(),所以不需要在構造函數中復制繪圖代碼。
由于整個(gè)體溫圖比較大,而顯示窗口定為800×600,為了能完整顯示體溫圖文檔,需要在文檔超出窗口時(shí),通知窗口在右側出現滾動(dòng)條。為此,把整個(gè)文檔區域定為(800,1 886)像素,并在窗體設計器的屬性中把AutoScroll屬性設置為T(mén)rue。這樣,在體溫圖超過(guò)窗口時(shí)自動(dòng)出現滾動(dòng)條。
2.2.2 絕對坐標到相對坐標的變換
在一般的繪圖代碼中,由于所繪制的圖形區域一般不超過(guò)窗口的大小,所以不需要特別的注意。Graphics實(shí)例在默認情況下把坐標解釋為是相對于窗口的,它并不知道滾動(dòng)條的情況。當用戶(hù)滑動(dòng)滾動(dòng)條時(shí),Windows沒(méi)有要求應用程序重新繪制已經(jīng)顯示在屏幕中的內容。Windows只指出屏幕上目前顯示的內容可以平滑的移動(dòng),以匹配滾動(dòng)條的位置。對于多出來(lái)的文檔部分,在應用程序第一次顯示時(shí),沒(méi)有繪制這部分窗口,因為在滾動(dòng)窗口前,這部分在窗口區域的外部。這表示W(wǎng)indows要求ScrollShapes應用程序繪制這個(gè)區域。它將引發(fā)Paint事件,把這個(gè)區域作為剪切的矩形,在窗口中和原來(lái)的圖形一起顯示出來(lái),這樣會(huì )出現一個(gè)窗口中有多個(gè)圖形重疊,造成圖形的混亂。
評論