//Logo Image
作者:巫佳哲(2010-07-14);推薦:徐業良(2010-07-15)
附註:本文為九十九學年度元智大學機械工程研究所巫佳哲碩士論文「多元化糖尿病照護管理系統開發」第三章。

第三章 系統軟體設計與開發

本章敘述多元化糖尿病管理照護系統中,在個人電腦上運作的系統軟體設計與開發。本章中依序敘述系統功能定義、功能流程、介面流程、介面設計、程式撰寫與系統功能整合。

本系統開發環境選擇MicrosoftMicrosoft Visual Studio 2008為軟體開發平台,圖3-1Microsoft Visual Studio 2008的開發環境,擁有豐富的UI(User Interface)設計工具,可以建立豐富的UI介面,透過圖形化的表現讓使用者可以更直覺且簡單的操作此軟體。此外藉由此平台所開發出來的軟體可快速佈署在安裝Microsoft系列作業系統的個人電腦上,如Windows XPWindows VistaWindows 7,不需要再額外的套件支援,使用者可以在家裡自行安裝軟體版於電腦中,不需要加裝額外的軟體。

3-1. Microsoft Visual Studio 2008開發環境介面

3.1 系統功能定義

如第二章所述,本系統同時具有三種層次的遠距居家照護功能,在功能規劃上也是集合三種層次的功能。在與合作的血糖機製造廠商密集討論之後,表3-1為本系統定義之細部功能列表,主要是將第二章所述的功能概念再進一步轉化為細部、具體的軟體功能呈現。例如表中的B1血糖量測歷程瀏覽與分析功能,在實際軟體表現上,又會被分為四種細部功能來呈現,分別是血糖歷程列表、血糖趨勢圖、統計血糖數據等四種功能。

3-1. 系統細部功能列表

功能項目

實際功能

A.血糖機設定與資料匯入

A1

血糖機資料匯入與儲存

讀取血糖機資料。

儲存血糖資料於系統中。

A2

血糖機設定

讀取/設定血糖機單位。

讀取/設定血糖機時間。

讀取血糖機型號。

B.血糖資料檢視與分析管理

B1

血糖量測歷程瀏覽與分析

血糖歷程列表。

血糖趨勢圖。

血糖分布圖。

統計血糖數據,包含平均值、HbA1C參考值、標準差和變異系數等。

B2

血糖管理報表

列印報表,內容包含B1項目的所有內容。

C.病患資料管理

C1

病患資料

修改使用者資料,包含身高、體重、BMI、體脂肪、腰圍等資訊。

設定使用者作息時間,包含早、午、晚餐與睡眠時間

設定使用者血糖參考值,包含正常血糖範圍、高/低血糖參考值。

設定使用者警示方式,包含訊息方式與Email等。

設定遠距照護內容,包含遠距照護類型、遠端登入帳號密碼、通訊埠、伺服器網路IP位址等

D.遠距居家照護服務

D1

遠端登入功能

傳送資料/網路指令給遠端使用者

接收遠端使用者的資料/網路指令。

D2

應用伺服器服務介接

傳送資料/網路指令給應用伺服器。

接收應用伺服器的資料/網路指令。

D3

集中式照護中心服務介接

傳送資料/網路指令給集中式照護中心

接收集中式照護中心資料/網路指令。

E.互動服務

E1

血糖日誌

新增血糖日誌。

修改血糖日誌。

E2

事件提示

新增事件提示。

修改事件提示。

設定提醒方式。

E3

貼心留言

新增貼心留言。

修改貼心留言。

3.2 功能流程

依照表3-1的實際功能列表,為了使每個功能都可以達到預期的目的,必須先規劃出預定的功能流程,以利於之後的介面流程規劃與程式的撰寫。在與合作的血糖機製造廠商就其過去使用者實際使用流程密集討論之後,圖3-2為本系統定義的功能流程,每一功能都有其對應的流程步驟,例如要顯示血糖趨勢圖,首先必須由「主畫面」移動到「資料檢視與列印」,再進入「資料檢視」,就可以利用「顯示血糖趨勢圖」來顯示出血糖趨勢圖,最後結束後則回到「主畫面」。

