劉越
(廣州醫(yī)科大學(xué)附屬中醫(yī)醫(yī)院,廣東 廣州)
微信小程序,簡(jiǎn)稱(chēng)小程序。小程序不需要用戶下載,又基于微信客戶端中。對(duì)于開(kāi)發(fā)者而言,開(kāi)發(fā)門(mén)檻比較低。相較于普通的APP,推廣成本較低。又較于前幾年較流行的微信公眾號(hào)、服務(wù)號(hào)這種推廣平臺(tái),邏輯性更強(qiáng),對(duì)網(wǎng)頁(yè)的展示兼容性更好,操作體驗(yàn)更佳。一次開(kāi)發(fā),多端兼容[1,2]。
醫(yī)院信息系統(tǒng)邏輯較為復(fù)雜。如何實(shí)現(xiàn)前端與后臺(tái),后臺(tái)與數(shù)據(jù)庫(kù)之間的數(shù)據(jù)傳遞,且對(duì)信息的安全性、數(shù)據(jù)的保密性有很高的要求。本文主要研究如何將目前流行的后臺(tái)框架以及前端技術(shù)相互結(jié)合起來(lái)。使用接口傳遞的方式,解決不同平臺(tái)、不同語(yǔ)言編寫(xiě)的應(yīng)用之間如何互相調(diào)用的問(wèn)題。通過(guò)這樣的結(jié)構(gòu)模型,滿足科室移動(dòng)化辦公的需求,同時(shí)也滿足醫(yī)院互聯(lián)網(wǎng)化、信息化的需求[3,4]。
目前Lavavel框架已經(jīng)到了6的版本。筆者在使用該框架時(shí)仍然使用的是5.6的版本。
醫(yī)院信息系統(tǒng)龐大且復(fù)雜。普通的MySQL數(shù)據(jù)庫(kù)是沒(méi)辦法滿足醫(yī)院的大并發(fā)量的訪問(wèn)需求的。本院部署的是Oracle數(shù)據(jù)庫(kù)。但是,Lavavel框架默認(rèn)是沒(méi)有開(kāi)放連接Oracle數(shù)據(jù)庫(kù)連接的。所以先要開(kāi)放PHP的擴(kuò)展,php_oci8_12c.dll和php_pdo_oci.dll,而且需要用composer安裝yajra/laravel-oci8,配置完成后才可以使用Oracle數(shù)據(jù)庫(kù)。基本配置完成以后,即可開(kāi)始根據(jù)自身的業(yè)務(wù)邏輯,完成路由、控制器、模型及遷移文件、接口、驗(yàn)證器等程序部分的編寫(xiě)[5-7]。
這里舉個(gè)例子:如創(chuàng)建 接口的資源
php artisan make:resource 單個(gè)資源
php artisan make:resource 集合資源-c[--collection]
在資源中對(duì)接口進(jìn)行描述
在模型中添加訪問(wèn)器
public function getCourseAttribute($value) {returnenv(‘APP_URL’).$value;
}
創(chuàng)建中間件,允許接口跨域
注冊(cè)全局中間件
AppHttpMiddlewareAllowdomain::class
測(cè)試接口可以得到如下Jason數(shù)據(jù):
通過(guò)微信自身的API接口wx.request進(jìn)行接口的訪問(wèn)。參數(shù)data中可以輸入一個(gè)URL進(jìn)行訪問(wèn)。如果成功調(diào)用,則會(huì)返回一個(gè)回調(diào)函數(shù)success。我們可以根據(jù)邏輯返回值進(jìn)行接下來(lái)的邏輯處理[8,9]。訪問(wèn)的地址需要配置一下,建議新增一個(gè)配置文件config.js。該JS文件用于定義接口域名以及各個(gè)接口地址,如:
Jason數(shù)據(jù)成功拿到后,我們就可以進(jìn)行頁(yè)面的展示了。展示使用的是HTML+CSS的技術(shù),語(yǔ)法更偏向于VUE,如:
上邊的函數(shù)聲明多是使用了Promise調(diào)用。這樣的開(kāi)發(fā)雖然方便,你或許還可以接受。但是如果你是維護(hù)代碼的人,你就會(huì)明白這樣的代碼有多難維護(hù)。有可能只是三層的嵌套關(guān)系,當(dāng)然實(shí)際中可能更多。舉個(gè)例子,用戶登錄拿到UserID,然后再調(diào)用別的接口拿到token,最后可能還要調(diào)用接口完成別的邏輯。這就意味著層層嵌套,牽一發(fā)而動(dòng)全身[10]。所以我使用的是Async語(yǔ)法進(jìn)行優(yōu)化,這樣既可以解決回調(diào)地獄的問(wèn)題,又可以解決代碼難以維護(hù)的問(wèn)題。Async語(yǔ)法簡(jiǎn)潔,使代碼可讀性更高。并且能使用try catch捕獲異常,使代碼更加符合思維邏輯。如:
小程序是一種不需要用戶下載安裝的即可使用的應(yīng)用。它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想,也體現(xiàn)了“用完即走”的理念。應(yīng)用隨處不在又無(wú)需安裝卸載。因?yàn)槠涮匦?,如今,大到電商,小到餐飲企業(yè),都有自己的小程序應(yīng)用。而Lavavel框架又是比較健壯及安全的。如今對(duì)醫(yī)院數(shù)據(jù)信息安全的要求也越來(lái)越高。本文想通過(guò)以小程序及Lavavel相結(jié)合的方式,實(shí)現(xiàn)系統(tǒng)跨平臺(tái)、跨語(yǔ)言,從而為提高醫(yī)院的精細(xì)化管理水平提供了一種解決思路[11,12]。