1. 医院预约挂号管理系统的架构设计
1.1 系统整体架构
医院预约挂号管理系统采用前后端分离架构,前端使用Vue.js框架,后端采用Spring Boot技术栈。这种架构模式将用户界面与业务逻辑完全解耦,通过RESTful API进行数据交互。系统主要分为四个层次:
- 表现层:Vue.js构建的响应式Web界面
- API层:Spring Boot提供的RESTful接口
- 业务逻辑层:处理核心业务规则和流程
- 数据访问层:通过MyBatis与数据库交互
这种分层架构的优势在于:
- 前后端可以并行开发,提高开发效率
- 接口定义清晰,便于团队协作
- 系统扩展性强,可以灵活应对需求变更
- 便于进行单元测试和集成测试
1.2 技术选型考量
选择Spring Boot作为后端框架主要基于以下考虑:
- 自动配置特性大幅减少XML配置
- 内嵌Tomcat服务器,简化部署流程
- 丰富的starter依赖,快速集成常用组件
- 完善的生态系统和社区支持
Vue.js作为前端框架的优势:
- 轻量级,学习曲线平缓
- 响应式数据绑定,开发效率高
- 组件化开发,代码复用性强
- 丰富的生态系统(Vuex、Vue Router等)
数据库选择MySQL的原因:
- 成熟稳定,社区支持完善
- 满足医院挂号系统的数据一致性要求
- 支持事务处理,保证数据完整性
- 与Spring Boot生态集成良好
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能模块实现
2.1 用户认证与权限管理
系统采用基于Token的认证机制,用户登录成功后,后端生成JWT令牌返回给前端,前端在后续请求中携带该令牌进行身份验证。
java复制// JWT工具类示例
public class JwtUtil {
private static final String SECRET = "hospital_secret_key";
private static final long EXPIRATION = 86400000L; // 24小时
public static String generateToken(String username) {
return Jwts.builder()
.setSubject(username)
.setExpiration(new Date(System.currentTimeMillis() + EXPIRATION))
.signWith(SignatureAlgorithm.HS512, SECRET)
.compact();
}
public static String getUsernameFromToken(String token) {
return Jwts.parser()
.setSigningKey(SECRET)
.parseClaimsJws(token)
.getBody()
.getSubject();
}
}
权限控制采用基于角色的访问控制(RBAC)模型,系统中定义以下角色:
- 管理员:系统配置、用户管理
- 医生:排班管理、接诊处理
- 患者:预约挂号、查看报告
- 前台:挂号处理、收费管理
2.2 预约挂号业务流程
挂号流程的核心状态机设计:
- 患者选择科室和医生
- 系统显示可预约时间段
- 患者选择时间段并提交预约
- 系统生成预约记录并锁定号源
- 患者支付挂号费(可选)
- 预约成功,生成就诊凭证
java复制// 预约服务核心逻辑
@Service
public class AppointmentService {
@Autowired
private DoctorScheduleMapper scheduleMapper;
@Autowired
private AppointmentMapper appointmentMapper;
@Transactional
public Result makeAppointment(AppointmentDTO dto) {
// 检查号源是否可用
DoctorSchedule schedule = scheduleMapper.selectById(dto.getScheduleId());
if(schedule == null || schedule.getStatus() != 0) {
return Result.error("该号源不可用");
}
// 检查是否重复预约
if(appointmentMapper.checkDuplicate(dto.getPatientId(),
