一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于VBA的医院门诊药房排班方法与流程

2022-02-22 04:13:58 来源:中国专利 TAG:

一种基于vba的医院门诊药房排班方法
技术领域
1.本发明涉及数据统计技术领域,具体涉及一种基于vba的医院门诊药房排班方法。


背景技术:

2.排班是药房和药学部管理的重要环节,合理的排班有利于稳步有序地开展和进行日常工作,有利于促进药房工作人员的工作积极性,有利于维护药房工作人员工作量获取的公平。
3.随着医院自动化药房改造的不断深入,由以前置审方系统和自动发药机为代表的自动化设备带来的处方审核、调配、发药模式的改变,由新型冠状病毒肺炎疫情防控工作促使的发热门诊药房岗位和班次改变,由药学服务转型带来的咨询服务和班次的增设,致使排班工作变得更为复杂。
4.门诊药房的班种包括但不限于调配、发药、直发、加药、咨询、前置审方、急诊夜班和发热门诊三班倒(上午、下午、夜班)。不同班种的上班时间、上班人员及人数、工作量获取与分配比例各有不同。故排班需按每日取药患者数量和特定工作安排设置上班人数,需按参与排班人员的职称和岗位权限设置班种和班次,需按夜班人员和周期排班的轮班顺序安排班次,需考虑参与排班人员连续工作日与休息日的“劳逸结合”,需考虑参与排班人员事先已安排的班次和假期,需考虑药房工作人员的工作效率和班种、班次工作量分配比例。
5.目前,大多医院门诊药房排班常以人工排班为主,按每周或每月编排。但日益增加的班种和复杂的班次使得每次排班将花费大量时间,且仍可能漏排、重排、错排班;也常难兼顾排班公平,常有人员在一个排班周期中连续多日上同一班次,甚至连续多日(超过7日)上班。不仅增加了药房工作人员疲劳度,而且工作量获取的机会不均等,部分“客观”地造成有人工作量多、绩效高,有人工作量少、绩效少。
6.目前已公开的和正在实质性审查的排班专利及已公开发表的论文中,尚无关于医院门诊药房的排班专利和相关论文,更多是关于医院排班、护士排班和医生排班等,这些排班模式和算法均难以完全移植至门诊药房。
7.对于护理排班而言,现排班模式大多采用apn连续排班,是一种三班倒的方式,成组排班,因此护理排班系统的设计针对的班种、班次并不多,约束条件相对较少,无针对不同职称、岗位而编排不同班种、班次,无针对每日因不同就诊患者人数而变动的每日不同班次。但若班种、班次较多,特别是如此次新冠病毒肺炎疫情防控工作中,对于防控的医院及发热门诊,护理的班次急剧增加,现有的护理排班系统对多班次、多职称岗位、多特殊班次等约束条件捉襟见肘。
8.目前也鲜有针对医院门诊药房的成熟的微信小程序和移动app,但以护理人员排班常见。以常见的“天使排班”小程序为例,其可自行修改“班种”(班次)及各班上班时间、时长,可按轮班顺序规律自动编排班次,可计算休假时间,可在微信中自动推送新班表,可将排班表导出至邮箱。但其自定义规则仍相对较少,如连休设置、连续上班天数设置、特殊班次及可上特殊班次的人员设置、每日班次不同设置、各人员职称岗位不同而可编排班次不
同的设置等等。且药房工作人员信息与第三方云端连接,有信息泄漏风险。
9.另一种护理排班[3]针对全院各临床科室的护理岗位排班,可针对管理岗、临床岗按班次时间不同来编排,尽管采用aoe-网带权的有向无环图算法,但也未提供每日不同班次的设置、特殊班次及特殊班次人员的设置。
[0010]
对于门诊医生排班而言,门诊医生排班班种较少,但与门诊药房、护士不同的是,门诊医生的排班大多以半日为一班,考虑患者问诊、检查、处方的连贯性,通常门诊医生至少连续工作两个班次(即上午和下午)。医生排班中的约束值还包括:需考虑不同职称医生的坐诊时长,是否有行政、教学、科研、会议等安排,每日接诊患者的数量,号源利用率,是否有日间手术等,有的甚至还需考虑医生来回不同院区的方便程度。
[0011]
综上所述,医院门诊药房排班在医院排班中难以完全移植护理排班系统和医生排班系统,其应是独立系统或模块,应根据门诊药房实际情况来设置班种、班次,由此设置专属于门诊药房的约束值。


