技术博客
常见疾病查询:关键字检索疾病(546-2 的 typeId/subTypeId/key/page 用法)

常见疾病查询:关键字检索疾病(546-2 的 typeId/subTypeId/key/page 用法)

作者: 万维易源
2026-09-03
常见疾病查询API指南免费接口
# 常见疾病查询:关键字检索疾病(546-2 的 typeId/subTypeId/key/page 用法) > 接口:常见疾病查询(apiCode=546)· 免费 · 接入点 546-2 · 返回格式 JSON · 适用人群:开发者 · 阅读时间:约 6 分钟 ## 核心要点 - 546-2「关键字查询疾病」四个参数**全部可选**:`typeId`(一级科室)、`subTypeId`(二级科室)、`key`(关键词)、`page`(页码,每页最多 20 条)。 - 空参调用返回**跨全科室的分页疾病列表**;带 `key` 做模糊检索;带 `typeId`/`subTypeId` 限定科室范围。 - 每项返回含 `id`(供 546-3 取明细)、`name`、`summary`、`typeId`/`subTypeId`(推荐科室)。 ## Why:检索是导诊的"搜索框" 用户不会按科室编号来找病,他们输入的是"高血压""咳嗽"。546-2 就是把自然语言病名/症状映射到「疾病 + 推荐科室」的桥梁。掌握 `key` 与 `typeId` 的组合,你就能同时支持"搜索框"和"按科室浏览"两种交互。 ## What:参数说明 | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | `typeId` | string | 否 | 一级科目 id(来自 546-1) | | `subTypeId` | string | 否 | 二级子科目 id(来自 546-1) | | `key` | string | 否 | 关键词(病名/症状描述) | | `page` | string | 否 | 第几页,**每页最多 20 条** | > 返回包裹:`showapi_res_body.contentlist[]`,每项 `{ id, name, summary, typeName, typeId, subTypeId, subTypeName }`。 ## How:三种拼参姿势 ### ① 模糊搜(只给 key) ```python hits = call("546-2", key="高血压", page="1") for d in hits.get("contentlist", []): print(d["id"], d["name"], d.get("typeName"), d.get("subTypeName")) ``` ### ② 限定科室搜(key + typeId) ```python # 只在"内科(typeId=3)"下搜"高血压",缩小范围 hits = call("546-2", key="高血压", typeId="3", page="1") ``` ### ③ 按科室浏览(只给 typeId,无 key) ```python # 浏览内科全部疾病(分页拉取) page = 1 while True: hits = call("546-2", typeId="3", page=str(page)) items = hits.get("contentlist") or [] if not items: break for d in items: print(d["name"]) page += 1 if len(items) < 20: # 不足一页说明到底 break ``` ### cURL ```bash # 模糊搜 curl -X POST "https://route.showapi.com/546-2?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ --data-urlencode "key=高血压" --data-urlencode "page=1" # 限定内科 curl -X POST "https://route.showapi.com/546-2?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ --data-urlencode "key=高血压" --data-urlencode "typeId=3" --data-urlencode "page=1" ``` ### Node.js(fetch) ```javascript const hits = await call("546-2", { key: "高血压", typeId: "3", page: "1" }); for (const d of (hits.contentlist || [])) { console.log(d.id, d.name, d.typeName, d.subTypeName); } ``` ## 返回示例与解析 ```json { "showapi_res_body": { "ret_code": 0, "contentlist": [ { "id": "DISEASE_ID_XXX", "name": "高血压", "summary": "以体循环动脉血压增高为主要临床表现...", "typeName": "内科", "typeId": "3", "subTypeId": "0304", "subTypeName": "心血管内科" } ] } } ``` - `id`:存入数据库,后续调 546-3 取明细用。 - `typeName`/`subTypeName`:可直接作为"推荐挂号科室"展示给用户。 - `summary`:一句话描述,列表页即可展示,无需每次都调明细。 ## 进阶 / 边界 - **分页上限 20 条/页**:`page` 递增拉取时,以"返回不足 20 条"作为到底信号(文档未给总数字段)。 - **空参合法**:四个参数全空也返回数据(全量分页),适合"科室树点击 → 浏览该科疾病"。 - **`key` 匹配范围未文档化**:文档只说"通过关键字在指定分类中查询",未声明是精确病名还是模糊描述;生产环境建议对空结果做兜底(见[FAQ](https://www.showapi.com/guides/disease-query-faq-546))。 ## FAQ **Q1:546-2 不传 key 能查吗?** A:能。四个参数全可选,空参返回全量分页列表,适合按科室浏览。 **Q2:每页最多能返回多少条?** A:文档明确"每页最多 20 条",用 `page` 翻页。 **Q3:返回里没有总条数,怎么判断翻完?** A:当某页 `contentlist` 不足 20 条时即可认为已到末页。 **Q4:拿到 id 后怎么看症状/治疗?** A:用 `id` 调 546-3 取得疾病明细,症状/诊断/治疗/预防在 `tagList` 里(见[明细解析](https://www.showapi.com/guides/disease-query-detail-546))。 ## 相关能力 / 下一步阅读 - [常见疾病查询:取得疾病明细并解析症状/诊断/治疗/预防(546-3 的 tagList)](https://www.showapi.com/guides/disease-query-detail-546) - [常见疾病查询:科目树 → 关键字 → 明细 三步入诊全链路设计](https://www.showapi.com/guides/disease-query-pipeline-546) - [常见疾病查询:医院科室分类全量清单(含 typeId / subId 映射)](https://www.showapi.com/guides/disease-query-department-list-546) - **本系列共 12 篇**:查看[常见疾病查询指南总目录](https://www.showapi.com/guides/disease-query-guides-546)