朱夏迪 馬江華

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