技术实现要素:

[0012]
本发明的目的在于克服现有技术方法的缺点与不足,提供了一种基于vba的医院门诊药房排班方法。
[0013]
为了实现上述目的,本发明提供了一种基于vba的医院门诊药房排班方法,包括:
[0014]
将医院门诊药房的人员、班次、时间三个要素进行组合规划,构建排班约束条件;
[0015]
基于排班约束条件,在excel表内设置预设排班表视图,根据所述排班表视图构建:表示欲排班视图的《下周排班表》、表示正在执行排班的《本周排班表》、表示欲排班每日排班班次的《下周班次表》、包含排班人员的职称和岗位、以及与之相应岗位工作的《岗位——岗位工作表》、包含夜班及与之相连班次的《夜班轮班顺序表》及包含咨询、审方两个特殊班次的《特殊班次表》;
[0016]
基于vba脚本,采用贪心算法和回溯算法相结合的方式,对预设的排班视图表进行排班,生成排班表。
[0017]
进一步地,排班约束条件包括基本约束条件和各班次约束条件;
[0018]
其中,基本约束条件为:
[0019]
每人每日只允许安排一个班次,若该人该日已安排了班次,则其同日不可安排其它班次;
[0020]
每日每班次只允许安排一个人,若该日该班次已安排了某一人,则该日该班次不可再安排其他人;
[0021]
所有已排班次,包括上一步被自动编排的班次,及手动编排的班次,允许手动修改,但不允许被脚本自动修改;
[0022]
各班次约束条件包括夜班排班约束条件、工作班排班约束条件、行政班排班约束条件及排休约束条件;
[0023]
夜班排班约束条件为:
[0024]
夜班有其固定的轮班顺序,包括人员顺序和班次顺序,应依轮班顺序编排夜班;
[0025]
当夜班与其它班次有冲突时,以醒目方式提醒并中止排班继续进行;
[0026]
工作班排班约束条件为:
[0027]
每人连续2日不安排上同一类工作班次,如周二编排了调配班次,则周一、周三便编排非调配班次或休息;
[0028]
依每人的职称、岗位职责不同安排不同工作班次;
[0029]
在既定的约束条件下,尽最大可能安排所有工作班次,出现错排、漏排、未排班次时进行标注提醒;
[0030]
有特殊班次需要安排特定人员的,有独立的特殊班次区域,对特殊班次的排班从特殊班次区域人员中选择;
[0031]
行政班排班约束条件为按周一至周五编排,周六、周日休息;
[0032]
排休约束条件为:
[0033]
每人每周均有固定的休息天数,优选设定为2日;
[0034]
若连续工作不少于6日,则强制安排该人员至少休息1日;
[0035]
有2日及2日以上预设休息日的人员,尽量安排其连休;
[0036]
计算存假:存假天数=已排休息天数

