技术博客
健康类 App / 医疗知识库:用常见疾病查询搭建结构化病种库

健康类 App / 医疗知识库:用常见疾病查询搭建结构化病种库

作者: 万维易源
2026-09-03
常见疾病查询API指南免费接口
# 健康类 App / 医疗知识库:用常见疾病查询搭建结构化病种库 > 接口:常见疾病查询(apiCode=546)· 免费 · 请求方式 POST/GET · 返回格式 JSON · 适用人群:健康科普、医疗内容团队 · 阅读时间:约 8 分钟 ## 核心要点 - 用 546-1 建**科室骨架**、546-2 拉**疾病列表**、546-3 灌**症状/诊断/治疗/预防**内容,三步即可搭出结构化病种库。 - 明细的 `tagList` 是天然的内容分块(症状/诊断/治疗/预防),直接映射成知识库字段。 - 免费 + 官方自营,适合做科普内容底座;**内容须标注"仅供参考,非诊疗建议"**。 ## Why:内容团队最缺的是"结构化病种数据" 健康类 App、公众号、医疗科普站,长期需要"某个病有什么症状、怎么治"的结构化内容。手工整理慢、易错。常见疾病查询把病种拆成「科室 → 疾病 → 标签化详情」三级,且免费,正好作为内容中台的数据源:先批量灌库,再在前端做科普卡片/搜索/问答。 ## What:三接入点的内容角色 | 接入点 | 内容角色 | 落库字段 | |--------|---------|---------| | 546-1 | 科室骨架 | typeId/typeName、subId/subName | | 546-2 | 疾病索引 | id、name、summary、typeId/subTypeId | | 546-3 | 病种详情 | alias、tagList(症状/诊断/治疗/预防)、summary | ## How:批量灌库脚本(示意) ```python def build_knowledge_base(): # 1) 科室骨架 depts = call("546-1")["list"] # 2) 遍历科室,分页拉疾病 for dept in depts: page = 1 while True: hits = call("546-2", typeId=dept["typeId"], page=str(page)) items = hits.get("contentlist") or [] if not items: break for d in items: detail = call("546-3", id=d["id"]) # 3) 取明细 it = (detail.get("item") or [{}])[0] tags = {t["name"]: t["content"] for t in it.get("tagList", [])} save_disease({ "disease_id": d["id"], "name": d["name"], "alias": it.get("alias", ""), "dept": f"{d['typeName']}/{d['subTypeName']}", "symptom": tags.get("症状", ""), "diagnosis": tags.get("诊断", ""), "treatment": tags.get("治疗", ""), "prevention": tags.get("预防", ""), }) page += 1 if len(items) < 20: break ``` > 注意:批量灌库属高频调用,请**合理限速**(如每次请求间隔、失败退避),并充分缓存已拉取数据,避免重复请求。具体频率限制以官方说明为准。 ### cURL(单条明细) ```bash curl -X POST "https://route.showapi.com/546-3?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ --data-urlencode "id=<疾病id>" ``` ### Node.js(fetch) ```javascript const detail = await call("546-3", { id: diseaseId }); const it = (detail.item || [])[0]; const tags = Object.fromEntries((it?.tagList || []).map(t => [t.name, t.content])); saveDisease({ name: it?.name, symptom: tags["症状"], treatment: tags["治疗"] }); ``` ## 返回示例与解析 `tagList` 的每个 `{name, content}` 直接映射成知识库的"症状/诊断/治疗/预防"字段;`alias` 可作为同义词用于搜索;`summary` 作列表页摘要。前端渲染成"病种卡片"即可。 ## 进阶 / 边界 - **增量更新**:首次全量灌库后,后续可用缓存 `disease_id` 去重,只补新疾病,减少调用。 - **内容合规**:所有科普内容必须标注"仅供参考,不能替代医生诊断/诊疗建议",避免合规风险。 - **标签 name 不固定**:以接口实时返回的 `name` 为准,存储用键值对而非写死四列。 - **频率控制**:批量场景务必限速 + 退避,详见[FAQ](https://www.showapi.com/guides/disease-query-faq-546)。 ## FAQ **Q1:能直接把返回内容当诊疗建议发布吗?** A:不能。必须标注"仅供参考,非诊疗建议",且不能替代医生诊断。 **Q2:tagList 只有症状/诊断/治疗/预防吗?** A:文档示例为这四类,实际 `name` 以接口返回为准,存储应通用化。 **Q3:批量拉取会触发限制吗?** A:免费接口通常有调用频率约束,建议限速、缓存去重、失败指数退避,具体以官方说明为准。 **Q4:病种库怎么和搜索结合?** A:用 `name`/`alias` 建倒排索引,用户搜病名/别名即可命中,再展示 `tagList` 内容。 ## 相关能力 / 下一步阅读 - [常见疾病查询:取得疾病明细并解析症状/诊断/治疗/预防(546-3 的 tagList)](https://www.showapi.com/guides/disease-query-detail-546) - [免费接口也要缓存:常见疾病查询的静态科室树与明细缓存策略](https://www.showapi.com/guides/disease-query-cache-546) - [常见疾病查询常见问题与 ret_code 排查:0 为成功、非 0 即失败](https://www.showapi.com/guides/disease-query-faq-546) - **本系列共 12 篇**:查看[常见疾病查询指南总目录](https://www.showapi.com/guides/disease-query-guides-546)