1. 项目背景与需求分析
在公共卫生事件频发的当下,社区作为基层治理的最小单元,承担着重要的防控职责。传统的人工登记、纸质报表方式存在数据滞后、统计困难、易出错等问题,尤其对于中小型社区而言,缺乏专业IT支持的情况下,信息化建设更是举步维艰。这正是我们开发这套社区疫情信息管理系统的初衷——为基层社区提供一套开箱即用、易于部署的数字化解决方案。
系统设计之初,我们走访了多个社区工作站,梳理出三大核心痛点:
- 居民健康数据采集效率低下,手工录入耗时且易出错
- 疫情动态信息传递不及时,存在信息滞后现象
- 防疫物资管理混乱,难以实现精准调配
针对这些问题,系统确立了四个核心目标:
- 实现居民健康信息的电子化采集与自动化统计
- 建立实时疫情信息发布通道
- 构建可视化物资管理平台
- 提供多角色协同工作环境
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术选型
采用前后端分离架构,这是当前企业级应用的主流方案。前端选择Vue.js+ElementUI组合,后端采用SpringBoot框架,数据库使用MySQL,具体技术栈如下:
前端技术栈:
- Vue 2.x:轻量级渐进式框架,组件化开发
- ElementUI:提供丰富的UI组件,加速界面开发
- Axios:处理HTTP请求,实现前后端通信
- ECharts:数据可视化展示
后端技术栈:
- SpringBoot 2.5.x:简化配置,快速开发
- MyBatis-Plus:增强型ORM框架
- JWT:无状态认证机制
- Redis:缓存热点数据
- Swagger:API文档生成
数据库:
- MySQL 8.0:关系型数据库
- 数据库连接池:HikariCP
2.2 架构设计考量
选择前后端分离架构主要基于以下考虑:
- 开发效率:前后端可以并行开发
- 部署灵活:前端可单独部署在CDN
- 性能优化:静态资源与API服务分离
- 技术栈独立:前后端可分别升级
特别说明的是,我们选择Vue而非React/Angular,主要因为:
- 学习曲线平缓,社区工作人员更容易维护
- 文档完善,中文资料丰富
- 体积小巧,适合社区级应用
3. 数据库设计详解
3.1 核心表结构设计
系统共设计28张数据表,这里重点解析三个核心表:
居民健康档案表(health_record)
sql复制CREATE TABLE `health_record` (
`record_id` bigint NOT NULL AUTO_INCREMENT,
`resident_card` varchar(18) COLLATE utf8mb4_bin NOT NULL COMMENT '身份证号(AES加密)',
`body_temp` decimal(3,1) DEFAULT NULL COMMENT '体温',
`symptom_flag` tinyint DEFAULT '0' COMMENT '症状标记(0-无症状)',
`travel_history` text COLLATE utf8mb4_bin COMMENT '行程信息(JSON格式)',
`submit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`audit_status` char(1) COLLATE utf8mb4_bin DEFAULT 'P' COMMENT 'P-待审/A-通过',
PRIMARY KEY (`record_id`),
KEY `idx_resident_card` (`resident_card`),
KEY `idx_submit_time` (`submit_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
设计要点:
- 身份证号采用AES加密存储,符合隐私保护要求
- travel_history字段使用JSON格式存储复杂行程数据
- 建立复合索引提高查询效率
**防疫
