这是一个医疗在线问诊系统,核心功能是医生与患者通过视频进行远程咨询。前端(App) UniApp(Android原生插件),后端 (Spring Boot 3)视频会议SDK,Android原生插件集成,患者提交咨询 → 后端创建云屋会议号 → 保存到患者表
↓
医生收到咨询(已预先绑定独立账号)→ 进入会议
↓
患者凭会议号进入同一会议 → 视频通话开始。关键业务规则:一医一患:每个会议号最多 2 人(1 医生 + 1 患者),第 3 人会被踢出
会议号隔离:不同会议号之间互不影响
医生优先:医生先入会,患者后入会
每咨一议:每次咨询创建新会议号(非复用),患者在提交咨询时即生成。
本项目为医疗在线视频问诊系统,采用前后端分离架构,核心解决医生与患者之间的远程实时音视频诊疗需求。
系统架构分为三层:
前端层(App端):基于 UniApp + Vue3 跨平台框架开发,使用 nvue 原生渲染页面保障视频通话性能。集成云屋RTC SDK(v4.8.2)原生插件,实现低延迟音视频通信。前端包含医生端和患者端双角色入口,通过 pages/join/ 目录下的会议模块(index.nvue 入会页、cloudRecord.nvue 会议画面、cloudApplyRecord.nvue 咨询记录页)完成视频通话全流程交互。
后端服务层:基于 JeeSite 5(Spring Boot 3 + MyBatis) 企业级快速开发平台,采用模块化设计,视频问诊业务独立为 modules/video 模块。后端负责用户管理、咨询记录管理、处方管理、过敏史/用药史等电子病历数据持久化,以及与云屋会议服务器的 API 对接(会议创建、查询、录制回放等)。数据库使用 MySQL,通过 MyBatis Mapper 实现 ORM 映射。
视频通话层:对接云屋(TCloudRoom)会议服务平台,后端通过 CloudRoomApiClient 调用 RESTful API 创建和管理会议室,App 端通过原生 SDK 插件(nativeplugins/rtcsdk-plugin)接入音视频能力,支持多人入会、成员管理、云端录制等功能。
核心业务流程设计:患者提交图文/视频咨询 → 后端即时创建独立会议号并绑定到咨询记录 → 医生接诊确认 → 医生凭会议号先进入会议室 → 患者凭同一会议号加入 → 双方进行音视频诊疗 → 结束会话并保存记录。每个咨询生成唯一会议号,实现"一咨一议"的隔离机制,不同会议号之间互不干扰,单房间上限2人(1医1患),第三人自动踢出。
2. "我"的贡献模块和结果
本人独立负责以下核心模块的设计与开发:
(1)视频会议集成模块:完成了云屋SDK在UniApp Android端的完整集成工作,包括原生插件封装、登录鉴权流程、会议室创建与加入、成员状态监听、异常断线重连等全链路功能。解决了 SDK 在 UniApp nvue 页面间跳转时状态保持、重复登录检测、退出会议时机控制等多个技术难点,使视频通话成功率达到稳定水平。
(2)会议号管理与存储改造:设计了从"医生账号绑定固定会议号"到"每次咨询动态创建独立会议号"的方案迁移,将会议号存储位置从 user 表 remark 字段迁移至 consultation_record 表的 attachment_ids 字段,实现了多医生多患者并发咨询场景下会议号的正确隔离与管理。
(3)后端会议API对接:在 CloudRoomApiClient 类中实现了云屋会议 REST AP