预设休息天数。
[0037]
进一步地,在构建排班表视图的过程中,
[0038]
在排班视图表中,《下周排班表》为欲排班的视图表,应包含表头、日期、序号、岗位、姓名、休息天数(预设)、存假、各排班执行按钮;其中,日期月、日为vba脚本根据当前日期自动计算变更;其中,以序号行以下,以存假列以左(含存假列),均可手动修改;
[0039]
《本周排班表》为正在执行的排班表,将依本周排班表来编排下周排班表;包含表头、日期、序号、岗位、姓名、休息天数(预设)、存假;
[0040]
《下周班次表》为欲排班的每日排班班次表;每日就诊患者人数不一(尤其是工作日和周末),开放取药窗口不一,致使药房每日班次不一;包含表头、日期、开放窗口、每日班次。其中,日期月、日为vba脚本根据当前日期自动计算变更;以日期行以下,以开放窗口列以右,以周日列以左(含周日列),均可手动修改;
[0041]
《岗位——岗位工作表》包含排班人员的职称和岗位,以及与之相应的岗位工作;其中,以岗位行以下,均可手动修改;
[0042]
《夜班轮班顺序表》包含夜班及与之相连的班次,脚本将按《夜班轮班顺序表》来编排夜班及与之相连的班次;
[0043]
其中,以表头行以下,以轮班顺序列以右,可手动修改;
[0044]
《特殊班次表》包含咨询审方两个特殊班次,因允许安排该班次的人员是特定人员;
[0045]
其中,以特殊班次行以下,以咨询列以右,均可手动修改。
[0046]
进一步地,基于排班约束条件,在excel表内设置预设排班表视图的步骤中,包括步骤:
[0047]
点击《下周排班表》内的清除所有排班按钮;其中,按钮执行的vba算法为:双重嵌套for

next语句和cells.erase语句,自周一至周日,逐列逐行清除单元格内数据;
[0048]
在《下周排班表》中手动填写各排班人员姓名,选择其相应的岗位,设置其预设的休息天数,归零其存假;
[0049]
在《下周班次表》中手动填写下周每日欲排班次;若某日某一窗口不开放,则在当日开放窗口相应单元格中不填写任何数据;若某日有除窗口相关的调配、发药、加药岗位之
外的班次,如咨询、审方、夜班,在当日开放窗口相应单元格之下依次填写班次;
[0050]
在《岗位——岗位工作表》中按职称手动填写岗位和岗位工作;
[0051]
在《夜班轮班顺序表》中手动填写夜班及与之相连的固定班次,其中包括夜班后的休息,休息后的固定班次;
[0052]
在《特殊班次表》中手动填写特殊班次及允许安排特殊班次的人员。
[0053]
进一步地,对预设的排班视图表进行排班,生成排班表的步骤包括:
[0054]
夜班排班、行政班排班、大排班和计算存假;
[0055]
夜班排班包括以下步骤:
[0056]
按《轮班顺序表》逐行查找并定位含有夜的班次;
[0057]
确定夜班在《轮班顺序表》中的起始位置;
[0058]
按《下周排班表》人员顺序和《岗位——岗位工作表》的岗位权限逐日编排一周所有夜班,并填入《下周排班表》中;
[0059]
大排班是对所有非行政班人员、非夜班人员进行排班,安排班次包括调配、发药、审方、咨询、休息;包括步骤:
[0060]
备份全表至数组initial(),以作还原预排班之用;
[0061]
逐日排班;
[0062]
判断该日是否有人员连续工作≥6日,若有,则编排其休,若无,则将包括非特殊班次、特殊班次、休息班次的班次导入数组p(),将班次对应的可排班人员导入至数组q(i,1to x),并统计q(i,1to x)总数量导入至数组q(i,0);
[0063]
对工作班次和休息班次剪枝;剪枝方式:工作班次:人员已排班,剪枝;休息班次:人员已排休息天数≥预设天数;剪枝计算:q(i,1to x)=0,q(i,0)=q(i,0)-1,p(i)=0;
[0064]
对q(,0)升序排序,排序结果导出至ss();在ss()选择最小的非0数q(i,0),即选择可排人员最少的班次;若有多个相同q(i,0)的最小非0数,随机选择其中一个;
[0065]
对选择的最小的非0数q(i,0)对应的q(i,1to x)的所有元素存储至qtem1(),并对其预剪枝:遍历qtem1(),统计:若qtem(l)被编排,则每个剩余待排班次对应还可编排的人数;数值记录在qtem2();对qtem2()降序排列,排列结果存储至sst();取sst()最小数,其对应的最小qtem2(l)对应的qtem1(l)即为目标人员,其对应的q(i,x)对应的p(i)即为目标班次,并填入《下周排班表》内;
[0066]
判断选择的目标排班是工作班次还是休息班次,若为工作班次,则直接进行下一轮剪枝;若为休息班次,若目标人员仍剩余休息天数,则尽可能编排其次日连休,而后进行下一轮剪枝;
[0067]
存假计算方式:存假=预设休息天数

