药品养护管理系统 SKILL
用途
本 SKILL 帮助医院、药房、卫生院等机构快速搭建药品养护管理 Web 系统,实现:
- 药品目录导入 → 联网检索说明书贮藏条件
- 养护计划自动生成 → 按周期自动排程
- 养护登记记录 → 数据以 XML+SQLite 双格式保存
- Web 管理界面 → 含工作台、查询、统计、信息维护、到期提醒
标准执行流程
第一步:初始化项目目录
在用户指定的工作目录(或当前目录)下运行:
# 创建 SQLITE 目录(系统会自动创建,但也可手动创建)
mkdir -p SQLITE/xml
复制 SKILL 脚本到工作目录的 scripts/ 子目录:
cp -r ~/.workbuddy/skills/drug-maintenance/scripts/ ./scripts/
cp -r ~/.workbuddy/skills/drug-maintenance/assets/ ./assets/
第二步:安装依赖
# Python 3.8+ 即可
pip install openpyxl # 用于读取 Excel 文件(可选,CSV/JSON无需安装)
第三步:初始化数据库
cd scripts/
python db_manager.py
执行后自动创建:
SQLITE/drug_maintenance.db(SQLite 数据库)SQLITE/xml/(XML 存储目录)
第四步:导入药品目录(联网检索贮藏信息)
方式一:命令行导入(推荐,支持 Excel)
python scripts/import_catalog.py 药品目录.xlsx --dept-id 1
# 支持 .xlsx / .xls / .csv / .json
方式二:Web 界面导入(支持 CSV/JSON)
启动服务后在"导入目录"页面上传文件。
导入后系统自动:
- 联网检索每种药品的贮藏条件(丁香园 → 国家药监局 → 通用搜索 → 规则推断)
- 写入
drug_catalog表 - 生成
maintenance_plan养护计划(按药品养护周期排程)
第五步:启动 Web 管理系统
python scripts/server.py --port 8899
# 或指定数据库路径
python scripts/server.py --port 8899 --db ./SQLITE/drug_maintenance.db
打开浏览器访问:http://localhost:8899
文件说明
scripts/
| 文件 | 功能 |
|------|------|
| drug_search.py | 联网检索药品说明书贮藏信息(丁香园/药监局/规则推断) |
| db_manager.py | SQLite 数据库管理(建表/CRUD/XML导出) |
| import_catalog.py | 药品目录导入工具(Excel/CSV/JSON → 检索 → 入库) |
| server.py | HTTP 后端服务,提供 RESTful API |
assets/
| 文件 | 功能 |
|------|------|
| index.html | 完整的 Web 管理系统(单页面应用,集成所有功能) |
数据存储结构
<工作目录>/
├── SQLITE/
│ ├── drug_maintenance.db # SQLite 主数据库
│ └── xml/
│ └── MR20250101120000*.xml # 每条养护登记记录的 XML 文件
├── scripts/ # Python 后端脚本
└── assets/ # 前端 HTML
数据库表结构
| 表名 | 用途 |
|------|------|
| unit_info | 单位信息(医院/机构) |
| department_info | 科室信息(含存放位置) |
| user_info | 用户信息(药师/管理员/护士) |
| drug_catalog | 药品养护目录(含贮藏条件) |
| maintenance_plan | 养护计划(自动排程) |
| maintenance_record | 养护登记记录(与 XML 双保存) |
| remind_log | 提醒发送日志 |
API 接口列表
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/stats | 统计概览数据 |
| GET | /api/drugs | 药品目录列表 |
| GET | /api/plans | 养护计划列表 |
| GET | /api/plans/reminders | 近30天到期提醒 |
| GET | /api/records?drug_name=&date_from=&date_to= | 养护记录查询 |
| POST | /api/records | 新增养护登记 |
| GET/POST | /api/units | 单位信息 CRUD |
| GET/POST | /api/departments | 科室信息 CRUD |
| GET/POST | /api/users | 用户信息 CRUD |
| POST | /api/import | 批量导入药品(JSON格式) |
养护计划生成规则
系统根据药品特性自动推断养护周期:
| 药品类型 | 贮藏条件 | 养护周期 | |---------|---------|---------| | 冷链药品(疫苗、胰岛素等) | 冷藏 2-8°C | 每月 | | 阴凉药品(≤20°C) | 阴凉干燥处 | 每季度 | | 常温普通药品 | 室温密封 | 每季度 | | 中药饮片/颗粒 | 阴凉干燥 | 每季度 |
提醒机制
养护计划到期前系统自动分级提醒:
- 🔴 3天内到期:工作台弹出紧急通知
- 🟡 1周内到期:工作台显示警告标签
- 🔵 1个月内到期:工作台显示提示标签
提醒数量实时显示在右上角徽标,每5分钟刷新检查一次。
XML 数据格式示例
每条养护登记记录自动保存为 XML 文件,路径:SQLITE/xml/MR{时间戳}.xml
<?xml version="1.0" ?>
<MaintenanceRecord version="1.0" xmlns="urn:drug-maintenance:v1">
<record_no>MR20250601120000</record_no>
<drug_name>阿莫西林胶囊</drug_name>
<dosage_form>胶囊</dosage_form>
<batch_no>20250101</batch_no>
<quantity>100</quantity>
<quantity_unit>盒</quantity_unit>
<production_date>2025-01-01</production_date>
<expiry_date>2027-01-01</expiry_date>
<temperature>23.5</temperature>
<humidity>65.0</humidity>
<appearance_ok>True</appearance_ok>
<action_taken>继续保存</action_taken>
<inspect_date>2025-06-01</inspect_date>
</MaintenanceRecord>
药品目录文件格式要求
上传文件需包含以下列(列名可以是以下任意一种):
| 标准字段 | 支持的列名 | |---------|----------| | 药品名称(必填) | 药品名称、通用名、药名、品名、drug_name | | 剂型 | 剂型、药品剂型、dosage_form | | 规格 | 规格、specification | | 生产厂家 | 生产厂家、生产企业、manufacturer | | 批准文号 | 批准文号、国药准字、approval_no |
常见问题排查
Q: 导入Excel报错
A: 需要安装 openpyxl:pip install openpyxl
Q: 联网检索失败 A: 检查网络连接。系统有多级兜底,最终会使用规则推断(基于剂型),不影响导入。
Q: 前端提示"无法连接服务器"
A: 确认 server.py 已启动,端口默认 8899,检查防火墙设置。
Q: 想要修改默认养护周期
A: 在 drug_search.py 的 _infer_from_rules() 函数中修改 maintenance_cycle_days 值。
Q: 如何备份数据
A: 直接复制 SQLITE/ 目录即可,包含 SQLite 数据库和所有 XML 记录文件。
Scan to join WeChat group