# 挂号 API 接入

# 1.背景介绍

该文档主要是针对腾讯健康小程序现有的挂号流程来设计,后续如果有变更,会在该版本基础上向下兼容处理。 该文档主要用来约定从合作方接口获取数据时的请求和响应

大体的流程时序可以参考下图

a.静态数据的定期同步

uml diagram

b.实时接口调用和挂号流程

uml diagram

# 2.接口说明

接入前必看

具体要实现的接口说明点我 (opens new window)

  1. 网关接入请看网关接入标准
  1. 网关接入文档中的 $app 直接用 guahao替代即可

eg : https://med-biz-pre.wecity.qq.com/api/guahao/notifyChangeStatus/10000007

  1. 文档中非必传的字段可以不传,如果传了,相应的值必须要有特定的含义。不能为 undefined 或者 null
  1. 文档中的必传字段,根据类型可以有不同的默认值。
  • a) 类型为 int,如果合作方返回-1,意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段
  • b) 类型为 string,如果合作方返回'',意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段
  • c) 类型为 array,如果合作方返回[],意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段
  • d) 类型为 object,直接返回 {},意味着该字段合作方无法提供有效值,腾讯侧会丢弃该字段

# 2.1 静态基础数据(渠道提供)

1、这里主要指一些静态数据,腾讯侧会定期去拉取合作方方接口,并增量更新

2、考虑到不同合作方对接口拉取规则策略的不同(如:频率,单次拉取数据量等),腾讯侧可以适配不同的拉取策略

3、这些接口对实时性要求不一定高,但要求数据的准确性

# 2.1.1 批量获取医院信息

  1. 该接口主要用来批量获取合作方提供的医院信息
  2. 如果指定了 hospitalId,就获取指定医院的信息

接口名:

hospitals

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✖️ 缺省时查询所有的医院信息
2 cityCode 城市 code string ✖️ 缺省时查询所有城市医院
3 areaCode 区域 code string ✖️ 缺省时查询城市下的所有区域医院

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 array[HospitalInfo] ✔️

# HospitalInfo

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 hospitalName 医院名称 string ✔️ 如医院有东、西院区,本次合作的业务在东院区,医院名称就需要返回 XX 医院(东院区),不能返回 xx 医院,同理则返回 XX 医院(西院区)
3 hospitalShortName 医院简称 string ✖️
4 cityCode 城市编码 string ✔️ 参考附录 CityCode & AreaCode
5 areaCode 区域编码 string ✔️ 参考附录 CityCode & AreaCode
6 address 医院地址 string ✔️
7 detail 医院介绍 string ✖️
8 tel 医院联系方式 string ✖️
9 geo 医院经纬度地址 string ✔️ 格式: 经度,维度 (以高德/腾讯地图为准)
10 url 医院官网链接 string ✖️
11 logo 医院 logo 链接 string ✔️
12 alias 医院别名 string ✖️
13 hospitalLevel 医院等级 int ✔️ HospitalLevel
14 hospitalType 医院类型 int ✔️ HospitalType
15 hospitalRules 医院预约规则 array[string] ✖️
16 branches 分院列表 array[HospitalInfo] ✔️
17 pageSize 每页拉取的数量 int ✖️ 默认拉取所有
18 pageNo 拉取第几页的数据 int ✖️ 默认拉取所有
19 payMethod 支付方式 int ✖️ 0:现场支付 1:现场和线上都支持 2:强制线上
20 payPassTime 非当天支付过期时间 int ✖️ 单位:分 默认:半小时
部分合作方的当天和非当天支付时间不一样
21 todayPayPassTime 当天支付过期时间 int ✖️ 单位:分 默认:半小时
22 treatGuide 就诊指引 string ✖️
23 smsContent 短信模板 string ✖️ 这里的动态信息用占位符代替,具体的字段参照 SmsTemplateParams
24 isNeedTreatCard 是否需要就诊卡 int ✔️ 0:不需要;1:需要
25 letOutSourceTime 放号时间 string ✖️ 格式:HH:mm
26 letOutDays 放号天数 int ✖️ 单位:天

# SmsTemplateParams

  1. 如果这里有字段不在列表中的,由于所有的接口命名规范统一,均可以在其他接口中找到相关参考字段
  2. 举个例子:

短信内容:

深圳市南山人民医院预约提示:订单号143185360,南山疼痛科门诊廖翔医生2019年07月29日(09:30-10:00) ,取号密码:4141471761,持身份证提前30分钟完成取号,无需打印预约凭条(口腔科除外),不能就诊及时取消, 就诊人:杨正祥。

smsContent 内容

${hospitalName}预约提示:订单号${appointId},${departmentName}${doctorName}医生${treatDate}(${sourceBeginTime}-${sourceEndTime}) ,取号密码:${hisTakeNo},持身份证提前30分钟完成取号,无需打印预约凭条(口腔科除外),不能就诊及时取消, 就诊人:${patientName}。
序号 字段 名称 类型 备注
1 hospitalName 医院名称 string
2 departmentName 科室名称 string
3 appointId 医院订单号 string
4 doctorName 医院名称 string
5 treatDate 就诊日期 string
6 sourceBeginTime 就诊开始时间 string
7 sourceEndTime 就诊结束时间 string
8 patientName 就诊人姓名 string
9 hisTakeNo 取号密码 string

# 2.1.2 获取科室信息

  1. 该接口主要用来获取指定医院或分院的所有科室信息
  2. 对于有些 his 系统,可能实际还是要去 his 实时拉取科室信息。主要是针对当天挂号科室有变化的场景

接口名:

departments

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 branchHospitalId 分院 ID string ✖️ 如果有分院则必须传分院,否则可能导致获取科室信息异常
3 departmentId 科室 ID string ✖️ 缺省获取医院的所有科室
4 isAll 是否返回所有科室 int ✖️ 默认返回所有科室
0:返回所有科室 1:只返回有号源可预约的科室

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 array[DepartmentInfo] ✔️

# DepartmentInfo

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️ 如果所属为分院,这里为分院 ID
2 departmentId 科室 ID string ✔️
3 parentId 父级科室 ID string ✖️ 如果为一级科室,该值可留空
4 departmentName 科室名 string ✔️
5 departmentShortName 科室简称 string ✖️
6 detail 科室简介 string ✖️
7 tel 科室电话 string ✖️
8 isToday 是否当天挂号的科室 int ✖️ 0 : 非当天 1:当天 2:都支持
9 leftNum 可预约数 int ✖️
10 treatLimit 诊疗范围 string ✖️
11 totalDoctorCount 医生总数 int ✖️
12 sourceBeginTime 放号时间 string ✖️ 格式:HH:mm
13 departmentRule 科室的预约规则 DepartmentRule ✖️
14 pageSize 每页拉取的数量 int ✖️ 默认拉取所有
15 pageNo 拉取第几页的数据 int ✖️ 默认拉取所有
16 payMethod 支付方式 int ✖️ 0:现场支付 1:现场和线上都支持 2:强制线上
17 payPassTime 支付过期时间 int ✖️ 单位:分 默认:半小时
18 notice 科室公告 string ✖️

# DepartmentRule

如果没有限制,给空值即可

序号 字段 名称 类型 必填 备注
1 RULE_REGISTER_AGE_MIN 最小年龄限制 int ✔️ eg:18
2 RULE_REGISTER_AGE_MAX 最大年龄限制 int ✔️ eg:40
3 RULE_REGISTER_SEX 性别限制 int ✔️ 0:男 1:女
4 RULE_REGISTER_TIPS_SHOW 是否显示科室公告 int ✔️ 0:不显示 1:滚动显示 2:弹窗显示
5 RULE_REGISTER_COUNT_LIMIT 预约次数限制 int ✔️ 0:不限制 其他大于 0 的就是限制的次数

# 2.1.3 获取医生信息

  1. 对于有些 his 系统可能没有批量获取医生信息的接口,需要依赖于获取排班的时候才能拿到医生信息

接口名:

doctors

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 departmentId 科室 ID string ✔️
3 doctorId 医生 ID string ✖️ 缺省获取指定科室的所有医生
4 branchHospitalId 分院 ID string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 array[DoctorInfo] ✔️

# DoctorInfo

由于 支付方式支付过期时间在医院、科室和医生接口都存在,而实际情况也是各个不同合作方定义的维度不一样。

