抢号流程(标准流程)
GetDoctorInfo,得到医生列表- 请求参数:
- VisitDate:挂号日期
- DeptId:科室
- TapIndex:分院
- 包含医生的id、医生介绍、医生费用,以及仍然有号的第一个预约时段在上午还是下午
样例数据
{"data":[{"amPm":"上午","doctId":"1680","doctImgUrl":"","doctIntroduced":"知名专家 医事服务费: 专业特长:疑难牙治疗、膜龈手术、牙周炎种植治疗及长期疗效维护","doctName":"周爽英","fee":100,"numbers":0,"scheduleId":"333278","seqDoct":"44","visitDate":1667491200000,"visitTime":"1","ygzc":"知名专家","znumber":0},{"amPm":"上午","doctId":"2007","doctImgUrl":"","doctIntroduced":"副主任医师 医事服务费: 专业特长:复杂牙周疾病的系统治疗设计","doctName":"冯向辉","fee":60,"numbers":0,"scheduleId":"333453","seqDoct":"53","visitDate":1667491200000,"visitTime":"1","ygzc":"副主任医师","znumber":0},{"amPm":"上午","doctId":"2024","doctImgUrl":"","doctIntroduced":"副主任医师 医事服务费: 专业特长:牙周病的诊断与治疗","doctName":"高丽","fee":60,"numbers":0,"scheduleId":"333406","seqDoct":"58","visitDate":1667491200000,"visitTime":"1","ygzc":"副主任医师","znumber":0},{"amPm":"上午","doctId":"6798","doctImgUrl":"","doctIntroduced":"主治医师 医事服务费: 专业特长:牙周病的诊断、基础治疗和手术治疗","doctName":"甄敏","fee":50,"numbers":0,"scheduleId":"333466","seqDoct":"62","visitDate":1667491200000,"visitTime":"1","ygzc":"主治医师","znumber":0},{"amPm":"上午","doctId":"6796","doctImgUrl":"","doctIntroduced":"主治医师 医事服务费: 专业特长:牙周病的诊断和系统治疗","doctName":"王宪娥","fee":50,"numbers":0,"scheduleId":"333523","seqDoct":"63","visitDate":1667491200000,"visitTime":"1","ygzc":"主治医师","znumber":0},{"amPm":"上午","doctId":"0","doctImgUrl":"","doctIntroduced":"医事服务费: 专业特长:牙龈炎、牙周炎、洁治、龈下刮治、牙周手术、种植体周围发炎。我院为教学医院,您预约的普通号有可能是医学生诊治","doctName":"普通","fee":50,"numbers":0,"scheduleId":"333383","seqDoct":"449","visitDate":1667491200000,"visitTime":"1","ygzc":"医师","znumber":0},{"amPm":"上午","doctId":"4751","doctImgUrl":"","doctIntroduced":"主治医师 医事服务费: 专业特长:牙周病的诊断及治疗","doctName":"曹洁","fee":50,"numbers":0,"scheduleId":"333472","seqDoct":"479","visitDate":1667491200000,"visitTime":"1","ygzc":"主治医师","znumber":0},{"amPm":"上午","doctId":"7607","doctImgUrl":"","doctIntroduced":"主治医师 医事服务费: 专业特长:牙周病的诊断和系统治疗","doctName":"王翠","fee":50,"numbers":0,"scheduleId":"333396","seqDoct":"540","visitDate":1667491200000,"visitTime":"1","ygzc":"主治医师","znumber":0},{"amPm":"上午","doctId":"8356","doctImgUrl":"","doctIntroduced":"专业特长:牙周病的诊断和系统治疗","doctName":"王啸轩","fee":50,"numbers":0,"scheduleId":"333376","seqDoct":"581","visitDate":1667491200000,"visitTime":"1","ygzc":"医师","znumber":0},{"amPm":"上午","doctId":"8641","doctImgUrl":"","doctIntroduced":"主治医师 专业特长:牙周病的诊断和系统治疗","doctName":"刘健如","fee":50,"numbers":0,"scheduleId":"333467","seqDoct":"602","visitDate":1667491200000,"visitTime":"1","ygzc":"主治医师","znumber":0},{"amPm":"上午","doctId":"8657","doctImgUrl":"","doctIntroduced":"主治医师 专业特长:牙周病的诊断和系统治疗","doctName":"石巧","fee":50,"numbers":0,"scheduleId":"333345","seqDoct":"632","visitDate":1667491200000,"visitTime":"1","ygzc":"主治医师","znumber":0},{"amPm":"上午","doctId":"8871","doctImgUrl":"","doctIntroduced":"主治医师 专业特长:牙周疾病诊断与系统治疗","doctName":"危伊萍","fee":50,"numbers":0,"scheduleId":"333306","seqDoct":"666","visitDate":1667491200000,"visitTime":"1","ygzc":"主治医师","znumber":0}],"message":"查询成功","status":0}
GetYyScheduleInfo:获取预约时段信息- 请求参数:
- VisitDate:挂号日期
- DeptId:科室
- TapIndex:分院
- DoctId:医生ID
- 包含最重要的sguID和scheduleID,用于预约提交订单
样例数据
{"data":[{"amPm":"上午","createTime":1664246428000,"deptId":"26","deptIntroduced":"","deptName":"牙周科","dist":"0","doctId":"9915","doctImgUrl":"","doctIntroduced":"主治医师 专业特长:牙周疾病的系统和美学治疗、种植治疗和维护","doctName":"李鹏","fee":50,"majorDetailId":"26","majorId":"2","majorName":"牙周专业","numbers":0,"scheduleId":"325510","scheduleType":"0","seq":"1","seqDoct":"670","seqMj":"2","sguID":"cc4f3666-31d0-4238-87da-225c16ebe844","sign":"1","sourceId":527524,"status":"1","totalNumbers":2,"updateTime":1664246428000,"visitDate":1664380800000,"visitTime":"1","ygzc":"主治医师"}],"message":"查询成功","status":0}
YysamedayAppointment:创建挂号- 请求参数
- VisitDate:挂号日期
- DeptId:科室
- TapIndex:分院
- DoctId:医生ID
- PatientID:患者ID
- SguID:预约相关ID
- ScheduleID:预约时段ID
- SguID仅在该接口中出现
样例数据
无
当日挂号流程
GetScheduleInfo:
样例数据
{"data":[{"amPm":"上午","createTime":1667377814000,"deptId":"26","deptIntroduced":"","deptName":"牙周科","dist":"0","doctId":"7607","doctImgUrl":"","doctIntroduced":"主治医师 医事服务费: 专业特长:牙周病的诊断和系统治疗","doctName":"王翠 ","fee":50,"majorDetailId":"26","majorId":"2","majorName":"牙周专业","numbers":"0","scheduleId":"141599","scheduleType":"1","seq":"1","seqDoct":"540","seqMj":"2","sguID":"161fdcef-ae14-47d2-b0f3-028f0a3e0735","sign":"1","sourceId":557207,"status":"1","totalNumbers":1,"updateTime":1667377814000,"visitDate":1667404800000,"visitTime":"1","ygzc":"主治医师"}],"message":"查询成功","status":0}
samedayAppointment:和预约参数相同
YysamedayAppointment1 {patientId:s.data.selectVisitor.clientId,scheduleId:o.scheduleId, visitDate:e.timestampToTime2(o.visitDate), deptId:o.deptId, sguId:o.sguID, dist:s.data.tapIndex} YysamedayAppointment2 {patientId:s.data.selectVisitor.clientId,scheduleId:o.scheduleId, visitDate:e.timestampToTime2(o.visitDate), deptId:o.deptId, sguId:o.sguID, dist:s.data.tapIndex} samedayAppointment1 {patientId:i.data.selectVisitor.clientId,scheduleId:i.data.scheduleId,visitDate:e.timestampToTime2(i.data.hids.visitDate),deptId:i.data.hids.deptId} samedayAppointment2 {patientId:s.data.selectVisitor.clientId,scheduleId:o.scheduleId, visitDate:e.timestampToTime2(o.visitDate), deptId:o.deptId, sguId:o.sguID, dist:s.data.tapIndex}
核心难点
- sguID只能在最后一步拿到,无法并行
- 请求速度限制每800ms最多2个请求
- 无法提前获取号院
各种尝试
- 按照标准流程走 → 速度极慢,因为你需要一个一个请求医生的预约时段
- 首先优化otto VM的初始化,提速很多
- 发现如果GetDoctorInfo随后GetYySchedule速度太慢,无法并行,因此考虑将医生列表内置,跳过GetDoctorInfo
- 有另外两个地方可以拿到医生列表
- 医院科室介绍页
- 预约挂号搜索页
- 医院科室介绍页
- 通过
QueryDeptList获取科室列表和代号,随后QueryDoctorList获取医生的列表即可 - 可以获取到所有的医生,但是部分医生的ID获取到之后不是数字id,和预约处对不上
- 预约搜索页 - 只能获取到当天有号的医生
- 通过
GetYySearchInfo获取 - 然而即使能拿到医生的id,却不知道医生什么时候会出诊,
- 尝试提前访问GetYySearchInfo和GetDoctorInfo均会返回空列表
样例数据
{"data":{"lists":[{"departments":[{"area_code":"0","area_name":"魏公村总院区","dept_code":"etkqk","dept_id":2587,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ejcaAXzjxAAlxJXA4rY0093.png","dept_name":"儿童口腔科","dept_order":3,"links":[],"name_pinyin":"ertongkouqiangke儿童口腔科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"681","promo_flag":"0","pyjc":"ETKQK"}],"id":0,"indexLetter":"E"},{"departments":[{"area_code":"0","area_name":"魏公村总院区","dept_code":"gjmz","dept_id":2599,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2F/rBsAEF2emqWASRAFAAl0683hxWs804.png","dept_name":"关节门诊","dept_order":15,"links":[],"name_pinyin":"guanjiemenzhen关节门诊","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","promo_flag":"0","pyjc":"GJMZ"}],"id":1,"indexLetter":"G"},{"departments":[{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqblk","dept_id":2600,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2F/rBsAEF2emveAF6cjAAlqfcCxs2I809.png","dept_name":"口腔病理科","dept_order":16,"links":[],"name_pinyin":"kouqiangbinglike口腔病理科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","promo_flag":"0","pyjc":"KQBLK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqemwk","dept_id":2588,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ejkaAVDxxAAlyshewM_c648.png","dept_name":"口腔颌面外科","dept_order":4,"links":[],"name_pinyin":"kouqianghemianwaike口腔颌面外科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"703","promo_flag":"0","pyjc":"KQHMWK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqjzk","dept_id":2597,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2elhiAFbbPAAl4o-V1ovA757.png","dept_name":"口腔急诊科","dept_order":13,"links":[],"name_pinyin":"kouqiangjizhenke口腔急诊科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","promo_flag":"0","pyjc":"KQJZK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqnmk","dept_id":2592,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ekyOAat39AAl5IAfGHb4055.png","dept_name":"口腔黏膜科","dept_order":8,"links":[],"name_pinyin":"kouqiangnianmoke口腔黏膜科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"33","promo_flag":"0","pyjc":"KQNMK","special_flag":"1"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqxfk","dept_id":2589,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ejoWAG_iUAAl8uXT6lwo813.png","dept_name":"口腔修复科","dept_order":5,"links":[],"name_pinyin":"kouqiangxiufuke口腔修复科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"685","promo_flag":"0","pyjc":"KQXFK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqyfbjk","dept_id":2591,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ekt-ABcCKAAluzVi7Aj4005.png","dept_name":"口腔预防保健科","dept_order":7,"links":[],"name_pinyin":"kouqiangyufangbaojianke口腔预防保健科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","promo_flag":"0","pyjc":"KQYFBJK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqzqk","dept_id":2590,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ejr6AZufrAAl630tfSnk743.png","dept_name":"口腔正畸科","dept_order":6,"links":[],"name_pinyin":"kouqiangzhengjike口腔正畸科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"39","promo_flag":"0","pyjc":"KQZJK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"kqzzk","dept_id":2593,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ek2aAJBVYAAl8d1JUsH4529.png","dept_name":"口腔种植科","dept_order":9,"links":[],"name_pinyin":"kouqiangzhongzhike口腔种植科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"682","promo_flag":"0","pyjc":"KQZZK"}],"id":2,"indexLetter":"K"},{"departments":[{"area_code":"0","area_name":"魏公村总院区","dept_code":"tzk","dept_id":2596,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2eldaAKPZtAAl1R3GDUXM419.png","dept_name":"特诊科","dept_order":12,"links":[],"name_pinyin":"tezhenke特诊科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","promo_flag":"0","pyjc":"TZK"}],"id":3,"indexLetter":"T"},{"departments":[{"area_code":"0","area_name":"魏公村总院区","dept_code":"ytysk","dept_id":2585,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ei5qADXqvAAl1ZQFi22Y354.png","dept_name":"牙体牙髓科","dept_order":1,"links":[],"name_pinyin":"yatiyasuike牙体牙髓科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"23","promo_flag":"0","pyjc":"YTYSK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"yxyxk","dept_id":2601,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2F/rBsAEF2em4qAX_NQAAl9CssPxSA915.png","dept_name":"医学影像科","dept_order":17,"links":[],"name_pinyin":"yixueyingxiangke医学影像科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","promo_flag":"0","pyjc":"YXYXK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"yzk","dept_id":2586,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2ejGeAMwQ8AAl2KTK9ep0085.png","dept_name":"牙周科","dept_order":2,"links":[],"name_pinyin":"yazhouke牙周科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"26","promo_flag":"0","pyjc":"YZK"}],"id":4,"indexLetter":"Y"},{"departments":[{"area_code":"0","area_name":"魏公村总院区","dept_code":"zhzlek","dept_id":2595,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2elMqAOAS0AAl5VniJ3ZA748.png","dept_name":"综合治疗二科","dept_order":11,"links":[],"name_pinyin":"zonghezhiliaoerke综合治疗二科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","outside_id":"693","promo_flag":"0","pyjc":"ZHZLEK"},{"area_code":"0","area_name":"魏公村总院区","dept_code":"zhzlk","dept_id":2594,"dept_logo":"https://resource.leanpay.cn/INCOMM/M00/00/2E/rBsAEF2elJ2AV76EAAmGOfNNH0s109.png","dept_name":"综合治疗科","dept_order":10,"links":[],"name_pinyin":"zonghezhiliaoke综合治疗科","organization_code":"12100000400777097N","organization_name":"北京大学口腔医院","promo_flag":"0","pyjc":"ZHZLK"}],"id":5,"indexLetter":"Z"}],"nav":["E","G","K","T","Y","Z"]},"state":"0000"}
- 尝试提前知道出诊时间
- 尝试转为抢明日号
- 【失败】想用预约号的接口获取到sguID和scheduleID随后直接提交挂号
- 测试最大请求速度
235 resp 14 ok start req time 2022/11/03 04:38:12.492655 end req time 2022/11/03 04:38:22.950798 10.45s 14 req
- 测试token生成
- 浏览器中执行js后跑这些
ALL.request(JSON.stringify({"timestamp": , "url":"/api/dept/queryDeptList.json","data":{"tapIndex":0},"x-nonce":"cebc7950-9ecd-4571-a43c-4619e2401d81","accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE2NjcyMTI0NzksImV4cCI6MTY2NzIxOTY3OSwieC1wYXlsb2FkIjoiTHVIK2Fuamw0Qm12UDJ6SG5EMkFIWTNHazF2ck16djNEYUpCYzBrNERrS2xiZW9KNUllNlI5bVFjaWt1Zm01dDRKQ2wrcUFEa2lkV3U1bDBReEJIVDdBSFo5ZXhlY0twT1V2SVJGTnJnVzhNaE5meU5Ha2hPUnVNV0FvZ0FxK1JMc0VuVUhpNUMyYmhDTGhrMGZYOXdVVkk4aVZTOTFOOXJMNFo3eld2MVRuVzJIZTIxMGVwb1BVYnNqZVpLY09xN2lxYjJwRGhhT3FOUURoUm9uYzdaR21EbjlWNytPa1k2cnl6eTJKRTFIVGEzWjdrWkJrdkUrVEl1UndFbkM4aHJ1aE81d0xqMi9CTTZ1aFNLTTBsK1FwbGpONUdIM1VoV3QrZHpBeTJnaGlVUHhSbkh6S2FQbEp4amdyY3QxSHEiLCJpYXQiOjE2NjcyMTI0Nzl9.VwGybU88XTct9I3jHtcSikZOpVks2DOzltPHd18lZpg"}), "d60a48ab") token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE2NjcyMTI0NzksImV4cCI6MTY2NzIxOTY3OSwieC1wYXlsb2FkIjoiTHVIK2Fuamw0Qm12UDJ6SG5EMkFIWTNHazF2ck16djNEYUpCYzBrNERrS2xiZW9KNUllNlI5bVFjaWt1Zm01dDRKQ2wrcUFEa2lkV3U1bDBReEJIVDdBSFo5ZXhlY0twT1V2SVJGTnJnVzhNaE5meU5Ha2hPUnVNV0FvZ0FxK1JMc0VuVUhpNUMyYmhDTGhrMGZYOXdVVkk4aVZTOTFOOXJMNFo3eld2MVRuVzJIZTIxMGVwb1BVYnNqZVpLY09xN2lxYjJwRGhhT3FOUURoUm9uYzdaR21EbjlWNytPa1k2cnl6eTJKRTFIVGEzWjdrWkJrdkUrVEl1UndFbkM4aHJ1aE81d0xqMi9CTTZ1aFNLTTBsK1FwbGpONUdIM1VoV3QrZHpBeTJnaGlVUHhSbkh6S2FQbEp4amdyY3QxSHEiLCJpYXQiOjE2NjcyMTI0Nzl9.VwGybU88XTct9I3jHtcSikZOpVks2DOzltPHd18lZpg" ALL.request(JSON.stringify({"x-timestamp":1667212633732,"x-nonce":"cebc7950-9ecd-4571-a43c-4619e2401d81","url":"/api/dept/queryDeptList.json","data":{"tapIndex":"0"},"accessToken":token}), "d60a48ab")