# 用药工具 — 用药配伍（移动端）

## 1. 概述

| 项 | 说明 |
| --- | --- |
| Base Path | `/app/medication/compatibility` |
| 数据表 | `biz_withdrawal_period_standard`、`biz_drug_incompatibility_standard`、`biz_drug_incompatibility_companion` |
| 鉴权 | 需登录 |

## 2. 药物名称列表

`GET /app/medication/compatibility/names`

药物1、药物2均从 `biz_withdrawal_period_standard.drug_name` **去重**列表选择；支持 `keyword` 模糊，最多 50 条。

也可复用 `GET /app/medication/drug/names`。

## 3. 配伍检查

`GET /app/medication/compatibility/check`

| 参数 | 必填 | 说明 |
| --- | --- | --- |
| `drugName1` | 是 | 药物1 |
| `drugName2` | 是 | 药物2（须与药物1不同） |

**禁忌判定（满足任一即为有禁忌）**

1. `main_drug_name = drugName1` 且存在 `companion_drug_name = drugName2` 的子表记录（`count > 0`）
2. `main_drug_name = drugName2` 且存在 `companion_drug_name = drugName1` 的子表记录（`count > 0`）

**配伍结果 `compatResult`**

- 有禁忌时：取**命中方向主药**在 `biz_drug_incompatibility_standard.compat_result` 的值  
  - 若方向1命中，取 `drugName1` 为主药的 `compat_result`  
  - 否则取 `drugName2` 为主药的 `compat_result`  
- 无禁忌时：不返回 `compatResult` 字段

**响应 `data`**

| 字段 | 说明 |
| --- | --- |
| `drugName1` / `drugName2` | 入参药物名称（trim 后） |
| `hasIncompatibility` | 是否有配伍禁忌 |
| `compatResult` | 有禁忌时的配伍结果文案（可空） |

## 4. 错误示例

| 场景 | 提示 |
| --- | --- |
| 未选药物 | 请选择药物名称 |
| 两药相同 | 请选择两种不同的药物 |