这里的优先级是:医生 > 科室 > 医院

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 departmentId 科室 ID string ✔️
3 doctorId 医生 ID string ✔️
4 doctorName 医生名 string ✔️
5 sex 性别 int ✖️ 0 :男,1:女,2:其他
6 no 医生工号 string ✖️
7 ZCID 职称名称 string ✔️ 这里填表格里对应的中文,对应不上就填其他
8 avatar 医生头像 string ✔️ 必须要返回医生的真实头像。如果没有,直接传空字符串即可,腾讯健康这边会有默认头像替代
9 detail 医生简介 string ✔️
10 goodAt 医生擅长 string ✔️
11 payPassTime 支付时间(分钟为单位) int ✖️ 0 或者空表示没有限制
默认:半小时
12 isTimeReg 是否有分时 int ✖️ 0 :否,1:是
13 payMethod 支付方式 int ✖️ 0:现场支付 1:现场和线上都支持 2:强制线上

# 2.2 动态业务数据(渠道提供)

1、这些接口主要是需要腾讯侧从合作方实时调用,以保证整个挂号业务的完整性和良好的体验 2、以下接口对接口的响应质量会有一定要求,具体以相关产品指标为准

# 2.2.1 获取医生排班信息

接口名:

scheduleInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 departmentId 科室 ID string ✔️
3 doctorId 医生 ID string ✖️ 缺省时获取当前科室所有医生排班信息
4 beginDate 排班开始日期 string ✖️ 格式:yyyy-MM-dd
5 endDate 排班结束日期 string ✖️ 格式:yyyy-MM-dd (如果没有传递时间,默认返回当天的排班信息)
6 branchHospitalId 分院 ID string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 array[ScheduleInfo] ✔️ 无数据时,返回空数组

# ScheduleInfo

序号 字段 名称 类型 必填 备注
1 doctorId 医生 ID string ✔️
2 scheduleId 排班 ID string ✔️ 必须保证唯一性供业务正常使用
3 doctorName 医生姓名 string ✔️
4 treatDate 出诊日期 string ✔️ 格式:yyyy-MM-dd
5 appointMaxCount 最大预约次数 int ✖️
6 appointedNum 已预约次数 int ✖️
7 leftNum 剩余可预约次数 int ✔️
8 registerFee 挂号费用 int ✔️ 单位:分 ;没有用 0 表示
9 treatFee 诊疗费用 int ✖️ 单位:分 ;没有用 0 表示
10 clinicUnitId 诊疗单元代码 string ✖️
11 clinicUnitName 诊疗单元名称 string ✖️
12 sourceType 班别代码 string ✔️ 详见 SourceType
13 sourceTypeName 班别名称,如上午、下午 string ✖️
14 miFee 医保模式的挂号费用 int ✖️ 单位:分 ;没有用 0 表示
15 isPrecise 是否为精准预约排班 int ✖️ 是否为精准预约排班 0-否 1-是 不传则为默认:否
16 extra 扩展透传字段 string ✖️ 如果合作方有返回,在获取号源的接口就原样带回
17 scheduleStatus 排班状态 int ✖️ 0-正常排班,1-停诊排班,默认正常排班
18 scheduleInfoExtra 扩展字段 object ✖️ 基于有些特殊的合作方需要从排班来获取医生的信息,这里设计扩展字段作为兼容 详见 ScheduleInfoExtra

# ScheduleInfoExtra

序号 字段 名称 类型 必填 备注
1 doctorZCID 医生职称名称 string ✖️ 这里填表格里对应的中文,对应不上就填其他
2 doctorAvatar 医生头像 string ✖️
3 doctorDetail 医生简介 string ✖️
4 doctorGoodAt 医生擅长 string ✖️

# 2.2.2 获取号源相关信息

接口名:

sourceInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 departmentId 科室 ID string ✔️
3 scheduleId 排班 ID string ✔️
4 branchHospitalId 分院 ID string ✖️
5 doctorId 医生 ID string ✖️
6 treatDate 就诊日期 string ✖️ 格式:yyyy-MM-dd
9 clinicUnitId 诊疗单元代码 string ✖️
10 sourceType 班别代码 string ✖️ 详见 SourceType
11 extra 透传信息 string ✖️ 如果排班接口合作方有返回就原样带回

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 array[SourceInfo] ✔️ 无数据时,返回空数组

# SourceInfo

序号 字段 名称 类型 必填 备注
1 sourceId 号源 ID string ✔️ 必须保证唯一性供业务正常使用
2 sourceBeginTime 开始时间 string ✖️ 格式:HH:mm eg:08:30,时间类型为 0、1 时,不可为空
3 sourceEndTime 结束时间 string ✖️ 格式:HH:mm eg:09:00,时间类型为 0 时,不可为空
4 sourceTimeType 时间类型 int ✔️ 默认为 0,标准起始时间段格式详见 SourceTimeType
5 sourceTimeDesc 时间描述 string ✖️ 号源时间描述,时间类型为 1、2 时,当前字段不能为空
6 leftNum 剩余号源数 int ✔️
7 sourceExtra 号源接口的扩展字段 string ✖️ 有些合作方的需要在锁号时原样带回

# 2.2.3 获取用户可用服务对象列表(可选)

在用户通过移动服务挂号时调用该接口获取该患者可用的服务对象

接口名:

serviceObjects

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 branchHospitalId 分院 ID string ✖️
3 treatCardNo 就诊卡号 string ✔️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 array[ServiceObjectInfo] ✔️

# ServiceObjectInfo

序号 字段 名称 类型 必填 备注
1 serviceObjectId 服务对象代码 string ✔️ 新增 KID02 编码代表少儿医保
2 serviceObject 患者服务对象(人群 ) string ✔️
3 isInsuran 是否为医保结算 string ✔️ 0:否, 1:是;默认为 0
4 hasDisease 是否有病种选择 int ✔️ 0:否, 1:是;默认为 0

# 2.2.4 获取优惠费用信息(可选)

  1. 在用户通过移动服务挂号时调用该接口获取该患者的优惠金额
  2. 如果需要根据不同类型患者实现不同的挂号收费,则挂号费通过本接口出参 regFee、treatFee 返回,appointment.getScheduleInfo、register.getScheduleInfo 接口出参 regFee、treatFee 调整为返回 0;

接口名: reduceInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 branchHospitalId 分院 ID string ✖️
3 departmentId 科室 ID string ✔️
4 doctorId 医生 ID string ✔️
5 scheduleId 排班 ID string ✔️
6 sourceId 号源 ID string ✔️
7 patientId 就诊人 ID string ✔️
8 treatDate 就诊日期 string ✔️ yyyy-MM-dd
9 treatCardNo 就诊卡号 string ✔️
10 serviceObjectId 服务对象 ID string ✔️
11 sourceType 班别代码 string ✔️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 count 总记录条数 int ✔️
4 rsp 返回详情 array[ReduceInfo] ✔️

# ReduceInfo

序号 字段 名称 类型 必填 备注
1 fee 优惠金额 int ✔️ 单位:
2 serviceObject 患者服务对象(人群) string ✔️
3 medicareSettleLogId 医保预结算参数 string ✖️ 目前仅支持线上医保结算
4 cashFee 医保挂号的个人现金支付金额 int ✖️ 单位:
5 insuranFee 医保挂号的个人医保账户金额 int ✖️ 单位:
说明:医保支付时,insuranFee 与 medicareSettleLogId 都不可为空,否则当自费流程进行
6 registerFee 挂号实际所需挂号费用 int ✖️ 单位:
7 treatFee 挂号实际所需诊疗费用 int ✖️ 单位:
regFee 与 treatFee 二者中,任意一个字段有金额时,患者实际支付的费用将根据(regFee + treatFee- yhFee)如为医保用户,则以医保

# 2.2.5 锁号(预约)

  1. 如果当天,则为当天挂号。非当天则为预约挂号
  2. 预约时,默认会锁定号源
  3. 不需要支付的直接调用该接口即可
  4. 非常重要: 为了保证防止用户重复支付的情况,腾讯侧和合作方去微信统一下单时,以合作方返回的appointId为下单号

流程图:

锁号流程图

说明:

