以下是一套基于Java技术的多端医护上门系统源码方案,涵盖系统架构、核心功能、技术选型及创新亮点:
一、系统架构设计
分层架构:
- 后端:采用Spring Boot 2.7.x或更高版本作为核心框架,简化开发流程,提升开发效率。数据持久层使用MyBatis-Plus 3.5.x,简化数据库操作,支持动态SQL生成。数据库选用MySQL 8.0,存储用户信息、订单记录等结构化数据,支持事务处理。缓存与会话管理采用Redis集群,缓存热点数据,如医护人员状态、订单信息,响应时间小于100毫秒。
- 前端:多端适配采用UniApp(基于Vue语法),实现微信小程序、APP、公众号及H5端代码复用,降低开发成本。管理后台使用Vue 3 + Element-UI,提供直观的UI组件与数据可视化能力,优化运营效率。
微服务架构:
- 将系统拆分为用户服务、订单服务、医护调度服务、支付服务等独立模块,通过Nacos实现服务注册与发现,提高系统的可扩展性和可维护性。
- 使用Sentinel实现流量控制与熔断降级,支持高并发预约请求。
安全架构:
- 身份认证采用JWT(JSON Web Token),实现无状态的身份验证机制,保障用户登录安全。
- 数据加密方面,对用户敏感信息(如手机号、病历)采用AES-256加密存储,传输过程使用HTTPS协议。
- 权限控制基于RBAC权限模型,实现基于角色的细粒度权限分配,防止数据泄露。
二、核心功能实现
用户服务:
- 支持手机号、微信等多种注册登录方式,利用JWT实现身份验证。
- 用户可查看和编辑个人信息,包括姓名、联系方式、地址等。
- 信用评价功能,用户可对医护人员的服务进行评价和反馈,为其他用户提供参考。
订单服务:
- 订单创建:用户选择服务类型、时间、医护人员等信息,创建订单。
- 订单状态管理:订单状态包括待支付、已支付、待服务、服务中、已完成等,支持状态流转验证和状态变更日志记录。
- 订单查询与统计:用户可查询自己的订单记录,商家可统计订单数据,分析业务情况。
医护调度服务:
- 医护人员管理:管理医护人员的信息,包括姓名、资质、经验、服务评价等。
- 智能匹配:基于LBS定位和医护人员空闲时间,自动匹配用户预约请求,提高预约成功率。
- 实时位置监控:医护人员通过移动端APP实时上传位置信息,系统展示医护人员位置,优化服务透明度。
支付服务:
- 集成微信支付、支付宝等支付方式,实现服务费用的在线支付。
- 支付结果通知:支付成功后,通过消息队列异步通知订单服务更新订单状态。
三、技术选型与实现细节
数据库设计:
- 以医护订单表为例,设计如下:
sqlCREATE TABLE `medical_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `order_no` varchar(32) NOT NULL COMMENT '订单编号', `patient_id` bigint(20) NOT NULL COMMENT '患者ID', `nurse_id` bigint(20) DEFAULT NULL COMMENT '护士ID', `service_type` tinyint(4) NOT NULL COMMENT '服务类型', `appointment_time` datetime NOT NULL COMMENT '预约时间', `address` varchar(255) NOT NULL COMMENT '上门地址', `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '订单状态', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_no` (`order_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='医护订单表';MyBatis-Plus数据访问层实现:
- 订单实体类:
java@Data @TableName("medical_order") public class MedicalOrder { @TableId(type = IdType.AUTO) private Long id; private String orderNo; private Long patientId; private Long nurseId; private Integer serviceType; private Date appointmentTime; private String address; private Integer status; private Date createTime; private Date updateTime; }- Mapper接口:
javapublic interface MedicalOrderMapper extends BaseMapper<MedicalOrder> { @Select("SELECT * FROM medical_order WHERE status = #{status}") List<MedicalOrder> selectByStatus(@Param("status") Integer status); }- Service层实现:
java@Service public class MedicalOrderServiceImpl extends ServiceImpl<MedicalOrderMapper, MedicalOrder> implements MedicalOrderService { @Override public Page<MedicalOrder> queryOrdersByPage(OrderQueryDTO queryDTO) { Page<MedicalOrder> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize()); LambdaQueryWrapper<MedicalOrder> wrapper = Wrappers.lambdaQuery(); wrapper.eq(MedicalOrder::getStatus, queryDTO.getStatus()) .ge(queryDTO.getStartTime() != null, MedicalOrder::getCreateTime, queryDTO.getStartTime()) .le(queryDTO.getEndTime() != null, MedicalOrder::getCreateTime, queryDTO.getEndTime()) .orderByDesc(MedicalOrder::getCreateTime); return baseMapper.selectPage(page, wrapper); } }JWT认证与权限控制:
- JWT工具类:
java@Component public class JwtTokenUtil { private String secret = "medical-secret-key"; private Long expiration = 86400L; // 24小时 public String generateToken(UserDetails userDetails) { Map<String, Object> claims = new HashMap<>(); claims.put("username", userDetails.getUsername()); // 其他claims... return Jwts.builder() .setClaims(claims) .setSubject(userDetails.getUsername()) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + expiration * 1000)) .signWith(SignatureAlgorithm.HS512, secret) .compact(); } }
四、创新亮点与扩展功能
AI智能匹配:
- 基于用户画像与医护人员标签的匹配度计算,实现智能推荐医护人员,提高预约成功率。
实时服务跟踪:
- 医护人员通过移动端APP实时上传位置信息,系统展示医护人员位置,优化服务透明度。
- 服务进度追踪:用户端实时显示服务进度,支持进度异常预警。
智能通讯与记录:
- 端到端加密通讯:集成ZIM SDK实现用户与医护人员实时语音/文字通讯,采用AES-256加密传输。
- 服务记录仪:医护人员APP自动录制服务过程关键片段,上传至云端存证。
- AI语音转写:通过语音识别服务自动转写服务录音,生成结构化服务报告。
健康数据管理:
- 实时监测:通过智能手环、血压计等设备实时采集老年人生命体征数据,如血压、血糖、心率等。
- 异常预警:规则引擎分析健康数据,异常时自动触发报警并推送至社区医院和家属。
- 历史数据可视化:提供历史数据可视化和健康报告生成功能,辅助医生诊断和健康管理。