把「智慧用药提醒」做成真正可靠的小工具

2026-07-09 41 预计阅读时间: 1 分钟
来源: my.oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:7 分钟

常伟的故事让编辑内疚很久,真正刺痛人的地方不在技术有多炫,而在于一个很朴素的问题:人会忘,药不能乱。来源里提到「智慧用药提醒」是个挺实用的 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 秒录入一条常见用药计划?
  • 错过提醒后,系统是否还能补救?
  • 更换手机、跨时区、通知权限关闭时会发生什么?
  • 家属收到的是必要信息,还是过度暴露隐私?
  • 文案是否明确提示:用药调整必须遵医嘱?

「智慧」不一定来自复杂模型,也可以来自对真实生活细节的尊重。对用药提醒来说,少一次遗忘、少一次误服,就是很具体的价值。


相关推荐