賈 黎,劉忠超,李英玲,3
(1. 中國電子科技集團公司第十研究所,四川 成都 610041;2. 西南民族大學(xué)計算機科學(xué)與工程學(xué)院,四川 成都 610041;3. 西南民族大學(xué)計算機系統(tǒng)國家民委重點實驗室,四川 成都 610041)
近年,疫苗安全事件頻繁發(fā)生,疫苗生產(chǎn)造假、過期疫苗濫用和疫苗儲運違規(guī)等問題[1-2],嚴重威脅著人民群眾的健康. 政府高度重視,也對建立疫苗全程追溯制度提出了明確要求[3],加強對疫苗從研發(fā)、生產(chǎn)、流通,以及使用等環(huán)節(jié)的全過程監(jiān)管[4].為打破疫苗生產(chǎn)企業(yè)、物流企業(yè)、疾病預(yù)防控制中心及接種單位間的壁壘,上海市疾病預(yù)防控制中心將互聯(lián)網(wǎng)及物聯(lián)網(wǎng)技術(shù)與疫苗行業(yè)特點深度結(jié)合,建立綜合追溯管理信息系統(tǒng),實現(xiàn)了單支疫苗從生產(chǎn)企業(yè)到接種單位、到受種者全過程的閉環(huán)管理[5-6],但是一體式疫苗管理系統(tǒng)還未普及,現(xiàn)有的疫苗管理方式大多停滯在人工手動記錄.自新冠疫情出現(xiàn)后,疫苗研究者們便投入到了疫苗研發(fā)的過程中,截止2020 年底,我國新冠疫苗年產(chǎn)達6.1 億劑,預(yù)計2021 年產(chǎn)能將達到10億劑以上[7-9],同時人們開始研究大規(guī)模接種的新型冠狀病毒疫苗潛在不良反應(yīng)[10].但是,新冠疫苗大規(guī)模接種后,簡單的手工登記,將面臨如下問題:(1)造成醫(yī)務(wù)工作人員巨大的工作量,并且可能存在信息的缺失和遺漏,不利于疫苗安全的跟蹤調(diào)查[11];(2)無法對接種者進行跟蹤,可能造成接種后熱線擁堵和醫(yī)院爆滿[4];(3)手動登記數(shù)據(jù),不利于對數(shù)據(jù)的統(tǒng)計分析,影響相關(guān)科研工作的開展[12]. 因此,新冠疫苗的大規(guī)模接種,如何實現(xiàn)對接種前后的疫苗生產(chǎn)、存儲、接種、接種后跟蹤的“全過程”管理,顯得尤為重要,以實現(xiàn)對疫苗管理便捷化、直觀化、信息化,已有的接種管理系統(tǒng)不能滿足當前大規(guī)模接種的要求[13-16].基于上述背景,本文采用SpringBoot 和Vue框架,前后端分離的開發(fā)模式,設(shè)計對疫苗全過程跟蹤管理系統(tǒng).該系統(tǒng)實現(xiàn)從疫苗出廠物流運輸與疫苗倉儲,到疫苗接種,再到接種后跟蹤反饋,以及接種者論壇管理,通過對疫苗全過程數(shù)據(jù)的采集和分析,實現(xiàn)對疫苗“全過程、可追蹤”的管理目標.因此,本系統(tǒng)能解決疫苗跟蹤不完整、接種后無法跟蹤等問題,并減輕醫(yī)護人員在疫苗管理方面手動記錄和整理過于繁瑣的問題,為醫(yī)護人員、接種者提供便捷化、信息化的疫苗接種平臺.
本系統(tǒng)的總體需求如圖1 所示,包括疫苗物流模塊,疫苗倉儲模塊,疫苗接種模塊,接種者模塊等.
圖1 系統(tǒng)總體建設(shè)需求圖Fig.1 Overall requirement diagram
(1)疫苗物流模塊:包括錄入物流批次信息、寄出批次、查看已寄出訂單的接收狀態(tài)、查看拒絕接收批次的拒收理由并且重新寄出.
(2)疫苗倉庫管理:倉儲及接種模塊的醫(yī)生用戶可以選擇接收疫苗批次或拒絕接收、錄入疫苗信息、分類篩選查找疫苗、為已預(yù)約的接種者進行接種操作、查看每一個接種者的信息及其身體狀況記錄.
(3)疫苗接種模塊:接種者可以在個人中心進行預(yù)約接種操作、查看到自己接種后的疫苗信息、記錄接種后七天內(nèi)的身體狀況,還可以在論壇模塊查看公告信息、發(fā)布帖子、點贊公告/帖子、評論帖子.
(4)接種者論壇相關(guān)業(yè)務(wù):全局管理員用戶除了擁有以上功能的操作權(quán)限,還可以對所有用戶的賬號進行管理、對帖子及公告進行管理.
疫苗物流管理模塊提供了添加物流批次信息、寄出批次訂單、查看批次訂單的運輸、接收狀態(tài)、重新寄出被拒絕訂單、篩選查看各狀態(tài)批次訂單的列表的功能.
圖2(a)為疫苗物流管理數(shù)據(jù)流圖. 物流人員添加新的物流批次,寄出后,該批次狀態(tài)為“運輸中”;醫(yī)生可看到運輸中的批次,并可選擇“接收”或“拒絕接收”,若接收,則該物流批次狀態(tài)為“已接收”,若拒絕接收,需要填寫拒絕接收理由,該訂單會在拒絕接收欄中顯示,物流人員線下整改后可進行“重新寄出”操作.
疫苗倉儲管理模塊為倉儲人員提供了疫苗入庫、疫苗信息錄入、疫苗分類展示等功能.圖2(b)為疫苗倉儲管理數(shù)據(jù)流圖.醫(yī)生在疫苗入庫時,可進行“接收”或“拒絕接收”操作,若確認接收,則在疫苗信息管理欄中填寫疫苗信息,并關(guān)聯(lián)疫苗批次信息;若拒絕接收,該物流批次會返回到物流人員處進行整改處理.
疫苗接種管理為接種醫(yī)師提供了篩選查看已預(yù)約接種者列表、根據(jù)身份碼查詢某一支疫苗、接種操作、篩選查看已接種用戶及其接種疫苗信息、查看某一已接種用戶的身體狀況情況的功能.
圖2(c)為疫苗接種管理數(shù)據(jù)流圖,醫(yī)生在疫苗接種操作欄中查看已預(yù)約接種者的列表,選擇一位預(yù)約接種者進行接種,根據(jù)疫苗身份碼搜索到疫苗信息;成功接種后,該接種者信息會轉(zhuǎn)移到疫苗接種信息欄,同時顯示該疫苗的信息,還可以查看每個用戶接種后的身體變化情況記錄.
圖2(d)為接種者管理數(shù)據(jù)流圖. 接種者進入個人中心模塊,可以進行預(yù)約接種操作,預(yù)約成功并且接種完成后,接種后可查看個人的疫苗接種信息,并且記錄接種后七天身體情況,包括體溫、身體異常描述、記錄日期,如果有身體異常情況,系統(tǒng)會給出提示,醫(yī)生會及時與接種者取得聯(lián)系.
圖2 數(shù)據(jù)流程圖Fig. 2 Data flow diagrams
在論壇模塊主要包括公告的查看、點贊,帖子的查看、點贊、評論,發(fā)布帖子等功能,幫助醫(yī)生更便捷地了解到接種者心中的情況,讓接種者之間也能夠密切地交流,另外還可以通過公告信息來通知重要的事宜.
本系統(tǒng)采用前后端分離的開發(fā)模式,后端基于MVC 設(shè)計模式以及SpringBoot+Mybatis-plus 框架,前端使用Vue 框架以及Element-UI 組件.系統(tǒng)的架構(gòu)圖如圖3 所示,“①”表示用戶權(quán)限的后端控制,Spring-Boot 后端服務(wù)通過獲取token 的方式對用戶角色加以判斷,控制登錄用戶的功能權(quán)限.“②”過程表示SpringBoot 后端服務(wù)通過配置集成Mybatis 框架,實現(xiàn)對數(shù)據(jù)庫進行操作以及從數(shù)據(jù)庫中獲取對應(yīng)Json 格式數(shù)據(jù).“③”過程表示Mybatis 框架,根據(jù)服務(wù)要求建立與MySql 數(shù)據(jù)庫連接并且負責(zé)對具體業(yè)務(wù)sql 語句執(zhí)行和執(zhí)行結(jié)果的處理.“④”過程表示前后端通過發(fā)送Http 請求及響應(yīng)的方式實現(xiàn)數(shù)據(jù)交互,前端通過tomcat 應(yīng)用服務(wù)器處理請求,調(diào)用疫苗物流業(yè)務(wù)、疫苗倉儲業(yè)務(wù)、疫苗接種業(yè)務(wù)、接種者管理業(yè)務(wù)的相關(guān)后端接口,獲取數(shù)據(jù),以實現(xiàn)頁面中的功能.“⑤”表示前端根據(jù)不同用戶的權(quán)限顯示對應(yīng)的模塊和操作,以保護系統(tǒng)的安全性.
圖3 系統(tǒng)架構(gòu)圖Fig.3 Design diagram
2.2.1 疫苗物流管理設(shè)計與實現(xiàn)
圖4 為疫苗物流管理流程圖. 物流人員進入疫苗物流管理模塊,前端自動發(fā)起請求,通過調(diào)用后端接口,使用Mybatis-Plus 的selectPage 方法從數(shù)據(jù)庫獲取物流相關(guān)表格數(shù)據(jù)并實現(xiàn)分頁,前端渲染數(shù)據(jù)后展示給用戶.在未寄出批次一欄中可“添加物流批次”操作,輸入對應(yīng)的物流信息,調(diào)用添加接口,傳入前端輸入的實體,插入數(shù)據(jù)庫.添加批次信息成功后,可在未寄出批次的列表中進行查詢、刪除、寄出等操作,若點擊寄出按鈕,調(diào)用接口修改訂單狀態(tài)變?yōu)椤耙鸭某觥?在已寄出批次中,若倉儲模塊人員選擇接收,則訂單狀態(tài)變?yōu)椤耙阉瓦_”,若未接收則顯示狀態(tài)為“運輸中”,若拒絕接受,可在拒絕接收批次一欄中進行篩選查看,并且可重新寄出,重新寄出后訂單狀態(tài)再次為“運輸中”,等待倉儲模塊人員的反饋.
圖4 疫苗物流管理流程圖Fig.4 Flow chart of vaccine logistics management
2.2.2 疫苗倉儲管理設(shè)計與實現(xiàn)
圖5 為疫苗倉儲管理流程圖.倉儲人員進入系統(tǒng)后,前端頁面調(diào)用查列表接口,使用Mybatis-plus 的selectPage 方法,從數(shù)據(jù)庫中獲取到分頁數(shù)據(jù),渲染在頁面表格中.查看已寄出的疫苗物流批次信息,根據(jù)線下比對結(jié)果決定是否同意接收該批次疫苗,如同意接收,則錄入該批次疫苗的信息,調(diào)用后端修改訂單狀態(tài)接口,將新狀態(tài)碼傳入接口,進行更新操作;如拒絕接收,則需要在系統(tǒng)中填寫拒絕接收理由,調(diào)用修改訂單狀態(tài)的接口,并且填寫拒收理由,將訂單發(fā)回寄出地.錄入疫苗信息是選擇每一支疫苗的對應(yīng)批次名稱,確保疫苗的軌跡可追溯性,添加完成后可以篩選查看疫苗信息,或進行邏輯刪除操作.
圖5 疫苗倉儲管理流程圖Fig.5 Flow chart of vaccine warehousing management
2.2.3 疫苗接種管理設(shè)計與實現(xiàn)
圖6 為疫苗接種物流管理時序圖.接種醫(yī)生進入系統(tǒng)后,前端調(diào)用分頁篩查列表接口,通過條件是否為null 來判斷有無這個篩選條件,將列表返回前端,進行表格渲染,便可以篩選查看已預(yù)約接種者列表.選擇某一預(yù)約者進行接種操作,點擊接種后需要輸入疫苗身份碼,點擊查詢,調(diào)用根據(jù)疫苗身份碼查詢疫苗接口,若查詢到對應(yīng)的疫苗,則返回給前端這支疫苗的信息,供前端展示渲染,點擊“確定接種”,調(diào)用修改疫苗信息接口,將userId 插入疫苗表的接種者id 字段;隨即關(guān)聯(lián)接種成功;若沒有查到該疫苗,則說明系統(tǒng)中未錄入疫苗的信息,換另一支疫苗再次進行查詢及接種.
圖6 疫苗接種管理時序圖Fig.6 Flow chart of vaccination management
接種成功后,可以在疫苗接種信息一欄查看已接種的用戶信息及其對應(yīng)的疫苗信息,點擊“身體狀況記錄”,調(diào)用接口通過userId 查詢該用戶記錄的身體狀況信息列表,查看某一用戶接種后七天內(nèi)的身體狀況,包括體溫、身體異常描述、記錄日期等等;將后端返回的數(shù)據(jù)在前端進行遍歷,通過每條信息的“狀態(tài)”字段判斷當前用戶的身體狀況,并且使用不同顏色進行區(qū)分,紅色表示異常,綠色表示正常.
2.2.4 接種者管理設(shè)計與實現(xiàn)
接種者管理包括接種者個人中心和接種者論壇.接種者個人中心為接種者提供的可以預(yù)約疫苗接種、查看個人接種疫苗信息、記錄個人接種后的身體狀況等功能的模塊.圖7 為接種者個人中心時序圖.
圖7 接種者個人中心時序圖Fig.7 Sequence chart of sequence diagram
接種者進入個人中心模塊,可以進行預(yù)約接種操作,通過調(diào)用修改信息接口改變user 表中的預(yù)約狀態(tài)字段,預(yù)約成功并且接種成功后,狀態(tài)會變?yōu)橐呀臃N,之后再調(diào)用鏈表查詢接口將user 表和vaccines 表進行關(guān)聯(lián),查詢出這個用戶的個人信息與接種的疫苗信息,用戶便可以查看自己接種疫苗的信息;點擊記錄身體狀況按鈕,可以在彈窗中輸入信息,包括體溫、身體異常描述、記錄日期,點擊確定后,會調(diào)用后端添加接口,將這條數(shù)據(jù)插入到身體狀況記錄表,通過userId字段進行關(guān)聯(lián);如果有身體異常情況,則系統(tǒng)自動提示相關(guān)工作人員,及時與接種者取得聯(lián)系.
接種者論壇模塊時序流程如圖8 所示,接種者調(diào)用添加帖子接口addPostNotice,實現(xiàn)對帖子的添加;接種調(diào)用查詢接口,根據(jù)帖子的id 查詢帖子的明細信息及評論接口;調(diào)用添加評論接口addCommitInfo實現(xiàn)對帖子的評論,同時也可調(diào)用帖子的點贊接口likePostOrNotice 實現(xiàn)對帖子點贊. 另外,也可以調(diào)用接口queryPostNoticeList 查詢發(fā)布的帖子、公告信息.
圖8 接種者論壇時序圖Fig.8 Sequence chart of forum management
根據(jù)新冠疫苗接種全過程管理系統(tǒng)的業(yè)務(wù),主要設(shè)計了如下業(yè)務(wù)表:①表system_user 記錄用戶信息;②表system_role 記錄角色信息;③表system_user_role記錄用戶與角色的關(guān)聯(lián)關(guān)系;④表 transportation_batch_info 記錄物流批次信息;⑤表vaccines_info 記錄疫苗信息;⑥表record_physiological 記錄用戶身體狀況信息;⑦表post_notice_info 記錄帖子、公告信息;⑧表comment_info 記錄帖子評論信息;⑨表area_info 記錄地域信息.各數(shù)據(jù)表之間的關(guān)系如圖9 所示.
圖9 新冠疫苗接種全過程管理系統(tǒng)ER 圖Fig.9 Entity Relationship Diagram
根據(jù)前面對新冠疫苗接種全過程管理系統(tǒng)的需求分析與功能設(shè)計,現(xiàn)在對該系統(tǒng)進行實現(xiàn),數(shù)據(jù)庫的實現(xiàn)采用Navicat 工具構(gòu)建,數(shù)據(jù)庫表結(jié)構(gòu)根據(jù)上一章節(jié)的數(shù)據(jù)庫設(shè)計.本系統(tǒng)的實現(xiàn)采用了Vue +Elment-UI 進行前端頁面開發(fā),Google Chrome 瀏覽器呈現(xiàn)頁面,基于Java JDK1.8 環(huán)境和SpringBoot +Mybatis-Plus 框架開發(fā)后端,實現(xiàn)疫苗物流管理、疫苗倉儲管理、疫苗接種管理、接種者管理和管理員模塊,部分功能界面如下圖10 所示.
圖10 界面展示圖Fig. 10 Page display diagrams
圖10(a)為疫苗物流管理中,已寄出批次信息,可查看運輸方式和配送狀態(tài);圖10(b)為疫苗倉庫管理中,入庫操作,顯示已配送的批次列表,可選中某個批次進行接收和拒絕操作;圖10(c)為疫苗接種模塊中,疫苗接種查看界面,可查看接種者信息,并可記錄接種后的身體狀態(tài)和查看某個接種者的跟蹤情況,其中紅色表示接種的異常情況,綠色表示接種后正常情況;圖10(d)為公告、帖子查看界面,可查看某個帖子詳情,并對其進行評論和點贊.
為了評價本系統(tǒng)軟件的質(zhì)量,根據(jù)需求設(shè)計了表1的測試用例,從功能、界面等方面對系統(tǒng)進行測試.測試結(jié)果表明,本系統(tǒng)的疫苗物流管理、疫苗倉儲管理、疫苗接種管理、接種者管理、管理員模塊的所有功能均能測試通過,測試結(jié)果與預(yù)期效果一致,數(shù)據(jù)傳輸穩(wěn)定,界面排版美觀,具有良好的用戶體驗.在系統(tǒng)后續(xù)擴展測試時,需加強系統(tǒng)性能測試,進一步提高操作響應(yīng)時間.
表1 測試用例及測試結(jié)果Table 1 Test cases and results
本文立足于新冠疫苗“全過程、可追蹤”的管理需求,設(shè)計并實現(xiàn)了新冠疫苗接種全過程管理系統(tǒng). 該系統(tǒng)采用前后端分離的開發(fā)模式,前端采用了Vue 框架和Element-UI 組件庫進行頁面開發(fā)、數(shù)據(jù)渲染;后臺基于Java 的SpringBoot +Mybatis-Plus 框架進行功能接口開發(fā),從而實現(xiàn)對新冠疫苗從出廠物流運輸、倉儲、接種、接種者身體狀況跟蹤反饋,再到接著者論壇進行管理,特別對接種后身體狀況的跟蹤,并進行初步自動診斷,為市民提供優(yōu)質(zhì)便捷的診療咨詢服務(wù).
該系統(tǒng)具備極強的可行性與實用性,為醫(yī)護人員、接種者提供便捷化、信息化的疫苗接種平臺. 另外,該系統(tǒng)對疫苗全過程數(shù)據(jù)的收集,方便后期運用大數(shù)據(jù)技術(shù)對各種數(shù)據(jù)進行篩選、分析,可為科研工作提供強有力的數(shù)據(jù)分析支持.
下一步,計劃從重構(gòu)代碼提高性能、增加功能模塊這兩方面來進一步完善系統(tǒng),提高用戶的使用體驗,使本系統(tǒng)具有更大的現(xiàn)實意義與使用價值.