技术栈设计

后端技术栈

  • Spring Boot 2.7.x:提供核心框架支持,简化配置和依赖管理。
  • Spring Security:实现用户认证和权限控制。
  • MyBatis-Plus:增强数据库操作能力,支持快速CRUD开发。
  • Redis:缓存高频访问数据(如排队状态),减少数据库压力。
  • RabbitMQ:处理异步消息(如叫号通知、短信提醒)。

前端技术栈

  • Vue 3:基于Composition API构建响应式界面。
  • Element Plus:提供UI组件(表格、表单、通知等)。
  • WebSocket:实时推送叫号信息至前端。
  • Axios:封装HTTP请求,与后端交互。

数据库设计

  • MySQL 8.0:主数据库,存储患者信息、科室、排队记录等。
  • 关键表结构:
    • patient(患者信息):id, name, phone, create_time
    • department(科室):id, name, current_queue_num
    • queue(排队记录):id, patient_id, department_id, status(0待诊/1已叫号)。

核心功能模块

患者端功能

  • 在线挂号:选择科室并生成排队号,支持分时段预约。
  • 实时排队查询:通过WebSocket获取当前叫号进度。
  • 电子病历:查看历史就诊记录(需医生权限解锁)。

医生端功能

  • 叫号管理:手动或自动触发叫号,更新排队状态。
  • 就诊记录录入:填写诊断结果并同步至患者档案。
  • 紧急插队权限:针对特殊病例调整队列顺序。

管理端功能

  • 科室管理:增删改查科室信息及关联医生。
  • 数据统计:生成日/月排队量报表(集成ECharts可视化)。
  • 系统日志:记录用户操作和异常事件。

系统测试设计

单元测试(JUnit 5)

  • 测试Service层逻辑,如排队号生成规则:
    @Test
    void testGenerateQueueNumber() {
        Department department = new Department();
        department.setCurrentQueueNum(5);
        int newNum = queueService.generateQueueNum(department);
        assertEquals(6, newNum);
    }
    

集成测试(TestContainers)

  • 验证数据库与Redis的协同操作,如叫号后状态同步:
    @SpringBootTest
    class QueueIntegrationTest {
        @Autowired
        private QueueService queueService;
        
        @Test
        void callPatientShouldUpdateRedisAndDB() {
            // 模拟叫号并断言Redis缓存与数据库状态一致
        }
    }
    

前端测试(Cypress)

  • 模拟用户挂号流程:
    describe('Patient Registration', () => {
        it('Submits form and displays queue number', () => {
            cy.visit('/register');
            cy.get('#department-select').select('Cardiology');
            cy.get('#submit-btn').click();
            cy.contains('Your queue number:').should('be.visible');
        });
    });
    


源码与部署说明

源码结构

  • 后端:src/main/java/com/hospital/queue
    • config/:安全配置、WebSocket配置。
    • controller/:暴露RESTful API。
    • service/impl/:核心业务逻辑(挂号、叫号)。
  • 前端:src/views/
    • patient/:患者相关页面。
    • doctor/:医生工作台。

部署流程

  1. 启动MySQL和Redis服务,导入schema.sql初始化数据库。
  2. 后端打包:mvn clean package,生成hospital-queue.jar
  3. 前端构建:npm run build,部署静态文件至Nginx。
  4. 使用Docker Compose编排容器(可选):
    services:
      backend:
        image: openjdk:17
        command: java -jar /app/hospital-queue.jar
        ports: ["8080:8080"]
    

注意事项

  • 短信提醒需配置第三方服务(如阿里云短信API)。
  • 高并发场景建议使用Nginx负载均衡和Redis集群。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