任慧朋,唐龍凱,徐曉霞
(解放軍第九八醫(yī)院,浙江湖州,313000)
PHP(Hypertext Preprocessor)是一種在服務(wù)端執(zhí)行嵌入HTML文檔的超文本腳本語(yǔ)言,其最大的特點(diǎn)就是跨平臺(tái)、執(zhí)行效率高、耗費(fèi)資源小。PHP從1995年從第一個(gè)正式版本發(fā)展至今,多以面向?qū)ο蟮拈_發(fā)模式制作動(dòng)態(tài)網(wǎng)頁(yè)著稱,近年,由于其強(qiáng)大的表單處理功能和對(duì)多種數(shù)據(jù)庫(kù)廣泛支持,逐漸向應(yīng)用軟件領(lǐng)域方面擴(kuò)展,目前大部分搜索引擎公司的前臺(tái)基本上都是采用PHP進(jìn)行的編譯,國(guó)外公司首先利用php編譯了工業(yè)ERP等程序。從每月的TIOBE的世界編程語(yǔ)言排行情況,php始終呈穩(wěn)定上升的趨勢(shì),具有極高的市場(chǎng)占有率,如圖1所示:
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,這種模式采用業(yè)務(wù)邏輯和數(shù)據(jù)顯示分離的方法,這個(gè)方法的假設(shè)前提是如果業(yè)務(wù)邏輯被聚集到一個(gè)部件里面,而且界面和用戶圍繞數(shù)據(jù)的交互能被改進(jìn)和個(gè)性化定制而不需要重新編寫業(yè)務(wù)邏輯。國(guó)內(nèi)外有很多優(yōu)秀的PHP語(yǔ)言的MVC框架,把常用的函數(shù)方法封裝好后提供給用戶使用,比如各類數(shù)據(jù)的連接引擎、CURD(增、刪、改、查)操作等,本文以國(guó)產(chǎn)開源的輕量級(jí)ThinkPhp框架舉例,連接HIS( Hospital Information System)數(shù)據(jù)庫(kù),并實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)表的基本操作。
LAMP是指一組用Linux+Apache+Mysql+Perl/PHP/Python來(lái)搭建動(dòng)態(tài)網(wǎng)站或者服務(wù)器的開源軟件,本身都是各自獨(dú)立的程序,但是因?yàn)槌1环旁谝黄鹗褂?,擁有了越?lái)越高的兼容度,共同組成了一個(gè)強(qiáng)大的Web應(yīng)用程序平臺(tái),這四種開源程序的組合兼容性不斷完善,開發(fā)項(xiàng)目的成本較低,因此一直受到整個(gè)IT界得關(guān)注,目前,世界上的網(wǎng)站70%以上的訪問(wèn)流量靠是LAMP提供的 。LAMP安裝較為簡(jiǎn)單,INTERNET網(wǎng)上的安裝教程比較雜亂,筆者經(jīng)過(guò)梳理,并參照官方技術(shù)文檔(http://http://wiki.ubuntu.org.cn/Apache/)在 ubuntu 12.04系統(tǒng)下以root(根用戶)身份調(diào)試安裝成功,在終端具體如下:
#sudo apt-get install ssh //安裝SSH
#sudo apt-get install apache2 //安裝Apache
Apache在安裝期間會(huì)新建一個(gè)目錄:/var/www,該目錄是該服務(wù)器中存放文檔的根目錄。
#sudo apt-get install mysql-server-5.1 //安裝MYSQL #sudo apt-get install php5 libapache2-modphp5 //安裝PHP5
#sudo /etc/init.d/apache2 restart // 重啟Apache
說(shuō)明:在安裝過(guò)程中要求連接互聯(lián)網(wǎng),讀者也可采用LAMP一鍵安裝的模式或者下載各自軟件的安裝包獨(dú)立進(jìn)行安裝,具體安裝方法請(qǐng)參照Ubuntu官方技術(shù)文檔(http://wiki.ubuntu.org.cn/Apache/)進(jìn)行操作。
THinPhp 是一個(gè)免費(fèi)開源的、快速、簡(jiǎn)單的面向?qū)ο蟮妮p量級(jí)國(guó)產(chǎn)PHP開發(fā)框架,該框架遵循Apache2的開源協(xié)議發(fā)布,為敏捷WEB應(yīng)用開發(fā)和簡(jiǎn)化企業(yè)應(yīng)用而研發(fā),封裝了CURD和一些常用操作,單一入口模式等。下載最新版ThinkPhp框架(http://www.thinkphp.cn/down.html),解壓后拷貝到網(wǎng)站根目錄(/var/www/)文件夾中。
2.3.1 連接HIS數(shù)據(jù)庫(kù)的代碼
在“PHPHIS(項(xiàng)目文件目錄)/Conf/”文件夾下面建立config.php文件,并加入如下代碼:
return array(
//'配置項(xiàng)'=>'配置值'
'DB_TYPE'=>'oracle', /* 數(shù)據(jù)庫(kù)類型*/
'DB_HOST'=>'192.168.1.1', /* 數(shù)據(jù)庫(kù)地址*/
'DB_NAME'=>'testnew', /* 數(shù)據(jù)庫(kù)實(shí)例名*/
'DB_USER'=>'XXX', /*XXX 為DBA登錄名*/
'DB_PWD'=>'XXX', /* XXX為DBA密碼*/
'DB_PORT'=>'1521', /*數(shù)據(jù)庫(kù)連接的端口號(hào)*/
); ?>
2.3.2 控制器中的的類文件代碼
在“PHPHIS(項(xiàng)目文件目錄)/Lib/Action”文件夾下建立Ind
exAction.class.php文件,該類文件的作用是編譯控制器用到的所有方法,包括實(shí)例化數(shù)據(jù)庫(kù)和CURD操作等操作方法,其中查詢和刪除記錄方法的代碼如下:
class IndexAction extends Action {
/*主類的的名稱要與與文件名同名*/
public function index(){
$m=M( ); /*采用框架的M方法實(shí)例化數(shù)據(jù)庫(kù)*/
$arr=$m->query("select * from staff_dict ");
/*查詢HIS數(shù)據(jù)庫(kù)中的員工表staff_dict中的全部數(shù)據(jù)*/
$this->assign('data',$arr);
$this->display() }
public function del(){ /*刪除記錄的方法*/
$m=M();
$arr=$m->query("select * from staff_dict ");
$id=$_GET['emp_no']; /*員工代號(hào)字段*/
$count=$m->delete($id); /*調(diào)用框架的delete方法*/
$count=$m->execute(" delete * from staff_dict where emp_no=$id ");
完成系統(tǒng)環(huán)境搭建和代碼編譯后,經(jīng)過(guò)測(cè)試,遍歷1000個(gè)二維數(shù)組的時(shí)間僅為0.029秒,比傳統(tǒng)的C/S架構(gòu)程的查詢速度快1倍以上,而且客戶端耗費(fèi)的內(nèi)存和CPU資源減少了4/5,程序運(yùn)行的效果圖如下:
通過(guò)本文的實(shí)驗(yàn)結(jié)果來(lái)看,利用PHP的MVC框架成功實(shí)現(xiàn)了對(duì)HIS數(shù)據(jù)庫(kù)的基礎(chǔ)操作。這種B/S三層架構(gòu)的軟件結(jié)構(gòu)響應(yīng)速度快,耗費(fèi)客戶端資源少,信息交互流暢,導(dǎo)致數(shù)據(jù)庫(kù)死鎖的幾率小。隨著醫(yī)院業(yè)務(wù)規(guī)模的擴(kuò)大和客戶端數(shù)量的增多,傳統(tǒng)的C/S架構(gòu)的編程模式的各種缺陷凸顯,給信息人員的日常保障維護(hù)增加了一定的負(fù)擔(dān),B/S架構(gòu)的軟件開發(fā)方式必然是HIS信息系統(tǒng)未來(lái)的研發(fā)方向,綜合國(guó)內(nèi)外眾多的成功案例和各種技術(shù)的相對(duì)成熟性,采用PHP的MVC對(duì)HIS進(jìn)行程序設(shè)計(jì)具備可行性,給我們升級(jí)改造“軍衛(wèi)一號(hào)”軟件系統(tǒng)帶來(lái)了非常好的啟示。
圖一 2013年8月份世界編程語(yǔ)言排行情況
[1]基于瀏覽器/服務(wù)器結(jié)構(gòu)的LIS開發(fā)與應(yīng)用[J].現(xiàn)代檢驗(yàn)醫(yī)學(xué)雜志2012,27(6):163-165
[2]吳剛珂,倪紅英.醫(yī)院住院處操作統(tǒng)計(jì)工作系統(tǒng)的設(shè)計(jì)與應(yīng)用[J].醫(yī)療衛(wèi)生裝備2013,34(2) :53-56
[3]肖永平,陳慧玲,高 揚(yáng),賈 雋,周開國(guó).基于B/S的醫(yī)療信息統(tǒng)計(jì)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].醫(yī)療衛(wèi)生裝備2012,33(6) :37-39
[4]孟慶崧.基于Web Service的“軍衛(wèi)一號(hào)”系統(tǒng)與醫(yī)院網(wǎng)站集成[J].中國(guó)醫(yī)療設(shè)備2012,27(6) :39-43