标准API对接-启动相机
用户在第三方合作伙伴APP或小程序进行登记注册,将信息通过接口同步给鹰瞳系统并启动相机。
一、 业务流程描述
- 用户在第三方系统中进行筛查登记,并将基础信息通过接口1传入鹰瞳系统中并启动相机;
- 相机启动,进行拍摄眼底影像;
- 眼底相机自动将眼底影像上传至鹰瞳系统,鹰瞳系统将基础信息和眼底影像进行匹配,生成评估报告;
- 鹰瞳Airdoc系统推送报告到第三方系统中(或者第三方系统主动查询鹰瞳Airdoc系统获取报告);
- 第三方系统展示报告。
二、接口
接口1:接收用户信息,启动相机(鹰瞳Airdoc系统)
场景和说明
鹰瞳Airdoc系统使用本接口接收合作伙伴系统推送过来的⽤户信息,并启动相机。
接口地址
- 测试环境:https://staging-open.airdoc.com/api/openapi/CameraLaunch
- 生产环境:https://pe-open.airdoc.com/api/api/openapi/CameraLaunch
请求方式
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:通过邮件提供密钥 |
sn |
string |
是 |
|
设备SN |
medical_record_no |
string |
是 |
|
业务方的用户唯一标识 |
name |
string |
是 |
|
姓名 |
gender |
int |
是 |
|
1:男;2:女 |
birthday |
int |
是 |
|
出生日期, 格式 1990-02-02 |
medical_history |
string |
是 |
|
多个病史用英文逗号分隔,比如:“1,2"表示有糖尿病和高血压病史 |
height |
int |
是 |
|
身高,单位厘米 |
weight |
float |
是 |
|
体重,公斤 |
phone |
string |
否 |
|
比如:13800000000 |
病史
medical_history |
描述 |
0 |
无 |
1 |
糖尿病 |
2 |
高血压 |
3 |
高血脂 |
4 |
肾病 |
5 |
风湿免疫病 |
6 |
肿瘤 |
7 |
高眼压史/青光眼 |
8 |
白内障 |
参数示例
{
"appid": 870200,
"t": 1527062055,
"salt": "randstring",
"user_id": "87621",
"sign": "94a1b8563f08a8b9c65189161fb61922",
"sn": "FFxxxxxxxxxxxxxxx",
"medical_record_no": "22201805222033999",
"name": "测试01",
"gender": 1,
"birthday": "1990-02-02",
"medical_history": "1,2",
"height": 170,
"weight": 70,
"phone": "13800001234"
}
返回结果(JSON)
字段 |
必填 |
类型 |
示例值 |
描述 |
error_code |
是 |
Int |
0 |
0:成功 |
message |
是 |
string |
0 |
比如:启动成功 |
data |
否 |
object or null |
|
|
data.uuid |
是 |
string |
|
筛查码 |
{
"error_code": 0,
"message": "启动成功",
"data": {
"uuid": "899632578733"
}
}
异常
{
"error_code": 10,
"message": "设备未开机或未联网",
"data": {
"tips": [
"请检查设备是否开机",
"网络连接是否正常",
"再点击开始重试~"
]
}
}
正常启动 http status_code状态码 等于200
error_code == 0
参数错误 状态码返回400
相机启动失败 状态码200
error_code 如下
error_code 具体含义
1 没有绑定相机
5 相机启动失败
6 相机不在线
7 相机已锁定
8 设备准备中
9 未检查到设备
10 设备未开机或者未联网
11 设备镜头正在清洁
12 设备启动模式错误
13 设备正在使用中
接口2:接收Airdoc推送检查结果(合作伙伴系统)
描述
合作伙伴系统中用来接收Airdoc系统推送过来的报告的接口,Airdoc会配置到自身系统中,并在报告生成后调用。接口是的基于http协议的 (支持https),请区分测试环境和生产环境。签名验证成功表示推送来源(Airdoc)可信任。
请求方式
HTTP METHOD:POST
HEADERS: "Content-Type: application/json"
参数说明(JSON)
字段名 |
类型 |
是否必填 |
默认值 |
描述 |
sign_type |
string |
是 |
|
sha1 |
timestamp |
int |
是 |
|
时间戳(10位) |
signature |
string |
是 |
|
签名 |
h5 |
string |
是 |
|
h5报告链接(长期有效) |
pdf |
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 |
如有视力下降、眼胀眼痛、视物模糊变形等症状,请及时就诊。 |
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:通过邮件提供 |
uuid |
string |
是 |
|
体检号,同接口1 (uuid、medical_record_no 二选一即可,有uuid优先) |
medical_record_no |
string |
是 |
|
当前检查用户id,同接口1 |
参数示例
{
"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: 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 |