药品详细信息检索:searchType 四种类型与 classifyId 必填规则
# 药品详细信息检索:searchType 四种类型与 classifyId 必填规则
- **接口/接入点**:药品信息查询(apiCode=1468)· 1468-3 药品详细信息
- **是否免费**:免费(有档位限制)
- **请求方式**:POST / GET
- **返回格式**:JSON
- **适用人群**:中高级开发者、架构师
- **阅读时间**:约 5 分钟
## 核心要点
- 1468-3 用 `searchType` 指定检索维度:`1`名称 / `2`药企名称 / `3`药准字号 / `4`药品Id;`searchKey` 必填。
- `classifyId` 在 **searchType=1 或 2 时必传**(按名称/药企检索需先锁定分类),searchType=3/4 时可不传。
- 返回 `drugList[]` 为说明书级详情(适应症、成份、用法用量、禁忌等 30+ 字段)。
## Why:为什么用 1468-3 做精确检索
当你要按「药准字号 Z11020957」反查药品、或按「药品Id」精确取详情时,1468-3 的 searchType 机制比 1468-4 的纯药名模糊更可控,尤其能在大分类内缩小范围。
## What:接口速览
| 参数 | 必填 | 说明 |
|------|------|------|
| `searchType` | 是 | 1 药品名称 / 2 药企名称 / 3 药准字号 / 4 药品Id |
| `searchKey` | 是 | 查询关键字 |
| `classifyId` | 否(searchType=1/2 时必传) | 药品分类 Id,来自 1468-1 |
| `page` | 否 | 当前页 |
| `maxResult` | 否 | 单页最大返回值,默认 10 |
## How:四种 searchType 用法
```python
import requests
APPKEY = "YOUR_APPKEY"
BASE = "https://route.showapi.com/1468-3"
def detail(search_type, search_key, classify_id=None):
data = {"appKey": APPKEY, "searchType": str(search_type),
"searchKey": search_key, "page": "1", "maxResult": "10"}
if classify_id:
data["classifyId"] = classify_id
r = requests.post(BASE, data=data, timeout=10)
return r.json()["showapi_res_body"]
# 1 按名称(需 classifyId)
print(detail(1, "同仁堂泻肝安神丸", "599ad2a0600b2149d689b75a"))
# 2 按药企(需 classifyId)
print(detail(2, "北京同仁堂制药有限公司", "599ad2a0600b2149d689b75a"))
# 3 按药准字号(无需 classifyId)
print(detail(3, "国药准字Z11020957"))
# 4 按药品Id(无需 classifyId)
print(detail(4, "59c9aa2f0b5b76e52ff0c440"))
```
```bash
# 按药准字号精确检索
curl -X POST "https://route.showapi.com/1468-3?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "searchType=3&searchKey=%E5%9B%BD%E8%8D%AF%E5%87%86%E5%AD%97Z11020957&page=1&maxResult=10"
```
```javascript
const APPKEY = "YOUR_APPKEY";
const fd = new URLSearchParams({ searchType: "3", searchKey: "国药准字Z11020957", page: "1", maxResult: "10" });
fetch(`https://route.showapi.com/1468-3?appKey=${APPKEY}`, { method: "POST", body: fd })
.then((r) => r.json()).then((j) => console.log(j.showapi_res_body.drugList));
```
## 返回示例与解析
返回 `drugList[]` 元素含 `tymc`(通用名)、`syz`(适应症)、`zycf`(主要成份)、`yfyl`(用法用量)、`jj`(禁忌)、`zysx`(注意事项)、`type`(分类数组) 等。一个药品可能归属多个分类,`type` 为数组。
## 进阶 / 边界
- **classifyId 条件必填**:searchType=1/2 必须带 classifyId(来自 1468-1),否则可能检索不到或范围过大。
- `searchType=4` 的 `searchKey` 填药品 Id(即 1468-2 返回的 `drugId`)。
- 返回字段完整清单见[字段全解](https://www.showapi.com/guides/drug-info-fields-1468)。
## FAQ
**Q1:searchType=1/2 不传 classifyId 会怎样?**
A:文档规定 searchType=1/2 时 classifyId 必传。不传会导致检索条件不完整,建议始终带上。
**Q2:searchType 和 1468-4 的 searchKey 有什么区别?**
A:1468-3 多了 searchType 维度与 classifyId 限定,适合精确/分类内检索;1468-4 仅药名模糊检索,无需 searchType。
**Q3:按药准字号查出来多条怎么办?**
A:用 `page`/`maxResult` 分页;药准字号通常唯一,多条多为同企不同规格,看 `gg`(规格) 区分。
## 相关能力 / 下一步阅读
- [药名查询药品信息(1468-4)实战指南](https://www.showapi.com/guides/drug-info-search-name-1468)
- [classifyId 到底怎么用?药品分类 Id 的必填规则与排查](https://www.showapi.com/guides/drug-info-classifyid-1468)
- [药品信息查询返回字段全解](https://www.showapi.com/guides/drug-info-fields-1468)
- **本系列共 11 篇**:查看[药品信息查询指南总目录](https://www.showapi.com/guides/drug-info-guides-1468)