基于C#開發(fā)電子病歷系統(tǒng)體溫曲線圖設(shè)計
解決的方法是把Graphics實例默認的坐標表示為相對坐標,即坐標是相對于窗口的左上角,而不是文檔開頭的左上角,把絕對坐標轉(zhuǎn)換為相對坐標。這里用圖3說明這一轉(zhuǎn)換。
本文引用地址:http://www.ex-cimer.com/article/164954.htm
實線矩形標記了屏幕區(qū)域的邊框和整個文檔的邊框。虛線矩形標記了試圖要繪制的矩形和橢圓。P標記要繪制的某個隨意點。在調(diào)用繪圖方法時,提供Graphics實例和從A點到P點的矢量,整個矢量表示為一個Ponit實例。而實際上需要的是從點B到點P的矢量。問題是,這里只知道從A點到P點的矢量,這是P相對于文檔左上角的坐標,而要在文檔的P點繪圖。另外還知道從A點到B點的矢量,這是滾動的距離,它儲存在Form類的一個屬性AutoScrollPosition中。要知道從B點到P點的矢量只需要進行矢量相減即可。Graphics類的TranslateTransform方法可以進行這些矢量的計算。這里給它傳送水平和垂直坐標,表示窗口驅(qū)譴、與的左上角相對于文檔的左上角的矢量(AutoScrollPosition屬性,它是圖中從A到B的矢量),然后Graphics設(shè)備考慮窗口區(qū)域相對于文檔區(qū)域的位置,處理這些坐標。只要在繪圖代碼中加入以下語句:g.TranslateTransform(this.AutoScrollPositiort.X,this.AutoScrollPosition.Y);即可解決坐標轉(zhuǎn)換的問題。
2.2.3 體溫圖的繪制技術(shù)
體溫圖的繪制根據(jù)體溫單中病人的相關(guān)信息,利用才C#的GDI+可以繪制出相應(yīng)的體溫曲線圖。在程序中首先進行絕對坐標和相對坐標的變換,然后用Pen類定義畫筆,用Brush類定義畫刷顏色,對于需要填充的地方用畫刷進行填充,再調(diào)用Graphics類的DrawLine方法畫出所需的線條。在DrawLine方法中,需要提供畫筆類型,線段起點和終點坐標等參數(shù)。
體溫圖初始化之后,根據(jù)從體溫表傳遞的病人編號作為體溫圖中的全局變量,對數(shù)據(jù)庫進行查詢,并把查詢結(jié)果轉(zhuǎn)換為坐標,傳遞給畫圖方法DrawLine和FillEllipse,畫出圖形。圖4是一張體溫圖顯示界面。
2.2.4 體溫圖中翻頁的實現(xiàn)
由于體溫圖每次只顯示病人1周的體溫變換信息,要顯示1周之前的體溫信息,可以使用翻頁功能。實現(xiàn)翻頁功能主要利用在讀取數(shù)據(jù)時使用到的Read()方法的特性。通過Read()方法在讀取數(shù)據(jù)的同時把當前的指針向下移動1位。最初它位于數(shù)據(jù)集的第一行之前,因此第一次調(diào)用Read()將把指針置于第一行上,使它成為當前行。隨著每次調(diào)用Read()導(dǎo)致指針向下移動,按照從上至下的次序獲取數(shù)據(jù)集行。代碼如下:
其中變量n為全局變量,由翻頁按鈕對其進行賦值。以當前的變量n減1乘7為所需跳過的間隔數(shù),以日期為單位,對數(shù)據(jù)集中的日期進行篩選,選出這一周的日期儲存到數(shù)組array中。
3 結(jié) 語
電子病歷是醫(yī)院信息化發(fā)展的必然趨勢。根據(jù)HL7的標準化要求,當前國內(nèi)電子病歷的研究還很不完善,要制定出比較完善的適應(yīng)國內(nèi)醫(yī)院使用的電子病歷原型系統(tǒng)還需要更深入的研究。本文探討利用C#繪制電子病歷系統(tǒng)體溫圖的技術(shù),試圖對完善電子病歷系統(tǒng)做有益的嘗試。電子病歷系統(tǒng)相關(guān)的研究內(nèi)容將會不斷發(fā)展和深入,而電子病歷的技術(shù)構(gòu)架和軟件流程也將會越來越成熟。
評論