标准API对接-H5启动页面
用户在第三方合作伙伴APP或小程序进行登记注册,并自助启动相机
- 适用场景:有开发能力的大健康、代理商、健康小屋等场景
- 适用设备:自研相机(Fd16r、Fd16g, FD16aN, FD16aF)
一、 流程图

二、 业务流程描述
-
用户在第三方系统中进行筛查登记,并将基础信息传入鹰瞳Airdoc系统中,鹰瞳Airdoc接收基础信息成功后,会返回一个h5的相机启动页面;
-
第三方系统跳转到该相机启动页面,用户点击页面启动相机,进行拍摄眼底影像;
-
眼底相机自动将眼底影像上传至鹰瞳Airdoc系统;
-
鹰瞳Airdoc系统将接收到基础信息和眼底影像进行匹配,生成评估报告;
-
鹰瞳Airdoc系统推送报告到第三方系统中(或者第三方系统通过接口3查询鹰瞳Airdoc系统获取报告);
-
第三方系统展示报告;
三、接口
接口1:接收用户信息推送(鹰瞳Airdoc系统)
场景和说明
鹰瞳Airdoc系统使用本接口接收合作伙伴系统推送过来的⽤户信息。⼀次只能传输一个⽤户的信息,返回一个启动相机链接,仅本次有效。
接口地址
- 测试环境:https://staging-open.airdoc.com/api/openapi/receive_base_info
- 生产环境:https://pe-open.airdoc.com/api/openapi/receive_base_info
请求方式
HTTP METHOD:POST
HEADERS: "Content-Type: application/json"
参数说明(JSON)
| 字段名 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| appid | int | 是 | 合作伙伴ID,Airdoc分配,在Airdoc系统内唯一 | |
| t | int | 是 | 当前时间戳,参与签名 | |
| user_id | int | 是 | 账号ID,Airdoc分配 | |
| salt | string | 否 | 签名计算用,不传或传空不参与签名验证 | |
| sign | string | 是 | 签名策略: md5(appid+salt+secret_key+t); appid,secret_key:通过邮件提供密钥 | |
| h5_start | int | 否 | 用户启动相机参数 | |
| data[0].sn | string | 是 | 设备SN | |
| data[0].medical_record_no | string | 是 | 用户id(合作伙伴系统中,当前用户唯一id) | |
| data[0].name | string | 是 | 姓名 | |
| data[0].gender | int | 是 | 1:男;2:女 | |
| data[0].age | int | 是 | 周岁为准,如:30 | |
| data[0].medical_history | string | 是 | 多个病史用英文逗号分隔,比如:“1,2"表示有糖尿病和高血压病史 | |
| data[0].package_id | string | 否 | Airdoc分配, 协商好枚举类型 | |
| data[0].height | int | 否 | 身高,单位厘米 | |
| data[0].weight | float | 否 | 体重,公斤 | |
| data[0].phone | string | 否 | 比如:13800000000 | |
| data[0].complained | string | 否 | 主诉, 255个字符以内 | |
| data[0].left_corrected_vision | string | 否 | 左眼矫正视力型 | |
| data[0].right_corrected_vision | string | 否 | 右眼矫正视力型 | |
| data[0].exam_company_name | string | 否 | 公司名称 | |
| data[0].exam_project_id | string | 否 | 项目id |
病史
| medical_history | 描述 |
|---|---|
| 0 | 无 |
| 1 | 糖尿病 |
| 2 | 高血压 |
| 3 | 高血脂 |
| 4 | 肾病 |
| 5 | 风湿免疫病 |
| 6 | 肿瘤 |
| 7 | 高眼压史/青光眼 |
| 8 | 白内障 |
参数示例
{
"appid": 870200,
"t": 1527062055,
"salt": "randstring",
"user_id": "87621",
"sign": "94a1b8563f08a8b9c65189161fb61922",
"h5_start": 1,
"data": [
{
"medical_record_no": "22201805222033999",
"name": "测试01",
"gender": 1,
"age": "22",
"sn": "FD06DWCNW220250000KS",
"medical_history": "1,2",
"height": 170,
"weight": 70,
"phone": "13800001234"
}
]
}
返回结果(JSON)
| 字段 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|
| error_code | 是 | Int | 0 | 0:成功 |
| message | 是 | string | 0 | 比如:同步成功 |
| data.url | 是 | string | 0 | H5页面路径 |
| data.expire_in | 是 | string | 0 | 本次启动链接的失效时间 |
| data.pcode | 是 | string | 0 | 本次筛查码 |
{
"error_code": 0,
"message": "同步成功",
"data": {
"url": "https://pe.airdoc.com/startFD16?pcode=89968764678&sn=fghjk",
"expire_in": "2021-10-17 00:00:00",
"pcode": "8991234567890"
}
}
注:url: 这里是示意,实际根据接口返回,收到后传给前端跳转到此url即可
异常
{
"error_code": 900034,
"message": "设备序列号系统未找到",
"data": ""
}
接口2:接收Airdoc推送检查结果(合作伙伴系统)
描述
合作伙伴系统中用来接收Airdoc系统推送过来的报告的接口,Airdoc会配置到自身系统中,并在报告生成后调用。接口是的基于http协议的 (支持https),请区分测试环境和生产环境。签名验证成功表示推送来源(Airdoc)可信任。
- 测试环境:TBD
- 生产环境:TBD
请求方式
HTTP METHOD:POST
HEADERS: "Content-Type: application/json"
参数说明(JSON)
| 字段名 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| sign_type | string | 是 | sha1 | |
| timestamp | int | 是 | 时间戳(10位) | |
| signature | string | 是 | 签名 | |
| h5 | string | 是 | h5报告链接(长期有效) | |
| string | 是 | pdf报告链接(三天有效期) | ||
| medical_record_no | string | 是 | 用户id,来自接口1 | |
| uuid | string | 是 | 鹰瞳筛查码 | |
| right_result | string | 否 | 右眼结果 | |
| left_result | string | 否 | 左眼结果 | |
| suggestion | string | 否 | 综合建议 | |
| suggestion_level | string | 否 | 综合建议等级 | |
| image_qc | string | 否 | 0正常,1左眼不可读, 2右眼不可读, 3双眼不可读 |
综合建议等级
| suggestion_level | 综合建议 |
|---|---|
| 0 | 目前情况良好,建议定期复查。 |
| 1 | 目前暂无需就医治疗,定期复查。 |
| 2 | 如有视力下降、眼胀眼痛、视物模糊变形等症状,请及时就诊。 |
| 2.5 | 如有青光眼家族史、高度近视,或有眼痛、眼胀、虹视等症状,建议进一步眼科检查。否则暂无需就医,可定期复查。 |
| 3 | 建议进一步眼科检查。 |
| 4 | 视网膜存在严重病变高风险,视力可能受到严重影响,建议立即到医院眼科就诊。 |
参数示例(JSON)
{
"sign_type": "sha1",
"timestamp": 1603356013,
"signature": "4b41ad96b4e7e55b34f760b4490e977cb48065ae",
"h5": URL1,
"pdf": URL2,
"medical_record_no": "",
"uuid": "",
"right_result": "右眼结果",
"left_result": "左眼结果",
"suggestion": "综合建议 。",
"image_qc": 0,
"suggestion_level": 1
}
签名方法:
sha1(secret_key + timestamp + medical_record_no) 或
sha1(secret_key + timestamp + uuid)
* 具体情况根据配置来决定,请尝试两种方式,以具体匹配为准
签名举例
secret_key = "94a1b8563f08a8b9c65189161fb61aaa"; // 同接口1
timestamp = 1603356013; // 来自于推送参数, 当前unix时间戳,单位到秒
medical_record_no = "445678";
signature_string = "94a1b8563f08a8b9c65189161fb61aaa1603356013445678"
signature = sha1(signature_string)
返回
{
"error_code": 0,
"message": "success"
}
{
"error_code": 1001,
"message": "签名验证失败"
}
{
"error_code": 1003,
"message": "其他情况的失败都归到1003"
}
接口3:查询报告状态(鹰瞳Airdoc 系统)
场景和说明
本接⼝适⽤于从鹰瞳Airdoc 系统查询某个⽤户的报告的状态和获取PDF报告链接
接口地址
- 测试环境:https://staging-open.airdoc.com/api/openapi/get_report_result
- 生产环境:https://pe-open.airdoc.com/api/openapi/get_report_result
请求方式
HTTP METHOD:POST
HEADERS: "Content-Type: application/json"
参数说明(JSON)
| 字段名 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| appid | int | 是 | 合作伙伴ID | |
| t | int | 是 | 当前时间戳,参与签名 | |
| user_id | int | 是 | 账号ID,Airdoc分配 | |
| salt | string | 否 | 签名计算用,不传或传空不参与签名验证 | |
| sign | string | 是 | 签名策略: md5(appid+salt+secret_key+t); appid,secret_key:通过邮件提供 | |
| medical_record_no | string | 是 | 当前检查用户id,同接口1 | |
| pcode | string | 是 | 本次筛查码,同接口1。medical_record_no 和 pcode 二选一即可,如单个用户有多次检查,建议使用 pcode |
参数示例
{
"appid": 870000,
"t": 1527062055,
"salt": "randstring",
"user_id": 87621,
"sign": "94a1b8563f08a8b9c65189161fb61922",
"medical_record_no": "987654345678"
}
返回结果(JSON)
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| error_code | int | 0 | 0:成功, |
| message | string | 比如:查询成功 | |
| data.h5 | string | 报告的H5链接 | |
| data.pdf | string | PDF报告的链接, 3天有效期,需下载到第三方系统并存储 | |
| data.medical_record_no | string | 当前用户id | |
| data.right_result | string | 右眼结果 | |
| data.left_result | string | 左眼结果 | |
| data.suggestion | string | 综合建议 | |
| data.suggestion_level | string | 综合建议等级 | |
| data.image_qc | string | 0正常,1左眼不可读, 2右眼不可读, 3双眼不可读 |
返回示例
{
"error_code": 600001,
"message": "未拍摄或未上传"
}
{
"error_code": 600002,
"message": "未评估完成"
}
{
"error_code": 600003,
"message": "未查到用户id"
}
{
"error_code": 600004,
"message": "未查到用户信息"
}
{
"error_code": 600005,
"message": "未查到pcode"
}
{
"error_code": 600009,
"message": "余额不足"
}
{
"error_code": 600081,
"message": "没有权限"
}
{
error_code: 0,
message: "查询成功",
data: {
"sign_type": "sha1",
"timestamp": 1603356013,
"signature": "4b41ad96b4e7e55b34f760b4490e977cb48065ae",
"h5": URL1,
"pdf": URL2,
"medical_record_no": "",
"right_result": "右眼结果",
"left_result": "左眼结果",
"suggestion": "综合建议 。",
"image_qc": 0,
"suggestion_level": 1
}
}
错误码
| error_code | 描述 |
|---|---|
| 0 | 0:成功 |
| 100401 | appid不存在 |
| 100402 | 签名验证失败 |
| 900034 | 设备序列号系统未找到 |
| 600001 | 未拍摄或未上传 |
| 600002 | 未评估完成 |
| 600003 | 未查到用户id |
| 600004 | 未查到用户信息 |
| 600005 | 未查到pcode |
| 600009 | 余额不足 |
| 600081 | 没有权限 |
常见问题
Q: 接口1,返回 "error_code": 900034,"message": "设备序列号系统未找到"
A: 请检查body请求中data类型为array