API 的调用时机由客户侧判断,当客户侧认为当前需要调用搜索 API 获取一次相关科普内容时,可执行调用查询,API 接口按调用次数计费。API 只返回内容的标题和概要等信息,不返回正文全文。
一、接口地址
·预发布环境域名:https://preview.baike.qq.com
·生产环境域名:https://h5.baike.qq.com
注意:说明:
注意:在新接口联调时,请使用预发布环境的域名;已上线接口使用正式环境域名。
二、接口说明
·接口地址:https://preview.baike.qq.com/api/access/json/cmd/SearchV2
·接口请求方式:POST
·接口请求头:Content-Type: application/json
三、签名生成说明
| 参数名称 | 参数代码 | 说明 |
| 当前 UNIX 时间戳 | timestamp | 单位秒。如果 timestamp 表示的时间戳与医典服务端时间相差超过三分钟,则认为请求过时,会拒绝请求并返回相应的错误。 |
| 随机数 | noncestr | 随机字符串,用于生成签名。 |
| 签名 | signature | 生成签名的流程如下:1. appid,timestamp,noncestr 三个参数按"appid=%s&noncestr=%s×tamp=%s" 格式拼接。2. 使用 appsecret 将上述拼接字符串通过 hmac 签名算法进行 sha256 摘要(直接 hmac 时 sha256),编码为字符串后即为此次请求的签名。 |
| 渠道 ID | appid | 请 联系我们 为你提供。 |
| 渠道密钥 | appsecret | 请 联系我们 为你提供。 |
| 渠道标识 | adtag | 请 联系我们 为你提供。 |
四、输入参数说明
| 参数名称 | 参数代码 | 必选 | 类型 | 说明 |
| 请求头 | header | 是 | object | – |
| 请求版本号 | header.version | 是 | string | 固定传1.0.0 |
| 请求标志 | header.flag | 是 | int | 固定传0 |
| 请求体 | body | 是 | object | – |
| 请求序号 | body.seq | 是 | int | 固定传0 |
| 请求命令字 | body.cmd | 是 | string | 固定传 SearchV2 |
| 请求签名 | body.token | 是 | string | 固定传空字符串 |
| 请求客户端信息 | body.client | 是 | object | – |
| 请求客户端 IP | body.client.clientIP | 是 | string | 固定传空字符串 |
| 请求渠道标识 | body.client.adtag | 是 | string | 请 联系我们 为你提供。 |
| 请求参数 | body.payload | 是 | object | – |
| 当前 UNIX 时间戳 | body.payload.timestamp | 是 | string | 单位秒。请求参数说明详见 签名生成说明。 |
| 随机数 | body.payload.noncestr | 是 | string | 请求参数说明详见 签名生成说明。 |
| 签名 | body.payload.signature | 是 | string | 输入参数示例为 appsecret="test"时生成的签名示例。请求参数说明详见 签名生成说明。 |
| 渠道 ID | body.payload.appid | 是 | string | 请 联系我们 为你提供。 |
| 请求参数 | body.payload.search_req | 是 | object | – |
| 搜索词 | body.payload.search_req.query | 是 | string | – |
| 文章列表位移 | body.payload.search_req.offset | 是 | int | 用于分页 |
| 文章列表数量 | body.payload.search_req.count | 是 | int | 单次搜索返回的内容数量,不超过50。 |
| 渠道 ID | body.payload.search_req.adtag | 是 | string | 请 联系我们 为你提供。 |
| 搜索类型 | body.payload.search_req.type | 是 | int | 0:返回百科+文章+视频+问答1:百科2:文章5:问答8:视频1000:返回百科+文章+视频+问答视频单独返回 |
| 搜索 ID | body.payload.search_req.searchid | 是 | string | 搜索 ID,用于定位请求排查问题。 |
五、响应参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 请求头 | header | object | – |
| 请求版本号 | header.version | string | – |
| 请求标志 | header.flag | int | – |
| 请求体 | body | object | – |
| 请求序号 | body.seq | int | – |
| 请求命令字 | body.cmd | string | – |
| 接入返回码 | body.retcode | string | 只有 retcode 和 bizcode 都为0时表示接口调用成功。 |
| 业务返回码 | body.bizcode | string | 只有 retcode 和 bizcode 都为0时表示接口调用成功。 |
| 错误信息 | body.message | string | – |
| 请求 ID | body.traceid | string | 有问题提供返回的 traceid,方便定位问题。 |
| 响应参数 | body.payload | object | – |
| 搜索到的百科列表 | body.payload.diseases | array | 只返回一个百科数据。响应参数结构详见 响应百科参数说明。 |
| 文章列表 | body.payload.mixdocs | array | 响应参数结构详见 响应百科参数说明。 |
| 文章列表数量 | body.payload.mixCount | int | – |
| body.payload 废弃字段 | qaassists、drug2、videoindex、doctorindex、relatekey、relatekeyindex、hospitalindex、feverflag、feverhp、feverhpCount、insets、insetCount、insetindex、aidiagnosisdata、getaidgsdrlistdata、topactivelist、sortrulev2、answerv2、aidiadoctors、aidiarawdata、hpresults、relatedhps、correctquery、correcttype、kepudocs、recommend_hsps、medicines、medicineCount、deptexam、insurance、scheme_info、symptoms、tags、relatekeys、cityname、searchid、doctors、videos、answer、docs、sortrule、drug、activelist、keywords、moreDocs、moreDiseases、moreSymptoms、docCount、diseaseCount、doctorCount、hospitalCount、qas、qaCount、qatags、ai_analysis_card、questions、tabs、docidlist、hospitals、kepuqas、notes、noteCount、videoCount、mixnotes | / | 字段暂无使用,可忽略 |
六、响应百科参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 百科名 | name | string | 百科标题 |
| 百科别名 | alias | array | 非必填字段。医学别名,专业意义对等。例如:百科标题为【眶周色素沉着】,别名为【眶周过度色素沉着症】。 |
| 科室 | disdepart | array | 非必填字段 |
| 部位 | disbody | string | 非必填字段 |
| 百科摘要 | summary | string | 150个字的概要 |
| 百科对应 tab 列表 | tabs | array | 响应参数结构详见 响应百科列表 tab 参数说明。 |
| 跳转 URL | gotourl | string | – |
| 百科类型 | ctype | int | 0:疾病10:症状13:手术操作页14:检查检验15:检查指标17:灾害类21:西药22:中药24:器官25:医学名词26:腧穴词条 |
| 缩略图 | image | string | 非必填字段,存在空图情况。 |
| 作者信息 | op_author | object | 非必填字段。作者展示逻辑参考:优先展示医生,医生为空展示医院。响应参数结构详见 响应作者信息参数说明。如果有返回多个医生,建议展示第一个医生。 |
| 废弃字段 | summarys、tips、did、fatabs、cardid、tabIdx、matchflag、drugaddition、merdian、released、wxaurl、symptoms、distype、id、h5url、type、outerurl、oriname、source、extra、matchalias、show_icon、aliasex | / | 字段暂无使用,可忽略。 |
七、响应文章列表说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 类型 | type | int | 2:文章5:问答8:视频 |
| 文章 | doc | object | 响应参数结构详见 响应文章文章类型参数说明。 |
| 问答 | qa | object | 响应参数结构详见 响应文章问答类型参数说明。 |
| 视频 | video | object | 响应参数结构详见 响应文章视频类型参数说明。 |
| 废弃字段 | author、distab、cardid | / | 字段暂无使用,可忽略。 |
八、响应百科列表 tab 参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 百科名 | disease | string | – |
| tab 拼音 | entry | string | – |
| tab 名称 | tab | string | – |
| tab 图标 | icon | string | 疾病、症状、药品类型会有 tab 图标,其他类型的百科没有 tab 图标。 |
| 跳转 URL | gotourl | string | – |
| 废弃字段 | images、active_icon、disvideo、question、id、rtf_text、outerurl、h5url、inactive_icon、wxaurl、md_text | / | 字段暂无使用,可忽略。 |
九、响应文章文章类型参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 文章标题 | title | string | – |
| 文章 ID | docid | string | – |
| 文章标签 | tags | array | 非必填字段 |
| 文章摘要 | summary | string | – |
| 音频时长 | duration | int | 非必填字段,单位为秒。 |
| 音频大小 | size | int | 非必填字段,单位 KB。 |
| 音频地址 | url | string | 非必填字段 |
| 作者信息 | op_author | object | 非必填字段作者展示逻辑参考:优先展示医生,医生为空展示医院,医院为空展示文章来源。响应参数结构详见 响应作者信息参数说明。如果有返回多个医生,建议展示第一个医生。 |
| 文章来源 | source | string | – |
| 跳转 URL | gotourl | string | – |
| 废弃字段 | src、paraid、cardid、publish_time、cpflag、outerurl、wxaurl、doctype、image | / | 字段暂无使用,可忽略。 |
十、响应文章问答类型参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 文章标题 | title | string | |
| 文章 ID | docid | string | |
| 文章概要 | md_text | string | |
| 文章来源 | source | string | |
| 音频时长 | duration | int | 非必填字段,单位为秒。 |
| 音频大小 | size | int | 非必填字段,单位 KB |
| 音频地址 | url | string | 非必填字段 |
| 作者信息 | op_author | object | 非必填字段作者展示逻辑参考:优先展示医生,医生为空展示医院,医院为空展示文章来源。响应参数结构详见 响应作者信息参数说明。如果有返回多个医生,建议展示第一个医生。 |
| 跳转 URL | gotourl | string | |
| 废弃字段 | paraid、cpflag、wxaurl、outerurl、question | / | 字段暂无使用,可忽略 |
十一、响应文章视频类型参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 文章标题 | title | string | – |
| 文章 ID | docid | string | – |
| 文章标签 | tags | array | 非必填字段 |
| 文章图片 | image | string | 非必填字段 |
| 文章摘要 | summary | string | – |
| 音频时长 | duration | int | 非必填字段,单位为秒。 |
| 作者信息 | op_author | object | 非必填字段。作者展示逻辑参考:优先展示医生,医生为空展示医院,医院为空展示文章来源。响应参数结构详见 响应作者信息参数说明。如果有返回多个医生,建议展示第一个医生。 |
| 文章来源 | source | string | – |
| 跳转 URL | gotourl | string | – |
| 废弃字段 | doctype、cpflag、wxaurl、url、cardid、outerurl | / | 字段暂无使用,可忽略 |
十二、响应作者信息参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 医生背书信息 | op_doctor | array | 响应参数结构详见 响应作者医生信息参数说明。 |
| 医院背书信息 | op_hospital | object | 响应参数结构详见 响应作者医院信息参数说明。 |
十三、响应作者医生信息参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 医生 ID | drid | int | – |
| 医院 ID | hpid | int | – |
| 医生名字 | name | string | – |
| 医生头像 | icon | string | 非必填字段 |
| 医生职称 | position | string | – |
| 医院名称 | hospital | string | – |
| 医生科室 | department | string | – |
| 组合好的审阅描述信息,用于展示。 | text | string | – |
| 医生类型 | weight | int | 0:普通医生2:顾问级专家 |
| 是否特约作者 | sole | int | 0:不是特约作者1:是特约作者 |
| 废弃字段 | doctor_clickable、hospital_clickable、follow、hprank、prefix | / | 字段暂无使用,可忽略。 |
十四、响应作者医院信息参数说明
| 参数名称 | 参数代码 | 类型 | 说明 |
| 医院 ID | hpid | int | – |
| 医院名字 | name | string | – |
| 医院头像 | icon | string | 非必填字段 |
| 废弃字段 | clickable、hprank、prefix、info | / | 字段暂无使用,可忽略。 |
十六、输入参数示例
{ "header": { "version": "1.0.0", "flag": 0 }, "body": { "seq": 0, "cmd": "SearchV2", "token": "", "client": { "clientIP": "", "adtag": "$adtag" }, "payload": { "timestamp": "1669950164", "noncestr": "0.623706833947", "signature": "33c8f78ce2258c30af5f31b4153cd8b69035bfad06294a08c4ca0cf2ab5e4a46", "appid": "2000000000000000", "search_req": { "query": "乳腺癌", "offset": 0, "count": 10, "adtag": "$adtag", "type": 0, "searchid": "b67ee785-40ab-4cc9-8c73-c2b1ba3fbdc2" } } }}
十七、响应参数示例
{ "header": { "version": 0, "flag": 0 }, "body": { "retcode": 0, "bizcode": 0, "cmd": "Search", "message": "success", "payload": { "qaassists": [ ], "drug2": [ ], "videoindex": 0, "doctorindex": 10, "relatekey": [], "relatekeyindex": 4, "hospitalindex": 0, "feverflag": 0, "feverhp": [ ], "feverhpCount": 0, "insets": [ ], "insetCount": 0, "insetindex": 0, "aidiagnosisdata": "", "getaidgsdrlistdata": "", "topactivelist": [ ], "sortrulev2": [], "answerv2": [ ], "aidiadoctors": [ ], "aidiarawdata": [ ], "hpresults": [ ], "relatedhps": [ ], "correctquery": "", "correcttype": 0, "kepudocs": [ ], "recommend_hsps": [ ], "medicines": [ ], "medicineCount": 0, "deptexam": [ ], "insurance": [ ], "scheme_info": { }, "symptoms": [ ], "tags": [ ], "relatekeys": [], "cityname": "", "searchid": "1e1f85dc056f993b5f33e941767d7815", "doctors": [], "videos": [ ], "answer": {}, "mixdocs": [ { "doc": { "title": "乳腺癌有哪些类型,有何治疗药物?", "tags": [ "乳腺癌" ], "src": "", "paraid": "", "size": 0, "cardid": "", "publish_time": "", "docid": "tx00008001lrjqn7", "op_author": { "op_hospital": { "name": "徐兵河", "hprank": "", "info": "", "prefix": "", "icon": "https://baike-med-1256891581.file.myqcloud.com/2019053中文版独家授权/619aec90-721a-11e9-bf76-53f51d196acf_0.png", "clickable": 1, "hpid": 1000 }, "op_doctor": [ ] }, "summary": "乳腺癌分为:激素受体阳性乳腺癌、HER-2 阳性乳腺癌与三阴性乳腺癌。", "gotourl": "https://preview.baike.qq.com/mobile/article.html?sn=yidian-sn-54JAxZunQg8wZVmFIHXYUIBVvOYkTjshv9zipZXs59JgRjW0UsWmhAtQxV202xc3&adtag=yd.nr.wz.test&searchid=1e1f85dc056f993b5f33e941767d7815&wzbanner=1", "cpflag": 0, "outerurl": "", "wxaurl": "", "doctype": 0, "source": "", "duration": 180, "url": "", "image": "" }, "author": {}, "distab": {}, "outerurl": "", "type": 2, "qa": { "title": "", "op_author": { "op_hospital": { "name": "", "hprank": "", "info": "", "prefix": "", "icon": "", "clickable": 0, "hpid": 0 }, "op_doctor": [ ] }, "question": "", "outerurl": "", "wxaurl": "", "gotourl": "", "cpflag": 0, "paraid": "", "size": 0, "md_text": "", "source": "", "duration": 0, "url": "", "docid": "" }, "video": { "title": "", "op_author": { "op_hospital": { "name": "", "hprank": "", "info": "", "prefix": "", "icon": "", "clickable": 0, "hpid": 0 }, "op_doctor": [ ] }, "tags": [ ], "image": "", "cardid": "", "summary": "", "gotourl": "", "url": "", "outerurl": "", "cpflag": 0, "doctype": 0, "source": "", "duration": 0, "wxaurl": "", "docid": "" } }], "docs": [ ], "sortrule": [ ], "drug": {}, "activelist": [ ], "keywords": [], "moreDocs": 0, "moreDiseases": 0, "moreSymptoms": 0, "diseases": [ { "aliasex": [ ], "summarys": [ ], "tips": "", "did": 8, "fatabs": [ ], "cardid": "", "tabIdx": 0, "matchflag": 1, "drugaddition": {}, "ctype": 0, "summary": "什么是乳腺癌?乳腺癌,是一类由于基因、激素紊乱等原因导致乳腺组织发生癌变,并不断无限增长的恶性肿瘤。疾病名称/定义的演变:无乳腺癌病如何分类/分型/分期?根据侵犯范围,可分为原位癌和浸润性癌。该分类方法可以帮助患者判断病情的严重程度。根据癌细胞的特点,乳腺癌又可分为 Luminal 型乳腺癌、HER", "merdian": [ ], "released": 1, "op_author": { "op_hospital": { "name": "", "hprank": "", "info": "", "prefix": "", "icon": "", "clickable": 0, "hpid": 0 }, "op_doctor": [ { "icon": "https://baike-med-1256891581.file.myqcloud.com/2018095/2944dde0-b25a-11e8-926b-21df1809aaee_0.png", "position": "主任医师", "hospital": "中国医学科学院肿瘤医院", "department": "内科", "doctor_clickable": 1, "text": "中国医学科学院肿瘤医院徐兵河主任医师审阅", "weight": 0, "follow": 0, "name": "徐兵河", "hprank": "三甲", "sole": 0, "hospital_clickable": 0, "prefix": "编审专家", "doctor_type": 0, "drid": 10109, "hpid": 0 } ] }, "wxaurl": "", "alias": [ "乳腺恶性肿瘤" ], "symptoms": [ ], "distype": "", "disdepart": [ "乳腺外科" ], "disbody": "", "tabs": [ { "icon": "https://baike-med-1256891581.file.myqcloud.com/2019041/371ac480-60e1-11e9-ba8a-459ee8038aa5_0.png", "images": [ ], "active_icon": "", "disvideo": [ ], "question": "", "id": "tx00008000gizwcv", "disease": "乳腺癌", "gotourl": "https://preview.baike.qq.com/mobile/overview_detail.html?name=%E4%B9%B3%E8%85%BA%E7%99%8C&m=a317741300d87361523786f1a08665d6&m=a317741300d87361523786f1a08665d6&sn=yidian-sn-upwCrtS%2B5Ep7hAFzNTZiK%2BkblS49PnQ9Oej6ZAJyaS7GCxD8uycaoxPMFMqtYpz%2F&tab=gaishu&adtag=yd.bk.jb.test&searchid=1e1f85dc056f993b5f33e941767d7815&wzbanner=1", "rtf_text": "", "outerurl": "", "entry": "gaishu", "tab": "概述", "h5url": [ ], "inactive_icon": "", "wxaurl": "", "md_text": "什么是乳腺癌?乳腺癌,是一类由于基因、激素紊乱等原因导致乳腺组织发生癌变,并不断无限增长的恶性肿瘤。疾病名称/定义的演变:无乳腺癌病如何分类/分型/分期?根据侵犯范围,可分为原位癌和浸润性癌。该分类方法可以帮助患者判断病情的严重程度。根据癌细胞的特点,乳腺癌又可分为 Luminal 型乳腺癌、HER" } ], "name": "乳腺癌", "id": "tx00008000gizwcv", "h5url": "", "gotourl": "https://preview.baike.qq.com/mobile/overview_detail.html?name=%E4%B9%B3%E8%85%BA%E7%99%8C&m=a317741300d87361523786f1a08665d6&m=a317741300d87361523786f1a08665d6&sn=yidian-sn-upwCrtS%2B5Ep7hAFzNTZiK%2BkblS49PnQ9Oej6ZAJyaS7GCxD8uycaoxPMFMqtYpz%2F&adtag=yd.bk.jb.test&searchid=1e1f85dc056f993b5f33e941767d7815&wzbanner=1", "type": 0, "outerurl": "", "oriname": "", "source": 0, "extra": "", "matchalias": "", "show_icon": true, "image": "https://baike-med-1256891581.file.myqcloud.com/2019102/6ee4a160-ea3e-11e9-aad2-eda8a1da92be_1_192x144.png" } ], "docCount": 100, "diseaseCount": 0, "doctorCount": 378, "hospitalCount": 0, "qas": [ ], "qaCount": 0, "qatags": [ ], "ai_analysis_card": [ ], "questions": [ ], "tabs": [ ], "docidlist": [ ], "hospitals": [ ], "kepuqas": [ ], "mixCount": 100, "notes": [ ], "noteCount": 0, "videoCount": 100, "mixnotes": [ ] }, "traceid": "28d71b26-09ec-4428-a3e3-8e447ac2f96f", "seq": 0 }}
十九、预发布示例
curl -H 'content-type: application/json' -d '{ "header": { "version": "1.0.0", "flag": 0 }, "body": { "seq": 0, "cmd": "SearchV2", "token": "", "client": { "clientIP": "192.168.1.1", "adtag": "$adtag" }, "payload": { "timestamp": "1494231435", "noncestr": "0.623706833947", "signature": "52e050f0e82da2b7582360f516acd04a71eb67e", "appid": "2000000000000000", "search_req": { "query": "乳腺癌", "offset": 0, "count": 10 } } }}' 'https://preview.baike.qq.com/api/access/json/cmd/SearchV2'
20、生产示例
curl -H 'content-type: application/json' -d '{ "header": { "version": "1.0.0", "flag": 0 }, "body": { "seq": 0, "cmd": "SearchV2", "token": "", "client": { "clientIP": "192.168.1.1", "adtag": "$adtag" }, "payload": { "timestamp": "1494231435", "noncestr": "0.623706833947", "signature": "52e050f0e82da2b7582360f516acd04a71eb67e", "appid": "2000000000000000", "search_req": { "query": "乳腺癌", "offset": 0, "count": 10 } } }}' 'https://h5.baike.qq.com/api/access/json/cmd/SearchV2'
21、小程序校验文件
如果是小程序内嵌医典的 H5页面,由于微信平台要求域名需授权才能访问,需提供校验文件给医典侧配置,具体流程如下:
客户侧去小程序后台录入医典正式环境域名(https://h5.baike.qq.com/ ),微信后台会生成校验文件,将校验文件发给医典对接人配置后,才能正常在客户小程序内访问医典页面。