朱夏迪 馬江華
關(guān)鍵詞:釘釘;醫(yī)院內(nèi)網(wǎng);文件;Python;wxPython
隨著手機端釘釘在我院的普遍使用,院內(nèi)職工已經(jīng)習慣通過釘釘互傳文件、溝通交流。同時對于電腦主機端發(fā)送文件到手機端的需求也越來越明顯。雖然釘釘官方也有提供電腦PC客戶端程序,但僅限于外網(wǎng)使用,而院內(nèi)主機普遍為內(nèi)網(wǎng)環(huán)境,醫(yī)院內(nèi)網(wǎng)由于安全防護需要,與外網(wǎng)有著嚴格的隔離措施。因此作為醫(yī)院信息中心,對于如何將內(nèi)網(wǎng)文件通過安全可靠的手段發(fā)送到釘釘手機端成為一個迫切需要解決的難題,于是我們對此做了一定的研究,并用了相對簡單的方法實現(xiàn)了該功能,以下通過對我院已上線的內(nèi)網(wǎng)發(fā)送釘釘文件功能進行簡要介紹,分享實際系統(tǒng)設(shè)計及開發(fā)經(jīng)驗。
1.系統(tǒng)設(shè)計思路:
1)操作便捷性:用戶端主界面程序簡潔明了,軟件操作簡單易上手,用戶無需進入多個菜單,多次選擇,只需簡單一步拖動,然后點擊發(fā)送即可發(fā)送到釘釘手機端。
2)可移植性: 跨平臺的軟件以及服務(wù)端程序越來越成為主流,不管是用戶端還是服務(wù)端,因此本系統(tǒng)用戶界面程序、文件同步服務(wù)、文件發(fā)送服務(wù)均使用跨平臺編程語言編寫,通過簡單的重新編譯即可在Windows、Linux以及MacOS等系統(tǒng)運行。
3)系統(tǒng)可擴展性:系統(tǒng)采用模塊化設(shè)計,通過接口可以替換任意一個模塊,與第三方兼容,用戶界面程序目前使用Samb協(xié)議上傳文件,通過簡單的配置即可支持FTP等協(xié)議。對于第三方系統(tǒng),在不使用用戶主界面程序的給前提下,有提供接口服務(wù),支持直接調(diào)用內(nèi)網(wǎng)接口發(fā)送指定路徑文件到手機釘釘端。
2.系統(tǒng)主要業(yè)務(wù)流程:首先用戶通過用戶主界面程序?qū)⑽募l(fā)送到緩沖服務(wù)器,其次緩沖服務(wù)器自動上傳至釘釘云盤并返回文件MEDIA_ID,然后文件發(fā)送服務(wù)自動通過MEDIA_ID發(fā)送文件到指定用戶手機釘釘端,其中上傳至釘盤以及發(fā)送釘盤文件到指定用戶釘釘需要調(diào)用釘釘開放平臺API實現(xiàn)。
3.系統(tǒng)模塊設(shè)計:
1)用戶界面模塊:
主要功能:
(1)為用戶提供可視化的用戶界面,支持用戶將文件上傳至指定路徑,同時在文件數(shù)據(jù)庫中寫入文件的基本信息,將文件的發(fā)送狀態(tài)標記為“待緩沖”。
(2)支持用戶選擇發(fā)送人以及查看文件發(fā)送狀態(tài)。
2)文件同步模塊:
主要功能:
(1)定時監(jiān)控文件數(shù)據(jù)庫,如有發(fā)送狀態(tài)為“待緩沖”的數(shù)據(jù),則將文件同步到文件緩沖服務(wù)器,同時將文件標記為“已緩沖”。
(2)創(chuàng)建文件緩沖目錄結(jié)構(gòu):文件同步模塊將指定路徑文件下載到緩沖目錄,同時將待發(fā)送的文件重命名為文件的MD5碼,并存儲在發(fā)送者工號命名的文件夾目錄下,從而達到節(jié)省重復文件的占用存儲空間。
3)文件上傳模塊:
主要功能:
(1)定時監(jiān)控文件數(shù)據(jù)庫,如有發(fā)送狀態(tài)為“已緩沖“的數(shù)據(jù),則調(diào)用釘釘開放平臺接口的“上傳文件到釘盤”API將內(nèi)網(wǎng)緩沖服務(wù)器上的文件上傳到釘釘云盤,將上傳成功后返回文件MEDIA_ID記錄數(shù)據(jù)庫,同時將文件標記為“已上傳”,。
4)文件發(fā)送模塊:
主要功能:
(1)定時監(jiān)控文件數(shù)據(jù)庫,如有發(fā)送狀態(tài)為“已上傳”的數(shù)據(jù),則調(diào)用釘釘開放平臺接口的“發(fā)送消息到指定用戶”API,通過文件MEDIA_ID將文件發(fā)送給指定用戶的釘釘,同時將文件標記為“已發(fā)送”。
5)數(shù)據(jù)庫文件結(jié)構(gòu):
主要包括:文件名、文件路徑、文件大小、文件MD5、文件發(fā)送狀態(tài)、文件創(chuàng)建時間、文件上傳時間、文件發(fā)送時間、發(fā)送者工號、接收人工號、文件MEDIA_ID等信息。
4.系統(tǒng)主要采用技術(shù)及實現(xiàn):
1)軟件部分:
(1)用戶界面程序:UI部分采用了wxPython,wxPython是wxWidgets的Python實現(xiàn)版本,其兼顧了Python的簡單易用,以及wxWidgets的跨平臺特性,同時也開源免費,比較適合規(guī)模較小的項目,后期代碼維護也比較容易。
(2)文件同步服務(wù)、文件上傳服務(wù)、文件發(fā)送服務(wù)均使用純Python編寫,Python代碼簡潔易于維護,同時具有跨平臺性,通過簡單的重新編譯即可支持多種平臺。
2)服務(wù)部署:
(1)文件同步服務(wù)、文件上傳服務(wù)、文件發(fā)送服務(wù)均部署在Linux環(huán)境CentOS上,為了保證以上三個服務(wù)的穩(wěn)定運行,在CentOS服務(wù)器上部署了supervisord用戶服務(wù)監(jiān)控服務(wù),supervisord能夠在服務(wù)器啟動時自動將被監(jiān)控的服務(wù)調(diào)起,同時如果被監(jiān)控的服務(wù)有意外退出等情況也能夠自動化的嘗試重新啟動,并提供有詳細的日志記錄服務(wù)運行情況。
3)第三方接口:
文件上傳服務(wù)、文件發(fā)送服務(wù)均使用了釘釘開放平臺的DingDingSDK Python版本,其中文件上傳服務(wù)調(diào)用了“上傳文件至釘盤”API, 而文件發(fā)送服務(wù)調(diào)用了“發(fā)送消息到指定用戶”API。
5.實施效果:
目前該系統(tǒng)已在我院部分科室使用,該系統(tǒng)界面簡介明了,使用便捷,同時具有較好的穩(wěn)定性。通過使用該系統(tǒng)將原本繁瑣復雜的操作簡便化了,使院內(nèi)職工的辦公效率得到了一定的提升。
6.后期展望:
后期計劃將該系統(tǒng)進行進一步的界面優(yōu)化,并集成到我院單點登錄系統(tǒng)。同時也計劃將該系統(tǒng)與一些自動化任務(wù)結(jié)合起來,例如“自動發(fā)送XLS報表到手機釘釘“,”自動發(fā)送每日簡報到手機釘釘“等,通過與更多院內(nèi)HIS相關(guān)系統(tǒng)的結(jié)合,來更好地提高院內(nèi)辦公的效率。