标准API对接-启动相机

用户在第三方合作伙伴APP或小程序进行登记注册,将信息通过接口同步给鹰瞳系统并启动相机。

一、 业务流程描述

  1. 用户在第三方系统中进行筛查登记,并将基础信息通过接口1传入鹰瞳系统中并启动相机;
  2. 相机启动,进行拍摄眼底影像;
  3. 眼底相机自动将眼底影像上传至鹰瞳系统,鹰瞳系统将基础信息和眼底影像进行匹配,生成评估报告;
  4. 鹰瞳Airdoc系统推送报告到第三方系统中(或者第三方系统主动查询鹰瞳Airdoc系统获取报告);
  5. 第三方系统展示报告。

二、接口

接口1:接收用户信息,启动相机(鹰瞳Airdoc系统)

场景和说明

鹰瞳Airdoc系统使用本接口接收合作伙伴系统推送过来的⽤户信息,并启动相机。

接口地址

请求方式

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报告链接

接口地址

请求方式

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