你现在所在位置:开发文档 >API调用文档

API调用说明

概述:

天使医生开放平台API为开发商提供了一组设备监测数据上传、查询、生成报告等接口。

目前已经开放的接口有胎心、心电API。

服务器地址 :mobile.tsys91.com:8081/monitor

请求流程:

天使医生API采用REST风格,对外暴露HTTP服务,开发者只需要将入参按规则封装好,发起HTTP请求即可,请求流程如下图:

请求说明

一、开发者登录天使医生开放平台,在开发配置菜单栏可以看到系统分配给开发者的businessId和appId,请保留好不要轻易告诉他人。

二、以批量查询胎心监测数据接口为例,封装查询参数

  1. {
  2. "createTime" : 1489460834000 ,
  3. "pageSize" : 10 ,
  4. "openUserId" : "11723" ,
  5. "businessId" : 3280429859997696 ,
  6. "pageNum" : 1 ,
  7. }

三、对查询参数的参数名称进行排序a-z,并按照url参数的形式拼装参数名和参数值如果参数值为空或为null不参与参数的拼装。

businessId=3280429859997696&createTime=1489460834000&openUserId=11723&pageNum=1&pageSize=10

四、签名规则

sign = md5(businessId + 查询参数 +appId)

sign = md5(3280429859997696businessId=3280429859997696&createTime=1489460834000&openUserId=11723&pageNum=1&pageSize=10CA44C48DE23346928C6AD4E0634E8D90)

五、封装请求API的参数

  1. {
  2. "sign" : "C80253C518F921AC6F06B4B4E8615A8C" ,
  3. "createTime" : 1489460834000 ,
  4. "pageSize" : 10 ,
  5. "openUserId" : "11723" ,
  6. "businessId" : 3280429859997696 ,
  7. "pageNum" : 1
  8. }

六、发起http请求

请求头部类型必须加入

Content-type: application/json

不通过返回

  1. {
  2. "msg" : 0 ,
  3. "msgbox" : "未查询到开发商信息!" ,
  4. "data" : null
  5. }

通过

  1. {
  2. "msg" : 1 ,
  3. "msgbox" : "查询胎心数据成功!" ,
  4. "data" : {
  5. "dataList" : [ { } ]
  6. "pageNum" : 1 ,
  7. "pageSize" : 10 ,
  8. "total" : 1 ,
  9. "pages" : 1
  10. }
  11. }

附上MD5加密方法参考示例:

  1. public static String getMd5Value(String sSecret) {
  2. String result = null
  3. try {
  4. MessageDigest bmd5 = MessageDigest . getInstance ("MD5")
  5. bmd5.update(sSecret.getBytes());
  6. StringBuffer buf = new StringBuffer();
  7. try {
  8. result = byte2hex(bmd5.digest(buf.toString().getBytes("UTF-8")));
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. }
  12. return result;
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. }
  16. return null;
  17. }

心电监测

心电上传通知:

用户在开放平台 管理中心 >开发配置 填写了数据通知地址,当用户监测上传数据完成后,开发平台会向这个地址发送http post请求发送通知消息

消息格式

名称 类型 必填 描述
messageType String 消息类型 心电:ECG
messageBox String 消息说明
data Object 上传心电数据的ID 类型Integer

根据ID查询心电数据:

请求参数

名称 类型 必填 描述
id Integer 监测数据ID
businessId Long 开发者ID
sign String 开发者签名

API接口地址

POST /openapi/ecg/getBusinessEcgRecordById

返回参数

名称 类型 必填 描述
msg Integer 结果码1:成功 0:失败
msgbox String 错误或成功信息
data Object 返回结果 错误返回:null

data对象说明

名称 类型 必填 描述
id Integer 数据ID
seriesNumber String 设备序列号,益体康设备网关号
stisnormal String ST段
isarrhythmia String 心律
waveform String 波形质量
avrHeartrate Double 心率值
heartrate String 心率 状态
avrStvolt Double ST段平均电压
testTime String 测量时间
wholewave String 整体波形
image Integer 波形图像URL
addTime Date 添加时间
businessId Long 开发者ID

