1. 项目背景与需求分析
医院药品管理一直是医疗信息化建设中的核心环节。我在三甲医院信息科工作期间,曾亲眼目睹药剂科同事每天手工登记数百种药品的繁琐操作——从采购单录入到库存盘点,从处方发药到效期管理,全部依赖纸质台账和Excel表格。这种工作模式存在几个致命缺陷:
首先,人工记录极易出错。某次盘点时发现某抗生素库存少了30盒,追溯后发现是入库时把"10"错写成"100",直到三个月后审计才被发现。其次,信息孤岛现象严重。药房不知道临床科室的用药需求,采购部门不了解库存实时情况,经常出现某些药品积压过期而急需药品短缺的情况。
基于这些痛点,我们团队决定开发一套基于Spring Boot的药品管理系统。系统需要实现以下核心目标:
- 药品全生命周期数字化管理(从采购到报废)
- 实时库存监控与智能预警
- 多维度数据分析支持决策
- 严格的权限控制与操作审计
关键设计原则:以药品批号为核心追踪单元,建立"一物一码"管理体系,确保每个药品都能追溯到采购、存储、使用的完整链路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 后端技术选型
选择Spring Boot 2.7 + JDK1.8的组合主要基于以下考量:
-
开发效率:Spring Boot的starter依赖和自动配置让项目搭建时间从原来的3天缩短到2小时。特别是spring-boot-starter-data-jpa,通过注解就能完成90%的数据库操作。
-
稳定性:我们对比了Spring Boot在不同JDK版本下的内存占用和吞吐量,1.8在长期运行测试中表现最稳定。以下是压测数据对比:
| JDK版本 | 平均响应时间(ms) | 错误率(%) | 内存占用(MB) |
|---|---|---|---|
| 1.8 | 128 | 0.02 | 512 |
| 11 | 115 | 0.03 | 580 |
| 17 | 105 | 0.05 | 620 |
- 扩展性:采用分层架构设计(controller-service-repository),配合Spring的依赖注入,新增功能模块时只需添加对应包即可。例如添加疫苗管理模块时,只需新建vaccine相关包,完全不影响原有代码。
2.2 数据库设计要点
药品管理系统的数据库设计有几个特殊考量:
- 批号管理:药品与普通商品不同,必须按批号管理。我们设计了复合主键:(drug_id + batch_number),确保同一药品不同批次独立管理。
java复制@Entity
public class DrugBatch {
@E