腾讯在请求合作方锁号接口时,会出现三种情况:

  1. 锁号成功,返回 code=0;
  2. 锁号失败,返回 code 非 0;
  3. 不确定锁号状态,不返回,直接让接口调用超时,这个时候腾讯会轮询合作方订单状态,具体流程见异常处理。

异常处理: 接口调用超时,此时腾讯会定时调用 appointOrders 挂号指定订单信息查询接口来确认订单状态,整个轮询状态时间持续 3 分钟,当 3 分钟后腾讯仍未得到结果,会视为锁号失败,不处理。

接口名:

appoint

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 departmentId 科室 ID string ✔️
3 scheduleId 排班 ID string ✔️
4 sourceId 号源 ID string ✔️
5 doctorId 医生 ID string ✔️
6 phone 手机号 string ✖️
7 cardNo 证件号码 string ✖️
8 cardType 证件类型 string ✖️ 详见 cardType
9 name 就诊人姓名 string ✖️
10 sex 就诊人性别 int ✖️ 0 :男,1:女,2:其他
11 birthday 就诊人出生日期 string ✖️ yyyy-MM-dd
12 patientId 就诊人 ID string ✖️ 如果是就诊卡的模式,只需要带就诊人的 ID 和就诊卡(treatCardNo)即可
13 type 预约方式 int ✔️ 0:非就诊卡 ;1:就诊卡 (phone,treatCardNo,cardType,name,sex,birthday 都要填写)
14 branchHospitalId 分院 ID string ✖️
15 registerType 预约类型 int ✖️ 0: 当天 1:非当天
16 partnerOpenid 用户在合作方的 openid string ✖️
17 sourceBeginTime 就诊分时开始时间 string ✖️ eg:08:30
18 sourceEndTime 就诊分时结束时间 string ✖️ eg:09:00
19 serviceObjectId 服务对象 id string ✖️
20 registerFee 挂号费 int ✖️ 单位:分
21 treatFee 诊疗费 int ✖️ 单位:分
22 clinicUnitId 诊疗单元代码 string ✖️
23 sourceType 班别代码 string ✖️ 详见 SourceType
24 hospitalName 医院名 string ✖️
25 departmentName 科室名 string ✖️
26 doctorName 医生名 string ✖️
27 serviceObject 患者服务对象 string ✖️
28 reduceFee 优惠金额 int ✖️ 单位:分
29 treatCardNo 就诊卡号 string ✖️
30 userId 用户 ID string ✖️ 用于唯一标识一个用户,对于某些有用户体系逻辑的合作方有用
31 guardianName 监护人姓名 string ✖️
32 guardianCardType 监护人证件类型 string ✖️ 详见 cardType
34 guardianCardNo 监护人证件号 string ✖️
35 guardianPhone 监护人手机号 string ✖️
36 guardianSex 监护人性别 int ✖️
37 guardianRelation 监护人与就诊人关系 int ✖️ 详见 GuardianPatientRelationType
38 sourceExtra 扩展字段 string ✖️ SourceInfo接口中返回的扩展字段,原样带回
39 visitType 就诊类型 int ✖️ 就诊类型,1:初诊,2:复诊,默认初诊,默认值为 1
40 IDCardNoBeginDate 身份证有效期起始日期 string ✖️
41 IDCardNoEndDate 身份证有效期截止日期 string ✖️
42 provinceCode 省份编码 string ✖️
43 isPrecise 是否为精准预约排班 int ✖️ 是否为精准预约排班 0-否 1-是 不传则为默认:否
44 authCode 验证码 string ✖️ 预约挂号验证码
45 hospitalName 医院名称 string ✖️
46 departmentName 科室名称 string ✖️
47 doctorName 医生名称 string ✖️
48 healthCardId 健康卡 ID string ✖️
49 extra 扩展字段 string ✖️ JSON 字符串

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 AppointInfo ✔️

# AppointInfo

序号 字段 名称 类型 必填 备注
1 cancelTime 截止取消订单时间 string ✖️ 格式:yyyy-MM-dd HH:mm:ss
2 paymentTime 截止支付时间 string ✖️
3 hisTakeNo 取号密码 string ✖️ 医院终端取号密码
4 appointId 单次预约的 ID string ✔️
5 infoSeq HIS 锁号 ID string ✔️
6 treatCardNo 就诊卡号 string ✖️
7 bookingNo HIS 系统生成的预约订单号 string ✖️
8 miFeeInfo 医保支付的相关信息 object <MiFeeInfo> ✖️
9 queueNo 排队序号 string ✖️
10 paymentFee 需要支付的金额 int ✖️ 单位:分 有些合作方或者医院只有在锁号时才能确定最终所需支付金额。如果该字段传递了有效值,将以该金额唤起微信收银台
11 treatAddr 就诊地点 string ✖️ 患者详细就诊地点
12 jumpInfo 锁号完成需要跳转的相关信息 object <JumpInfo> ✖️ 如果不需要跳转,直接不返回该字段即可
13 newScheduleId 更新后的排班 ID string ✖️ 如果和请求参数内容一致,不需要返回
14 newSourceId 更新后的号源 ID string ✖️ 如果和请求参数内容一致,不需要返回
15 newSourceBeginTime 更新后的就诊开始时间 string ✖️ 如果和请求参数内容一致,不需要返回
16 newSourceEndTime 更新后的就诊结束时间 string ✖️ 如果和请求参数内容一致,不需要返回
17 treatCertName 就诊凭证名称 string ✖️ 如门诊号、病历号等
18 treatCert 就诊凭证内容 string ✖️
19 treatCertShowType 就诊凭证展示方式 int ✖️ 0:只展示文字内容(默认),1:二维码,2:条形码
20 takeNoTime 取号时间 string ✖️ 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制
21 takeAddr 取号地址 string ✖️
22 takeCert 取号凭证 string ✖️

# MiFeeInfo

序号 字段 名称 类型 必填 备注
1 allowFeeChange 是否允许预结算费用发生变化 int ✔️ 0:不允许,1:允许
2 requestContent 医保支付透传体 string ✔️

# JumpInfo

序号 字段 名称 类型 必填 备注
1 type 跳转的方式 int ✔️ 1:H5 2:小程序
2 path 跳转的地址 string ✔️ eg:H5: https://www.qq.com/demo?appointId={appointId};小程序:pages/register/demo?appointId={appointId}
3 version 跳转的版本 string ✖️ 只有当跳转目标为小程序时,该参数才有意义。正式环境默认都会跳转正式版。有时联调方便可以跳转体验版 trial
3 appId 跳转的 appId string ✖️ 只有当跳转目标为小程序时,该参数才有意义。目标小程序的 appId

# 2.2.6 挂号(预约支付成功) (仅限:接入支付且为服务商模式)

用户支付成功后,收到微信回调结果后,再调用合作方同步支付和订单信息

流程图:

挂号流程图

说明: 腾讯在请求合作方挂号接口时,会出现三种情况:

  1. 挂号成功,返回 code=0,此时合作方订单状态为 OrderStatus=6(挂号成功),PayStatus=2(已支付);
  2. 挂号失败,且需要腾讯退款,返回 code=-2,此时合作方的订单状态应该是 OrderStatus=5(锁号成功),PayStatus=2(已支付);  注意,腾讯在收到返回 code 为-2 时会做自动退款,请谨慎返回;  腾讯收到-2 状态时,会首先调用取消挂号接口,进行号源释放,此时合作方的订单的 OrderStatus=8(已取消)支付状态 PayStatus=2(已支付);  腾讯给用户发起退款,退款完成时,腾讯会同步退款状态给合作方,合作方在收到退款成功通知后,订单状态翻转为 OrderStatus=8(已取消),PayStatus=4(退款成功)。
  3. 当合作方也不确定 HIS 当前的状态,返回非 0 非 2,或不返回,直接让接口调用超时,这个时候腾讯会轮询合作方订单状态,具体流程见异常处理。 异常处理: 接口调用超时,此时腾讯会定时调用 appointOrderInfo 挂号指定订单信息查询接口来确认订单状态,整个轮询状态时间持续 3 分钟,3 分钟后,合作方依然没有返回,则视为异常订单,需人工> 介入处理。 查询接口返回值可能有三种情况:
  4. 之前的挂号请求合作方未收到,合作方订单状态为 OrderStatus=5(锁号成功),PayStatus=1(待支付),重试 3 分钟后合作方依然是该状态,腾讯会释放号源并自动退款;
  5. 合作方订单为 OrderStatus=6(挂号成功),PayStatus=2(已支付),视为挂号成功;
  6. 合作方订单为 OrderStatus=5(锁号成功),PayStatus=2(已支付),重试 3 分钟后合作方依然是该状态,需人工介入处理。