批量查询心电数据:

请求参数

名称 类型 必填 描述
seriesNumber String 设备序列号
businessId Long 开发者ID
createTime Long 数据上传时间
sign String 参数签名
pageNum Integer 第几页
pageSize Integer 每页数据条数

API接口地址

POST /openapi/ecg/getBusinessEcgRecord

返回参数

名称 类型 必填 描述
msg Integer 结果码1:成功 0:失败
msgbox String 错误或成功信息
data Object 返回结果 错误返回:null

data对象说明

名称 类型 必填 描述
pageNum Integer 当前页
pageSize Integer 每页条数
total Long 总条数
pages Integer 总页面数目
dataList List ‹ Object › 数据集合,没有数据空集合

List中的对象说明

名称 类型 必填 描述
id Integer 数据ID
seriesNumber String 设备序列号,益体康设备网关号
stisnormal String ST段
isarrhythmia String 心律
waveform String 波形质量
avrHeartrate Double 心率值
heartrate String 心率 状态
avrStvolt Double ST段平均电压
testTime String 测量时间
wholewave String 整体波形
image Integer 波形图像URL
addTime Date 添加时间
businessId Long 开发者ID

胎心监测

胎心上传通知

用户在开放平台 管理中心 >开发配置 填写了数据通知地址,当用户监测上传数据完成后,开发平台会向这个地址发送http post请求发送通知消息

消息格式

名称 类型 必填 描述
messageType String 消息类型 胎心:FETALHEART
messageBox String 消息说明
data Object 上传胎心数据的ID 类型Integer

根据ID查询胎心监测数据

请求参数

名称 类型 必填 描述
id Integer 监测数据ID
businessId Long 开发者ID
sign String 开发者签名

API接口地址

POST openapi/fetalrate/getBusinessFetalrateRecordById

返回参数

名称 类型 必填 描述
msg Integer 结果码1:成功 0:失败
msgbox String 错误或成功信息
data Object 返回结果 错误返回:null

data对象说明

id Integer 数据ID
recordFiles String 胎心记录文件URL
addTime Date 添加时间
rawFiles String 胎心音频文件URL
title String 标题
type Integer 心率类型:0:成人,1婴儿
averageRate Double 平均心率
fetalMoveTimes Integer 胎动次数
testTime Integer 胎心测试时长
uterusRecord String 宫缩值URL
fetalMoveValue String 胎动时间值[{"time":"00:50"}]
deviceMac String 测试仪器的mac地址
seriesNumber String 设备序列号 seriesNumber和deviceMac其中有一个必须有值
businessId Long 开发商ID
openUserId String 开发者自己用户的ID

批量查询胎心监测数据

请求参数

名称 类型 必填 描述
seriesNumber String 设备序列号
deviceMac String 设备序mac地址
openUserId String 开发者自己用户的ID
businessId Long 开发者ID
createTime Long 上传胎心时间
sign String 开发者签名
pageNum Integer 第几页
pageSize Integer 每页数据条数

API接口地址

POST /openapi/fetalrate/getBusinessFetalrateRecord

返回参数

名称 类型 必填 描述
msg Integer 结果码1:成功 0:失败
msgbox String 错误或成功信息
data Object 返回结果 错误返回:null

data对象说明

pageNum Integer 当前页
pageSize Integer 每页条数
total Long 总条数
pages Integer 总页面数目
dataList List ‹ Object › 数据集合,没有数据空集合

List中的对象说明

名称 类型 必填 描述
id Integer 数据ID
recordFiles String 胎心记录文件URL
addTime Date 添加时间
rawFiles String 胎心音频文件URL
title String 标题
type Integer 心率类型:0:成人,1婴儿
averageRate Double 平均心率
fetalMoveTimes Integer 胎动次数
testTime Integer 胎心测试时长
uterusRecord String 宫缩值URL
fetalMoveValue String 胎动时间值[{"time":"00:50"}]
deviceMac String 测试仪器的mac地址
seriesNumber String 设备序列号 seriesNumber和deviceMac其中有一个必须有值
businessId Long 开发商ID
openUserId String 开发者自己用户的ID

