常伟的故事让编辑内疚很久,真正刺痛人的地方不在技术有多炫,而在于一个很朴素的问题:人会忘,药不能乱。来源里提到「智慧用药提醒」是个挺实用的 APP,这类工具的价值也正在这里:它不是替医生做决定,而是帮用户把已经确定的用药计划稳定执行下去。
用药提醒不是普通闹钟
普通闹钟只关心一个时间点。用药提醒要处理的是一组更麻烦的约束:药名、剂量、频次、开始日期、结束日期、是否已服用、是否漏服、是否需要提醒家属。
一个靠谱的用药提醒产品,至少要把这些信息结构化,而不是只让用户输入一段自由文本。比如:
name: 药品名称dose: 每次剂量times: 每天提醒时间start_date/end_date: 用药周期taken_at: 实际服药记录note: 饭前、饭后、禁忌等备注
这也是「智慧」二字真正落地的地方。它不一定一开始就需要 AI,但必须能把用药计划变成可检查、可追踪、可回放的数据。
可以这样实践:一个最小可运行的用药提醒原型
下面这个例子不是来源 APP 的实现细节,而是一个可以改造的最小 Python 原型:用 JSON 保存用药计划,运行脚本时检查未来 10 分钟内是否有药需要提醒。
运行前需要安装 Python 3。把下面内容保存为 med_reminder.py,然后直接执行。
from datetime import datetime, date, time, timedelta
import json
from pathlib import Path
DATA_FILE = Path("medicines.json")
DEFAULT_DATA = [
{
"name": "降压药A",
"dose": "1片",
"times": ["08:00", "20:00"],
"start_date": "2026-01-01",
"end_date": "2026-12-31",
"note": "饭后服用"
},
{
"name": "维生素D",
"dose": "1粒",
"times": ["12:30"],
"start_date": "2026-01-01",
"end_date": "2026-03-31",
"note": "随餐服用"
}
]
def ensure_data_file():
if not DATA_FILE.exists():
DATA_FILE.write_text(
json.dumps(DEFAULT_DATA, ensure_ascii=False, indent=2),
encoding="utf-8"
)
def parse_date(value):
return datetime.strptime(value, "%Y-%m-%d").date()
def parse_time(value):
return datetime.strptime(value, "%H:%M").time()
def due_medicines(now, window_minutes=10):
medicines = json.loads(DATA_FILE.read_text(encoding="utf-8"))
today = now.date()
window_end = now + timedelta(minutes=window_minutes)
due = []
for med in medicines:
if not (parse_date(med["start_date"]) <= today <= parse_date(med["end_date"])):
continue
for reminder_time in med["times"]:
scheduled = datetime.combine(today, parse_time(reminder_time))
if now <= scheduled <= window_end:
due.append({
"name": med["name"],
"dose": med["dose"],
"time": reminder_time,
"note": med.get("note", "")
})
return due
if __name__ == "__main__":
ensure_data_file()
now = datetime.now()
items = due_medicines(now)
if not items:
print("未来 10 分钟内暂无用药提醒。")
else:
print("即将用药:")
for item in items:
print(f"- {item['time']} {item['name']} {item['dose']} {item['note']}")
执行:
python med_reminder.py
你可以修改 medicines.json 里的药名、剂量和时间。真实产品里,这一步应该由表单、语音录入、扫码或家属端完成,而不是让用户手写 JSON。
真正难的是确认,而不是提醒
提醒响了,不代表药已经吃了。对用药类 APP 来说,「确认」是核心动作:
- 用户点击「已服用」,记录时间。
- 用户延后提醒,系统再次触达。
- 用户长时间未确认,可以通知家属或护理人员。
- 用户重复确认时,系统要避免误导为重复服药。
可以把服药记录单独存下来,避免计划和事实混在一起:
{
"medicine_name": "降压药A",
"scheduled_at": "2026-01-15T08:00:00+08:00",
"taken_at": "2026-01-15T08:07:13+08:00",
"status": "taken"
}
这类记录在后续复诊时也有价值:医生或家属看到的不是「我大概按时吃了」,而是一段可核对的执行历史。
边界要写清楚:它不能替代医生
用药提醒工具的边界必须明确。它可以提醒、记录、同步、复盘,但不能擅自修改处方,不能根据用户主观症状自动停药,也不能把通用健康建议包装成诊疗意见。
开发这类功能时,建议把风险控制放进产品设计:
- 药品、剂量、频次让用户按医生处方填写。
- 修改剂量时给出明显确认,不做静默变更。
- 对过期计划、漏服记录、重复确认做异常提示。
- 涉及家属通知时,明确授权和隐私范围。
- 本地通知要考虑手机省电策略、系统权限和时区变化。
采用清单
如果团队准备做一个「智慧用药提醒」功能,可以从一个很小的闭环开始:录入计划、定时提醒、确认服用、查看历史。把这个闭环做稳,比堆复杂推荐更重要。
上线前至少检查这些问题:
- 用户能否用 30 秒录入一条常见用药计划?
- 错过提醒后,系统是否还能补救?
- 更换手机、跨时区、通知权限关闭时会发生什么?
- 家属收到的是必要信息,还是过度暴露隐私?
- 文案是否明确提示:用药调整必须遵医嘱?
「智慧」不一定来自复杂模型,也可以来自对真实生活细节的尊重。对用药提醒来说,少一次遗忘、少一次误服,就是很具体的价值。