3-2. 功能流程

3.3 介面流程與介面設計

依據圖3-2定義之功能流程,進而發展出圖3-3系統介面流程,以及圖3-4到圖3-9一連串系統介面設計,依序為本系統的系統主畫面、系統裝置資料匯入畫面、系統血糖分析畫面、系統待辦事項相關畫面、系統貼心留言畫面和系統使用者資料設定畫面。例如圖3-3中開啟軟體後,系統首先會進入主畫面(圖3-4),接下來會等待使用者點選按鈕,進入相對應的頁面,例如點選「使用者」按鈕,就會進入使用者資料設定畫面(圖3-9)。

3-3. 系統介面流程圖

3-4. 系統主畫面-首頁與資料分析頁面

3-5. 系統裝置資料匯入畫面

3-6. 系統血糖分析畫面-血糖歷程資料、趨勢圖、分布圖

3-7. 系統待辦事項相關畫面

3-8. 系統貼心留言畫面

3-9. 系統使用者資料設定畫面

3.4 程式撰寫

本研究在軟體的撰寫上將程式依照功能的類型分開撰寫,以達到模組化的目的,方便日後系統維護或者式加入其他模組。目前系統程式分為語言模組、裝置通訊模組、繪圖模組、資料存取模組、列印模組、留言模組、待辦事件模組、網路通訊模組和其他模組等9個功能模組,分別敘述如下。

(1)   語言模組

語言模組主要功能在於支援多語言版本,目前包含繁體中文、簡體中文與英文三種語言版本可供使用者切換,函式表如表3-2。為了達成此功能,首先將愈顯示的文字,分別依照不同的語言別翻譯成相對應的文字並且儲存於其的檔案中,如圖3-10為繁體中文與簡體中文的檔案內容,其格式為“<字串代碼>=語言別文字”,例如“StringStepBack=上一步”。當啟動後,藉由ReadLanguageInit函式將語言資料讀入記憶體,系統畫面會依照顯示需求到記憶體裡面讀取相對應的文字資料,並顯示在顯示器上,使用者就可以藉由此功能轉換系統語言別。

3-10. 儲存語言資料的檔案(Language_zh-tw.iniLanguage_zh-cn.ini )

3-2. 語言模組的函式表

函式名稱

函式功能

ReadLanguageInit()

讀取語言資料

(2)   序列埠通訊模組

目前的血糖機裝置設備,不論是透過USBRS232或藍牙等傳輸介面,當接上電腦時,皆會被電腦轉換為序列埠(COM Port)通訊,所以在系統上,只需要透過序列埠通訊,就可以接收到血糖機資料。序列埠通訊模組的功能就是開關序列埠以供其他模組使用,函式表如表3-3。此外本系統撰寫了一個搜尋序列埠的函式,目的在於讓系統自動搜尋血糖機所使用的序列埠,方便使用者操作。

3-3. 語言模組的函式表

函式名稱

函式功能

ComPort_Open

開啟序列埠

ComPort_Close

關閉序列埠

ComPort_Search

搜尋序列埠

(3)   裝置通訊模組

裝置通訊模組主要是透過序列埠來與血糖機通訊,函式表如表3-4。血糖機通訊指令可能會依照血糖機型號不同而有所不同,但函式主要目的皆相同,當要支援不同型號的血糖機時,只要預先把血糖機通訊指令存儲到程式碼中,系統就可以支援該血糖機。以華廣瑞特GM550血糖機為例,當使用者啟動匯入血糖機資料事件時,系統會執行DeviceGMXXX_Read函式,再依照函式程序,依序執行讀取型號(DeviceGMXXX_Get_Model)、讀取時間(DeviceGMXXX_TimeUnitSetLoad)、校正時間(DeviceGMXXX_Correct_Time)、讀取筆數(DeviceGMXXX_Get_Date_Number)、讀取裝置資料(DeviceGMXXX_Get_Data)、刪除裝置資料(DeviceGMXXX_EEPROM_Erase_EnableDeviceGMXXX_EEPROM_Erase_All),當程序完成後,就完成了裝置讀取的事件,系統取得血糖機上最新血糖資料,並校正血糖機時間(DeviceGMXXX_Correct_Time)