获取胎心监测报告

请求参数

名称 类型 必填 描述
sign String 签名
businessId Long 开发商ID
id Integer 胎心监测数据ID
mobile String 生成报告的手机号码ID
preganyWeek String 生成报告的孕周
age Integer 生成报告的年龄
userName String 生成报告的用户名
items String 生成报告评分项,多个使用","隔开 评分项: 有反应、无反应、正弦曲线、不满意
source Integer 生成报告的评分
speed Integer 走纸速度(1厘米/分,2厘米/分,3厘米/分,20分钟一页,30分钟一页)
默认值:2
doctorName String 生成报告的医生
hospitalName String 生产报告的医院名称
默认值: 天使医院
remark String 生成报告的备注
start Integer 胎心数据偏移量起始位置(偏移量代表偏移了多少数据点)
默认值:0
end Integer 胎心数据偏移量结束位置
默认值:0

API接口地址

POST /openapi/fetalrate/getBusinessFetalraetReport

返回参数

名称 类型 必填 描述
msg Integer 结果码1:成功 0:失败
msgbox String 错误或成功信息
data Object 返回结果 错误返回:null
成功返回报告文件路径

返回JSON

  1. {
  2. "msg" : 1 ,
  3. "msgbox" : "生成报告成功!" ,
  4. "data" : "http://192.168.2.67:8888/group1/M00/04/E1/wKgCQ1jLwKqAWNW1AAC7vQfxg2g755.pdf"
  5. }

胎心监测实时数据推送

当开发者填写了实时推送地址,开发者需要实现三个接口start、add、stop,add接口会向手机端每隔3秒发起http请求推送一次数据,每次推送的数据是3秒内的数据,不是所有的数据,开发者需要保存每次请求的数据

start接口,用于初始化或重置用户监测数据

推送数据格式

名称 类型 必填 描述
openUserId String 开发者自己用户的ID
seriesNumber String 设备序列号
deviceMac String 设备序mac地址 seriesNumber和deviceMac其中有一个sdk肯定会传
operatorType String 操作类型 start
dataType String 数据类型 胎心:heartRate

add接口,用于推送监测数据

推送的数据格式

名称 类型 必填 描述
seriesNumber String 设备序列号
deviceMac String 设备序mac地址 seriesNumber和deviceMac其中有一个sdk肯定会传
openUserId String 开发者自己用户的ID
operatorType String 操作类型 add
dataType String 数据类型 胎心:heartRate
data Object 监测数据

data对象

名称 类型 必填 描述
fetalMove String 胎动 格式:00:12
heartRate Array 胎心率 格式: [0,1,45,66]
uterus Array 宫缩:[0,2,3]
alarm Integer 警告值 1 是报警 0正常

stop接口,用于清空某个设备的监测数据

推送的数据格式

名称 类型 必填 描述
seriesNumber String 设备序列号
deviceMac String 设备mac地址 seriesNumber和deviceMac其中有一个sdk肯定会传
operatorType String 操作类型 stop

java版实时数据推送demo使用说明

该demo包含查询心电、胎心数据、生成胎心报告API接口测试用例,接收通知demo、接收手机推送实时胎心数据demo(仅支持同时一个用户测试)。

1、下载该demo后需要开发者安装jdk1.7、tomcat7.0、chrome或firefox或IE8以上版本浏览器。

2、把demo解压后把jumper-record-demo文件夹放到tomcat的webapp文件夹,启动tomcat成功后访问 http://localhost:8080/jumper-record-demo/realtimefetalrate/demo.html可以看到胎心监测图。

3、修改获取胎心实时数据地址,手机端开始实时监测,监测过程中可以看到demo页面监测图实时变化。

4、如果开发者需要快速的根据自己的业务画胎心监测图需在页面引入下面几个文件

realtimefetalrate/css/nst-style.css 画图样式文件

realtimefetalrate/js/jquery-1.10.1.min.js

realtimefetalrate/js/swfobject.js

realtimefetalrate/js/nst-chart.js 画图js

画图js使用方法参考demo.html页面

注意事项如果ajax请求胎心数据出现跨域问题,在服务端向客户发送数据的头部加入