已排休息天数;若结果为正数表示对应员工的积假;若结果为负数表示对应员工消假。
[0068]
进一步地,在确定夜班在《轮班顺序表》中的起始位置的步骤中,查找《本周排班表》中周日的夜班,确定该排班人员的下一位人员即《下周排班表》周一的夜班起始人员;若未查找到,则查找《下周排班表》中周一是否有预设夜班人员,若有则以其作为起始人员,若无则弹窗提醒请设置下周一夜班人员。
[0069]
进一步地,在按《下周排班表》人员顺序和《岗位——岗位工作表》的岗位权限逐日编排一周所有夜班,并填入《下周排班表》中的步骤中,若按排班人员顺序轮到某人的岗位
不可编排夜班,则从头开始查找排班人员。
[0070]
进一步地,在生成排班表的步骤之后,还包括检查排班表的步骤,以检查有哪些班次未编排,已排休息天数是否超过预设休息天数。
[0071]
与现有技术相比,本发明提供的基于vba的医院门诊药房排班方法具有以下优点:
[0072]
1.本发明的vba脚本可自动生成excel周排班表,可减少简单重复的人工排班表制作时间,避免漏排、重排、错排班,提高排班表制作效率,兼顾人员排班公平,同时也填补和完善了医院门诊药房自动化排班领域的空白。
[0073]
2.本发明的vba脚本以microsoft office excel为载体,表格形式展现,视图效果直观,且使用门槛低,学习难度低,上手快。
[0074]
3.本发明的vba脚本的excel排班表在本地存储,不与外网通信,故可降低药房人员信息泄露风险。
[0075]
4.本发明的vba脚本解决了繁琐的编排操作的问题。在excel排班表只需逐个点击其内的按钮,即可实现自动“夜班排班”“行政班排班”、所有人员“大排班”“检查排班表”“还原预排班”“清除排班”“计算存假”,贴合医院门诊药房的排班方式。
[0076]
5.本发明的vba脚本的excel排班表解决了多班种、多班次编排的问题。预设的班种包括调配、发药、直发、加药、咨询、审方、急诊夜班和发热门诊三班倒(上午、下午、夜班),排班者可依其门诊药房实际情况,自行增减、修改班种和班次,既贴合了医院门诊药房的班次需求及排班调整需求,又给予排班管理者排班自主权。
[0077]
6.本发明的vba脚本解决了预先安排班次的问题。在执行excel排班表内按钮的前后,均可手动添加、删除、修改和调整人员班次,且不会影响下一步按钮操作,如此便可给予排班管理者排班自主权,预先安排人员具体某天事假休息或特殊排班上班,且后续操作也不会变更该人员该日该班次。
[0078]
7.本发明的vba脚本解决了不同排班人员可编排班次不同的问题。在excel排班表内,提供了“岗位”和“岗位工作”的增减、修改和选择。排班管理者可依各排班人员的职称设置“岗位”和“岗位工作”,脚本将按相应的“岗位”和“岗位工作”自动为各排班人员编排班次。
[0079]
8.本发明的vba脚本的excel排班表解决了两套夜班编排的问题。在excel排班表内提供了“轮班顺序”的增减和修改,提供至多两套夜班规律轮班编排,以满足普通门诊夜班和发热门诊夜班排班需求。脚本将按已设定好的“轮班顺序”自动编排各夜班人员的夜班及与之相关的有规律的班次。
[0080]
9.本发明的vba脚本的excel排班表解决了特殊班次编排的问题。excel排班表提供了“特殊班次”的增减和修改,提供“咨询”“审方”班次人员的设定与修改。排班管理者可自行设定“咨询”“审方”人员,脚本将按其设定自动编排相应人员的“特殊班次”。
[0081]
10.本发明的vba脚本的excel排班表解决了周排班每日班次不一、排班人员不一的问题。排班管理员在excel排班表内的《下周班次表》中可手动增减、修改欲排班班次,vba脚本将按每日不同班次结合人员不同权限来自动排班。
[0082]
11.本发明的vba脚本解决了同一人连续两天上同一班种的情况,以减少每人因连续上同一班次的疲劳感。
[0083]
12.本发明的vba脚本极大程度解决了连休的问题。当排班人员有不少于2日休息
天数时,尽可能安排连休,以确保排班人员足够的休息时间。
[0084]
13.本发明的vba脚本解决了连续工作超过6日的问题。脚本运行时,优先编排已连续工作不少于6日的人员,强制安排休息(已规避已预先排班的情况)。
[0085]
14.本发明的vba脚本提供了“检查排班表”功能,在脚本运行后,自动检查排班表,标记未编排班次和超过预设天数的休息日;允许排班管理者在手动调整排班表之后,手动执行,自动标记有无漏排班次,休息天数与预设休息天数是否相符。
[0086]
15.本发明的vba脚本提供了“还原预排班”功能,若“大排班”不符合预期,可将排班表内数据还原至“大排班”前的数据。可多次交替重复执行“还原”和“大排班”,以尽可能达到预期排班需求。
[0087]
16.本发明的vba脚本提供了“计算存假”功能,可依编排的休息日计算所有排班人员积累的假期和消耗的假期。
[0088]
17.本发明的vba脚本的excel排班,提供了“清除所有排班”的功能,可自动清除所有已编排班次,以便于下一次重新排班。
附图说明
[0089]
图1为本发明提供的一种基于vba的医院门诊药房排班方法的流程示意图。
[0090]
图2为本发明提供的一种基于vba的医院门诊药房排班方法中《下周排班表》的结构示意图。
[0091]
图3为本发明提供的一种基于vba的医院门诊药房排班方法中《本周排班表》的结构示意图。
[0092]
图4为本发明提供的一种基于vba的医院门诊药房排班方法中《下周班次表》的结构示意图。
[0093]
图5为本发明提供的一种基于vba的医院门诊药房排班方法中《岗位——岗位工作表》的结构示意图。
[0094]
图6为本发明提供的一种基于vba的医院门诊药房排班方法中《夜班轮班顺序表》的结构示意图。
[0095]
图7为本发明提供的一种基于vba的医院门诊药房排班方法中《特殊班次表》的结构示意图。
[0096]
图8为本发明提供的一种基于vba的医院门诊药房排班方法中在excel表内设置预设排班表视图的流程示意图。
[0097]
图9为本发明提供的一种基于vba的医院门诊药房排班方法中夜班排班算法的流程示意图。
[0098]
图10为本发明提供的一种基于vba的医院门诊药房排班方法中大排班算法的流程示意图。
具体实施方式
[0099]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0100]
如图1所示;本发明提供了一种基于vba的医院门诊药房排班方法,包括:
[0101]
s1.将医院门诊药房的人员、班次、时间三个要素进行组合规划,构建排班约束条件;
[0102]
s2.基于排班约束条件,在excel表内设置预设排班表视图,根据所述排班表视图构建:表示欲排班视图的《下周排班表》、表示正在执行排班的《本周排班表》、表示欲排班每日排班班次的《下周班次表》、包含排班人员的职称和岗位、以及与之相应岗位工作的《岗位——岗位工作表》、包含夜班及与之相连班次的《夜班轮班顺序表》及包含咨询、审方两个特殊班次的《特殊班次表》;
[0103]
s3.基于vba脚本,采用贪心算法和回溯算法相结合的方式,对预设的排班视图表进行排班,生成排班表。
[0104]
医院门诊药房排班是一种将人员、班次、时间三个要素进行组合规划的方式,此三要素在进行组合排列时必然产生各种矛盾,而约束条件就是对这三要素进行统筹协调。可以说,约束条件是排班的内在规则和要求,需要在算法中置入才能使排班算法有意义。
[0105]
约束条件分为基本约束条件和各班次约束条件。
[0106]
其中,其中,基本约束条件为:
[0107]
每人每日只允许安排一个班次,若该人该日已安排了班次,则其同日不可安排其它班次;
[0108]
每日每班次只允许安排一个人,若该日该班次已安排了某一人,则该日该班次不可再安排其他人;
[0109]
所有已排班次,包括上一步被自动编排的班次,及手动编排的班次,允许手动修改,但不允许被脚本自动修改;
[0110]
各班次约束条件包括夜班排班约束条件、工作班排班约束条件、行政班排班约束条件及排休约束条件;
[0111]
夜班排班约束条件为:
[0112]
夜班有其固定的轮班顺序,包括人员顺序和班次顺序,应依轮班顺序编排夜班;
[0113]
当夜班与其它班次有冲突时,以醒目方式提醒并中止排班继续进行;
[0114]
工作班排班约束条件为:
[0115]
每人连续2日不安排上同一类工作班次,如周二编排了调配班次,则周一、周三便编排非调配班次或休息;
[0116]
依每人的职称、岗位职责不同安排不同工作班次;
[0117]
在既定的约束条件下,尽最大可能安排所有工作班次,出现错排、漏排、未排班次时进行标注提醒;
[0118]
有特殊班次需要安排特定人员的,有独立的特殊班次区域,对特殊班次的排班从特殊班次区域人员中选择;
[0119]
行政班排班约束条件为按周一至周五编排,周六、周日休息;
[0120]
排休约束条件为:
[0121]
每人每周均有固定的休息天数,优选设定为2日;
[0122]
若连续工作不少于6日,则强制安排该人员至少休息1日;
[0123]
有2日及2日以上预设休息日的人员,尽量安排其连休;
[0124]
计算存假:存假天数=已排休息天数

