摘 要:為了提高醫(yī)院對(duì)病人就診秩序的管理效率,基于Delphi平臺(tái)開發(fā)設(shè)計(jì)了醫(yī)院排隊(duì)叫號(hào)系統(tǒng)軟件。系統(tǒng)采用典型的C/S軟件架構(gòu)。出于安全性考慮,服務(wù)器數(shù)據(jù)庫(kù)使用SQL Server承擔(dān)著和醫(yī)院掛號(hào)系統(tǒng)、所有護(hù)士站客戶端通信的任務(wù)。為減輕服務(wù)器負(fù)擔(dān),采用肥客戶端工作模式,客戶端使用Access數(shù)據(jù)庫(kù)臨時(shí)存放相關(guān)配置和工作數(shù)據(jù)記錄。客戶端軟件增加自動(dòng)錄入值班表信息的功能,能夠支持呼叫器的登錄和注銷功能。軟件界面友好、操作簡(jiǎn)便、每個(gè)功能模塊具有較高的獨(dú)立性和封裝性,軟件靈活性和適應(yīng)性強(qiáng)。系統(tǒng)實(shí)現(xiàn)了信息的規(guī)范管理、科學(xué)的統(tǒng)計(jì)和快速的查詢,解決了醫(yī)院病人就診秩序混亂的現(xiàn)狀。
關(guān)鍵詞:排隊(duì)叫號(hào)系統(tǒng);數(shù)據(jù)庫(kù);Delphi;ADO
中圖分類號(hào):TP315文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):1004373X(2008)2007903
Design of Hospital Queuing up System Software Based on Delphi
WANG Rongxia,DU Guoliang
(School of Electronic Science and Engineering,Southeast University,Nanjing,210096,China)
Abstract:Hospital Queuing up System Software is designed and developed for improving the efficiency of managing the patients′ admitting order in the hospital.The software is based on the Delphi platform with a typical C/S software framework.Taking security into consideration,SQL Server is used in the server database to communicate with the register system of hospital outpatient,and all the nurse client.Fat-client mechanism is used to relieve the burden of the server,and client side uses Access database as a temporal storage for related configuration and working data record.The client software added the function to automatically input on duty information,which enables the log-in and log-out function of the caller.The client interface is user-friendly and is easy to operate.The relatively higher independency and encapsulation of each functional module makes the software even more flexible and adaptable.Standardized information management,scientific statistics and quick enquiry are utilized in this system so as to deal with the chaos in the outpatients′ admitting in the hospital.
Keywords:queuing up system;database;Delphi;ADO
1 引 言
長(zhǎng)期以來(lái),在看病高峰期,病人在醫(yī)院前擁后擠地站著等候就診、秩序混亂。人工對(duì)病人就診秩序進(jìn)行管理存在很多缺點(diǎn):管理效率低、勞動(dòng)強(qiáng)度大、信息處理速度低而且準(zhǔn)確率也不夠令人滿意。為了提高醫(yī)院對(duì)病人就診秩序的管理效率、減輕勞動(dòng)強(qiáng)度、提高信息處理速度和準(zhǔn)確性,為患者創(chuàng)造一個(gè)良好的公平、公正的就醫(yī)環(huán)境,利用Delphi技術(shù)強(qiáng)大的數(shù)據(jù)庫(kù)操作特性,為醫(yī)院護(hù)士站提供了一種更先進(jìn)、科學(xué)的服務(wù)系統(tǒng)——醫(yī)院排隊(duì)叫號(hào)系統(tǒng)。
2 系統(tǒng)目標(biāo)
每個(gè)護(hù)士站配備1臺(tái)客戶端電腦,實(shí)現(xiàn)相應(yīng)科室的排隊(duì)數(shù)據(jù)的管理和查詢,同時(shí)該電腦通過(guò)集線器和若干呼叫器連接在一起,每個(gè)醫(yī)生配備1臺(tái)呼叫器。當(dāng)接診病人時(shí)通過(guò)呼叫器發(fā)送呼叫命令到護(hù)士站管理電腦,護(hù)士站管理電腦在收到“呼叫”請(qǐng)求后,通過(guò)串口發(fā)送相應(yīng)的就診提示到顯示屏并給出語(yǔ)音提示。
本叫號(hào)系統(tǒng)軟件實(shí)現(xiàn)以下功能:正確錄入、獲取掛號(hào)病人信息;根據(jù)科室、專家坐診時(shí)間、掛號(hào)類別等限制條件對(duì)就診病人的隊(duì)列進(jìn)行管理;通過(guò)LED屏、功放、喇叭等硬件設(shè)備正確播報(bào)數(shù)據(jù)信息;正確響應(yīng)呼叫終端的呼叫、登陸或注銷請(qǐng)求;通過(guò)醫(yī)生登陸或注銷信息維護(hù)醫(yī)生值班表。
3 系統(tǒng)模塊劃分
系統(tǒng)軟件包括服務(wù)器接口軟件和客戶端管理軟件2部分。服務(wù)器接口軟件運(yùn)行在系統(tǒng)的服務(wù)器上,客戶端管理軟件運(yùn)行在護(hù)士站的管理終端上。服務(wù)器軟件主要與醫(yī)院原有的信息管理系統(tǒng)(Hospital Information System,HIS)銜接,實(shí)現(xiàn)數(shù)據(jù)的獲取、管理、回復(fù)等功能;客戶端管理軟件主要實(shí)現(xiàn)數(shù)據(jù)的自分診、人機(jī)交互、和外設(shè)通信等功能??蛻舳塑浖枰?wù)器軟件協(xié)同工作,不同護(hù)士站間的客戶端軟件互不影響工作。
如圖1所示,系統(tǒng)按照功能劃分成了不同的模塊,每個(gè)功能模塊具有較高的獨(dú)立性和封裝性,模塊和模塊間通過(guò)交互數(shù)據(jù)協(xié)同工作。以劃分的功能模塊為基礎(chǔ),系統(tǒng)軟件設(shè)計(jì)采用面向?qū)ο蟮姆治龇椒ê烷_發(fā)過(guò)程,方便了系統(tǒng)的后續(xù)維護(hù)和升級(jí)。
其中數(shù)據(jù)通信模塊、呼叫器通信模塊是整個(gè)設(shè)計(jì)的核心與難點(diǎn)。數(shù)據(jù)通信模塊負(fù)責(zé)前臺(tái)應(yīng)用程序和后臺(tái)數(shù)據(jù)庫(kù)的連接和數(shù)據(jù)通信。所有對(duì)數(shù)據(jù)庫(kù)的操作都經(jīng)過(guò)該模塊中轉(zhuǎn)。該模塊將前臺(tái)軟件和后臺(tái)數(shù)據(jù)庫(kù)隔離,保證兩者的相對(duì)獨(dú)立性,減少前臺(tái)軟件和后臺(tái)數(shù)據(jù)庫(kù)的連帶關(guān)系,使其具有良好的可移植性,方便后續(xù)維護(hù)升級(jí)。圖2利用UML統(tǒng)一建模語(yǔ)言(Unified Modeling Language)中的時(shí)序圖來(lái)說(shuō)明數(shù)據(jù)通信模塊的流程,這里設(shè)定1個(gè)功能模塊為1個(gè)角色(Actor)。
呼叫器通信模塊的主要工作是:接收來(lái)自HUB的呼叫、登陸或注銷請(qǐng)求命令包;完成數(shù)據(jù)包的解析,提交請(qǐng)求命令;接收響應(yīng)數(shù)據(jù),根據(jù)協(xié)議組成數(shù)據(jù)包;通過(guò)串口發(fā)送數(shù)據(jù)包到HUB。圖3是UML中的時(shí)序圖。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
現(xiàn)今數(shù)據(jù)庫(kù)平臺(tái)種類很多,一般的大型數(shù)據(jù)庫(kù)通常采用SQL,ORACLE,SYSBASE等。系統(tǒng)的服務(wù)器承擔(dān)著與IS系統(tǒng)、所有護(hù)士站客戶端通信的任務(wù),同時(shí)維護(hù)和存儲(chǔ)著整個(gè)叫號(hào)系統(tǒng)的數(shù)據(jù)信息,因此對(duì)服務(wù)器的軟件的穩(wěn)定性、安全性要求較高。數(shù)據(jù)庫(kù)管理系統(tǒng)使用微軟的 SQL Server 2000 中文企業(yè)版。該數(shù)據(jù)庫(kù)主要管理來(lái)自接口的當(dāng)日掛號(hào)數(shù)據(jù),含有接口數(shù)據(jù)表。
而此排隊(duì)叫號(hào)系統(tǒng)客戶端軟件在單機(jī)上運(yùn)行,鑒于微軟公司的Access數(shù)據(jù)庫(kù)作為桌面型數(shù)據(jù)庫(kù)的代表,應(yīng)用廣泛。相對(duì)于那些大型數(shù)據(jù)庫(kù)來(lái)說(shuō),結(jié)構(gòu)簡(jiǎn)單、存取速度較快、創(chuàng)建、修改靈活、易于使用,所以客戶端軟件采用了Access數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)開發(fā)平臺(tái)。每個(gè)工作時(shí)段內(nèi),客戶端定時(shí)向服務(wù)器索取掛號(hào)病人數(shù)據(jù)。該數(shù)據(jù)庫(kù)共使用了7個(gè)表,它們分別是:掛號(hào)信息接口表、數(shù)據(jù)備份表、科室配置表、診室配置表、醫(yī)生配置表、終端配置表、值班表。
4.2 數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的選擇
在Delphi中構(gòu)建數(shù)據(jù)庫(kù)系統(tǒng),建立連接對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)的機(jī)制主要有BDE,ADO和dbExpress,在排隊(duì)叫號(hào)系統(tǒng)客戶端軟件中,由于采用Access數(shù)據(jù)庫(kù)綜合比較后采用ADO訪問(wèn)機(jī)制。 ADO是Microsoft提供數(shù)據(jù)訪問(wèn)技術(shù),是Microsoft發(fā)展了基于COM的數(shù)據(jù)訪問(wèn)規(guī)則和API訪問(wèn)的OLE DB技術(shù),并對(duì)其進(jìn)行了很好的封裝,提供最新的數(shù)據(jù)連接技術(shù)。本系統(tǒng)主要使用ADO 組件的ADOConnection,ADODataSet和ADO Query三個(gè)組件。其中ADODataSet組件可以通過(guò)指定其ConnectionText屬性,通過(guò)SQL語(yǔ)句經(jīng)由ADOConnection,使用通用數(shù)據(jù)鏈接 (UDL) 文件來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)連接的方式,獲取數(shù)據(jù)庫(kù)數(shù)據(jù),通過(guò)DataSource組件送至DbGrid顯示。ADOQuery組件通過(guò)SQL語(yǔ)句可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的更新。具體設(shè)計(jì)框圖如圖4所示。
4.3 使用SQL語(yǔ)言開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序
在Delphi中是通過(guò)TQuery組件來(lái)實(shí)現(xiàn)對(duì)SQL語(yǔ)言支持的。而實(shí)現(xiàn)SQL編程的方法有靜態(tài)SQL編程和動(dòng)態(tài)SQL編程。本系統(tǒng)采用靜態(tài)SQL編程。為了實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)和數(shù)據(jù)對(duì)象的有效管理,Delphi為數(shù)據(jù)庫(kù)開發(fā)專門編制3組控件。其中一組是Data Access(數(shù)據(jù)庫(kù)訪問(wèn)控件)。
在Delphi中實(shí)現(xiàn)靜態(tài)SQL編程的具體操作步驟如下:
(1) 在Data Access組件組中依次選用TQuery和TDataSource組件放置在窗體上(它們的名字分別是Query1和DataSource1);
(2) 把DataSource1的DataSet屬性設(shè)為Query1;
(3) 通過(guò)設(shè)置Query1的SQL屬性來(lái)實(shí)現(xiàn)靜態(tài)SQL編程。
在Delphi中嵌入的SQL程序是TQuery組件的SQL屬性里封裝的一系列SQL語(yǔ)句的字符串。通常對(duì)數(shù)據(jù)的查詢條件是在程序運(yùn)行期間才決定的。
例如:With Query1 do
begin
Close;//關(guān)閉Query1
SQL.Clear;//清除原來(lái)的SQL語(yǔ)句
SQL.Add(′Select * from CFDrDuty Where DoctorID=′+DoctorID);
Try Open;
except ExecSQL;
end;
end;
注意:為保證數(shù)據(jù)的安全性,在對(duì)SQL屬性進(jìn)行設(shè)置期間,數(shù)據(jù)集應(yīng)處于關(guān)閉狀態(tài);TQuery組件的SQL屬性只能包括1條SQL語(yǔ)句,所以在設(shè)置新的SQL語(yǔ)句之前要清除原來(lái)的SQL語(yǔ)句;SQL語(yǔ)句設(shè)置完畢后,可以通過(guò)SQL的Open或ExecSQL方法來(lái)執(zhí)行。
4.4 串口通信編程
在Delphi開發(fā)工具內(nèi),可以使用匯編、Win32 API、控件等手段編程實(shí)現(xiàn)串口通信,系統(tǒng)采用第三方Delphi 串口控件SPComm 來(lái)實(shí)現(xiàn)串口通信。
實(shí)現(xiàn)PC 與HUB之間的數(shù)據(jù)收發(fā)需要以下4 個(gè)步驟:
(1) 初始化并打開串口
Comm1.BaudRate:=115200;//波特率1 200 b/s
Comm1.Parity:=None;//設(shè)置奇偶檢驗(yàn)位
Comm1.ByteSize:=8;//數(shù)據(jù)位8
Comm1.StopBits:=1;//停止位1
Comm1.StartComm;//打開串口
(2) 接收數(shù)據(jù)
OnReceiveData:procedure(Sender:Tobject;Buffer:Pointer;BufferLength:Word) 事件,當(dāng)有數(shù)據(jù)輸入緩存時(shí)將被觸發(fā),在這里對(duì)從串口收到的數(shù)據(jù)進(jìn)行處理,即相應(yīng)HUB的請(qǐng)求。Buffer 中是收到的數(shù)據(jù),BufferLength 是收到的數(shù)據(jù)長(zhǎng)度。
(3) 發(fā)送數(shù)據(jù)
WriteCommArray(pDataToWrite:PChar;dwSizeofDataToWrite:Word )方法是個(gè)帶有布爾型返回值的函數(shù),用于將一個(gè)字符串發(fā)送到寫進(jìn)程,發(fā)送成功返回 true,發(fā)送失敗返回1。該函數(shù)有2個(gè)參數(shù),其中pDataToWrite 是要發(fā)送的字符串,dwSizeofDataToWrite是發(fā)送字符串的長(zhǎng)度。本系統(tǒng)利用該函數(shù)回復(fù)HUB。
(4) 關(guān)閉串口
comml.StopComm;
5 結(jié) 語(yǔ)
排隊(duì)叫號(hào)系統(tǒng)作為醫(yī)院信息管理的一個(gè)重要組成部分,從實(shí)際需求出發(fā),對(duì)信息進(jìn)行收集、傳遞、存儲(chǔ)及加工處理,并能進(jìn)行決策,將待診病人管理微機(jī)化。該系統(tǒng)已在南京市某醫(yī)院運(yùn)行,運(yùn)行狀態(tài)良好,極大提高了管理效率。
參考文獻(xiàn)
[1]張?jiān)鰪?qiáng).Delphi 7數(shù)據(jù)庫(kù)開發(fā)完全手冊(cè)[M].北京:清華大學(xué)出版社,2003.
[2]熊勇,劉燕.Delphi串口通信編程[M].北京:人民郵電出版社,2001.
[3]羅小平.Delphi 精要[M].北京:電子工業(yè)出版社,2004.
[4]周緒,管麗娜,白海波.SQL Server2000(中文版)入門與提高[M].北京:清華大學(xué)出版社,2001.
[5]劉藝.Delphi 面向?qū)ο缶幊趟枷耄跰].北京:機(jī)械工業(yè)出版社,2004.
[6]陸波,華祖耀.面向?qū)ο蟮能浖こ膛c統(tǒng)一建模語(yǔ)言UML[J].電腦開發(fā)與應(yīng)用,2002,15(9):18-21.
作者簡(jiǎn)介
王蓉霞 女,1983年出生,江蘇蘇州人,東南大學(xué)碩士研究生。主要研究方向?yàn)殡娐放c系統(tǒng)。