接口名:

register

请求参数:

序号 字段 名称 类型 必填 备注
1 registerFee 挂号费 int ✖️ 单位:分
2 treatFee 诊疗费 int ✖️ 单位:分
3 payAmount 用户实际支付的费用 int ✖️ 单位:分。支付成功微信回调时,用户支付的费用。如果是医保模式,这里是个账金额
4 payMode 支付类型 int ✖️ 详见 PayMode
5 payTime 交易时间 string ✖️ 格式:yyyy-MM-dd HH:mm:ss
6 bookingNo HIS 系统生成的预约订单号 string ✖️
7 appointId 合作方用来唯一标识订单 ID string ✔️ appoint接口中返回的值
8 tradeNo 第三方支付的交易流水号 string ✔️ 如 :微信支付,这里就是微信支付的商户内部订单号 详见 tradeNo 生成规则
9 transactionId 微信支付订单号 string ✔️ 微信支付侧的订单号,不同于商户内部订单号,不能自定义
10 tradeState 订单状态 string ✔️ SUCCESS—支付成功, REFUND—转入退款, NOTPAY—未支付, CLOSED—已关闭, REVOKED—已撤销(刷卡支付), USERPAYING--用户支付中, PAYERROR--支付失败(其他原因,如银行返回失败)
11 miFee 医保支付费用 int ✖️ 单位:分 。用户从医保账户扣除的费用
12 userId 用户 ID string ✖️ 用于唯一标识一个用户,对于某些有用户体系逻辑的合作方有用

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 AppointInfo ✔️

# AppointInfo

序号 字段 名称 类型 必填 备注
1 cancelTime 截止取消订单时间 string ✖️ 格式:yyyy-MM-dd HH:mm:ss
2 paymentTime 截止支付时间 string ✖️
3 hisTakeNo 取号密码 string ✔️ 医院终端取号密码
4 appointId 单次预约的 ID string ✔️
5 infoSeq HIS 锁号 ID string ✔️
6 treatCardNo 就诊卡号 string ✖️
7 queueNo 排队序号 string ✖️
8 treatAddr 就诊地点 string ✖️ 患者详细就诊地点
9 takeNoTime 取号时间 string ✖️ 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制
10 takeAddr 取号地址 string ✖️
11 takeCert 取号凭证 string ✖️

# 2.2.7 取消挂号

  1. 取消预约时,默认也会做退号处理

流程图:

取消流程图

说明:

腾讯在请求合作方取消挂号接口时,会出现三种情况:

  1. 取消成功,返回 code=0,此时合作方订单状态为 OrderStatus=8(已取消),PayStatus=2(已支付);
  2. 取消失败,返回 code 非 0,此时合作方的订单状态应该是 OrderStatus=5/6(锁号/挂号成功),PayStatus=2(已支付),这种订单需人工介入处理;
  3. 当合作方也不确定 HIS 当前的状态,不返回,直接让接口调用超时,这个时候腾讯会轮询合作方订单状态,具体流程见异常处理。

异常处理:

接口调用超时,此时腾讯会定时调用 appointOrderInfo 挂号指定订单信息查询接口来确认订单状态,整个轮询状态时间持续 3 分钟,3 分钟后,合作方依然没有返回,则视为异常订单,需人工介入处理。 查询接口返回值可能有两种情况:

  1. 之前的取消挂号请求合作方未收到,或内部处理异常,合作方订单状态为 OrderStatus=5/6(锁号/挂号成功),PayStatus=2(已支付),重试 3 分钟后合作方依然是该状态,该订单需人工处理;
  2. 合作方订单为 OrderStatus=8(已取消),PayStatus=2(已支付),取消成功。

接口名:

cancelAppoint

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️
2 userId 用户 ID string ✖️ 用于唯一标识一个用户,对于某些有用户体系逻辑的合作方有用

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️

# 2.2.8 同步退款结果 (仅限:接入且为服务商模式)

  1. 用户取消挂号并发起退款,微信回调腾讯侧时,腾讯侧通知渠道方对应的退款结果

流程图:

同步退款结果流程图

说明:

腾讯在请求合作方同步退款结果接口时,会出现三种情况:

  1. 合作方支付状态翻转成功,返回 code=0,此时合作方订单状态为 OrderStatus=8(已取消),PayStatus=4(退款成功);
  2. 合作方支付状态翻转失败,返回 code 非 0,此时合作方的订单状态为 OrderStatus=8(已取消),PayStatus=2(已支付),该种订单腾讯不再进行后续处理,需合作方自行调用> queryPayStatus 订单支付状态查询接口主动更新状态;
  3. 当合作方也不确定 HIS 当前的状态,不返回,直接让接口调用超时,这个时候腾讯会重试通知合作方退款结果,具体流程见异常处理。

异常处理:

接口调用超时,此时腾讯会定时调用 syncRefundResult 同步退款结果接口重试通知合作方,整个重试状态时间持续 3 分钟,3 分钟后,合作方依然没有返回,则视为异常订单,需人工介入处> 理。 查询接口返回值可能有三种情况:

  1. 合作方订单为 OrderStatus=8(已取消),PayStatus=4(退款成功),视为合作方支付状态更新成功;
  2. 合作方订单为 OrderStatus=8(已取消),PayStatus=2(已支付),视为合作方支付状态更新失败,需合作方自行调用 queryPayStatus 订单支付状态查询接口主动更新状态。

接口名:

syncRefundResult

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️
2 tradeNo 第三方支付的交易流水号 string ✔️ 如 :微信支付,这里就是微信支付的订单号 详见 tradeNo 生成规则
3 payStatus 订单支付状态 int ✔️ 详见 PayStatus
4 tradeState 第三方订单状态 string ✔️ 退款状态 SUCCESS—退款成功, REFUNDCLOSE—退款关闭, PROCESSING—退款处理中, CHANGE—退款异常,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败
5 refundAmount 退款金额 int ✔️ 单位:分
6 userId 用户 ID string ✖️ 对于有用户体系的合作方
7 refundNo 商户退款流水单号 string ✖️
8 refundId 微信退款订单号 string ✖️
9 extra 扩展字段 string ✖️ 适配部分合作方的特殊流程,直接透传回去 (如:2.3.1 里有传 extra,这里会透传回去)

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️

# 2.2.9 挂号记录列表查询

接口名:

appointOrders

请求参数:

序号 字段 名称 类型 必填 备注
1 phone 就诊人手机号 string ✖️
2 userId 用户 ID string ✖️ 对于有用户体系的合作方,查询该指定用户下的订单列表
3 beginOrderTime 下单开始时间 string ✖️ 格式:yyyy-MM-dd HH:mm:ss
4 endOrderTime 下单结束时间 string ✖️ 格式:yyyy-MM-dd HH:mm:ss
5 beginTreatDate 就诊开始日期 string ✖️ 格式:yyyy-MM-dd
6 endTreatDate 就诊结束日期 string ✖️ 格式:yyyy-MM-dd
7 hospitalId 医院 ID string ✖️
8 patientId 就诊人 ID string ✖️ 对于创建过就诊卡的合作方,查询该用户下指定就诊人的订单列表
9 pageNo 分页-第几页 int ✔️ 缺省第 1 页
10 pageSize 分页-每页记录 int ✔️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 pageNo 第几页 int ✔️
4 pageSize 每页数量 int ✔️
5 totalSize 记录条数 int ✔️
6 rsp 返回详情 array[AppointOrderInfo] ✔️