预设休息天数。
[0125]
在排班视图表中,《下周排班表》为欲排班的视图表,应包含表头、日期、序号、岗位、姓名、休息天数(预设)、存假、各排班执行按钮。其中,日期月、日为vba脚本根据当前日期自动计算变更。其中,以序号行以下,以存假列以左(含存假列),均可手动修改。《下周排班表》的表格形式如图2所示。
[0126]
《本周排班表》为正在执行的排班表,将依本周排班表来编排下周排班表。该表应包含表头、日期、序号、岗位、姓名、休息天数(预设)、存假。《本周排班表》的表格形式如图3所示。
[0127]
《下周班次表》为欲排班的每日排班班次表。因每日就诊患者人数不一(尤其是工作日和周末),开放取药窗口不一,致使药房每日班次不一。该表包含表头、日期、开放窗口、每日班次。其中,日期月、日为vba脚本根据当前日期自动计算变更。以日期行以下,以开放窗口列以右,以周日列以左(含周日列),均可手动修改。《下周班次表》的表格形式如图4所示。
[0128]
《岗位——岗位工作表》如图5所示:该表包含排班人员的职称和岗位,以及与之相应的岗位工作。其中,以岗位行以下,均可手动修改。
[0129]
《夜班轮班顺序表》如图6所示:该表包含夜班及与之相连的班次,脚本将按《夜班轮班顺序表》来编排夜班及与之相连的班次。
[0130]
其中,以表头行以下,以轮班顺序列以右,可手动修改。
[0131]
《特殊班次表》如图7所示:该表包含咨询审方两个特殊班次,因允许安排该班次的人员是特定人员。
[0132]
其中,以特殊班次行以下,以咨询列以右,均可手动修改。
[0133]
如图8所示,基于排班约束条件,在excel表内设置预设排班表视图的步骤中,包括步骤:
[0134]
步骤s201:点击《下周排班表》内的“清除所有排班”按钮。按钮执行的vba算法为:双重嵌套for