3-4. 裝置通訊模組的函式表

函式名稱

函式功能

DeviceGMXXX_Read

裝置讀取程序

DeviceGMXXX_Get_Model

讀取裝置型號

DeviceGMXXX_TimeUnitSetLoad

讀取/設定裝置時間

DeviceGMXXX_Correct_Time

校正裝置時間

DeviceGMXXX_Get_Date_Number

讀取裝置內資料筆數

DeviceGMXXX_Get_Data

讀取裝置中的某一筆資料

DeviceGMXXX_EEPROM_Erase_Enable

啟動刪除血糖機資料模式

DeviceGMXXX_EEPROM_Erase_All

刪除血糖機資料

(4)   資料存取模組

資料存取模組的功能在執行資料的儲存、讀取和檢查,資料內容包含血糖資料、使用者資料和系統設定資料等,函式表如表3-5。圖4-10為使用者資料檔案內容,其中包含了血糖單位設定、使用者名稱、性別、作息時間等資訊。

3-1220105月分的血糖資料檔案,血糖資料存檔方式為以月為單位形成一個檔案,檔案內容格式為“時間(yyyy/MM/dd HH:mm:ss)<Tab>BG血糖類型<Tab>是否加入分析<Tab>標註<Tab>飯前\飯後\<Tab>備註內容<Tab>單位<換行>”。例如圖3-12中的第四筆資料:內容解讀為在2010516160秒所量測,血糖值為605mg/dl,不加入分析,標註內容為“Hi!”,為飯前量測,備註內容為“<Hi!>超過儀器可測量最高值. ,單位為“mg/dL”。

3-5. 資料存取模組的函式表

函式名稱

函式功能

Data_Check_File

檢查檔案是否存在

Data_Check_Dir

檢查資料夾是否存在

Data_Make_Dir

建立資料夾

Data_GoIn_Dir

進入資料夾

BGData_Read_From_To

讀取時間內的血糖資料

BGData_Read_last_True

讀取血糖資料(最後筆數)

BGData_Read_True_Data

讀取血糖資料

BGData_Read

讀取血糖資料

BGData_Save

儲存血糖資料

BGData_Unit_Change

血糖單位換算

Configure_ini_Read

讀取系統設定資料

User_Infor_Read

讀取使用者設定資料

Configure_ini_Save

儲存系統定資料

User_Infor_Save

儲存使用者設定資料

3-11. 使用者資料檔

3-12. 20105月分的血糖資料檔案

(5)   列印模組

列印模組利用Microsoft Visual Studio 2008內的Printing.PrintDocument元件來達成列印功能,函式表如表3-6。使用者按下列印後會啟動Print_Report_View函式程序,觸發Print_Document_Report_QueryPageSettingsPrint_Document_Report_PrintPage,此時會產生出預覽列印視窗給使用者確認,在按下確認列印按鈕後,系統會將列印內傳給列表機列印出來。本系統可列印的報表如圖3-13,包含血糖歷程、趨勢圖和分布圖等資訊。

3-6. 資料存取模組的函式表

函式名稱

函式功能

Print_Report_View

預覽列印程序

Print_Document_Report_QueryPageSettings

設定列印前的動作

Print_Document_Report_PrintPage

設定列印內容

3-13. 血糖報表內容

(6)   留言模組

留言模組主要是處理留言功能,包含新增、刪除、讀取、儲存留言等函式,函式表如表3-7。留言資料存檔方式為以月為單位形成一個檔案,檔案內容格式為“時間(yyyy/MM/dd HH:mm:ss)<Tab>Message<Tab>留言內容<Tab>編號<Tab>是否未讀取<換行>”。例如圖3-14中的第一筆資料:內容解讀為在2010714日下午21847秒所留言,留言內容為“留言測試”,留言編號“20100714141847JVAB”,已讀取留言。