# AppointOrderInfo

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️
2 bookingNo HIS 预约订单号/当天挂号锁号 ID string ✖️
3 departmentId 科室 ID string ✔️
4 departmentName 科室 名称 string ✔️
5 doctorId 医生 ID string ✔️
6 doctorName 医生名 string ✔️
7 sourceType 班别代码 string ✔️ 详见 SourceType
8 sourceTypeName 班别名称,如上午、下午 string ✔️
9 treatDate 就诊日期 string ✔️ 格式:yyyy-MM-dd
10 queueNo 排队序号 string ✖️
11 waitingCount 前面就诊人数 int ✖️ 如果患者已就诊,则设为-1
12 waitingTime 预计候诊等待时间(分钟) string ✖️ 例:1 患者就诊设置 3 分分钟,10 个患者预计候诊 30 分钟
13 takeNoTime 取号时间 string ✖️ 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制
14 visitTime 实际就诊时间 string ✖️ 格式:yyyy-MM-dd HH:mm:ss
15 sourceBeginTime 分时开始时间 string ✔️ 格式:HH:mm (08:30 )
16 sourceEndTime 分时结束时间 string ✔️ 格式:HH:mm (09:00)
17 isCancelabe 是否可以取消 int ✔️ 0-不可以,1-可以,2-未定义
18 hisTakeNo 取号密码 string ✖️ 医院终端取号密码
19 hospitalId 医院 ID string ✖️
20 hospitalName 医院名称 string ✖️
21 orderSource 订单来源 string ✖️ 标识订单从哪个渠道产生的 详见 ordersource
22 payStatus 订单支付状态 int ✔️ 详见 PayStatus
23 treatStatus 诊疗状态 int ✔️ 详见 TreatStatus
24 orderStatus 订单状态 int ✔️ 详见 OrderStatus
25 payFee 实付金额 int ✔️ 单位:分;没有用 0 表示
26 registerFee 挂号金额 int ✔️ 单位:分;没有用 0 表示
27 treatFee 诊疗金额 int ✔️ 单位:分;没有用 0 表示
28 reduceFee 优惠金额 int ✔️ 单位:分;没有用 0 表示
29 userName 就诊人姓名 string ✔️
31 userBirthday 就诊人出生日期 string ✔️ 格式:yyyy-MM-dd
30 userPhone 就诊人手机号 string ✔️
32 userCardType 就诊人证件类型 string ✔️ 详见 cardType
33 userCardNo 就诊人证件号 string ✖️
34 orderTime 订单创建时间 string ✔️ 格式:yyyy-MM-dd HH:mm:ss
35 payMethod 支付方式 int ✖️ 详见 PayMethod
36 payType 支付类型 int ✖️ 详见 PayType
37 branchHospitalId 分院 ID string ✖️
38 branchHospitalName 分院名 string ✖️
39 treatAddr 就诊地点 string ✖️ 患者详细就诊地点
40 takeAddr 取号地址 string ✖️
41 takeCert 取号凭证 string ✖️

# 2.2.10 挂号指定订单信息查询

该接口属于低频接口,一般的触发时机为:

1、对某个订单状态有疑惑

2、请求超时,无法明确订单状态,需要重新查询确认,进而提高用户体验

接口名:

appointOrderInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 合作方用来唯一标识订单 ID string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 AppointOrderInfo ✔️

# 2.2.11 创建就诊卡接口

1.针对需要就诊卡的合作方创建就诊卡,如果存在则直接返回就诊卡卡号,如果合作方不存在该就诊人的就诊卡,则新建并返回就诊卡号

接口名: createTreatCard

请求参数:

序号 字段 名称 类型 必填 备注
1 name 就诊人姓名 string ✔️
2 cardType 证件类型 string ✔️ 见 cardType
3 cardNo 证件号 string ✔️
4 phone 手机号 string ✔️
5 hospitalId 医院 ID string ✔️
6 birthday 就诊人出生日期 string ✔️ yyyy-MM-dd
7 userId 用户 ID string ✖️ 用于唯一标识一个用户
8 guardianName 监护人姓名 string ✖️
9 guardianCardType 监护人证件类型 string ✖️ 见 cardType
10 guardianNo 监护人证件号 string ✖️
11 guardianPhone 监护人手机号 string ✖️
12 treatCardNo 就诊卡 Id string ✖️ 如果非空,则校验该就诊卡 ID 的有效性
13 branchHospitalId 分院 ID string ✖️
14 sex 性别 int ✖️ 0 :男,1:女,2:其他
15 profession 职业 string ✖️
16 birthPlace 籍贯 string ✖️
17 address 地址 string ✖️
18 nation 民族 string ✖️
19 country 国籍 string ✖️ 如中国
20 maritalStatus 婚姻状态 int ✖️ 0 :未知,1:已婚,2:未婚

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 array[TreatCardInfo] ✔️

# TreatCardInfo

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️
2 treatCodeNo 就诊卡号 string ✔️
3 patientId 患者 ID string ✖️ 如果返回患者 ID,锁号接口中会原样传回
4 createTime 创建时间 string ✔️ 格式:yyyy-MM-dd HH:mm:ss
5 branchHospitalId 分院 ID string ✖️

# 2.2.12 订单短信内容查询

接口名:

orderSmsContent

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 订单 ID string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 content 短信内容 string ✔️

# 2.2.13 获取医院科室公告

接口名:

notices

请求参数:

序号 字段 名称 类型 必填 备注
1 hospitalId 医院 ID string ✔️ 如果该医院为分院,这里会传该分院的 ID
2 departmentId 科室 ID string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️ 详见 Notice

# Notice

序号 字段 名称 类型 必填 备注
1 content 内容 string ✔️ 暂只支持支持换行<br>、字体加粗<b>标签

# 2.3 同步数据 (平台提供)

  1. 由腾讯侧提供接口服务
  2. 主要是保证在多入口的情况下,两边系统的数据能保持一致性

# 2.3.1 退款接口 (仅限:接入支付且为服务商模式)

  1. 当用户在腾讯健康小程序挂了号,但是在其他入口取消了挂号,这时候需要退款时,必须由腾讯侧发起退款请求到微信
  2. 此接口用来接受合作方的通知,告知腾讯侧需要退款给用户
  3. 腾讯侧在该接口被调用时,会自动将订单状态置为取消状态

接口名:

refundNotify

请求参数:

appointId 和 tradeNo 必须传入一个

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✖️
2 tradeNo 商户订单号 string ✖️
3 extra 扩展字段 string ✖️ 适配部分合作方的特殊流程,在退款通知直接透传回去

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️ 详见 RefundInfo

# RefundInfo

序号 字段 名称 类型 必填 备注
1 outRefundNo 商户退款单号 string ✔️
2 refundId 微信退款单号 string ✔️

# 2.3.2 同步挂号订单

  1. 由于挂号入口的多元性,比如:当用户在 H5 公众号链接挂号成功时,在腾讯侧小程序入口也能查看到记录

接口名:

syncAppointInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️
2 bookingNo HIS 预约订单号/当天挂号锁号 ID string ✔️
3 departmentId 科室 ID string ✔️
4 departmentName 科室 名称 string ✔️
5 doctorId 医生 ID string ✔️
6 doctorName 医生名 string ✔️
7 sourceType 班别代码 string ✔️ 详见 SourceType
8 sourceTypeName 班别名称,如上午、下午 string ✖️
9 treatDate 就诊日期 string ✔️ 格式:yyyy-MM-dd
10 queueNo 排队序号 string ✖️
11 waitingCount 前面就诊人数 string ✖️ 如果患者已就诊,则设为-1
12 waitingTime 预计候诊等待时间(分钟) string ✖️ 例:1 患者就诊设置 3 分钟,10 个患者预计候诊 30 分钟
13 takeNoTime 取号时间 string ✖️ 格式:"MM 月 dd 日 HH 时前"或者"MM 月 dd 日 HH 时-HH 时",并且时间采用 24 小时制
14 visitTime 实际就诊时间 string ✖️ 格式:yyyy-MM-dd HH:mm:ss
15 sourceBeginTime 分时开始时间 string ✔️ 格式:HH:mm (08:30 )
16 sourceEndTime 分时结束时间 string ✔️ 格式:HH:mm (09:00)
17 sourceTimeType 时间类型 int ✖️ 默认为 0,标准起始时间段格式详见 SourceTimeType,分时时间非标准格式时使用,此时分时时间可不传
18 sourceTimeDesc 时间描述 string ✖️ 号源时间描述,时间类型为 1、2 时,当前字段不能为空
19 isCancelable 是否可以取消 string ✖️ 0-不可以,1-可以,2-未定义
20 hisTakeNo 取号密码 string ✖️ 医院终端取号密码
21 hospitalId 医院 ID string ✔️
22 hospitalName 医院名称 string ✖️
23 orderSource 订单来源 string ✖️ 标识订单从哪个渠道产生的。如果是腾讯侧产生的,将只更新订单状态。否则,新增一条订单数据 详见 OrderSource
24 payStatus 订单支付状态 int ✔️ 详见 PayStatus
25 treatStatus 诊疗状态 int ✔️ 详见 TreatStatus
26 orderStatus 订单状态 int ✔️ 详见 OrderStatus
27 branchHospitalId 分院 ID string ✖️
28 branchHospitalName 分院名称 string ✖️
29 ThRegisterId 回传 ID string ✔️ 如果是通过 H5/小程序模式 跳转到合作方页面的会带上该字段,合作方订单回传时需要带回给腾讯侧,便于数据的关联
30 userName 就诊人姓名 string ✔️
31 userPhone 就诊人手机号 string ✔️
32 userBirthday 就诊人出生日期 string ✔️ 格式:yyyy-MM-dd
33 userCardType 就诊人证件类型 string ✔️ 详见 cardType
34 userCardNo 就诊人证件号 string ✖️
35 orderTime 订单创建时间 string ✔️ 格式:yyyy-MM-dd HH:mm:ss
36 payMethod 支付方式 int ✔️ 详见 PayMethod
37 payType 支付类型 int ✔️ 详见 PayType
38 registerFee 挂号金额 int ✔️ 单位:分;没有用 0 表示
39 treatFee 诊疗金额 int ✔️ 单位:分;没有用 0 表示
40 reduceFee 优惠金额 int ✔️ 单位:分;没有用 0 表示
41 extraSerialNumber 特殊扩展流水号 array[string] ✖️ 某些场景下需要展示的特殊流水编号
42 takeAddr 取号地址 string ✖️
43 takeCert 取号凭证 string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️

# 2.3.3 停改诊通知接口

  1. 当渠道方的预约信息有变动时,同步给平台方

  2. 对于有支付接入的订单,在取消或停诊时可能有退款操作,合作方需要根据支付模式不同选择通知方式

(1)服务商模式:退款操作在腾讯健康侧完成。合作方直接调用停改诊接口即可,腾讯健康退款完成后会调用 syncRefundResult 通知合作方

(2)支付小程序模式/联合运营模式:退款操作在合作方完成。合作方先调用停改诊接口通知订单状态,在退款完成后需要再调用 syncAppointInfo 通知腾讯健康退款状态

接口名:

notifyChangeStatus

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️
2 changeType 订单变更类型 int ✔️ 1:取消 2:停诊 3:改诊 4:替诊
3 newTreatDate 更新后的就诊日期 string ✖️ 格式:yyyy-MM-dd
4 newSourceBeginTime 更新后就诊开始时间 string ✖️ 格式:HH:mm (改诊)
5 newSourceEndTime 更新后就诊结束时间 string ✖️ 格式:HH:mm (改诊)
6 newDepartmentId 更新后的科室 ID string ✖️ 替诊
7 newDepartmentName 更新后的科室名称 string ✖️ 替诊
8 newDoctorId 更新后的医生 ID string ✖️ 替诊
9 newDoctorName 更新后的医生名称 string ✖️ 替诊

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 object ✔️

# 2.3.4 对账接口 (仅限:接入支付且为服务商模式)

  1. 合作方每日上午 9 点后拉取前一天账单信息

接口名:

billDownload

请求参数:

序号 字段 名称 类型 必填 备注
1 date 需下载的订单日期 string ✖️ 格式:yyyyMMdd,只能指定当天以前,默认前一天
2 hospitalId 医院 ID string ✖️ 商户号绑定医院级别时,需指定医院

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 billList 返回详情 object ✔️ 详见 BillInfo
4 totalCount 总交易数 int ✔️
5 checkFee 应结订单总金额 int ✔️ 单位:分
6 totalFee 订单总金额 int ✔️ 单位:分
7 applyBackFee 申请退款总金额 int ✔️ 单位:分
8 backFee 退款总金额 int ✔️ 单位:分

# BillInfo

序号 字段 名称 类型 必填 备注
1 wxOderNo 微信订单号 string ✔️
2 busiOrderNo 商户订单号 string ✖️ 腾讯健康侧订单号
3 wxBackNo 微信退款单号 string ✖️
4 busiBackNo 商户退款单号 string ✖️ 腾讯健康侧退款单号
5 fee 金额 int ✔️ 单位:分
6 status 支付状态 int ✔️ 详见 PayStatus

# 2.3.5 订单支付状态查询

  1. 合作方根据订单 ID 查询支付状态和退款状态,传参方式有两种:1)appointId;2)tradeNo

接口名:

queryPayStatus

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 订单 ID string ✖️
2 tradeNo 商户订单号 string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 payInfo 订单支付状态 Object ✔️ 详见 PayInfo

# PayInfo

序号 字段 名称 类型 必填 备注
1 payStatus 订单支付状态 int ✔️ 详见 PayStatus
2 fee 挂号费(单位:分) int ✖️
3 treatFee 诊疗费(单位:分) int ✖️
4 reduceFee 优惠费用(单位:分) int ✖️
5 payFee 实付费用(单位:分) int ✖️

# 2.4 鉴权/实名(渠道提供)

# 2.4.1 获取调用凭证

部分合作方需要使用调用凭证方可调用相关业务接口,如有需要需按照如下接口提供实现并同步相关配置参数到腾讯健康侧。accessToken 是全局唯一调用凭证,accessToken 失效前腾讯健康侧会及时刷新,刷新后需保证老 accessToken 在 10 分钟内仍可用,以保证调用方平滑过渡。

调用凭证内容将会添加到 HTTP header 中,对应 header 字段名为:accessToken,使用方可按需取用。

接口名:

accessToken

请求参数:

序号 字段 名称 类型 必填 备注
1 appId 合作方分配的应用 ID string ✔️
2 secret 合作方分配的应用唯一秘钥 string ✔️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 accessToken 获取到的调用凭证 string ✔️
4 expiresIn 调用凭证有效时间,单位:秒 int ✔️

# 2.4.2 发送验证码

接口名:

authCode

请求参数:

序号 字段 名称 类型 必填 备注
1 phone 手机号 string ✔️
2 type 业务类型 int ✔️ 1:实名认证
3 cardType 证件类型 string ✖️ 详见 CardType
4 cardNo 证件号 string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 status 发送状态 int ✔️ 1:已发送,2:发送失败

# 2.4.3 就诊人实名认证

接口名:

realNameAuth

请求参数:

序号 字段 名称 类型 必填 备注
1 name 就诊人姓名 string ✔️
2 cardType 就诊人证件类型 string ✔️ 详见 CardType
3 cardNo 就诊人证件号 string ✔️
4 phone 就诊人手机号 string ✖️
5 nation 民族 string ✖️ 详见 Nation ,实际内容为对应名称,如汉族
6 authCode 验证码 string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 authStatus 认证状态 int ✔️ 0: 未实名认证,1:已实名认证,2:认证失败-未申诉,3:认证失败-申诉中,4:认证失败-申诉失败
4 jumpUrl 跳转链接 string ✖️
5 tips 异常提示 string ✖️

# 2.4.4 查询就诊人实名认证状态

接口名:

queryRealNameAuthStatus

请求参数:

序号 字段 名称 类型 必填 备注
1 name 就诊人姓名 string ✔️
2 cardType 就诊人证件类型 string ✔️ 详见 CardType
3 cardNo 就诊人证件号 string ✔️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 authStatus 认证状态 int ✔️ 0: 未实名认证,1:已实名认证,2:认证失败-未申诉,3:认证失败-申诉中,4:认证失败-申诉失败
4 jumpUrl 跳转链接 string ✖️
5 tips 异常提示 string ✖️

# 2.4.5 预约挂号验证码

接口名:

appointAuthCode

请求参数:

序号 字段 名称 类型 必填 备注
1 name 就诊人姓名 string ✔️
2 cardType 就诊人证件类型 string ✔️ 详见 CardType
3 cardNo 就诊人证件号 string ✔️
4 hospitalId 医院 ID string ✖️
5 sourceId 号源 ID string ✖️
6 patientId 就诊人 ID string ✖️

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 authType 验证码类型 int ✔️ 详见 authCodeType
4 authCode 验证码内容 string ✖️
5 image 图片验证码内容 string ✖️ 图文验证码类型不可为空

