动物救助站药品库存管理:开瓶状态自动识别与到期提醒方案问询
动物救助站药品库存管理问题
我为动物救助站搭建了包含药品模块的数据库,目前已实现用药时自动扣减库存的功能,但在开瓶药品的保质期管理上遇到难点:针对保质期仅7天的抗生素类药品,需要实现首次使用后启动倒计时——要么直到瓶内药品用完重置倒计时,要么在7天到期时触发提醒以便处理。
现有及拟议表结构
表 Medication:存储药品基础信息
| 药品ID | 药品名称 | 类别 |
|---|---|---|
| 1 | 环丙沙星 | 抗生素 |
| 2 | 美达康(Metacam) | 抗炎药 |
表 Meds Given:给药记录详情
给药剂量以mg为单位,需关联药品规格表计算体积扣减量,例如50mg对应约3.3ml,计算公式:(给药剂量mg / 规格浓度mg/ml) = 扣减体积ml
| 给药记录ID | 药品ID | 动物ID | 给药剂量(mg) | 给药日期 |
|---|---|---|---|---|
| 1 | 1 | 4 | 50 | 2024/1/20 |
| 2 | 1 | 4 | 50 | 2024/5/13 |
拟议表 Rescue meds profile:药品规格配置
同一药品可存在不同剂型(如15mg/ml或30mg/ml),记录单瓶总容量及开瓶后保质期
| 药品规格ID | 药品ID | 浓度(mg/ml) | 单瓶容量(ml) | 开瓶后保质期(天) |
|---|---|---|---|---|
| 1 | 1 | 15 | 125 | 5 |
| 2 | 1 | 30 | 125 | 365 |
拟议表 Stock adjustments:非给药类库存调整记录
用于记录入库、销毁等非给药的库存变动,示例为15mg/ml环丙沙星入库4瓶、出库1瓶
| 库存调整ID | 药品规格ID | 出入库 | 调整容量(ml) |
|---|---|---|---|
| 1 | 1 | IN | 500 |
| 2 | 1 | OUT | 125 |
拟议表 Inventory:库存余额跟踪
给药记录和库存调整都会更新此表的余额,每个profile_id对应唯一一条记录
| 库存余额ID | 药品规格ID | 总库存容量(ml) |
|---|---|---|
| 1 | 1 | 350 |
| 2 | 2 | 210 |
当前待解决的技术问题
目前已实现给药时同时写入Meds Given表并扣减Inventory表库存的逻辑,但需要一套机制来:
- 自动识别新瓶开启的时机
- 在药品到期时触发用户提醒
我曾考虑在Inventory表添加opened_on字段作为触发查询的依据,但不确定如何满足以下条件:
- 仅当库存处于整瓶量的整数倍时,才允许更新
opened_on字段(比如库存为1000ml=4瓶×250ml时,扣减7.5ml后变为992.5ml,此时启动倒计时) - 倒计时期间,若6-7天后库存仍处于非整瓶区间(如750-1000ml、1-250ml等),需触发到期提醒,且
opened_on字段保持不变 - 只有当库存再次回到整瓶量区间后,
opened_on字段才允许更新(即新瓶开启时重置)
内容的提问来源于stack exchange,提问作者Dan Lindley
相关产品推荐
相关产品推荐

