








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