








摘要:為解決傳統(tǒng)線(xiàn)下醫(yī)療服務(wù)存在的掛號(hào)難、排隊(duì)時(shí)間長(zhǎng)等痛點(diǎn)問(wèn)題,文章旨在設(shè)計(jì)并實(shí)現(xiàn)一套基于微信小程序的掌上醫(yī)療服務(wù)系統(tǒng)。該系統(tǒng)采用前后端分離的架構(gòu),前端基于uni-app框架構(gòu)建跨平臺(tái)的用戶(hù)界面,后端利用Spring Boot框架處理核心業(yè)務(wù)邏輯,并采用MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)持久化。該系統(tǒng)操作便捷、易于維護(hù),能夠有效整合醫(yī)療資源,優(yōu)化患者的就醫(yī)流程,為提升醫(yī)療服務(wù)效率與信息化水平提供了可行的技術(shù)方案。
關(guān)鍵詞:醫(yī)療服務(wù);小程序;uni-app;Spring Boot;信息化
中圖分類(lèi)號(hào):TP311" " " 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2025)28-0034-05
開(kāi)放科學(xué)(資源服務(wù)) 標(biāo)識(shí)碼(OSID)
0 引言
0.1 研究背景
隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,醫(yī)療服務(wù)領(lǐng)域正積極探索數(shù)字化轉(zhuǎn)型。傳統(tǒng)的線(xiàn)下掛號(hào)、排隊(duì)、問(wèn)診等就醫(yī)方式受限于當(dāng)?shù)氐尼t(yī)療條件,難以及時(shí)滿(mǎn)足患者的就醫(yī)需求。而微信小程序使用便捷、可跨平臺(tái)、易訪(fǎng)問(wèn)、易使用等特點(diǎn),使其逐漸成為醫(yī)療行業(yè)數(shù)字化轉(zhuǎn)型的理想選擇。通過(guò)微信小程序,患者可隨時(shí)隨地查詢(xún)醫(yī)生信息、辦理預(yù)約掛號(hào)、查詢(xún)檢查報(bào)告等,極大地提升了患者的就醫(yī)體驗(yàn)[1]。
0.2 相關(guān)技術(shù)
目前,國(guó)內(nèi)外的移動(dòng)醫(yī)療應(yīng)用市場(chǎng)還處在不斷發(fā)展和完善的階段,現(xiàn)有的解決方案普遍存在用戶(hù)體驗(yàn)不佳、功能單一、平臺(tái)兼容性差等諸多問(wèn)題。針對(duì)這些行業(yè)挑戰(zhàn),本文設(shè)計(jì)并實(shí)現(xiàn)了一套創(chuàng)新性的跨平臺(tái)掌上醫(yī)療解決方案。本系統(tǒng)采用前后端分離的架構(gòu),通過(guò)以下技術(shù)組合實(shí)現(xiàn)了高效、安全、可擴(kuò)展的醫(yī)療服務(wù)。
1) 后端服務(wù)層。基于Spring Boot[2]框架構(gòu)建微服務(wù)架構(gòu),其核心優(yōu)勢(shì)包括:
①內(nèi)置Tomcat容器,實(shí)現(xiàn)快速部署,簡(jiǎn)化運(yùn)維流程。
②集成Spring Security,構(gòu)建多層次的安全防護(hù)體系,以確保患者隱私數(shù)據(jù)(如電子處方、病歷信息) 的端到端加密傳輸。
③通過(guò)Feign聲明式服務(wù)調(diào)用,實(shí)現(xiàn)醫(yī)生排班、藥品庫(kù)存等模塊的松耦合協(xié)同。
2) 前端交互層。選用uni-app 3.0跨平臺(tái)框架,其技術(shù)特色體現(xiàn)在:
①基于Vue 3.0的Composition API開(kāi)發(fā)模式,實(shí)現(xiàn)患者端與醫(yī)生端界面90%以上的代碼復(fù)用率[3]。
②深度集成騰訊云TRTC(Tencent Real-Time Communication) SDK,優(yōu)化后的視頻問(wèn)診模塊達(dá)到了:
a) 端到端延遲≤280 ms(實(shí)測(cè)數(shù)據(jù)) 。
b) 支持720 P/1 080 P的自適應(yīng)分辨率。
③通過(guò)條件編譯技術(shù),實(shí)現(xiàn)微信小程序與H5平臺(tái)的特有功能適配。
3) 數(shù)據(jù)存儲(chǔ)層。采用MySQL 8.0關(guān)系型數(shù)據(jù)庫(kù),其關(guān)鍵優(yōu)化措施包括[4]:
①針對(duì)高頻查詢(xún)場(chǎng)景(如醫(yī)生出診查詢(xún)) 建立復(fù)合索引,查詢(xún)性能提升了40%(從83 ms優(yōu)化至50 ms) 。
②配置主從復(fù)制集群,讀寫(xiě)分離后,QPS提升至15 000+。
最后,本系統(tǒng)具有以下突出優(yōu)勢(shì):
1) 全平臺(tái)覆蓋。一套代碼同時(shí)發(fā)布微信小程序、H5、Android/iOS應(yīng)用,降低60%以上的開(kāi)發(fā)成本。
2) 醫(yī)療級(jí)實(shí)時(shí)通信。集成了TRTC的智能抗丟包算法,在30%網(wǎng)絡(luò)丟包的情況下仍保持視頻問(wèn)診的可用性。
3) 高并發(fā)處理。基于微服務(wù)的彈性架構(gòu),在壓力測(cè)試中實(shí)現(xiàn)了:
①掛號(hào)業(yè)務(wù)175 TPS(每秒完成的事務(wù)數(shù)) 的處理能力。
②問(wèn)診消息98.7%的消息投遞成功率。
1 系統(tǒng)分析與設(shè)計(jì)
1.1 需求分析
系統(tǒng)針對(duì)不同的用戶(hù)需求特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了相關(guān)功能。當(dāng)用戶(hù)登錄系統(tǒng)后,不同類(lèi)型的用戶(hù)具有不同的使用功能和權(quán)限。患者可通過(guò)在線(xiàn)查看醫(yī)生信息,選擇預(yù)約的時(shí)間進(jìn)行掛號(hào)就醫(yī),就醫(yī)結(jié)束后,在線(xiàn)支付費(fèi)用并獲取電子處方;醫(yī)生通過(guò)查看患者的預(yù)約信息,實(shí)現(xiàn)在線(xiàn)視頻問(wèn)診服務(wù),通過(guò)視頻完成對(duì)患者的診斷、治療;管理員通過(guò)對(duì)患者信息的管理,分配醫(yī)生出診以及對(duì)藥品進(jìn)行管理;藥師根據(jù)醫(yī)生開(kāi)具的處方進(jìn)行藥物的管理和配置[5]。詳細(xì)的用戶(hù)用例圖如圖1所示。
1.2 整體架構(gòu)設(shè)計(jì)
本系統(tǒng)采用前后端分離的架構(gòu),通過(guò)對(duì)邏輯分層,降低層與層之間的耦合度,以提高系統(tǒng)的擴(kuò)展性和維護(hù)性。系統(tǒng)的邏輯結(jié)構(gòu)自上而下分別為視圖層、控制層、業(yè)務(wù)層、持久層和數(shù)據(jù)層。視圖層采用Vue框架,負(fù)責(zé)與用戶(hù)進(jìn)行交互;控制層采用Spring Boot框架,負(fù)責(zé)處理用戶(hù)的請(qǐng)求,并調(diào)用相應(yīng)的業(yè)務(wù)層服務(wù);業(yè)務(wù)層采用Spring框架的IOC特性和AOP機(jī)制,將業(yè)務(wù)邏輯與通用功能進(jìn)行隔離;持久層采用MyBatis-Plus框架,實(shí)現(xiàn)Java對(duì)象與數(shù)據(jù)之間的映射;數(shù)據(jù)層采用MySQL存儲(chǔ)和管理系統(tǒng)所有的持久化數(shù)據(jù)。整體的系統(tǒng)架構(gòu)如圖2所示。
通過(guò)對(duì)系統(tǒng)用戶(hù)層次進(jìn)行分析和設(shè)計(jì),將系統(tǒng)劃分為八大功能模塊,它們分別為醫(yī)護(hù)人員管理、科室管理、診室管理、醫(yī)生出診管理、患者管理、掛號(hào)管理、視頻問(wèn)診管理和電子處方。功能架構(gòu)如圖3所示。
1) 醫(yī)護(hù)人員管理:包括對(duì)醫(yī)生與護(hù)工信息、排班及績(jī)效評(píng)估等的管理。
2) 科室管理:對(duì)科室信息、設(shè)備和人員進(jìn)行增、刪、改、查等配置。
3) 診室管理:對(duì)診室信息、設(shè)備及使用的管理。
4) 醫(yī)生出診管理:負(fù)責(zé)對(duì)醫(yī)生時(shí)間表、醫(yī)療記錄、患者反饋等的管理。
5) 患者管理:對(duì)個(gè)人信息、病歷、預(yù)約和就診歷史進(jìn)行管理。
6) 掛號(hào)管理:提供在線(xiàn)掛號(hào)與掛號(hào)記錄的查詢(xún)服務(wù)。
7) 視頻問(wèn)診:支持在線(xiàn)預(yù)約醫(yī)生、在線(xiàn)醫(yī)療執(zhí)行與在線(xiàn)醫(yī)療記錄管理。
8) 電子處方管理:對(duì)醫(yī)生在線(xiàn)問(wèn)診開(kāi)具的處方進(jìn)行增、刪、改、查的管理。
2 數(shù)據(jù)庫(kù)設(shè)計(jì)
本系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)不僅滿(mǎn)足了數(shù)據(jù)庫(kù)設(shè)計(jì)中第三范式的要求,而且還考慮到系統(tǒng)后續(xù)的擴(kuò)展性。針對(duì)不同的子系統(tǒng)(如醫(yī)生管理、患者管理、掛號(hào)管理、視頻問(wèn)診等) 進(jìn)行表的劃分與歸類(lèi),以降低數(shù)據(jù)冗余的風(fēng)險(xiǎn),從而提高查詢(xún)效率和節(jié)省存儲(chǔ)空間。本系統(tǒng)從實(shí)際需求出發(fā),深入分析了各實(shí)體間的關(guān)系,得到患者、醫(yī)生、處方等實(shí)體間的聯(lián)系。詳細(xì)的系統(tǒng)實(shí)體—關(guān)系圖如圖4所示。
根據(jù)該系統(tǒng)中實(shí)體—關(guān)系圖的關(guān)聯(lián)關(guān)系創(chuàng)建數(shù)據(jù)庫(kù)表,它們主要有患者用戶(hù)表、人臉記錄表、科室表、科室門(mén)診表、醫(yī)生表、掛號(hào)費(fèi)用表、門(mén)診醫(yī)生交叉表、醫(yī)生出診表、出診時(shí)段表、掛號(hào)表和處方表。其中,患者用戶(hù)表和處方表的字段和結(jié)構(gòu)描述分別如表1和表2所示。
3 系統(tǒng)實(shí)現(xiàn)
本系統(tǒng)主要由組織管理、醫(yī)護(hù)管理、出診管理、視頻問(wèn)診、電子處方及患者小程序共6個(gè)子系統(tǒng)構(gòu)成。系統(tǒng)中主要包括醫(yī)療科室管理、醫(yī)療診室管理、角色管理、用戶(hù)管理等功能。各功能在實(shí)現(xiàn)上遵循高內(nèi)聚、低耦合的設(shè)計(jì)原則,以確保功能實(shí)現(xiàn)和維護(hù)的可靠性。
3.1 視頻問(wèn)診的實(shí)現(xiàn)
視頻問(wèn)診是本系統(tǒng)的核心功能,它通過(guò)TRTC可實(shí)現(xiàn)在線(xiàn)視頻問(wèn)診。整個(gè)集成過(guò)程包括初始化階段、加入房間、患者—醫(yī)生匹配、音視頻流處理等,詳細(xì)的集成過(guò)程如下。
1) 前端初始化TRTC客戶(hù)端,需要填寫(xiě)對(duì)應(yīng)的用戶(hù)ID和簽名。
const client = TRTC.createClient({
mode: 'videoCall',
sdkAppId: '您的SDKAppID',
userId: '當(dāng)前用戶(hù)ID',
userSig: '用戶(hù)簽名'
});
2) 加入房間流程。
前端發(fā)起請(qǐng)求,獲取TRTC房間號(hào)與用戶(hù)簽名。
后端請(qǐng)求騰訊云,生成用戶(hù)簽名。
后端將騰訊云的信息返回至前端,信息包含{roomId, userId, userSig}。
前端直接請(qǐng)求TRTC,進(jìn)入指定房間。
TRTC將結(jié)果返回至前端,通知其加入成功。
3) 患者—醫(yī)生匹配流程。
// 使用WebSocket實(shí)現(xiàn)實(shí)時(shí)信令
const signaling = new WebSocket('wss://your-signaling-server');
// 患者發(fā)起呼叫
signaling.send(JSON.stringify({
type: 'call_request',
from: patientId,
to: doctorId,
roomId: trtcRoomId
}));
// 醫(yī)生響應(yīng)
signaling.send(JSON.stringify({
type: 'call_response',
from: doctorId,
accepted: true,
roomId: trtcRoomId
}));
4)音頻處理流程。
// 采集本地流
const localStream = TRTC.createStream({
userId: localUserId,
audio: true,
video: true
});
await localStream.initialize();
// 訂閱遠(yuǎn)端流
client.on('stream-added', event =gt; {
const remoteStream = event.stream;
client.subscribe(remoteStream);
});
client.on('stream-subscribed', event =gt; {
const remoteStream = event.stream;
remoteStream.play('remote-video-container');
});
// 處理網(wǎng)絡(luò)質(zhì)量事件
client.on('network-quality', event =gt; {
const { uplink, downlink } = event;
// 根據(jù)網(wǎng)絡(luò)質(zhì)量調(diào)整分辨率/碼率
});
3.2 RESTful API設(shè)計(jì)
RESTful API是基于REST(Representational State Transfer)架構(gòu)風(fēng)格設(shè)計(jì)的Web API。它使用HTTP協(xié)議的標(biāo)準(zhǔn)方法(GET、POST、PUT、DELETE等) 來(lái)操作資源,是一種輕量級(jí)、可擴(kuò)展的Web服務(wù)設(shè)計(jì)方式。本系統(tǒng)采用該方案實(shí)現(xiàn)前后端的數(shù)據(jù)傳輸。其中,在線(xiàn)掛號(hào)功能RESTful API設(shè)計(jì)如下:
1) 獲取可預(yù)約醫(yī)生列表。
Endpoint: GET /api/appointments/doctors
請(qǐng)求參數(shù):{
\"departmentId\": \"cardiology\",
\"date\": \"2025-07-23\",
\"page\": 1,
\"pageSize\": 10
}
2) 返回響應(yīng)結(jié)果。
{
\"code\": 200,
\"data\": {
\"doctors\": [
{
\"id\": \"doc_12345\",
\"name\": \"張醫(yī)生\",
\"title\": \"主任醫(yī)師\",
\"department\": \"心血管內(nèi)科\",
\"avatar\": \"https://www.skrmn.com/avatars/doc_12345.jpg\",
\"availableSlots\": [
{\"time\": \"09:00-09:30\", \"isAvailable\": true},
{\"time\": \"10:00-10:30\", \"isAvailable\": 1}
],
\"fee\": 50.00
}
],
\"pagination\": {
\"total\": 15,
\"currentPage\": 1,
\"pageSize\": 10
}
}
}
3) 提交預(yù)約請(qǐng)求。
Endpoint: POST /api/appointments
{
\"doctorId\": \"doc_12345\",
\"patientId\": \"pat_67890\",
\"appointmentTime\": \"2025-07-23 T09:00:00\",
\"symptoms\": \"近期胸悶氣短\",
\"medicalHistory\": \"高血壓3年\"
}
4) 成功響應(yīng)。
{
\"code\": 201,
\"data\": {
\"appointmentId\": \"appt_xyz789\",
\"doctorName\": \"張醫(yī)生\",
\"appointmentTime\": \"2025-07-23 T09:00:00\",
\"orderNumber\": \"GH20250723001\",
\"status\": \"pending_payment\"
}}
3.3 系統(tǒng)實(shí)現(xiàn)展示
當(dāng)用戶(hù)第一次使用本系統(tǒng)時(shí),需要?jiǎng)?chuàng)建就醫(yī)信息卡,填寫(xiě)個(gè)人基本信息、歷史病例情況以及選擇的醫(yī)保類(lèi)型等,詳情如圖5所示。
患者通過(guò)賬號(hào)登錄本系統(tǒng)后,可根據(jù)時(shí)間、病情等情況進(jìn)行在線(xiàn)預(yù)約掛號(hào),對(duì)預(yù)約掛號(hào)的訂單支付完成后,可在“我的掛號(hào)”中查詢(xún)掛號(hào)詳情,具體如圖6所示。
患者預(yù)約成功后,按照指定的預(yù)約時(shí)間,準(zhǔn)時(shí)通過(guò)在線(xiàn)視頻與醫(yī)生進(jìn)行病情溝通,讓醫(yī)生為其進(jìn)行醫(yī)療診斷,詳情如圖7所示。
4 系統(tǒng)測(cè)試
4.1 功能測(cè)試
功能測(cè)試用于檢查系統(tǒng)是否按照設(shè)計(jì)要求執(zhí)行每個(gè)功能,例如用戶(hù)注冊(cè)、登錄、掛號(hào)等。通過(guò)功能測(cè)試,驗(yàn)證了系統(tǒng)的每個(gè)功能是否能按預(yù)期工作,確保用戶(hù)在使用過(guò)程中不會(huì)出現(xiàn)錯(cuò)誤。部分測(cè)試用例如表3所示。
4.2 性能測(cè)試
本系統(tǒng)在性能測(cè)試環(huán)節(jié),使用JMeter壓測(cè)工具,模擬不同的用戶(hù)對(duì)系統(tǒng)進(jìn)行并發(fā)訪(fǎng)問(wèn),通過(guò)統(tǒng)計(jì)對(duì)應(yīng)的平均響應(yīng)時(shí)間、錯(cuò)誤率和吞吐量等指標(biāo)來(lái)衡量系統(tǒng)的可靠性。根據(jù)表4得到的性能測(cè)試結(jié)果,系統(tǒng)在并發(fā)用戶(hù)數(shù)為500時(shí)能保持穩(wěn)定運(yùn)行,超過(guò)后則須對(duì)服務(wù)器進(jìn)行擴(kuò)容。
4.3 兼容性測(cè)試
通過(guò)對(duì)該系統(tǒng)進(jìn)行兼容性測(cè)試,測(cè)試結(jié)果表明,系統(tǒng)可覆蓋主流的移動(dòng)設(shè)備及瀏覽器,具備較強(qiáng)的跨平臺(tái)使用的能力,符合系統(tǒng)開(kāi)發(fā)時(shí)定下的目標(biāo)。部分兼容性測(cè)試結(jié)果如表5所示。
5 結(jié)論
本文基于前后端分離的架構(gòu),成功設(shè)計(jì)并實(shí)現(xiàn)了一套基于Spring Boot的掌上醫(yī)療小程序。它操作簡(jiǎn)單、功能豐富,經(jīng)過(guò)對(duì)多平臺(tái)的全面測(cè)試,各項(xiàng)功能均符合預(yù)期,為中小型醫(yī)療機(jī)構(gòu)快速構(gòu)建移動(dòng)服務(wù)平臺(tái)提供了一套低成本、高效率的解決方案。本系統(tǒng)現(xiàn)階段聚焦于核心就診流程,對(duì)于慢病管理、健康宣教等功能還須進(jìn)一步完善。此外,系統(tǒng)的應(yīng)用效果尚未經(jīng)過(guò)大規(guī)模、長(zhǎng)周期的臨床驗(yàn)證。針對(duì)以上不足,未來(lái)的研究方向主要包括:1) 探索結(jié)合大語(yǔ)言模型(LLM) 技術(shù),通過(guò)集成醫(yī)療領(lǐng)域的專(zhuān)用模型,構(gòu)建智能導(dǎo)診與健康咨詢(xún)機(jī)器人,以分擔(dān)醫(yī)護(hù)人員的壓力;2) 利用數(shù)據(jù)挖掘技術(shù)分析用戶(hù)行為與醫(yī)療數(shù)據(jù),為患者提供個(gè)性化的健康管理方案與疾病風(fēng)險(xiǎn)預(yù)測(cè)。
參考文獻(xiàn):
[1] 何瑤,雷行云,王巖,等.醫(yī)院移動(dòng)醫(yī)療App在門(mén)診的功能及應(yīng)用[J].中國(guó)醫(yī)院管理,2018,38(5):36-38.
[2] 晉曉雨,任鵬姍.基于BP神經(jīng)網(wǎng)絡(luò)和SpringBoot+Vue的知識(shí)狀態(tài)診斷系統(tǒng)[J].移動(dòng)信息,2024,46(7):341-342.
[3] 黃娟.基于SpringBoot和Vue.js的醫(yī)院數(shù)據(jù)提取管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息與電腦(理論版),2023,35(22):91-93.
[4] 歐陽(yáng)桂秀.基于Java和MySQL的數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息記錄材料,2022,23(9):240-242.
[5] 徐晉.基于移動(dòng)應(yīng)用的互聯(lián)網(wǎng)醫(yī)院設(shè)計(jì)與實(shí)現(xiàn)[J].醫(yī)學(xué)信息學(xué)雜志,2021,42(2):61-65.
【通聯(lián)編輯:謝媛媛】