next语句和cells.erase语句,自周一至周日,逐列逐行清除单元格内数据。
[0135]
步骤s202:在《下周排班表》中手动填写各排班人员“姓名”,选择其相应的“岗位”,设置其预设的“休息天数”,归零其“存假”。
[0136]
步骤s203中,在《下周班次表》中手动填写下周每日欲排班次。若某日某一窗口不开放,则在当日“开放窗口”相应单元格中不填写任何数据;若某日有除窗口相关的调配、发药、加药岗位之外的班次,如“咨询”“审方”“夜班”,在当日“开放窗口”相应单元格之下依次填写班次。
[0137]
步骤s204:在《岗位——岗位工作表》中按职称手动填写“岗位”“岗位工作”。
[0138]
步骤s205中,在《夜班轮班顺序表》中手动填写夜班及与之相连的固定班次,其中包括夜班后的休息,休息后的固定班次。
[0139]
步骤s206中,在《特殊班次表》中手动填写特殊班次及允许安排特殊班次的人员。
[0140]
如图9所示,夜班排班包括以下步骤:
[0141]
步骤s30101:按《轮班顺序表》逐行查找并定位含有夜的班次。
[0142]
步骤s30102:确定夜班在《轮班顺序表》中的起始位置。
[0143]
在步骤s30102中,优选的,先查找《本周排班表》中周日的夜班,确定该排班人员的下一位人员即《下周排班表》周一的夜班起始人员;若未查找到,则查找《下周排班表》中周一是否有预设夜班人员,若有则以其作为起始人员,若无则弹窗提醒设置下周一夜班人员。
[0144]
步骤s30103:按《下周排班表》人员顺序和《岗位——岗位工作表》的岗位权限逐日编排一周所有夜班,并填入《下周排班表》中。
[0145]
在步骤s30103中,优选的,若按排班人员顺序轮到某人的岗位不可编排夜班(默认只有《岗位——岗位工作表》内药师才可编排夜班),则从头开始查找排班人员。
[0146]
行政班排班,行政班人员包括工人和组长、副组长,排班班次默认:周一至周五:一天;周六、周日:休。
[0147]
如图10所示,大排班是对所有非行政班人员、非夜班人员进行排班,安排班次包括调配、发药、审方、咨询、休息。大排班算法采用部分贪心算法和回溯算法,具体来说,是“班次人数最小——人员班次数最小”循环法。算法过程包括以下步骤:
[0148]
步骤s30301:备份全表至数组initial(),以作“还原预排班”之用。
[0149]
步骤s30302:逐日排班。
[0150]
步骤s30303:判断该日是否有人员连续工作≥6日,若有,则编排其“休”;若无,则继续下一步。优选的,编排该人员“休”时,判断其若仍有剩余休息天数,尽可能次日也编排连休。
[0151]
步骤s30304:数据转置导入。将班次(包括非特殊班次、特殊班次、休息班次)导入数组p(),将班次对应的可排班人员导入至数组q(i,1to x),并统计q(i,1to x)总数量导入至数组q(i,0)。
[0152]
步骤s30305:数据剪枝。分别对工作班次和休息班次剪枝。
[0153]
剪枝方式:工作班次:人员已排班,剪枝;休息班次:人员已排休息天数≥预设天数。
[0154]
剪枝计算:q(i,1to x)=0,q(i,0)=q(i,0)-1,p(i)=0。
[0155]
步骤s30306:班次人数最小计算,进一步地,该过程包括以下步骤:
[0156]
步骤s3030601:对q(,0)升序排序,排序结果导出至ss()。
[0157]
步骤s3030602:在ss()选择最小的非0数q(i,0)(即选择可排人员最少的班次)。优选的,若有多个相同q(i,0)的最小非0数,随机选择其中一个。
[0158]
步骤s30307:人员班次数最小计算,进一步地,该过程包括以下步骤:
[0159]
步骤s3030701:对选择的最小的非0数q(i,0)对应的q(i,1to x)的所有元素存储至qtem1(),并对其预剪枝:遍历qtem1(),统计:若qtem(l)被编排,则每个剩余待排班次对应还可编排的人数。数值记录在qtem2()。
[0160]
步骤s3030702:对qtem2()降序排列,排列结果存储至sst()。
[0161]
步骤s3030703:取sst()最小数,其对应的最小qtem2(l)对应的qtem1(l)即为目标人员,其对应的q(i,x)对应的p(i)即为目标班次,并填入《下周排班表》内。(即选择对后续排班影响最小的人员)
[0162]
步骤s30308:判断选择的目标排班是工作班次还是休息班次,若为工作班次,则直接进入步骤s30305,进行下一轮剪枝;若为休息班次,若目标人员仍剩余休息天数,则尽可能编排其次日连休,而后进入步骤s30305,进行下一轮剪枝。
[0163]
存假计算方式:存假=预设休息天数