3-7. 留言模組的函式表

函式名稱

函式功能

Message_Data_Add

新增留言資料

Message_Data_Delete

刪除留言資料

Message_Data_Read

讀取系統的留言資料

Message_Data_Save

儲存留言資料到系統

Message_Data_Read_last_True

讀取系統最後留言

3-14. 20107月份留言儲存檔案內容

(7)   待辦事件模組

待辦事件模組主要是處理待辦事件功能,包含新增、刪除、讀取、儲存待辦事件等函式和設定提醒方式,函式表如表3-8。待辦事件存檔方式為以月為單位形成一個檔案,檔案內容格式為“時間(yyyy/MM/dd HH:mm:ss)<Tab>Event<Tab>待辦事項類別代號<Tab>待辦事項內容<Tab>編號<換行>”。例如圖3-15中的第一筆資料:內容解讀為在20100714日下午41900秒所設定,待辦事件內容為“骨科回診”,為“回診提醒”類別,待辦事項編號“20100714141941XIJG”。表3-9為待辦事件類別代號表。

3-8. 待辦事件模組的函式表

函式名稱

函式功能

Event_Data_List_Save

儲存待辦事件清單

Event_Data_List_Read

讀取系統待辦事件清單

Event_Data_List_Add

增加新待辦事件到清單

Event_Data_List_Delete

刪除清單中的待辦事件

Event_Data_Add

新增待辦事件

Event_Data_Delete

刪除待辦事件

Event_Data_Read

讀取系統的待辦事件

Event_Data_Save

儲存待辦事件道系統

3-15. 20107月份待辦事件儲存檔案內容

3-9. 待辦事件類別代號表

類別代號

類別

A

回診通知

B

吃藥通知

C

量測通知

D

約會通知

E

其他通知

(8)   網路通訊模組

網路通訊模組使用Http通訊協定處理網路通訊,函式表如表3-10。為了接收來至遠端網路的Http指令,本系統必須具備一個Http Server來等待接收遠端指令。在此模組中,利用多執行序的概念,除了主程序外,另外會再加入一個執行序來接收網路指令,避免在等待指令時造成程式當機。當本系統一開始時,系統除了載入主程序外,另外會啟動一個執行序來執行Net_http_Server函式,此函式使用無限迴圈來執行,除非程式關閉,否則不會停止接收網路指令。另外為了與其他應用伺服器或照護中心平台通訊,所以本系統會透過Net_http_cmd_send函式來發送Http網路指令,達成收發網路指令/資料功能。

3-10. 網路通訊模組的函式表

函式名稱

函式功能

Net_http_cmd_send

網路指令發送(http通訊協定)

Net_http_Server

網路指令接收(http通訊協定)

(9)   其他模組

此模組內,主要式放置一些小函數,例如BMI計算式、延遲函式清除暫存空間函式等,函式表如表3-11

3-11. 資料存取模組的函式表

函式名稱

函式功能

Calculate_BMI

計算BMI

TimeDelay

延遲

Bzero_Analyze_buf

清空分析資料暫存空間

3.5 系統功能與介面整合

系統函式撰寫完成後,接下來要將其與系統介面作結合。在Microsoft Visual Studio 2008中,有提供許多的元件觸發方法,如圖3-17為按鈕觸發的方法列表中包含許多方法。以Click方法來說,圖3-18ButtonImport按鈕的Click觸發方法函式,當ButtonImport按鈕被點擊時,會觸發圖中的函式,函式就會依照其內容開始執行,因為圖中有一項事件,所以只會啟動ImportForm.show事件,本系統就是利用這樣的方式將前述的介面元件與功能函式連結。

3-17. 按鈕的觸發函式選單

3-18. ButtonImport按鈕的點擊觸發函式