/medication
药物信息(药物名称、剂量、用法等,自然语言描述)
$ npx -y skills add huifer/WellAlly-health --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/medication
Context preview
What this command does when you run it.
药物信息(药物名称、剂量、用法等,自然语言描述)
Command definition
medication.mddescription: 管理用药计划和记录用药情况
arguments:
- name: action
description: 操作类型:add(添加药物)/log(记录用药)/history(用药历史)/status(用药统计)/list(药物列表)
required: true
- name: info
description: 药物信息(药物名称、剂量、用法等,自然语言描述)
required: false用药记录管理
管理药物和用药计划,记录每日用药情况,追踪药物依从性。
操作类型
1. 添加药物 - `add`
添加新药物及其用药计划。
**参数说明:**
- `info`: 药物信息(必填),使用自然语言描述
**示例:**
/medication add 阿司匹林 100mg 每天1次 早餐后服用
/medication add 氨氯地平 5mg 每天早晚各1次
/medication add 二甲双胍 500mg 每天3次 餐后服用
/medication add 维生素D 1000IU 每周1次
**支持的描述格式:**
- 药物名称 + 剂量 + 频率 + 用药时间
- 频率关键词:每天、每日、每周、隔天、按需
- 时间关键词:早餐前、早餐后、午餐前、午餐后、晚餐前、晚餐后、睡前、早晚各一次等
2. 记录用药 - `log`
记录实际用药情况。
**参数说明:**
- `info`: 用药记录(必填),使用自然语言描述
**示例:**
/medication log 已服用 阿司匹林
/medication log 阿司匹林 已服
/medication log 忘记服用 氨氯地平
/medication log 氨氯地平 漏服
/medication log 阿司匹林 早上8点已服
**自动识别:**
- ✅ 已服用、已服、服了、吃了 - 正常用药
- ❌ 忘记、漏服、未服 - 漏服记录
- ⏰ 计划 - 预定提醒
3. 查看药物列表 - `list`
查看所有已添加的药物及用药计划。
**示例:**
/medication list
4. 查看用药历史 - `history`
查看用药记录历史。
**示例:**
/medication history
/medication history today
/medication history 2025-12-31
/medication history week
5. 查看用药统计 - `status`
查看用药依从性统计。
**示例:**
/medication status
/medication status today
/medication status week
/medication status month
执行步骤
添加药物 (add)
1. 解析药物信息
从自然语言中提取:
- **药物名称**:通用名或商品名
- **剂量**:数值 + 单位(mg、g、ml、IU、片、粒等)
- **频率**:每天次数、每周次数等
- **用药时间**:具体的服药时间点
- **特殊说明**:餐前、餐后、睡前等
2. 生成用药计划
**核心规则:schedule 数组必须为每周的每一天(1-7)明确生成用药计划记录**
**频率映射规则:**
| 用户输入 | 频率类型 | schedule 记录数 | 生成规则 | |---------|---------|----------------|---------| | 每天1次、每日1次 | daily | 7条 | 每天1条,周一至周日 | | 每天2次、每日2次、早晚各一次 | daily | 14条 | 每天2条,周一至周日 | | 每天3次、每日3次、一日三次 | daily | 21条 | 每天3条,周一至周日 | | 每周1次 | weekly | 1条 | 仅指定星期几 | | 隔天1次 | every_other_day | 4条 | 周一、三、五、日 或 二、四、六 | | 按需 | as_needed | 0条 | 无固定计划 |
**schedule 生成算法:**
// 伪代码示例
function generateSchedule(frequency, times, timeSlots) {
const schedule = [];
if (frequency === 'daily') {
// 每天 N 次:为每周7天每天生成 N 条记录
for (let weekday = 1; weekday <= 7; weekday++) {
for (const timeSlot of timeSlots) {
schedule.push({
weekday: weekday,
time: timeSlot.time,
timing_label: timeSlot.label,
dose: {
value: timeSlot.dose.value,
unit: timeSlot.dose.unit
}
});
}
}
} else if (frequency === 'weekly') {
// 每周一次:仅生成1条记录(默认周一,可通过用户输入指定)
schedule.push({
weekday: 1, // 或用户指定的星期几
time: timeSlots[0].time,
timing_label: timeSlots[0].label,
dose: {
value: timeSlots[0].dose.value,
unit: timeSlots[0].dose.unit
}
});
} else if (frequency === 'every_other_day') {
// 隔天一次:生成4条记录(1,3,5,7 或 2,4,6)
const days = [1, 3, 5, 7]; // 或 [2, 4, 6]
for (const weekday of days) {
schedule.push({
weekday: weekday,
time: timeSlots[0].time,
timing_label: timeSlots[0].label,
dose: {
value: timeSlots[0].dose.value,
unit: timeSlots[0].dose.unit
}
});
}
}
return schedule;
}**生成示例:**
**每天1次:**
输入:每天1次 早餐后
生成:7条记录
- 周一 08:00 早餐后
- 周二 08:00 早餐后
- 周三 08:00 早餐后
- 周四 08:00 早餐后
- 周五 08:00 早餐后
- 周六 08:00 早餐后
- 周日 08:00 早餐后
**每天2次:**
输入:每天2次 早晚各一次
生成:14条记录
- 周一 08:00 早晨
- 周一 20:00 晚上
- 周二 08:00 早晨
- 周二 20:00 晚上
- ... (继续至周日)
**每天3次:**
输入:每天3次 三餐后
生成:21条记录
- 周一 08:00 早餐后
- 周一 12:30 午餐后
- 周一 18:30 晚餐后
- 周二 08:00 早餐后
- ... (继续至周日)
**时间映射规则:**
| 用户输入 | 标准时间 | 备注 | |---------|---------|------| | 早餐前 | 07:00 | 可在个人设置中调整 | | 早餐后 | 08:00 | 可在个人设置中调整 | | 午餐前 | 11:30 | 可在个人设置中调整 | | 午餐后 | 12:30 | 可在个人设置中调整 | | 晚餐前 | 17:30 | 可在个人设置中调整 | | 晚餐后 | 18:30 | 可在个人设置中调整 | | 睡前 | 21:00 | 可在个人设置中调整 | | 早晚 | 08:00, 20:00 | 两次服药 |
3. 检查药物过敏
**重要:在保存药物信息之前,必须检查用户是否存在相关过敏。**
**检查流程:**
1. **解析药物类别**:从药物名称识别其所属药物家族 2. **读取过敏记录**:检查 `data/allergies.json` 中的过敏记录 3. **匹配过敏原**:检查药物或其类别是否在过敏列表中 4. **显示警示**:如果发现潜在过敏,显示警示信息并要求确认
**常见药物家族映射:**
| 药物类别 | 包含药物 | |---------|---------| | 青霉素类 | 青霉素、阿莫西林、氨苄西林、美洛西林、哌拉西林等 | | 头孢菌素类 | 头孢唑林、头孢克肟、头孢曲松、头孢呋辛、头孢他啶等 | | 磺胺类 | 磺胺甲噁唑、磺胺嘧啶、磺胺二甲嘧啶等 | | 四环素类 | 四环素、多西环素、米诺环素等 | | 氨基糖苷类 | 庆大霉素、阿米卡星、链霉素等 | | 大环内酯类 | 红霉素、阿奇霉素、克拉霉素等 | | 碘造影剂 | 碘海醇、碘帕醇、碘佛醇等 | | 非甾体抗炎药 | 阿司匹林、布洛芬、双氯芬酸钠、塞来昔布等 |
**过敏检查逻辑:**
// 伪代码示例
function checkDrugAllergy(drugName) {
// 1. 读取过敏记录
const allergies = loadAllergies('data/allergies.json');
// 2. 过滤出活跃的药物过敏
const drugAllergies = allergies.allergies.filter(a =>
a.allergen.type === 'drug' &&
a.current_status.status === 'active'
);
// 3. 检查直接匹配(药物名称完全相同)
const directMatch = drugAllergies.find(a =>
a.allergen.name === drugName ||
a.allergen.synonyms.includes(drugName)
);
if (directMatch) {
return {
hasAllergy: true,
allergy: directMatch,
matchType: 'direct'
};
}
// 4. 检查药物家族匹配
const drugFamily = getDrugFamily(drugName);
if (drugFamily) {
const familyMatch = drugAllergies.find(a =>
drugFamily.allergens.includes(a.allergen.name)
);
if (familyMatch) {
return {
hasAllergy: true,
allergy: familyMatch,
matchType: 'family',
familyName: drugFamily.name
};
}
}
return { hasAllergy: false };
}**警示输出格式:**
⚠️ 过敏警示
检测到您可能对以下药物过敏:
• 青霉素 - 严重过敏(3级)
添加的药物:阿莫西林(属于青霉素类)
过敏反应:皮疹、呼吸困难
建议:
━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 如确认不过敏,可继续添加
2. 如不确定,建议咨询医生或药师
3. 请仔细核对药物成分
4. 考虑进行过敏原检测确认
是否继续添加该药物?
A. 继续添加(我确认不过敏)
B. 取消添加
**特别警示(过敏性休克):**
如果检测到过敏性休克级别的过敏,使用更强的警示:
🚨 严重过敏警示
检测到您对该药物有过敏性休克史!
• 青霉素 - 过敏性休克(4级)🆘
添加的药物:阿莫西林(属于青霉素类)
过敏反应:呼吸困难、喉头水肿、意识丧失
━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 警告:过敏性休克可能危及生命!
强烈建议:
━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 立即停止添加该药物
2. 咨询医生或药师
3. 绝对不可冒险使用
是否继续?
A. 强行继续(不推荐)
B. 取消添加(推荐)
**处理流程:**
- 用户选择 A:继续添加药物,保存药物信息
- 用户选择 B:取消添加,不保存药物信息
4. 检查孕期药物安全
**重要:在保存药物信息之前,检查用户是否处于孕期,以及药物在孕期的安全性。**
**检查流程:**
1. **检查孕期状态**:读取 `data/pregnancy-tracker.j
Read more
description: 管理用药计划和记录用药情况
arguments:
- name: action
description: 操作类型:add(添加药物)/log(记录用药)/history(用药历史)/status(用药统计)/list(药物列表)
required: true
- name: info
description: 药物信息(药物名称、剂量、用法等,自然语言描述)
required: false用药记录管理
管理药物和用药计划,记录每日用药情况,追踪药物依从性。
操作类型
1. 添加药物 - `add`
添加新药物及其用药计划。
**参数说明:**
- `info`: 药物信息(必填),使用自然语言描述
**示例:**
/medication add 阿司匹林 100mg 每天1次 早餐后服用 /medication add 氨氯地平 5mg 每天早晚各1次 /medication add 二甲双胍 500mg 每天3次 餐后服用 /medication add 维生素D 1000IU 每周1次
**支持的描述格式:**
- 药物名称 + 剂量 + 频率 + 用药时间
- 频率关键词:每天、每日、每周、隔天、按需
- 时间关键词:早餐前、早餐后、午餐前、午餐后、晚餐前、晚餐后、睡前、早晚各一次等
2. 记录用药 - `log`
记录实际用药情况。
**参数说明:**
- `info`: 用药记录(必填),使用自然语言描述
**示例:**
/medication log 已服用 阿司匹林 /medication log 阿司匹林 已服 /medication log 忘记服用 氨氯地平 /medication log 氨氯地平 漏服 /medication log 阿司匹林 早上8点已服
**自动识别:**
- ✅ 已服用、已服、服了、吃了 - 正常用药
- ❌ 忘记、漏服、未服 - 漏服记录
- ⏰ 计划 - 预定提醒
3. 查看药物列表 - `list`
查看所有已添加的药物及用药计划。
**示例:**
/medication list
4. 查看用药历史 - `history`
查看用药记录历史。
**示例:**
/medication history /medication history today /medication history 2025-12-31 /medication history week
5. 查看用药统计 - `status`
查看用药依从性统计。
**示例:**
/medication status /medication status today /medication status week /medication status month
执行步骤
添加药物 (add)
1. 解析药物信息
从自然语言中提取:
- **药物名称**:通用名或商品名
- **剂量**:数值 + 单位(mg、g、ml、IU、片、粒等)
- **频率**:每天次数、每周次数等
- **用药时间**:具体的服药时间点
- **特殊说明**:餐前、餐后、睡前等
2. 生成用药计划
**核心规则:schedule 数组必须为每周的每一天(1-7)明确生成用药计划记录**
**频率映射规则:**
| 用户输入 | 频率类型 | schedule 记录数 | 生成规则 | |---------|---------|----------------|---------| | 每天1次、每日1次 | daily | 7条 | 每天1条,周一至周日 | | 每天2次、每日2次、早晚各一次 | daily | 14条 | 每天2条,周一至周日 | | 每天3次、每日3次、一日三次 | daily | 21条 | 每天3条,周一至周日 | | 每周1次 | weekly | 1条 | 仅指定星期几 | | 隔天1次 | every_other_day | 4条 | 周一、三、五、日 或 二、四、六 | | 按需 | as_needed | 0条 | 无固定计划 |
**schedule 生成算法:**
// 伪代码示例
function generateSchedule(frequency, times, timeSlots) {
const schedule = [];
if (frequency === 'daily') {
// 每天 N 次:为每周7天每天生成 N 条记录
for (let weekday = 1; weekday <= 7; weekday++) {
for (const timeSlot of timeSlots) {
schedule.push({
weekday: weekday,
time: timeSlot.time,
timing_label: timeSlot.label,
dose: {
value: timeSlot.dose.value,
unit: timeSlot.dose.unit
}
});
}
}
} else if (frequency === 'weekly') {
// 每周一次:仅生成1条记录(默认周一,可通过用户输入指定)
schedule.push({
weekday: 1, // 或用户指定的星期几
time: timeSlots[0].time,
timing_label: timeSlots[0].label,
dose: {
value: timeSlots[0].dose.value,
unit: timeSlots[0].dose.unit
}
});
} else if (frequency === 'every_other_day') {
// 隔天一次:生成4条记录(1,3,5,7 或 2,4,6)
const days = [1, 3, 5, 7]; // 或 [2, 4, 6]
for (const weekday of days) {
schedule.push({
weekday: weekday,
time: timeSlots[0].time,
timing_label: timeSlots[0].label,
dose: {
value: timeSlots[0].dose.value,
unit: timeSlots[0].dose.unit
}
});
}
}
return schedule;
}**生成示例:**
**每天1次:**
输入:每天1次 早餐后 生成:7条记录 - 周一 08:00 早餐后 - 周二 08:00 早餐后 - 周三 08:00 早餐后 - 周四 08:00 早餐后 - 周五 08:00 早餐后 - 周六 08:00 早餐后 - 周日 08:00 早餐后
**每天2次:**
输入:每天2次 早晚各一次 生成:14条记录 - 周一 08:00 早晨 - 周一 20:00 晚上 - 周二 08:00 早晨 - 周二 20:00 晚上 - ... (继续至周日)
**每天3次:**
输入:每天3次 三餐后 生成:21条记录 - 周一 08:00 早餐后 - 周一 12:30 午餐后 - 周一 18:30 晚餐后 - 周二 08:00 早餐后 - ... (继续至周日)
**时间映射规则:**
| 用户输入 | 标准时间 | 备注 | |---------|---------|------| | 早餐前 | 07:00 | 可在个人设置中调整 | | 早餐后 | 08:00 | 可在个人设置中调整 | | 午餐前 | 11:30 | 可在个人设置中调整 | | 午餐后 | 12:30 | 可在个人设置中调整 | | 晚餐前 | 17:30 | 可在个人设置中调整 | | 晚餐后 | 18:30 | 可在个人设置中调整 | | 睡前 | 21:00 | 可在个人设置中调整 | | 早晚 | 08:00, 20:00 | 两次服药 |
3. 检查药物过敏
**重要:在保存药物信息之前,必须检查用户是否存在相关过敏。**
**检查流程:**
1. **解析药物类别**:从药物名称识别其所属药物家族 2. **读取过敏记录**:检查 `data/allergies.json` 中的过敏记录 3. **匹配过敏原**:检查药物或其类别是否在过敏列表中 4. **显示警示**:如果发现潜在过敏,显示警示信息并要求确认
**常见药物家族映射:**
| 药物类别 | 包含药物 | |---------|---------| | 青霉素类 | 青霉素、阿莫西林、氨苄西林、美洛西林、哌拉西林等 | | 头孢菌素类 | 头孢唑林、头孢克肟、头孢曲松、头孢呋辛、头孢他啶等 | | 磺胺类 | 磺胺甲噁唑、磺胺嘧啶、磺胺二甲嘧啶等 | | 四环素类 | 四环素、多西环素、米诺环素等 | | 氨基糖苷类 | 庆大霉素、阿米卡星、链霉素等 | | 大环内酯类 | 红霉素、阿奇霉素、克拉霉素等 | | 碘造影剂 | 碘海醇、碘帕醇、碘佛醇等 | | 非甾体抗炎药 | 阿司匹林、布洛芬、双氯芬酸钠、塞来昔布等 |
**过敏检查逻辑:**
// 伪代码示例
function checkDrugAllergy(drugName) {
// 1. 读取过敏记录
const allergies = loadAllergies('data/allergies.json');
// 2. 过滤出活跃的药物过敏
const drugAllergies = allergies.allergies.filter(a =>
a.allergen.type === 'drug' &&
a.current_status.status === 'active'
);
// 3. 检查直接匹配(药物名称完全相同)
const directMatch = drugAllergies.find(a =>
a.allergen.name === drugName ||
a.allergen.synonyms.includes(drugName)
);
if (directMatch) {
return {
hasAllergy: true,
allergy: directMatch,
matchType: 'direct'
};
}
// 4. 检查药物家族匹配
const drugFamily = getDrugFamily(drugName);
if (drugFamily) {
const familyMatch = drugAllergies.find(a =>
drugFamily.allergens.includes(a.allergen.name)
);
if (familyMatch) {
return {
hasAllergy: true,
allergy: familyMatch,
matchType: 'family',
familyName: drugFamily.name
};
}
}
return { hasAllergy: false };
}**警示输出格式:**
⚠️ 过敏警示 检测到您可能对以下药物过敏: • 青霉素 - 严重过敏(3级) 添加的药物:阿莫西林(属于青霉素类) 过敏反应:皮疹、呼吸困难 建议: ━━━━━━━━━━━━━━━━━━━━━━━━━━ 1. 如确认不过敏,可继续添加 2. 如不确定,建议咨询医生或药师 3. 请仔细核对药物成分 4. 考虑进行过敏原检测确认 是否继续添加该药物? A. 继续添加(我确认不过敏) B. 取消添加
**特别警示(过敏性休克):**
如果检测到过敏性休克级别的过敏,使用更强的警示:
🚨 严重过敏警示 检测到您对该药物有过敏性休克史! • 青霉素 - 过敏性休克(4级)🆘 添加的药物:阿莫西林(属于青霉素类) 过敏反应:呼吸困难、喉头水肿、意识丧失 ━━━━━━━━━━━━━━━━━━━━━━━━━━ ⚠️ 警告:过敏性休克可能危及生命! 强烈建议: ━━━━━━━━━━━━━━━━━━━━━━━━━━ 1. 立即停止添加该药物 2. 咨询医生或药师 3. 绝对不可冒险使用 是否继续? A. 强行继续(不推荐) B. 取消添加(推荐)
**处理流程:**
- 用户选择 A:继续添加药物,保存药物信息
- 用户选择 B:取消添加,不保存药物信息
4. 检查孕期药物安全
**重要:在保存药物信息之前,检查用户是否处于孕期,以及药物在孕期的安全性。**
**检查流程:**
1. **检查孕期状态**:读取 `data/pregnancy-tracker.j
WellAlly Health is a local-first, AI-powered personal health record (PHR) system.

