謝曉玲,梁 寧
(廣東藥科大學(xué) 醫(yī)藥信息工程學(xué)院,廣東 廣州 510006)
對(duì)兒童的成長信息進(jìn)行科學(xué)管理,有利于追蹤兒童的成長軌跡,實(shí)現(xiàn)兒童生理和心理健康的實(shí)時(shí)監(jiān)控,及時(shí)發(fā)現(xiàn)兒童成長過程中存在的問題并加以解決[1]。
隨著計(jì)算機(jī)技術(shù)和信息管理技術(shù)的發(fā)展,兒童成長管理系統(tǒng)發(fā)展迅速,提出了各種類型的兒童成長管理系統(tǒng)。如基于互聯(lián)網(wǎng)+的兒童健康管理平臺(tái)[2]、基于Android的兒童成長發(fā)育管理系統(tǒng)[3]、56Baby成長記錄系統(tǒng)[4]、兒童青少年成長發(fā)育評(píng)價(jià)與管理系統(tǒng)[5]和基于iOS的兒童成長參數(shù)管理系統(tǒng)[6]等。
針對(duì)兒童成長管理系統(tǒng)的需求和發(fā)展趨勢,該文設(shè)計(jì)了一種基于SSH的兒童成長管理系統(tǒng)。該系統(tǒng)基于SSH(Struts+Spring+ Hibernate)集成框架開發(fā),具有結(jié)構(gòu)清晰、便于擴(kuò)展和維護(hù)等優(yōu)點(diǎn)。系統(tǒng)采用B/S架構(gòu),具有注冊(cè)模塊、登錄模塊、成長指標(biāo)模塊、記事本記錄模塊、照片記錄模塊、視頻記錄模塊、病歷模塊、疫苗接種模塊、健康知識(shí)模塊、兒童管理模塊、個(gè)人信息模塊和系統(tǒng)介紹模塊共12個(gè)功能模塊。用戶可通過瀏覽器遠(yuǎn)程連接兒童成長管理系統(tǒng)進(jìn)行兒童成長管理的各種操作。
根據(jù)兒童成長管理系統(tǒng)的使用方式,確定系統(tǒng)的架構(gòu),如圖1所示。
圖1 系統(tǒng)架構(gòu)
系統(tǒng)采用B/S架構(gòu),由數(shù)據(jù)庫服務(wù)器、Web服務(wù)器和客戶端三部分組成[7]。數(shù)據(jù)庫服務(wù)器安裝數(shù)據(jù)庫管理系統(tǒng),在其中建立和維護(hù)兒童成長管理系統(tǒng)數(shù)據(jù)庫,提供數(shù)據(jù)服務(wù)。而在Web服務(wù)器中部署兒童成長管理系統(tǒng)程序,提供各種功能服務(wù)??蛻舳送ㄟ^瀏覽器遠(yuǎn)程連接兒童成長管理系統(tǒng)程序進(jìn)行兒童成長管理的各種操作。
經(jīng)分析和調(diào)研,確定兒童成長管理系統(tǒng)具有的功能模塊,如圖2所示[8]。整個(gè)系統(tǒng)包含注冊(cè)模塊、登錄模塊、成長指標(biāo)模塊、記事本記錄模塊、照片記錄模塊、視頻記錄模塊、病歷模塊、疫苗接種模塊、健康知識(shí)模塊、兒童管理模塊、個(gè)人信息模塊和系統(tǒng)介紹模塊共12個(gè)功能模塊。
圖2 系統(tǒng)功能模塊
表1為各功能模塊的說明。
表1 系統(tǒng)功能模塊說明
續(xù)表1
根據(jù)系統(tǒng)架構(gòu),采用Java Web方式開發(fā)系統(tǒng)[9]。數(shù)據(jù)庫管理系統(tǒng)使用MySQL 8.0。MySQL是一種廣泛流行的免費(fèi)開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。系統(tǒng)程序使用MyEclipse 10開發(fā),采用開發(fā)框架SSH。MyEclipse是主要用于Java開發(fā)的企業(yè)級(jí)集成開發(fā)環(huán)境。SSH是Struts+Spring+Hibernate的一個(gè)集成框架[10]。Struts的MVC(Model+View+Controller)設(shè)計(jì)模式使程序結(jié)構(gòu)變得清晰,模型(Model)是作為數(shù)據(jù)庫表的映射,控制器(Controller)是視圖與模型之間交互的橋梁,視圖(View)則負(fù)責(zé)客戶端的顯示。Spring是一個(gè)輕量級(jí)控制反轉(zhuǎn)(inversion of control,IoC)和面向切面(aspect oriented programming,AOP)的容器框架,其有效組織了中間層對(duì)象。Hibernate是一個(gè)開源的對(duì)象關(guān)系映射框架,它將簡單Java對(duì)象(plain ordinary java object,POJO)與數(shù)據(jù)庫表建立映射關(guān)系,可以自動(dòng)生成SQL語句,自動(dòng)執(zhí)行,簡化了數(shù)據(jù)庫操作。
根據(jù)設(shè)計(jì)的兒童成長管理系統(tǒng)功能,在系統(tǒng)數(shù)據(jù)庫中設(shè)計(jì)用戶表、成長記錄表、記事表、照片表、視頻表、疫苗信息表、疫苗提醒表、疫苗狀態(tài)表、病歷表、常見病知識(shí)表和急救知識(shí)表共12個(gè)表。各表的字段組成如表2所示。
表2 系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
續(xù)表2
其中:
(1)用戶表用于存儲(chǔ)用戶的詳細(xì)信息,用戶一般為兒童監(jiān)護(hù)人,以賬號(hào)為主鍵;
(2)兒童信息表用于存儲(chǔ)兒童的基本信息,以編號(hào)為主鍵,以賬號(hào)為外鍵,關(guān)聯(lián)主表用戶表,賬號(hào)表示某個(gè)兒童屬于哪個(gè)用戶管理;
(3)成長指標(biāo)表用于存儲(chǔ)兒童的成長指標(biāo)數(shù)據(jù),以編號(hào)為主鍵,以兒童編號(hào)為外鍵,關(guān)聯(lián)主表兒童信息表,兒童編號(hào)表示某條成長記錄屬于哪個(gè)兒童;
(4)記事表、照片表、視頻表和病歷表分別用于存儲(chǔ)兒童的日常事件、照片、視頻和病歷,它們的設(shè)計(jì)與成長記錄表類似;
(5)疫苗信息表用于存儲(chǔ)疫苗信息,以編號(hào)為主鍵;疫苗提醒表用于存儲(chǔ)疫苗提醒信息,以編號(hào)為主鍵,以疫苗編號(hào)為外鍵,關(guān)聯(lián)主表疫苗信息表;疫苗狀態(tài)表用于存儲(chǔ)兒童疫苗注射情況,其設(shè)計(jì)與疫苗提醒表類似;
(6)常見病表用于存儲(chǔ)兒童常見病知識(shí),以編號(hào)為主鍵,以賬號(hào)為外鍵,關(guān)聯(lián)主表用戶表,賬號(hào)表示某個(gè)常見病知識(shí)記錄屬于哪個(gè)用戶添加;急救知識(shí)表用于存儲(chǔ)急救知識(shí),其設(shè)計(jì)與常見病表類似。
系統(tǒng)程序采用SSH集成框架開發(fā)。在設(shè)計(jì)時(shí),需要配置web.xml、struts.xml和applicationContext.xml三個(gè)文件[11]。其中:
(1)web.xml為項(xiàng)目配置文件,添加的配置內(nèi)容主要為:Spring核心監(jiān)聽器、Struts過濾器以及防亂碼過濾器;
(2)struts.xml為Struts配置文件,添加的配置內(nèi)容主要為:各種功能的用戶請(qǐng)求和Action之間的對(duì)應(yīng)關(guān)系;
(3)applicationContext.xml為Spring配置文件,添加的配置內(nèi)容主要為:數(shù)據(jù)源、sessionFactory、hibernateTemplate、service等。
系統(tǒng)程序采用DAO訪問數(shù)據(jù)庫。方法是設(shè)計(jì)數(shù)據(jù)庫操作類,將數(shù)據(jù)庫的各個(gè)表映射成對(duì)象,封裝數(shù)據(jù)的增刪查改操作。在Spring配置文件中,對(duì)DAO注入sessionFactory,DAO負(fù)責(zé)與數(shù)據(jù)庫操作類的對(duì)象交互。
在系統(tǒng)中,共設(shè)計(jì)了user、child、growthrecord、notepad、photo、video、medicalrecord、vaccine、vaccineremind、vaccinestate、commonill、firstaid共12個(gè)類,分別對(duì)應(yīng)數(shù)據(jù)表用戶表、兒童信息表、成長指標(biāo)表、記事表、照片表、視頻表、病歷表、疫苗信息表、疫苗提醒表、疫苗狀態(tài)表、常見病表和急救知識(shí)表。
圖3為成長記錄表操作類growthrecord,其對(duì)應(yīng)成長記錄表的字段編號(hào)、身高、體重、測量時(shí)間、上傳時(shí)間、備注、賬號(hào)分別設(shè)計(jì)了屬性recordID、height、weight、measureTime、reUptime、recordRemarks、userNum,并設(shè)計(jì)了該表的操作方法查看記錄列表()、添加記錄列表()、刪除記錄列表()和修改記錄列表()。
圖3 成長記錄表操作類
3.3.1 成長指標(biāo)模塊設(shè)計(jì)
成長指標(biāo)模塊主要完成兒童成長指標(biāo)值記錄和身高體重曲線展示兩個(gè)功能。該功能操作的數(shù)據(jù)表主要為成長記錄表。
圖4 身高體重曲線繪制實(shí)現(xiàn)流程
兒童成長指標(biāo)值記錄功能包括兒童成長指標(biāo)值的顯示、添加、修改和刪除等操作。其實(shí)現(xiàn)方法為設(shè)計(jì)GrowthRecordAction類,在前端頁面?zhèn)鬟f參數(shù)與GrowthRecordAction類交互,GrowthRecordAction類操作數(shù)據(jù)庫中的成長記錄表并返回結(jié)果在前端顯示。
身高體重曲線展示兒童身高和體重隨時(shí)間變化的曲線。該曲線使用開源可視化庫ECharts繪制。ECharts是一個(gè)使用JavaScript 實(shí)現(xiàn)的開源可視化庫,底層依賴輕量級(jí)的矢量圖形庫ZRender,提供直觀、交互豐富、可高度個(gè)性化定制的可視化圖表,兼容大部分的瀏覽器,可流暢運(yùn)行在個(gè)人電腦和移動(dòng)設(shè)備上。身高體重曲線繪制實(shí)現(xiàn)流程如圖4所示。
3.3.2 疫苗接種模塊設(shè)計(jì)
疫苗接種模塊主要完成兒童疫苗接種記錄和提醒兩個(gè)功能。該功能操作的數(shù)據(jù)表主要為疫苗信息表、疫苗提醒表和疫苗狀態(tài)表。
兒童疫苗接種記錄功能包括兒童疫苗接種記錄的顯示、添加、修改和刪除等操作。其實(shí)現(xiàn)方法為設(shè)計(jì)VaccineAction類,在前端頁面?zhèn)鬟f參數(shù)與VaccineAction類交互,VaccineAction類操作數(shù)據(jù)庫中的疫苗信息表和疫苗狀態(tài)表并返回結(jié)果在前端顯示。
兒童疫苗接種提醒功能包括設(shè)置提醒時(shí)間和提醒內(nèi)容顯示兩個(gè)操作。提醒內(nèi)容在系統(tǒng)主界面頂部以紅色字體顯示。設(shè)置提醒時(shí)間操作的實(shí)現(xiàn)方法如算法1所示。
算法1:設(shè)置兒童疫苗接種提醒時(shí)間實(shí)現(xiàn)算法。
//獲取用戶設(shè)置的疫苗接種提醒內(nèi)容
Integer vacId=request.getParameter("vacId");
String remind=request.getParameter("remind");
String rDate=request.getParameter("rDate");
User user=(User) request.getSession().getAttribute("user");
//根據(jù)疫苗編號(hào)獲取接種疫苗信息
Vaccine vaccine=
vService.getVaccine(Vaccine.class, vacId);
//設(shè)置疫苗接種提醒內(nèi)容
vaccineremind.setUser(user);
vaccineremind.setVaccine(vaccine);
vaccineremind.setRemind (remind);
vaccineremind.setRDate(sdf.parse(rDate));
//設(shè)置疫苗接種提醒內(nèi)容進(jìn)服務(wù)隊(duì)列
第四,應(yīng)站在動(dòng)態(tài)、發(fā)展的立場,而非采用機(jī)械、固化的眼光去審視民法基本原則?;驹瓌t是民法基本理念的立法確認(rèn),而民法基本理念是其所處特定時(shí)代特色的法律展現(xiàn)?!熬G色原則”作為《民法典》對(duì)日益嚴(yán)峻的自然資源、生態(tài)環(huán)境危機(jī)的有力回應(yīng),統(tǒng)領(lǐng)民事立法和民事裁判的實(shí)踐面向,引導(dǎo)著民事主體選擇低能耗、環(huán)境友好的生產(chǎn)、生活方式,彰顯了立法者對(duì)當(dāng)前自然資源、環(huán)境問題的價(jià)值取向。
vService.addVaccineRemind(vaccineremind);
3.3.3 病歷模塊設(shè)計(jì)
病歷模塊主要完成兒童病歷存檔功能,包括兒童病歷信息的顯示、添加、修改和刪除等操作[12]。該功能模塊操作的數(shù)據(jù)庫表為病歷表。
兒童病歷信息包括病名、生病開始時(shí)間、生病結(jié)束時(shí)間、使用藥物、就診醫(yī)院、備注、病歷上傳時(shí)間以及病歷照片等[13]。圖5為病歷信息顯示實(shí)現(xiàn)流程。
圖5 病歷信息顯示實(shí)現(xiàn)流程
3.3.4 視頻記錄模塊設(shè)計(jì)
視頻記錄模塊主要完成兒童視頻記錄功能,包括兒童視頻記錄的查看、添加、修改、刪除和搜索等操作。其實(shí)現(xiàn)方法為設(shè)計(jì)VideoAction類,在前端頁面?zhèn)鬟f參數(shù)與VideoAction類交互,VideoAction類操作數(shù)據(jù)庫中的視頻表返回結(jié)果在前端顯示。
兒童視頻添加的實(shí)現(xiàn)方法如算法2所示。
算法2:兒童視頻添加實(shí)現(xiàn)算法。
//設(shè)置文件名
String newName=thisTime+random+picFileName.substring(picFileName.lastIndexOf("."));
//設(shè)置文件保存路徑
String realPath=ServletActionContext.getServletContext().getRealPath("/img/uploadVideo");
//保存文件
File file=new File(realPath,newName);
FileUtils.copyFile(pic, file);
//設(shè)置視頻記錄信息,包括上傳用戶、鏈接地址、時(shí)間和描述等信息
User user=(User) request.getSession().getAttribute("user");
video.setUser(user);
video.setVideoUrl(newName);
video.setVideoUptime(accessTime);
video.setVRemarks(video.getVRemarks());
//在數(shù)據(jù)庫中寫入視頻記錄
videoService.addVideo(video);
為了測試設(shè)計(jì)的系統(tǒng)是否滿足要求,對(duì)系統(tǒng)進(jìn)行了集成測試[14]。集成測試采用黑盒測試的方法,采用10個(gè)分布于不同位置的客戶端訪問系統(tǒng),從注冊(cè)模塊開始,逐個(gè)測試系統(tǒng)的11個(gè)功能模塊是否滿足要求[15]。
圖6為測試時(shí)系統(tǒng)運(yùn)行截圖,圖6(a)為兒童身高體重曲線圖,(b)為疫苗顯示列表。
(a)身高體重曲線
表3為系統(tǒng)測試結(jié)果。由表3所示,分布在不同地方的10個(gè)客戶端的10次測試都取得了符合要求的運(yùn)行結(jié)果,符合要求的比例為100%。
表3 系統(tǒng)測試結(jié)果
系統(tǒng)測試完善后,對(duì)系統(tǒng)進(jìn)行了推廣應(yīng)用,并通過調(diào)查問卷的形式回收應(yīng)用反饋情況,收到了良好的反饋效果。
針對(duì)兒童成長信息管理的需求,設(shè)計(jì)了一種基于SSH的兒童成長管理系統(tǒng)。系統(tǒng)使用SSH框架開發(fā),具有結(jié)構(gòu)清晰、便于擴(kuò)展和維護(hù)等優(yōu)點(diǎn)。整個(gè)系統(tǒng)包含注冊(cè)模塊、登錄模塊、成長指標(biāo)模塊、記事本記錄模塊、照片記錄模塊、視頻記錄模塊、病歷模塊、疫苗接種模塊、健康知識(shí)模塊、兒童管理模塊、個(gè)人信息模塊和系統(tǒng)介紹模塊共12個(gè)功能模塊,滿足了兒童成長信息管理的各種需求。詳細(xì)介紹了系統(tǒng)的總體設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)和程序設(shè)計(jì),并對(duì)系統(tǒng)進(jìn)行了測試與應(yīng)用。測試與應(yīng)用結(jié)果表明,該系統(tǒng)很好地實(shí)現(xiàn)了相應(yīng)的功能,應(yīng)用反饋效果良好。