# 3. API 支付模式

挂号 API 模式支持接入支付,针对合作方不同接入场景,分别有以下几类:

  1. 服务商模式
  2. 挂号支付小程序模式
  3. 联合运营支付模式

# 3.1 服务商模式

此模式适用于 可以将商户号授权为腾讯健康子商户 的场景,采用微信支付的服务商模式,腾讯健康商户号作为服务商代子商户号收款。

关于服务商-子商户支付模式,可参考微信小程序支付开放模式 (opens new window)

腾讯健康支付成功后调用挂号接口:register

# 3.2 挂号支付小程序模式

此模式适用于 合作方自有支付小程序的场景,在支付时,用户从腾讯健康小程序跳转到合作方支付小程序,支付过程在合作方小程序进行,完成支付后再跳转回腾讯健康小程序。

# 3.2.1 小程序端交互流程

大体的交互流程如下图:

腾讯健康-挂号支付 小程序时序图

腾讯健康小程序 appid:wxb032bc789053daf4

  1. 腾讯健康小程序 --> 挂号支付小程序:

跳转页面路径: 渠道方提供(eg:page/index/index)

携带参数: 根据渠道方要求(eg:order_id=xxxx&cid=xxxx)

demo : page/index/index?order_id=xxxx&cid=xxxx

  1. 挂号支付小程序 --> 腾讯健康小程序:

跳转页面路径: 用户在 挂号支付小程序不管是取消了支付还是完成了支付,直接调用小程序的wx.navigateBackMiniProgram()跳转回腾讯健康小程序即可

携带参数: 需要把前端的支付结果带回给腾讯

wx.navigateBackMiniProgram({
  extraData: {
    result: "success", // 前端支付成功
    //  result: 'fail' // 前端支付失败
    //  result: 'cancel' // 用户取消支付
  },
});

# 3.2.2 同步挂号订单(平台提供)

本接口主要用于 ISV 在订单状态更改时主动同步给腾讯健康侧;

此模式下,存在以下同步订单状态场景:

  1. 当用户完成支付或支付失败,ISV 后台接收到微信支付的回调时,需要将订单状态信息同步到腾讯健康后台;
  2. 当用户取消订单,ISV 接收到腾讯健康的取消订单请求,执行取消订单操作,并根据订单是否完成支付来选择是否进行退款操作,操作完成后,无论是无需退款、退款完成或退款失败,均需要将订单状态同步到腾讯健康后台;
  3. 当用户在非腾讯健康侧完成了退号退款或状态变更操作,ISV 在操作完成后,将订单状态同步到腾讯健康后台。

接口名:

syncAppointInfo

# 3.3 联合运营支付模式

此模式是针对不支持将商户号授权为腾讯健康子商户,且无支付小程序的医院场景,以联合运营的方式接入到腾讯健康小程序中;

主要方式为

  1. 统一下单和订单退款操作在ISV完成;
  2. 收银台在腾讯健康拉起,所需参数从 ISV 侧获取,用户支付完成后,ISV 收到微信支付回调,将订单状态实时同步回腾讯健康;
  3. 订单取消时,ISV 负责退款,并将订单状态实时同步回腾讯健康;
  4. 当订单出现状态变化时,ISV 将最新的订单状态实时同步回腾讯健康;

微信支付侧针对小程序支付有两种开放模式,ISV 根据自身已开发的模式选择对应的联合运营方式:

  1. 普通模式:适用于开发者申请自己的appidmch_id进行直连商户收款,此时腾讯健康需申请和 ISV 进行两方联合运营
  2. 服务商模式:适用于第三方服务商为服务的特约子商户进行代收款,此时腾讯健康需申请和 ISV(服务商)、医院(特约子商户)进行三方联合运营

    更多关于开放模式的介绍请参考:微信小程序支付开放模式 (opens new window)

下单支付时序图

腾讯健康-联合运营支付 支付时序图

退号退款时序图

腾讯健康-联合运营支付 退款时序图



接口说明

# 3.3.1 获取支付参数

本接口主要用于用户需要支付时,合作方去微信支付统一下单,并将拉起支付所需的签名等信息返回给腾讯健康后台

要拿到小程序拉起收银台所需要的参数,大概要经过两步:

# 第一步:统一下单

序号 字段 描述 普通商户模式 服务商模式
1 appid 微信分配的小程序 ID 当前调起支付的小程序 APPID,即腾讯健康小程序的appid,固定为:wxb032bc789053daf4 ISV 申请的服务商商户对应的 APPID
2 mch_id 微信支付分配的商户号 ISV 普通商户对应的商户号 ISV 申请的服务商商户号
3 sub_appid 当前调起支付的小程序 APPID ✖️ 当前调起支付的小程序 APPID,即腾讯健康小程序的appid,固定为:wxb032bc789053daf4
4 sub_mch_id 微信支付分配的子商户号 ✖️ 跟 ISV 有绑定关系的某个医院的商户号,即上述提到的服务商商户号的某个子商户号
5 openid 用户在商户 appid 下的唯一标识 此处是用户在腾讯健康小程序下的 openid,这个比较重要,到时候退款是直接退到该用户的原支付路径下的 用户在 ISV 服务商商户 appid 下的 openid
6 sub_openid 用户在子商户 appid 下的唯一标识 ✖️ 此处是用户在腾讯健康小程序下的 openid,这个比较重要,到时候退款是直接退到该用户的原支付路径下的

# 第二步:获取签名参数:



接口名:

unionPaymentInfo

请求参数:

序号 字段 名称 类型 必填 备注
1 appointId 预约 ID string ✔️ 单次预约的 Id
2 paymentReq 获取小程序支付的请求参数 object ✔️ 详见UnionPaymentReq

# UnionPaymentReq

序号 字段 名称 类型 必填 备注
1 openid 用户在腾讯健康小程序的 openid string ✔️
2 sub_appid 当前调起支付的小程序 APPID(腾讯健康 APPID) string ✔️ 默认为:wxb032bc789053daf4
3 body 商品简单描述 string ✔️
4 detail 商品详细描述 string ✖️
5 total_fee 总金额 int ✔️ 订单总金额,只能为整数,单位为分。此金额是腾讯健康前端展示金额,下单时 ISV 应校验订单金额与此金额是否一致,不一致应返回异常。如果由于优惠而产生正常的减免费用,应在返回中带上减免费用和减免说明
6 scheduleId 排班 ID string ✖️
7 sourceId 号源 ID string ✖️
8 selfPay 自费金额 int ✖️ 单位:分 这里主要兼容有医保支付情况。默认和总金额保持一致
9 patientId 患者 ID string ✖️ 参照 2.2.11 里的 patientId
PS: scheduleId souceId 和 patientId 对部分有业务需求的合作方会绑定在一起成必传字段

返回参数:

序号 字段 名称 类型 必填 备注
1 code 状态码 int ✔️ 0:正常,其他:异常。具体见附录说明
2 message 状态描述 string ✔️
3 rsp 返回详情 UnionPaymentRsp ✔️

# UnionPaymentRsp

序号 字段 名称 类型 必填 备注
1 timeStamp 时间戳从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 string ✔️
2 nonceStr 随机字符串,长度为 32 个字符以下。 string ✔️
3 package 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=* string ✔️
4 signType 签名算法,暂支持 MD5 string ✔️
5 paySign 签名 string ✔️
6 out_trade_no 商户订单号 string ✔️
7 time_start 交易起始时间 string ✔️ 统一下单时的交易起始时间,格式为 yyyyMMddHHmmss
8 time_expire 交易结束时间 string ✔️ 统一下单时的交易结束时间,格式为 yyyyMMddHHmmss
9 pay_start_time 支付起始时间 string ✔️ 有效支付的起始时间,格式为 yyyyMMddHHmmss
10 pay_end_time 支付结束时间 string ✔️
11 trade_type 交易类型 string ✔️ 默认为JSAPI
12 pay_fee 实际支付金额 int ✔️ 实际拉起收银台支付金额,只能为整数,单位为分。
13 reduce_fee 减免金额 int ✖️ 减免金额,只能为整数,单位为分。当 pay_fee 与 total_fee 不同时必传
14 reduce_desc 减免说明 string ✖️ 订单减免说明。当 pay_fee 与 total_fee 不同时必传

