瞿懷榮 柴守霞 王春雷 王德紅
摘要:目前,手機(jī)短信平臺在國內(nèi)各行業(yè)已有較廣泛的應(yīng)用,并取得了良好的效果。同樣,醫(yī)院信息系統(tǒng)發(fā)展到今天,若要實(shí)現(xiàn)全面的數(shù)字信息化,也需要與短信應(yīng)用相結(jié)合。本項目利用Java相關(guān)技術(shù)構(gòu)建了醫(yī)院短信平臺,實(shí)現(xiàn)了將醫(yī)院最新的動態(tài)信息定時發(fā)送到相關(guān)部門人員手機(jī)上。
關(guān)鍵詞:短信平臺;醫(yī)院信息化;Java;數(shù)據(jù)庫
中圖法分類號:TP393
醫(yī)院信息系統(tǒng)(Hospital Information System,HIS),亦稱“醫(yī)院管理信息系統(tǒng)”(以下簡稱HIS),是指利用計算機(jī)軟硬件技術(shù)、網(wǎng)絡(luò)通信技術(shù)等現(xiàn)代化手段,對醫(yī)院及其所屬各部門的人流、物流、財流進(jìn)行綜合管理,對在醫(yī)療活動各階段產(chǎn)生的數(shù)據(jù)進(jìn)行采集、儲存、處理、提取、傳輸、匯總、加工生成各種信息,從而為醫(yī)院的整體運(yùn)行提供全面的、自動化的管理及各種服務(wù)的信息系統(tǒng)。
當(dāng)代社會,隨著醫(yī)院規(guī)模的擴(kuò)大,信息化成度的逐漸提高,如何將信息系統(tǒng)與醫(yī)院管理協(xié)同發(fā)展,創(chuàng)新醫(yī)療服務(wù)的模式,從而全面改善醫(yī)療衛(wèi)生機(jī)構(gòu)的服務(wù)能力和水平,成為我們面臨的新的問題。在醫(yī)院管理中,HIS系統(tǒng)起著越來越重要的作用, 醫(yī)療衛(wèi)生管理對信息系統(tǒng)的要求也越來越高,新醫(yī)改將醫(yī)療衛(wèi)生信息化建設(shè)確定為醫(yī)療衛(wèi)生改革的重要支柱之一。
本文所討論的課題與HIS系統(tǒng)有密切的聯(lián)系,利用手機(jī)短信構(gòu)建了醫(yī)院短信平臺,實(shí)現(xiàn)了將醫(yī)院最新的動態(tài)信息定時發(fā)送到相關(guān)部門人員手機(jī)上,方便醫(yī)院領(lǐng)導(dǎo)作出醫(yī)院的運(yùn)營決策,從而提高醫(yī)院的核心競爭力,帶來很好的社會效益,為醫(yī)院的持續(xù)發(fā)展打下了基礎(chǔ)。
1 系統(tǒng)分析與設(shè)計
1.1 需求分析
“醫(yī)院短信平臺”主要有以下幾個功能需求:用戶管理、變量管理、電話號碼維護(hù)、發(fā)送任務(wù)計劃、生成短信內(nèi)容、發(fā)送歷史記錄等。下面分別對系統(tǒng)各需求模塊進(jìn)行描述:
用戶管理:管理員可以選擇相應(yīng)的部門進(jìn)行人員的修改,并為人員賦予相應(yīng)的角色,從而達(dá)到控制用戶的權(quán)限。
變量管理:管理員可以控制生成短信的內(nèi)容和格式,包括變量名、生成結(jié)果的前后綴,最終反映到接收人員的手機(jī)終端上。
電話號碼維護(hù):管理員通過可視化界面可以直接對短信接收人員的信息(如手機(jī)號)進(jìn)行修改、刪除和添加,改動之后系統(tǒng)實(shí)時更新數(shù)據(jù)庫中的數(shù)據(jù)。
發(fā)送任務(wù)計劃:該模塊可以定義生成短信和發(fā)送短信的時間和規(guī)則(如短信發(fā)送的周期是一天還一個星期,開始時間和結(jié)束時間),并填上相應(yīng)的任務(wù)類,系統(tǒng)會在指定的時間運(yùn)行相應(yīng)的任務(wù)。
生成短信內(nèi)容:管理員可以查看生成短信的內(nèi)容,服務(wù)器程序在指定的時間從數(shù)據(jù)庫中獲取相關(guān)數(shù)據(jù),并按照一定的格式生成短信內(nèi)容,最后將要發(fā)送的內(nèi)容插入數(shù)據(jù)庫表中由發(fā)送短信程序進(jìn)行發(fā)送。
發(fā)送歷史記錄:管理員可以查看短信的發(fā)送歷史記錄,可以根據(jù)發(fā)送狀態(tài)方便地查看短信是否發(fā)送成功。
1.2 短信發(fā)送系統(tǒng)模塊設(shè)計
由于本系統(tǒng)主要的功能是短信的發(fā)送,所以下面僅對短信發(fā)送模塊的設(shè)計進(jìn)行論述。主要包括生成短信模塊、發(fā)送短信模塊、獲取數(shù)據(jù)模塊和定時模塊。短信平臺發(fā)送模塊結(jié)構(gòu)見圖1。
1.3 系統(tǒng)功能結(jié)構(gòu)
系統(tǒng)功能結(jié)構(gòu)主要分為兩部分,一部分是醫(yī)院內(nèi)部網(wǎng)絡(luò),另一部分是短信運(yùn)營商網(wǎng)絡(luò),通過互聯(lián)網(wǎng)相連接。系統(tǒng)功能結(jié)構(gòu)圖見圖2。
短信系統(tǒng)的整體網(wǎng)絡(luò)圖如上圖所示,醫(yī)院內(nèi)部系統(tǒng)在整個方案中的位置如上圖中矩形框部分所示,本系統(tǒng)所處的位置是矩形框中的“短信接口程序”部分,內(nèi)部所有的短信應(yīng)用系統(tǒng)只要對接口數(shù)據(jù)庫進(jìn)行數(shù)據(jù)提取,就能完成收發(fā)短信的工作。
2 系統(tǒng)實(shí)現(xiàn)
本節(jié)主要討論“醫(yī)院短信平臺”的實(shí)現(xiàn)部分,將就其中幾個主要模塊的實(shí)現(xiàn)進(jìn)行論述,分別是短信變量管理模塊、電話號碼維護(hù)模塊、發(fā)送任務(wù)計劃模塊。
2.1 變量管理模塊
此模塊的主要功能是控制生成短信的內(nèi)容和格式,包括變量名、生成結(jié)果的前后綴,最終反映到接收人員的手機(jī)終端上。變量管理模塊見圖3。
上圖中的結(jié)果是連接到醫(yī)院HIS中SQL Server數(shù)據(jù)庫中查詢得到,SQL語句中填寫的即相應(yīng)的查詢語句。其次,管理員還可以添加、刪除、修改相應(yīng)的變量,以滿足不同醫(yī)院對短信格式有不同要求的需求。表中的信息保存在Oracle數(shù)據(jù)庫表SMS_VARIABLE中,后臺程序通過讀取表中的信息執(zhí)行SQL語句,來獲取短信中數(shù)據(jù)的結(jié)果。由于這里使用到了SQL Server和Oracle兩個數(shù)據(jù)庫,有必要說明一下它們之間的聯(lián)系。請參見圖4。
在程序中的實(shí)現(xiàn)方式是創(chuàng)建兩個數(shù)據(jù)庫連接對象,分別對Oracle數(shù)據(jù)庫和SQL Server數(shù)據(jù)庫進(jìn)行操作。SQL Server數(shù)據(jù)庫連接對象獲取短信結(jié)果,Oracle數(shù)據(jù)庫連接對象將獲取到的結(jié)果存放在Oracle數(shù)據(jù)庫SMS_VARIABLE中,插入到短信發(fā)送表。
2.2 電話號碼維護(hù)模塊
電話號碼維護(hù)模塊主要的功能是添加、修改、刪除短信接收人員,通過可視化的界面即可完成操作。電話號碼維護(hù)模塊見圖5。
聯(lián)系人的信息保存在SMS_TELEPHONE表中,后臺程序通過讀取表中聯(lián)系人的手機(jī)號碼,傳入到短信貓發(fā)送功能函數(shù)的參數(shù)中,從而達(dá)到發(fā)送的目的。
2.3 發(fā)送任務(wù)計劃模塊
短信發(fā)送任務(wù)計劃模塊分為生成短信任務(wù)和發(fā)送短信任務(wù),兩者都運(yùn)用了相關(guān)的定時技術(shù)(后面介紹),但兩者的時間觸發(fā)器的規(guī)則不一樣。本系統(tǒng)中生成短信的時間是每天早上4:30分,發(fā)送短信的時間是每天早上7:30分,到了設(shè)定的時間之后相應(yīng)的短信任務(wù)就會自動運(yùn)行。發(fā)送任務(wù)模塊見圖6。
生成短信任務(wù):短信的生成主要流程是后臺程序從Oracle數(shù)據(jù)庫表SMS_VARIABLE的SQL_STRING字段中獲取短信數(shù)據(jù)的SQL查詢語句,通過程序讀取語句并連接SQL Server數(shù)據(jù)庫執(zhí)行,返回結(jié)果集,然后更新短信內(nèi)容插入SMS_CONTENT發(fā)送表中。
發(fā)送短信任務(wù):短信的發(fā)送主要流程是系統(tǒng)到達(dá)指定的時間后,讀取短信發(fā)送表和聯(lián)系人表中的內(nèi)容,運(yùn)行發(fā)送線程類SendSmsThread用短信貓進(jìn)行發(fā)送。
3 核心技術(shù)
本節(jié)將介紹“醫(yī)院短信平臺”系統(tǒng)中使用到的相關(guān)核心技術(shù),主要包括短信貓的開發(fā),開源框架JNA和Quartz。
3.1 基于短信貓二次開發(fā)包DLL接口開發(fā)
所謂短信貓,其實(shí)是一種用來收發(fā)短信的設(shè)備,他和我們用的手機(jī)一樣,需要手機(jī)SIM卡的支持,在需要收發(fā)短信的時候,在短信貓里面插入一張我們平時用的手機(jī)卡,插上電源,通過(USB或者串口、網(wǎng)口)數(shù)據(jù)線和電腦相連,在電腦中通過應(yīng)用管理軟件或程序就可以實(shí)現(xiàn)短信收發(fā)的功能。
短信貓DLL接口提供API級的函數(shù)調(diào)用接口,接口完全底層調(diào)用,沒有任何界面,適合于廣大自主品牌的開發(fā)用戶。函數(shù)接口簡單,僅需幾個簡單的函數(shù)調(diào)用,就可以實(shí)現(xiàn)信息的發(fā)送和接收功能。調(diào)用結(jié)構(gòu)圖見圖7。
短信貓通過串行口(COM)和計算機(jī)相連,或者通過USB虛擬的串行口和計算機(jī)相連,我們這里編程都是對串行口進(jìn)行的。
3.2 開源框架JNA技術(shù)
本系統(tǒng)中調(diào)用DLL接口中的C函數(shù)時用到了JNA技術(shù)。JNA(Java Native Access)框架是一個開源的Java框架,是SUN公司主導(dǎo)開發(fā)的,建立在經(jīng)典的JNI的基礎(chǔ)之上的一個框架。JNA框架就是為了解決JNI調(diào)用DLL過于繁瑣而開發(fā)的,它提供一組Java工具類用于在運(yùn)行期動態(tài)訪問系統(tǒng)本地共享類庫而不需要編寫任何Native/JNI代碼。開發(fā)人員只要在一個Java接口中描述目標(biāo)Native library的函數(shù)與結(jié)構(gòu),JNA將自動實(shí)現(xiàn)Java接口到Native function的映射,大大降低了Java調(diào)用本體共享庫的開發(fā)難度。
接口內(nèi)部需要一個公共靜態(tài)常量INSTANCE,通過這個常量,就可以獲得這個接口的實(shí)例,從而使用接口的方法。也就是調(diào)用動態(tài)鏈接庫xxtSmsDll.dll中的SendSms函數(shù)了。
使用JNA時,需要用JNA類庫的Native類的loadLibrary函數(shù),是直接把我們需要的動態(tài)鏈接庫載入進(jìn)來。Native類的loadLibrary方法有兩個參數(shù):第一個參數(shù)是.dll或者.so文件的名字,但不帶后綴名。這符合JNI的規(guī)范,因為帶了后綴名就不可以跨操作系統(tǒng)平臺了。第二個參數(shù)是本接口的Class類型,JNA通過這個Class類型,根據(jù)指定的dll/.so文件,動態(tài)創(chuàng)建接口的實(shí)例。
3.3 開源框架Quartz的定時調(diào)度技術(shù)
本系統(tǒng)中短信的生成和發(fā)送任務(wù)都是由Quartz中的定時技術(shù)實(shí)現(xiàn)的,每天4:30系統(tǒng)從數(shù)據(jù)庫中獲取數(shù)據(jù)生成短信內(nèi)容,7:30發(fā)送短信到院長的手機(jī)上。
Quartz是一個完全由Java編寫的開源任務(wù)調(diào)度的框架,通過觸發(fā)器設(shè)置作業(yè)定時運(yùn)行規(guī)則,控制作業(yè)的運(yùn)行時間。Quartz對任務(wù)調(diào)度的領(lǐng)域問題進(jìn)行了高度的抽象,提出了任務(wù)、觸發(fā)器和調(diào)度器這3個核心的概念,并在org.quartz通過接口和類對重要的這些核心概念進(jìn)行描述。
Job:是一個接口,只有一個方法void execute(JobExecutionContext context),開發(fā)者實(shí)現(xiàn)該接口定義運(yùn)行任務(wù)。用實(shí)現(xiàn)接口類JobDetail進(jìn)行實(shí)例化。
Trigger:是一個類,描述觸發(fā)Job執(zhí)行的時間觸發(fā)規(guī)則。主要有SimpleTrigger和CronTrigger這兩個子類。
Scheduler:代表一個Quartz的獨(dú)立運(yùn)行容器,Trigger和JobDetail可以注冊到Scheduler中,兩者在Scheduler中擁有各自的組及名稱,組及名稱是Scheduler查找定位容器中某一對象的依據(jù),Trigger的組及名稱必須唯一,JobDetail的組和名稱也必須唯一。
上述三者的關(guān)系圖見圖8。
4 結(jié)束語
通過“醫(yī)院短信平臺”的研究和設(shè)計,成功運(yùn)用Java相關(guān)技術(shù)實(shí)現(xiàn)了本系統(tǒng)的功能需求,即將醫(yī)院最新的動態(tài)信息定時發(fā)送到相關(guān)部門人員手機(jī)上,具有高效、快捷、方便、準(zhǔn)確和經(jīng)濟(jì)等特點(diǎn)。本系統(tǒng)已經(jīng)投入實(shí)際試運(yùn)行環(huán)境中。
由于多方面的原因,本課題的研究還有很多不足之處,主要包括以下一些方面:
(1)JSP的設(shè)計過程中對界面的美化做的不夠好。
(2)獲取短信數(shù)據(jù)的SQL語句應(yīng)該封裝起來,由用戶在可視化界面中選擇相應(yīng)的短信條目進(jìn)行獲取。
(3)可以增加各科室短信的功能,使其針對的用戶更廣泛。
這些都是以后系統(tǒng)需要進(jìn)行逐步完善的,最終達(dá)到具有廣泛性和實(shí)用性。
參考文獻(xiàn):
[1]閆小萍.醫(yī)院短信平臺的構(gòu)建與應(yīng)用[J].中國醫(yī)療設(shè)備.2011.
[2]唐慧.醫(yī)院短信平臺的構(gòu)建與實(shí)施[J].廣東省人民醫(yī)院信息部.2009.
[3]李建鵬.醫(yī)院門診短信平臺的實(shí)現(xiàn)[J].廣東省人民醫(yī)院信息部.2009.
[4]張良鳴.醫(yī)院信息系統(tǒng)桌面管理應(yīng)用心得[J].電腦知識與技術(shù),2010.
[5]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論(第四版)[M].高等教育出版社,2005(12).
[6]張海潘.軟件工程導(dǎo)論(第五版)[M].清華大學(xué)出版社,2003.
[7]孫鑫.Java Web開發(fā)詳解[M].北京:電子工業(yè)大學(xué)出版社,2012.
作者簡介:瞿懷榮(1982-),男,工程師,研究方向:醫(yī)療信息化;通訊作者:柴守霞,女,講師,研究方向:外科護(hù)理學(xué);王春雷,男,工程師,研究方向:計算機(jī)應(yīng)用;王德紅,男,工程師,研究方向:信息管理。
作者單位:連云港市第一人民醫(yī)院 信息科,江蘇連云港 222002;湖北醫(yī)藥學(xué)院,湖北十堰 442000
基金項目:研究生啟動基金項目(項目編號:2011QDZR-24)。