已排休息天数。正数:积假;负数:消假。
[0164]
进一步,还包括检查排班表的步骤。检查排班表可在任意操作执行前后手动执行,此按钮操作适用于手动调整排班表之后,以检查有哪些班次未编排,已排休息天数是否超过预设休息天数。“未排”班次:于《下周班次表》以红色字体显示;“已排”班次:于《下周班次表》以黑色字体显示。已排休息天数未超过预设休息天数:于《下周排班表》“休息天数”列以黑色字体显示;反之,以红色字体显示。
[0165]
在本发明的其他实施方式中,步骤s30306可简化班次的选择:在对班次冒泡排序后,可按升序直接选择班次,而不采用上述实施方式的——再判断是否有同人数的班次,有则在这些班次中随机选择。简化方案适用于排班人员较多(如某一时期有很多实习生、进修生同在药房),无需寻求排班最优解即可满足所有人排班;本发明方案适用于排班人员较少,约束条件相对较多,需尽可能寻求排班最优解,以减少班次较难分配到人员的情况。
[0166]
步骤s30307可简化人员的选择:在选择了班次后,可随机选择人员,而不采用本发明的——对人员相应的后续班次进行预剪枝后,升序排列,选择后续可排班次最少的人员。简化方案适用于排班人员较多(如某一时期有很多实习生、进修生同在药房),无需寻求排班最优解即可满足所有人排班;本发明方案适用于排班人员较少,约束条件相对较多,需尽可能寻求排班最优解,以减少班次较难分配到人员的情况。
[0167]
区别于现有技术,本发明采用部分“贪心算法”和“回溯算法”相结合的方式,可取得排班的近似解,较精确地实现医院门诊药房全人员全班次全周期排班,可在百秒时间内完成排班表,减少简单工作的重复劳动,减少和检查漏排、多排、错排等低级错误,对排班提升效率,提高准确度;同时提供检查排班表功能,对全排班表进行检查,避免手动调整排班表时造成的漏排、多排、错排;通过预设的各约束条件符合医院门诊药房排班规律,可推广至类似排班模式的药房中,其对工作班次、休息班次的约束条件,可在实际工作中促进药房排班人员的积极性,减轻工作疲劳,保证充足休息。本发明的excel各表内的人员、岗位、岗位工作、班次、休息日等均可手动增删和修改,同时也允许在各按钮执行前后,可手动调整排班,为排班管理者提供了灵活的编排操作。
[0168]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本发明中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本发明所示的这些实施例,而是要符合与本发明所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献