# 3.3.2 订单状态查询

本接口主要用于在 ISV 未返回订单同步信息时,腾讯健康侧主动请求 ISV 获取订单状态;

此模式下,存在以下主动查询场景:

  1. 当用户完成支付,腾讯健康侧等待 1min 后未获取到 ISV 同步的订单支付状态;
  2. 用户主动查询订单支付状态;
  3. 当用户完成取消订单,腾讯健康侧等待 1min 未获取到 ISV 同步的订单退款状态。

注意:当连续查询三次仍未获取到订单支付状态,该订单将置为异常单,进行人工处理。

接口名:

appointOrderInfo

# 3.3.3 同步挂号订单(平台提供)

本接口主要用于 ISV 在订单状态更改时主动同步给腾讯健康侧;

此模式下,存在以下同步订单状态场景:

  1. 当用户完成支付或支付失败,ISV 后台接收到微信支付的回调时,需要将订单状态信息同步到腾讯健康后台;
  2. 当用户取消订单,ISV 接收到腾讯健康的取消订单请求,执行取消订单操作,并根据订单是否完成支付来选择是否进行退款操作,操作完成后,无论是无需退款、退款完成或退款失败,均需要将订单状态同步到腾讯健康后台;
  3. 当用户在非腾讯健康侧完成了退号退款或状态变更操作,ISV 在操作完成后,将订单状态同步到腾讯健康后台。

接口名:

syncAppointInfo

# 4.附录

# Code

具体每个业务接口可以再详细对接定义

说明 备注
0 成功 表明接口正常
非 0 失败 接口异常
-404 查找记录为空 这里主要针对于查找指定数据为空。如:查询订单详情等。如果是获取排班或者号源为空,可以返回空数组,然后 code 为 0
-40001 验证码内容错误

# HospitalLevel

说明
1 三甲
2 三乙
3 三丙
4 二甲
5 二乙
6 二丙
7 一甲
8 一乙
9 一丙
10 一级
11 二级
12 三级
100 其他

# HospitalType

说明
1 国营
2 民营
3 合资
4 外资
5 个体
9 其它

# ZCID

序号 说明
1 主任医师
2 副主任医师
3 主治医师
4 医师
5 医士
6 卫生防疫员
7 主任药师
8 副主任药师
9 主管药师
10 药师
11 药剂士
12 药剂员
13 主任护师
14 副主任护师
15 主管护师
16 护师
17 护士
18 护理员
19 主任技师
20 副主任技师
21 主管技师
22 技师
23 技士
24 见习员
25 一级心理咨询师
26 二级心理咨询师
27 三级心理咨询师
28 研究员
29 教授
30 副教授
31 医生助理
32 顾问医生
33 副顾问医生
34 驻院医生
35 高级医生
36 验光师
37 助理医师
38 住院医师
39 药士
40 康复治疗师
41 营养师
42 检验师
43 针灸推拿师
44 心理咨询师
45 实习医师
46 规培医师
47 轮转医师
48 进修医师
49 医学生(本科生/研究生/博士生/实习生)
50 值班医生
100 其他

# SourceType

说明
0 晚上(18:00 - 06:00)
1 上午(06:00 - 12:00)
2 下午(12:00 - 18:00)
3 全天(00:00 - 23:59)
5 其他

# OrderSource

说明
0 腾讯
1 合作方自有渠道
2 其他渠道

# PayMode

说明
0 不需要支付
1 自费
2 医保支付
3 混合支付

# CardType

说明
01 身份证
02 香港居民证身份证
03 护照
04 军人证
05 其他
06 澳门居民身份证
07 台湾居民身份证
08 港澳居民来往内地通行证
09 台湾居民来往内地通行证
10 出生证

# PayMethod

说明 备注
0 线下支付
1 线上支付

# PayType

说明 备注
0 自费
1 医保

# PayStatus

说明 备注
0 未知
1 待支付
2 已支付
3 退款中
4 退款成功
5 支付失败
6 退款失败
7 无需线上支付

# OrderStatus

说明
2 未知
3 锁号中
4 锁号失败
5 锁号成功
6 挂号成功(锁号成功 + 支付成功)
7 释放号源中(取消中)
8 已取消
9 取消失败

# TreatStatus

说明
-3 停改诊
-2 预约失败
-1 已取消
0 未知
1 未取号
2 已取号
3 已签到
4 已就诊
5 已爽约

# GuardianPatientRelationType

说明 备注
0 未知
1 本人
2 父母
3 子女
4 夫妻
5 亲属
6 朋友

# SourceTimeType

说明 备注
0 时间段格式 默认格式,HH:mm-HH:mm,如 09:00-09:30
1 具体时间点 如 09:00
2 自定义 如序号 01
3 无描述内容

# AuthCodeType

说明
1 短信验证码
2 图文

# Nation

说明
01 汉族
02 蒙古族
03 回族
04 藏族
05 维吾尔
06 苗族
07 彝族
08 壮族
09 布衣族
10 朝鲜族
11 满族
12 侗族
13 瑶族
14 白族
15 土家族
16 哈尼族
17 哈萨克
18 傣族
19 黎族
20 傈僳族
21 佤族
22 畲族
23 高山族
24 拉祜族
25 水族
26 东乡族
27 纳西族
28 景颇族
29 柯尔克孜族
30 土族
31 达斡尔族
32 仫佬族
33 羌族
34 布朗族
35 撒拉族
36 毛南族
37 仡佬族
38 锡伯族
39 阿昌族
40 普米族
41 塔吉克族
42 怒族
43 乌孜别克族
44 俄罗斯族
45 鄂温克族
46 德昂族
47 保安族
48 裕固族
49 京族
50 塔塔尔族
51 独龙族
52 鄂伦春族
53 赫哲族
54 门巴族
55 珞巴族
56 基诺族
57 其他民族

# tradeNo 生成规则

TH + 17位数字或字母 + R

  • 总长度:20 位
  • 前缀:TH
  • 后缀:R

eg: TH157354587078335dhR

便于到时候如果同一个商户号有多个入账渠道时,即可用这个商户订单号的规则来解析和判断从腾讯健康渠道产生的

# CityCode & AreaCode

具体的行政区域代码可以参考链接:

最新县及县以上行政区划代码 (opens new window)

# 5.性能参考指标

具体的性能参考指标,见如下表格

性能参考指标表 (opens new window)

# 6.修改记录

日期 更新事项 操作人
2019.11.19 17:20 createTreatCard 接口:返回参数为 array;新增创建时间 vinazhang
2019.11.20 15:13 createTreatCard 接口:新增 treatCardNo 字段 vinazhang
2019.12.04 11:19 新增 queryPatStatus 接口;syncRefundResult、refundNotify 接口更新 vinazhang
2019.12.05 16:17 更新 queryPatStatus 接口:新增 hospitalId 字段 vinazhang
2019.12.11 10:13 更新接口名称:查询订单支付状态 queryPayStatus vinazhang
2019.12.12 16:00 批量修改字段的必传性,增加了默认值和相关备注说明 pigozhu
2019.12.13 17:14 增加锁号、挂号、取消和退款通知的流程图以及说明 pigozhu
2019.12.31 15:31 新增订单短信内容接口 magicsu
2020.01.03 11:18 3.挂号支付小程序 -- 跳转回腾讯健康小程序的参数携带 pigozhu
2020.01.08 18:00 refundNotify 接口入参增加 tradeNo 字段 vinazhang
2020.03.03 14:00 2.3.2 兼容下 H5 回传订单数据时的协议 pigozhu
2020.09.02 11:00 appoint 接口新增 visitType 就诊类型字段 magicsu
2020.10.22 11:00 新增联合运营支付模式说明 criszheng
2020.11.12 16:00 诊疗状态新增停改诊状态 magicsu
2020.12.14 19:00 锁号接口增加 40、41、42 三个字段 pigozhu
2021.10.18 14:00 appoint 接口新增 hospitalName、departmentName、doctorName 可选字段 magicsu
2021.11.02 10:00 appoint 接口新增 treatCertName、treatCert、treatCertShowType 字段 magicsu