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