1诊开放平台接口文档
版本
| 版本号 | 时间 | 人员 | 说明 |
|---|---|---|---|
| 1.0 | 2017年05月24日 14时36分15秒 | 章培昊,汪涛 | 新建版本,不完善 |
| 1.1 | 2017年05月26日 17时48分01秒 | 章培昊 | 修改Sign计算方法 |
| 1.2 | 2017年06月01日 09时31分23秒 | 章培昊 | 时间戳作为参数进行Sign计算 |
| 1.3 | 2017年06月12日 15时58分26秒 | 章培昊 | 增加问诊查询接口 |
| 1.4 | 2017年08月22日 15时58分26秒 | 周蒙蒙 | 新增添加患者接口 |
接口概述
接口规则
-
统一使用UTF-8编码
-
文档中 partner 变量为具体合作方标识,需要申请
-
1诊开放平台测试服务地址 https://yzmt.111.com.cn/
-
1诊开放平台正式服务地址 https://yzm.111.com.cn/
Sign计算规则
partner_key: 每个合作方的密钥。请妥善保存!待签名参数Map: 每个接口规定了需要参加签名校验的参数,将这些参数按照参数名为key,参数值为value,组成Map待签名参数字符串: 将待签名参数Map按key升序排序,按照key=<value>格式用&连接组成待签名字符串:<待签名参数字符串>+&key=<partner_key>Sign: md5(<待签名字符串>)待签名字符串>
Java8代码例子:
final String PARTENER_KEY = "REPLACE_YOUR_SECURITY_KEY_HERE";
HashMap<String, String> signArgs = new HashMap<>();
signArgs.put("user_id", "somebody@company");
signArgs.put("ts", "1496281246");
signArgs.put("other_argument", "value");
Map<String, String> sortedArgs = signArgs.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) ->
oldValue, LinkedHashMap::new));
String signString = sortedArgs.entrySet().stream()
.map((entry) -> entry.getKey() + "=" + entry.getValue())
.collect(Collectors.joining("&"));
signString = signString+"&key="+PARTENER_KEY;
System.out.println(signString);
byte[] signBytes = signString.getBytes();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5Bytes = md.digest(signBytes);
String md5Result = String.format("%032x",
new BigInteger(1, md5Bytes));
System.out.print(md5Result);
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
输出结果:
other_argument=value&ts=1496281246&user_id=somebody@company&key=REPLACE_YOUR_SECURITY_KEY_HERE
53af7f47af43334ec842546e7c655f75
如果发现验证失败,请将signSring发给岗岭集团的联调开发技术人员,方便排查。
API接口
问诊接口
整理中…
查询用户诊单接口
请求
URL:partner/inquerylist/my
请求方式: POST
请求参数: form-data
| 名称 | 说明 | 类型 | 长度 | 必要 | 参与Sign计算 | 备注 |
|---|---|---|---|---|---|---|
| partner | 合作方标识 | String | 32 | 是 | / | ==需要申请== |
| system | 合作方标识 | String | 32 | 是 | / | 固定值partner |
| user_id | 用户名 | String | 32 | 是 | 是 | 要查询的用户唯一标识 |
| count | 每页的问诊数 | Integer | 32bit | 是 | 否 | 分页查询里,每一页包含的问诊数,最大50 |
| start_num | 页码 | Integer | 32bit | 是 | 否 | 分页查询里,要查询的页数。例如:第一页传1,第二页传2 |
| ts | 签名时间戳 | Long | 64bit | 是 | 是 | unix时间戳(1970年1月1日0时开始的秒数),线上环境有15分钟超时,请保证调用系统的时钟同步。 |
| sign | 签名 | String | 32 | 是 | / | 生成方法参考“Sign计算规则” |
返回
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| ret | 接口调用返回码 | Integer | 32bit | 是 | 1: 成功, 其他: 错误码 |
| msg | 接口调用结果消息 | String | 256 | 是 | 如果调用失败,这里有错误信息 |
| data | 数据结果 | Object | / | 是 | 数据定义,参考”诊单查询结果” |
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| count | Integer | 32bit | 是 | 诊单查询结果总数量(不是分页内诊单数量) | |
| partner_inquery_list | 诊单数组 | Array(Object) | / | 是 | 诊单查询结果(分页数据),诊单对象定义,参考”诊单对象” |
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| create_time | 诊单创建时间 | Long | 64bit | 是 | 创建时间戳(1970年1月1日0时开始的秒数) |
| finish_flag | 诊单完成标志 | String | 32 | 是 | 包含:待处理,处理中,已完成,已取消 |
| guest_dept | 科室 | String | 32 | 是 | 例如:妇科 |
| inquery_id | 诊单ID | Integer | 32bit | 是 | 诊单表唯一主键 |
| mobile | 注册用户电话号码 | String | 32bit | 是 | 注册用户电话号码 |
| pay_flag | 支付状态标志 | String | 32 | 是 | 包含:无需支付;待支付;已支付 |
| photos | 用户上传的照片 | String | 256 | 是 | 多个图片用逗号分隔。例如: hc/1.jpg,hc/2.jpg,图片服务域名参考”1诊开放平台图片服务地址” |
| recipe_list | 处方数组 | Array(Object) | / | 是 | 处方数组,诊单对象定义,参考”处方对象” |
| self_desc | 自诉 | String | 512 | 是 | |
| service_type | 服务类型 | String | 32 | 是 | 选项包含:电话问诊,图文问诊,视频问诊 |
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| doctor_name | 医生姓名 | String | 64 | 是 | |
| patient_name | 患者姓名 | String | 64 | 是 | |
| patient_phone | 患者电话 | String | 64 | 是 | |
| pdf_url | 处方PDF文件地址 | String | 256 | 是 | 例如:recipe/1.pdf,图片服务域名参考”1诊开放平台图片服务地址” |
| recipe_code | 处方编号 | String | 64 | 是 | |
| recipe_time | 处方创建时间 | String | 16 | 是 | 格式:”YYYY-MM-DD”,例如:2017-06-12 |
| sex | 性别 | String | 1 | 是 | 选项包含:F, M |
| medical_list | 药品列表 | Array(Object) | / | 是 | 处方数组,诊单对象定义,参考”药品对象” |
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| drug_code | 药品ID | String | 64 | 是 | |
| drug_name | 药品名称 | String | 64 | 是 | |
| specification | 药品规格 | String | 256 | 是 | 例如:100mg*7片 |
| specification_num | 药品数量 | String | 64 | 是 | 例如:11 |
| url | 药品连接 | String | 16 | 是 | 格式:http://m.111.com.cn/product/1191.html(如果该药品是第三方药品库,那么药品展示连接就是第3提供的连接) |
| usage | 用法用量 | String | 1 | 是 | / |
按照时间范围查询诊单接口
请求
URL:partner/inquerylist/range
请求方式: POST
请求参数: form-data
| 名称 | 说明 | 类型 | 长度 | 必要 | 参与Sign计算 | 备注 |
|---|---|---|---|---|---|---|
| partner | 合作方标识 | String | 32 | 是 | / | ==需要申请== |
| system | 合作方标识 | String | 32 | 是 | / | 固定值partner |
| user_id | 保留字段 | String | 32 | 是 | 是 | 只能填’*’ |
| begin | 范围开始时间 | String | / | 是 | 否 | 时间格式2017-01-01 |
| key_str | 诊单ID | String | / | 是 | 否 | 诊单ID:187 |
| end | 范围结束时间 | String | / | 是 | 否 | 时间格式2017-01-01 |
| count | 每页的问诊数 | Integer | 32bit | 是 | 否 | 分页查询里,每一页包含的问诊数,最大50 |
| start_num | 页码 | Integer | 32bit | 是 | 否 | 分页查询里,要查询的页数。例如:第一页传1,第二页传2 |
| ts | 签名时间戳 | Long | 64bit | 是 | 是 | unix时间戳(1970年1月1日0时开始的秒数),线上环境有15分钟超时,请保证调用系统的时钟同步。 |
| sign | 签名 | String | 32 | 是 | / | 生成方法参考“Sign计算规则” |
返回
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| ret | 接口调用返回码 | Integer | 32bit | 是 | 1: 成功, 其他: 错误码 |
| msg | 接口调用结果消息 | String | 256 | 是 | 如果调用失败,这里有错误信息 |
| data | 数据结果 | Object | / | 是 | 数据定义,参考”诊单查询结果” |
HTTP接口
问诊页面
请求
URL:m/cooperation-h5/login.html
请求方式: HTTP跳转
请求参数:
| 名称 | 说明 | 类型 | 长度 | 必要 | 参与Sign计算 | 备注 |
|---|---|---|---|---|---|---|
| partner | 合作方标识 | String | 32 | 是 | / | ==需要申请== |
| user_id | 用户名 | String | 32 | 是 | 是 | 用户唯一标识,合作方定义 |
| mobile | 手机号 | String | 11 | 是 | 否 | 用户手机号 |
| redirect_url | 登入后跳转页面 | String | 64 | 是 | 否 | 根据业务不同重定向页面不同,需encodeURIComponent处理 |
| ts | 签名时间戳 | Long | 64bit | 是 | 是 | unix时间戳(1970年1月1日0时开始的秒数),线上环境有15分钟超时,请保证调用系统的时钟同步。 |
| sign | 签名 | String | 32 | 是 | / | 生成方法参考“Sign计算规则” |
添加患者接口
请求
URL:app/open/add_patient
请求方式: POST
请求参数: form-data
| 名称 | 说明 | 类型 | 长度 | 必要 | 参与Sign计算 | 备注 |
|---|---|---|---|---|---|---|
| partner | 合作方标识 | String | 32 | 是 | / | ==需要申请== |
| system | 合作方标识 | String | 32 | 是 | / | 固定值partner |
| user_id | 保留字段 | String | 32 | 是 | 是 | 用户唯一标识,合作方定义 |
| ts | 签名时间戳 | Long | 64bit | 是 | 是 | unix时间戳(1970年1月1日0时开始的秒数),线上环境有15分钟超时,请保证调用系统的时钟同步。 |
| sign | 签名 | String | 32 | 是 | / | 生成方法参考“Sign计算规则” |
| name | 姓名 | String | / | 是 | 否 | 姓名 |
| birthday | 出生日期 | String | / | 是 | 否 | 时间格式2017-01-01 |
| sex | 性别 | String | / | 是 | 否 | F-女;M-男 |
| card_num | 身份证号码 | String | 32bit | 是 | 否 | 身份证号码 |
| is_self | 是否本人<是否设置为默认就诊人>0:非本人;1:本人是否设置为默认就诊人> | int | 32bit | 是 | 否 | / |
| mobile | 注册用户的手机号码(不是患者的号码) | Integer | 32bit | 是 | 否 | / |
返回
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| ret | 接口调用返回码 | Integer | 32bit | 是 | 1: 成功, 其他: 错误码 |
| msg | 接口调用结果消息 | String | 256 | 是 | 如果调用失败,这里有错误信息 |
| data | 数据结果 | Object | / | 是 | 数据定义 |
| data.is_real_name | 是否实名 | String | / | 是 | N |
| data.patient_id | 患者ID | Object | / | 是 | 2607 |
第3方药品库需要提供的接口
请求
URL:<合作方提供>
请求方式: POST
请求参数: form-data
| 名称 | 说明 | 类型 | 长度 | 必要 | 参与Sign计算 | 备注 |
|---|---|---|---|---|---|---|
| key_word | 合作方标识 | String | 32 | 否 | / | 搜索关键词(可以搜索药品ID,药品名等) |
| page_index | 保留字段 | String | 32 | 否 | / | 页码 |
| page_size | 签名时间戳 | String | 32 | 否 | / | 显示条数 |
返回
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| ret | 接口调用返回码 | Integer | 32bit | 是 | 1: 成功, 其他: 错误码 |
| msg | 接口调用结果消息 | String | 256 | 是 | 如果调用失败,这里有错误信息 |
| data | 数据结果 | Object | / | 是 | 数据定义 |
| data.pageInfo | 是否实名 | Object | / | 是 | 页码返回参数集合 |
| data.drugList | 药品对象 | Object(Array) | / | 是 | 药品对象 |
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| totalPage | 当前总条数 | String | / | 是 | / |
| pageSize | 取条数 | String | / | 是 | / |
| totalCount | 总条数 | String | / | 是 | / |
| pageIndex | 页码 | String | / | 是 | / |
| 字段 | 说明 | 类型 | 长度 | 必要 | 备注 |
|---|---|---|---|---|---|
| drug_code | 药品ID | String | / | 是 | / |
| drug_name | 药品名称 | String | / | 是 | / |
| specification | 规格 | String | / | 是 | / |
| drug_desc | 合作方药品描述 | String | / | 是 | 接默认请填”暂无” |
| picture | 图片地址 | String | / | 是 | 接默认请填”#” |
| brand | 品牌 | String | / | 是 | / |
| price | 价格 | String | / | 是 | / |
| detail_url | 药品连接地址 | String | / | 是 | 若无连接默认请填”#” |
| store | 库存数 | String | / | 否 | 0 |