一、原始版
1、医生精准预约
后台设置医生在不同机构的每天出诊时间,出诊类型分 循环出诊 和临时出诊;
- 设置循环出诊,生成未来90天的循环出诊信息;
比如后台设置循环出诊 每周一上午10:00-12:00,会提前生成未来90天每周一10:00-12:00的数据。
设置临时出诊,只是生成固定日期的出诊信息
比如 设置 2021年7月1号-2021年7月3号 10:00-12:00 出诊,只是会生成7.1号-7.3号的出诊数据
2、实现思想
后台生成医生在不同机构的出诊时间模板
依赖时间模板定时生成未来90天预约数据
前端根据生成的预约数据展示给用户可约数据
3、数据约束
- 医生
- 日期+时间
- 机构
- 预约类型,临时出诊,循环出诊
- 时间宽度单位 每30分钟 为一个时间单位
4、模板生成预约数据技术实现
工厂模式 + 枚举算法
5、设计图
后台工厂模式生成预约数据设计图

6、ER图

7、后台设置

8、前端预约


9、代码端
1 |
|
10、总结
这是市面上最简单的一个预约版本,简单如商品上下架。
使用的算法:枚举算法,优点:医生库存可控,方便时间管理,
缺点:先生成数据集,修改删除都是批量处理,可塑性比较低
二、升级版
所谓的升级版就是加各种干扰因子。
后台生成可约时间,依赖项目时长,机构营业时间,机构班次,项目麻醉时间
用户预约时,除了选择医生、时间外,还要选择项目;通过选择的项目,来获取对应的时间号源
1、香蜜丽格预约香蜜
根据机构的营业时间+机构下项目时长+项目是否麻醉等约束条件,生成未来固定一段时间的医生相关联的每个项目可约模板。每天按照模板生成 医生+项目时长+项目麻醉类型+可约时间段+日期+时间 的可约数据
2、设计实现
- 后台生成医生的每个项目的出诊时间模板
- 依赖时间模板定时生成未来给定天预约数据
- 前端根据生成的预约数据展示给用户可约数据
3、技术原理
生成器模式+试探算法
4、干扰因子
- 机构
- 项目治疗时长
- 项目麻醉时长
- 机构排班
- 可约周期
- 出诊类型
- 同一时间点可约个数
5、设计图

7、后台界面

8、前端预约页面

9、总结
有点:一次性生成医生项目可约数据,方便查看
缺点:约束性条件多生成预约数据出错概率大,约束条件变更需要批量修改已经生成的可约数据,比较局限
三、铂金版
1、背景
共享医院,有手术,光电,注射,口腔 四种类型的手术室,每种类型手术室有多个,
相关项目手术室 有关键设备影响,比如M22 ,黄金微针 ,舒敏之星, 当前时间是否被占用,如果占用手术室不可约
相关项目手术室 人员占用情况影响 比如注射配台护士,光电配台护士 当前时间是否空闲,如果没有空闲,手术不可约
手术室预约要求至少30分钟,
会议室重叠算法
2、技术实现原理
(1)根据手术时长(比如1小时) 把一天在班时间[8:00-20:00]切割成小时间段比如[8:00-9:00]….[19:00-20:00]
(2)获取每个手术室每天可约的时间间隔(枚举算法)
(3)循环(1)每天可约时间和(2)中每个手术室可约时间做比较取出可约手术室
(4)可约器材和可约人员 循环(2)(3)步骤
(5)生成可约的时间和日期列表
3、算法
工厂模型 + 贪心算法
4、设计图

5、代码
1 |
|
6、前端页面图


7、总结
优点:只是依赖规则,依赖因子都是可插拔模式,扩展性比较好,可塑性高
确定:每次获取批量可约数据计算量大,枚举法比较暴力时间复杂度高(网上有会议室重叠算法和堆算法)