一、说说这个业务
“我的药房”是一个让患者在线买药、管理处方的功能模块, 就像在京东买药一样:选药 → 加购物车 → 在线支付 → 药品配送到家。
同时,医生也可以查看自己开过的处方,方便后续跟踪治疗。
二、核心功能
这份工单主要包括以下几个核心业务点:
| 需求类别 | 工单原文要求 | 通俗解释 |
|---|---|---|
| 药品信息展示 | 展示药品名称、规格、厂家、批准文号、适应症、用法用量等 | 药品要有详细说明书,不能只写个名字 |
| 分类浏览 | 按内科、外科等分类展示药品 | 方便用户快速找到“感冒药”“降压药”等 |
| 加入购物车 & 支付 | 患者可选择药品加入购物车并完成在线支付 | 实现“线上买药”闭环 |
| 常用/历史处方 | 分为“常用处方”和“历史处方” | 方便复诊患者快速购药 |
| 权限控制 | 只有授权人员才能访问电子处方和购买记录 | 医生只能看自己的患者,患者只能看自己的药单 |
| 安全合规 | 记录谁访问了哪些处方,便于审计 | 出了问题能查日志 |
三、系统整体设计(通俗版架构)
我们可以把这个功能想象成一个“线上药店 + 处方管理系统”,它由几个部分组成:
text
前端(App/Web)
↓
API 网关(鉴权、限流)
↓
【药房服务】—— 核心业务逻辑
├── 药品查询(支持分类、搜索)
├── 处方管理(常用/历史处方)
├── 购物车管理
└── 订单支付(对接微信/支付宝)
↓
数据库层
├── drug_info(药品信息表)
├── prescription(处方记录表)
├── shopping_cart(购物车)
└── order(订单表)
↓
外部系统
├── 支付系统(微信、支付宝)
└── 药品配送系统(物流)四、核心功能详解(结合真实场景)
场景1:张阿姨想买降压药
张阿姨有高血压,之前医生给她开过“苯磺酸氨氯地平片”。今天她想自己再买一瓶。
系统流程:
- 打开App,点击“我的药房”;
- 系统自动展示她的“常用处方”:苯磺酸氨氯地平片,5mg,每日一次;
- 她点击“立即购买”,药品自动加入购物车;
- 去结算,选择“微信支付”;
- 支付成功后,订单生成,药品安排配送。
✅ 技术实现:
- “常用处方”数据来自
prescription表,标记为is_common = true; - 购物车使用 Redis 缓存,提升响应速度;
- 支付调用微信支付接口,异步通知结果。
场景2:李医生查看自己开过的处方
李医生想看看上周给患者开的药有哪些。
系统流程:
- 医生登录后,进入“我的处方”;
- 系统按时间倒序列出他开的所有处方;
- 可筛选“某位患者”或“某个时间段”;
- 点击查看详情:药品名、剂量、用法、患者姓名(脱敏)、开具时间。
✅ 权限控制:
- 所有查询都带
doctor_id参数; - 服务端强制校验:当前登录医生ID是否匹配;
- 防止医生A看到医生B的处方。
场景3:新患者想买感冒药
小王感冒了,想买“连花清瘟胶囊”。
系统流程:
- 进入“我的药房”,点击“分类浏览” → “内科” → “呼吸科”;
- 如找到“连花清瘟胶囊”,点击查看详细信息:
- 药品名称:连花清瘟胶囊
- 规格:0.3g×24粒
- 生产厂家:石家庄以岭药业
- 批准文号:国药准字Z20040063
- 适应症:清瘟解毒,宣肺泄热
- 用法用量:一次4粒,一日3次
- 加入购物车 → 结算 → 支付 → 配送。
✅ 数据来源:
- 所有药品信息来自
drug_info表,由平台管理员维护; - 支持模糊搜索(如输入“莲花”也能搜到“连花清瘟”)。
五、关键技术栈(通俗解释)
| 技术 | 作用 | 为什么用它? |
|---|---|---|
| Java + Spring Boot | 后台“大脑” | 处理药品查询、处方管理、订单逻辑 |
| MySQL | 存药品、处方、订单数据 | 稳定可靠,适合结构化数据 |
| Redis | 缓存热门药品、购物车 | 提升响应速度,减少数据库压力 |
| Elasticsearch | 药品搜索(支持模糊匹配) | 比数据库LIKE快得多 |
| HTTPS + JWT | 安全传输 + 登录认证 | 防止处方信息被窃取 |
| RabbitMQ/Kafka | 异步处理订单、发送通知 | 避免支付卡顿 |
| JMeter | 压力测试 | 模拟高并发买药,确保系统不崩 |
六、安全与合规设计
1. 权限控制
- 患者:只能查看自己的处方和购药记录;
- 医生:只能查看自己开的处方;
- 管理员:可维护药品信息,但不能查看患者隐私。
2. 数据加密
- 患者姓名、身份证号等敏感信息加密存储;
- 处方访问记录写入审计日志
3. 操作留痕
- 每一次“开处方”“买药”“查看记录”都记录日志;
- 支持后续审计,符合医疗数据合规要求。
七、性能与高并发保障
| 问题 | 解决方案 |
|---|---|
| 节假日很多人买药,系统会不会卡? | 使用 Redis 缓存热门药品,减少数据库查询 |
| 同时下单人数太多怎么办? | 订单提交走消息队列,异步处理支付和库存扣减 |
| 药品搜索太慢? | 用 Elasticsearch 实现毫秒级搜索 |
| 支付失败怎么处理? | 支持自动重试 + 人工补偿 |
✅ 验收标准落地:
- 响应时间:药品搜索 < 300ms
- 处理能力:支持 5000 并发用户同时购药
- 扩展性:未来可轻松接入新药品、新配送商
八、总结:一句话理解“我的药房”
“我的药房”就是一个安全、便捷、合规的“线上买药+处方管理”系统, 让患者像网购一样轻松购药, 让医生随时查看自己开过的处方, 全程可查、可审、可追溯,保障用药安全,提升医疗服务效率。