1. 项目背景与需求分析
社区医院作为基层医疗服务的重要载体,每天需要处理大量的药品流通数据。传统的手工记录方式不仅效率低下,还容易出现错漏。我在实际工作中就遇到过多次因人工记录错误导致的药品库存不符情况,最严重的一次差点影响了患者的正常用药。
这个药品管理系统正是为了解决这些痛点而设计的。核心需求可以归纳为"四个准确":药品信息准确、库存数量准确、效期管理准确、处方关联准确。系统需要覆盖从药品采购入库到门诊发药的全流程管理,同时要兼顾社区医院工作人员普遍计算机水平不高的实际情况。
提示:社区医院药品管理有个特点 - 单品种数量不大但品类繁多,这与大型医院有很大不同。系统设计时要特别注意这个特性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 为什么选择SpringBoot
SpringBoot的自动配置特性特别适合社区医院这种IT力量薄弱的场景。我选择的是2.7.12版本,这个长期支持版既稳定又兼容性强。实测下来,从零开始搭建一个基础服务只需要15分钟,这大大降低了部署门槛。
技术栈组合:
- 后端:SpringBoot + MyBatis Plus
- 前端:Vue.js + ElementUI
- 数据库:MySQL 8.0
- 缓存:Redis 6.2
2.2 微服务还是单体架构
考虑到社区医院的规模,我最终选择了单体架构。这不是技术上的妥协,而是基于实际场景的考量:
- 日均处方量通常在200-500之间,单体完全能胜任
- 运维复杂度低,适合技术人员有限的场景
- 开发部署成本更低
不过我在代码结构上做了清晰的模块划分,为将来可能的扩展留有余地。
3. 核心功能实现细节
3.1 药品基础信息管理
药品字典是系统的基石,我设计了以下关键字段:
java复制public class Drug {
private String drugCode; // 药品编码(国标)
private String genericName; // 通用名
private String tradeName; // 商品名
private String specification; // 规格
private String manufacturer; // 生产厂家
private String approvalNumber; // 批准文号
private String drugType; // 药品类型
private BigDecimal purchasePrice; // 采购价
private BigDecimal retailPrice; // 零售价
// 其他字段...
}
特别注意:
- 药品编码必须遵循国家标准
- 规格字段要支持自由录入但要有格式校验
- 价格字段使用BigDecimal避免精度问题
3.2 库存管理实现
库存管理是系统的核心难点,我采用了"批次管理+实时库存"的双层设计:
sql复制CREA