"Access-Control-Allow-Origin", "*"

Access-Control-Allow-Methods","GET"

"Access-Control-Allow-Headers","x-requested-with,content-type"

附上一张效果图

血压监测

血压接收接口

接口说明:

接口名称:receiveBloodPressure

用户在开放平台 管理中心 >开发配置 填写了 (数据接收地址),当用户监测上传数据完成后,开发平台会向这个地址发送http post请求来推送血压数据

参数名 参数类型 是否必填 参数说明
id long true 数据ID,可以用来去重。或者使用 设备号+addTime 去重
serialNumber string true 设备号,每个血压计都有一个唯一设备号
userIndex string false 用户号,有些血压设备能够支持2人共同使用,可以切换用户,每个用户有不同的 userIndex,建议使用 设备号+用户号 来作为 唯一标识
systolicPressure int true 收缩压、高压。正常人为90-120
diastolicPressure int true 舒张压、低压。正常人为 60-90
pulse int true 脉搏。多少次/分钟
addTime long true 血压测量时间戳 1572493873。精确到秒

返回结果:

json对象,示例如下

失败:

  1. {
  2. "msg" : 0, //0为失败,1为成功 ,
  3. "msgbox" : "接收失败" ,
  4. //如果接收失败,会定时重新请求(定时最多重复请求50次,手动重新请求不限次) ,
  5. }

成功:

  1. {
  2. "msg" : 1, //0为失败,1为成功 ,
  3. "msgbox" : "接收成功" ,
  4. }

示例代码:

  1. {
  2. http://192.168.0.2:8080/crm/swagger-ui.html#!/monitor45controller/receiveBloodPressureUsingPOST
  3. }
  4. {
  5. /**
  6. * @param id 数据ID
  7. * @param serialNumber设备序列号
  8. * @param userIndex
  9. * @param systolicPressure 收缩压
  10. * @param diastolicPressure
  11. * @param pulse
  12. * @param addTime 测量时间
  13. * @return
  14. * @throws Exception
  15. */
  16. @PostMapping("receiveBloodPressure")
  17. @ResponseBody
  18. @ApiOperation(value = "接收血压数据", httpMethod = "POST")
  19. public JSONObject receiveBloodPressure(@RequestParam long id,
  20. @RequestParam String serialNumber, @RequestParam String userIndex,
  21. @RequestParam int systolicPressure,
  22. @RequestParam int diastolicPressure, @RequestParam int pulse,
  23. @RequestParam long addTime) throws Exception {
  24. com.alibaba.fastjson.JSONObject result = new JSONObject();
  25. // 校验下数据
  26. if (StringUtils.isEmpty(serialNumber)) {
  27.     result.put("msg", 0);
  28.     result.put("msgbox", "没有设备序列号");
  29.     return result;
  30. }
  31. if (systolicPressure == 0 || diastolicPressure == 0) {
  32.     result.put("msg", 0);
  33.     result.put("msgbox", "血压数据不正确");
  34.     return result;
  35. }
  36. PressureEquipmentVo eqVo = new PressureEquipmentVo();
  37. eqVo.setEquipmentType(1);
  38. eqVo.setSnNumber(serialNumber);
  39. PressureEquipmentPo eqPo = pressureEquipmentService.getPoTopOne(eqVo);
  40. if (eqPo == null) {
  41.     result.put("msg", 0);
  42.     result.put("msgbox", "没有找到该设备");
  43.     return result;
  44. }
  45. MonitorPressureVo prevo = new MonitorPressureVo();
  46. prevo.setAddTime(new Date());
  47. prevo.setMonitorTime(new Date(addTime*1000));
  48. prevo.setPressureHeight(systolicPressure);
  49. prevo.setPressureLow(diastolicPressure);
  50. prevo.setPulseRate(pulse);
  51. prevo.setState(1);
  52. prevo.setYuliu1("平台同步数据");
  53. // 各个业务系统内部保存到数据库
  54. monitorPressureService.addPressure(prevo);
  55. result.put("msg", 1);
  56. result.put("msgbox", "接收成功");
  57. return result;
  58. }