一种基于单据驱动的药品拆零分发方法和装置与流程
本发明涉及数据处理,特别涉及一种基于单据驱动的药品拆零分发方法和装置。
背景技术:
1、在医疗机构的药房管理中,药品拆零分发是常见且关键的环节。所谓拆零,是指将整包装药品(又称独立包装个体,如整盒、整瓶)拆分为最小使用单位(又称散装药个体,如片、粒、支)后按处方或医嘱单进行分发。传统的药品拆零分发方式通常采用“预先批量拆零”模式:药房工作人员定期将部分整包装药品提前拆开,将散药存放于周转盒或散药柜中,待发药时直接从散药中取用。
2、这种预先拆零模式存在若干固有缺陷。1)拆零时无法强制执行效期优先原则:当需要补充散药时,工作人员常基于个人经验判断选择哪个整包进行拆解,而非按“先失效先出”(first expired first out,fefo)原则主动选择近效期药品,这容易使得近效期药品因积压而导致过期报废。2)跨批次发药时追溯信息不完整:当一次发药需求需要同时消耗多批次散药时,传统模式通常只记录发药总数、不记录各批次的消耗数量。3)整包库存与散药库存割裂管理:现有信息系统中整包装库存与散药库存通常分表存储或依赖人工记账,发药单据只能扣减散药库存、无法直接驱动整包装向散药库存的自动转换,当散药不足时需要人工发起整包出库、拆零、散药入库等系列操作,流程繁琐且易出现账实不符。
技术实现思路
1、本发明的目的,就是针对现有技术的缺陷,提供一种基于单据驱动的药品拆零分发方法、装置、电子设备及计算机可读存储介质。本发明每收到一个发药单据,都会根据当前单据和散药缓存池对当前散药余量是否满足当前单据需求进行识别;若发现存在散药余量不足的情况,就根据单据识别结果、发药单据、散药缓存池、库存数据库和药品拆零处理接口进行一轮库存药品散装拆解、库存数据更新和散药缓存更新处理,并在库存药品散装拆解的处理过程中按fefo原则进行处理,并在本轮处理结束后对当前散药余量是否满足当前单据需求进行再次识别,直到识别结果表明不存在任何散药余量不足的情况为止;并在确认不存在任何散药余量不足的情况后,根据发药单据、散药缓存池、药品分发处理接口和药品分发数据表进行散装药品分发和药品分发信息记录处理。基于本发明,一方面可以减少近效期药品积压量、减少近效期药品的过期报废量、降低药品浪费率;另一方面可以通过药品分发数据表对每次发药的跨批次信息进行全面补齐,细化溯源信息的颗粒度;再一方面可以通过库存数据自动更新、散药缓存数据自动更新、药品分发信息自动记录等一系列操作来简化人工处理流程,提高作业效率、降低账实不符概率。
2、为实现上述目的,本发明实施例第一方面提供了一种基于单据驱动的药品拆零分发方法,所述方法包括:
3、步骤1,接收发药单据;
4、其中,所述发药单据包括发药单号、源处方号、发药明细集;所述发药明细集包括一个或多个发药明细;所述发药明细包括药品编码、药品名、发药数量、药品单位、药品规格;
5、步骤2,根据所述发药单据和预设的散药缓存池对当前散药余量是否满足当前单据需求进行识别得到对应的单据识别结果;
6、其中,所述散药缓存池不为空时包括一个或多个散装药品记录;所述散装药品记录包括散装药品编码、散装药品名、源批次号、源包装标识、药品有效期、源包装拆零时间、散装剩余数量、散装单位、散装规格,散装剩余数量≥0;所述单据识别结果包括一个或多个药品识别结果;所述药品识别结果与所述发药明细一一对应;所述药品识别结果包括识别状态、补充数量,补充数量≥0;所述识别状态包括余量不足、余量满足两种状态;所述识别状态为余量不足时,所述补充数量大于零且小于或等于对应的所述发药数量;所述识别状态为余量满足时,所述补充数量为零;
7、步骤3,对所述单据识别结果的所有所述识别状态是否都为余量满足进行识别;若否,则转至步骤4;若是,则转至步骤5;
8、步骤4,根据所述单据识别结果、所述发药单据、所述散药缓存池以及预设的库存数据库和药品拆零处理接口进行库存药品散装拆解、库存数据更新和散药缓存更新处理;并在本次处理结束后返回步骤2;
9、其中,在库存药品散装拆解的处理过程中按先失效先出原则进行处理;
10、所述库存数据库包括多个库存数据表;每个所述库存数据表对应一个唯一的表标识;所述库存数据表包括多个库存药品记录;所述库存药品记录包括入库包装标识、入库药品编码、入库药品名、入库批次号、入库包装单位、入库包装规格、散装数量、所述散装单位、所述散装规格、所述药品有效期、库存状态、入库登记时间、出库登记时间;所述库存状态包括在库、锁定、出库三种状态;
11、所述药品拆零处理接口的接口输入数据为第一记录集、接口输出数据为第二记录集;所述第一记录集包括一个或多个第一记录;所述第二记录集包括一个或多个第二记录;所述第一记录包括第一表标识和第一包装标识;所述第二记录包括第二表标识、第二包装标识和第一拆解时间;各个第一或第二表标识为一个所述表标识;各个第一或第二包装标识为一个所述入库包装标识;
12、步骤5,根据所述发药单据、所述散药缓存池以及预设的药品分发处理接口和药品分发数据表进行散装药品分发和药品分发信息记录处理;
13、其中,在散装药品分发的处理过程中按小余量先发原则进行处理;
14、所述药品分发处理接口的接口输入数据为第三记录集、接口输出数据为第四记录集;所述第三记录集包括一个或多个第三记录;所述第四记录集包括一个或多个第四记录;所述第三记录与所述发药明细一一对应,所述第四记录与所述第三记录一一对应;所述第三记录包括所述发药明细和库存溯源集;所述第四记录包括分发人员标识和药品分发时间;所述库存溯源集包括一个或多个库存溯源组;所述库存溯源组包括所述入库批次号、所述入库包装标识和散装发药数量;所述库存溯源集的所有所述散装发药数量的总量与其对应的所述发药明细的所述发药数量匹配;
15、所述药品分发数据表包括多个药品分发记录;所述药品分发记录与所述发药单据一一对应;所述药品分发记录包括所述发药单号、所述源处方号、分发明细集;所述分发明细集包括一个或多个分发明细;所述分发明细与所述发药明细一一对应;所述分发明细包括所述发药明细、所述库存溯源集、所述分发人员标识、所述药品分发时间。
16、优选的,所述发药明细的所述发药数量、所述药品单位、所述药品规格为一类指定药品的一类散装药个体的个体总数、个体物理单位、个体药量规格;
17、所述库存数据库用于对所有药品的所有批次库存信息进行存储;
18、每个所述库存数据表用于对单类药品的单批次库存信息进行存储;每批次药品包括一类或多类包装单位类型,每类所述包装单位类型对应一个或多个所述独立包装个体,每个所述独立包装个体内存有一个或多个相同类型的所述散装药个体,每两类所述包装单位类型对应的所述散装药个体的三类个体参数中的部分或全部个体参数存在不同,所述三类个体参数包括所述个体总数、所述个体物理单位和所述个体药量规格;入库登记时为每个所述独立包装个体生成一个对应的所述库存药品记录;每个所述库存数据表的所有所述库存药品记录的所述入库药品编码、所述入库药品名、所述入库批次号都相同;
19、所述入库包装标识为当前记录对应的所述独立包装个体的唯一个体标识;所述入库药品编码、所述入库药品名、所述入库批次号为当前记录对应的当前批次药品的编码、名称和批次号;所述入库包装单位和所述入库包装规格分别为当前记录对应的所述独立包装个体的所述包装单位类型和包装单位药量规格;所述散装数量、所述散装单位和所述散装规格分别为当前记录对应的所述独立包装个体的所述散装药个体的所述个体总数、所述个体物理单位和所述个体药量规格,散装数量≥1;所述库存药品记录中,所述入库包装规格与所述散装数量和所述散装规格的关联关系为:入库包装规格=散装数量×散装规格;所述药品有效期为当前记录对应的所述独立包装个体的有效时限;所述库存状态对当前记录对应的所述独立包装个体的在库、锁定或出库状态进行反映,只有所述库存状态为在库的所述库存药品记录参与散药余量是否满足单据需求的识别过程,只能对所述库存状态为锁定的所述库存药品记录对应的所述独立包装个体进行药品散装拆解;所述入库登记时间和所述出库登记时间分别为当前记录对应的所述独立包装个体的入库和出库时间;
20、所述散药缓存池中的每个所述散装药品记录对应一个所述库存状态为出库的所述库存药品记录;所述散装药品记录的所述散装药品编码、所述散装药品名、所述源批次号、所述源包装标识、所述药品有效期、所述散装单位、所述散装规格与其对应的所述库存药品记录中的所述入库药品编码、所述入库药品名、所述入库批次号、所述入库包装标识、所述药品有效期、所述散装单位、所述散装规格一一对应;所述散装药品记录的所述散装剩余数量大于或等于零且小于或等于对应的所述库存药品记录的所述散装数量;所述散装药品记录的所述源包装拆零时间为其对应的所述独立包装个体的包装拆解时间。
21、优选的,所述根据所述发药单据和预设的散药缓存池对当前散药余量是否满足当前单据需求进行识别得到对应的单据识别结果,具体包括:
22、将所述发药单据的所述发药明细集的各个所述发药明细作为当前明细;并将所述散药缓存池中,所述散装药品编码、所述散装药品名、所述散装单位、所述散装规格分别与所述当前明细中对应的所述药品编码、所述药品名、所述药品单位、所述药品规格一一匹配且所述药品有效期未过期的所述散装药品记录作为对应的检索匹配记录;并对所述检索匹配记录的记录总数是否为零进行识别;若是,则设置对应的所述识别状态为余量不足,并设置对应的所述补充数量为所述当前明细的所述发药数量;若否,则进一步将所述当前明细的所述发药数量减去所有所述检索匹配记录的所述散装剩余数量的数量总和得到的数量差值作为第一数量差,并对所述第一数量差是否大于零进行识别,若是则设置对应的所述识别状态为余量不足并将所述第一数量差作为对应的所述补充数量,若否则设置对应的所述识别状态为余量满足并将对应的所述补充数量设为零;并由所述当前明细对应的所述识别状态和所述补充数量组成对应的所述药品识别结果;并由得到的所有所述药品识别结果组成对应的所述单据识别结果。
23、优选的,所述根据所述单据识别结果、所述发药单据、所述散药缓存池以及预设的库存数据库和药品拆零处理接口进行库存药品散装拆解、库存数据更新和散药缓存更新处理,具体包括:
24、步骤41,按先失效先出原则根据所述单据识别结果、所述发药单据、所述库存数据库和所述药品拆零处理接口进行库存药品散装拆解处理,具体为:
25、将所述单据识别结果中各个所述识别状态为余量不足的所述药品识别结果记为对应的待补足识别结果;并将所述发药单据中与各个所述待补足识别结果对应的所述发药明细记为对应的待补足明细;
26、并将各个所述待补足明细及其对应的所述补充数量作为对应的当前明细和当前补充数量;并按先失效先出原则,根据所述当前明细和所述当前补充数量从所述库存数据库中选出满足药品明细和数量要求的补充记录集合;其中,所述补充记录集合包括一个或多个所述库存药品记录;所述补充记录集合的所有所述库存药品记录的所述库存状态都为锁定;
27、并基于得到的所有所述补充记录集合设置对应的所述第一记录集,具体为:对得到的所有所述补充记录集合进行合并得到对应的补充记录全集;并将所述补充记录全集的各个所述库存药品记录对应的所述表标识和所述入库包装标识作为一组对应的所述第一表标识和所述第一包装标识,并由各组所述第一表标识和所述第一包装标识组成一个对应的所述第一记录,并由得到的所有所述第一记录组成对应的所述第一记录集;
28、并将所述第一记录集输入所述药品拆零处理接口进行库存药品散装拆解处理得到对应的所述第二记录集;
29、步骤42,根据所述第一记录集和所述第二记录集对所述库存数据库进行库存数据更新处理,具体为:
30、将所述库存数据库中所述第一记录集和所述第二记录集各自对应的库存药品记录集合记为对应的集合g1、集合g2;并基于集合g1、g2确定对应的集合g3,g3=g1-g1∩g2;并将所述库存数据库中,与所述集合g2对应的所有所述库存药品记录的所述库存状态都重设为出库、与所述集合g3对应的所有所述库存药品记录的所述库存状态都重设为在库;
31、步骤43,根据所述第二记录集和所述库存数据库对所述散药缓存池进行散药缓存更新处理,具体为:
32、将所述第二记录集的各个所述第二记录作为当前记录;并将所述库存数据库中所述表标识与所述当前记录的所述第二表标识匹配的所述库存数据表作为当前表;并将所述当前表中所述入库包装标识与所述当前记录的所述第二包装标识匹配的所述库存药品记录作为当前库存记录;并在所述散药缓存池中为所述当前库存记录生成一个对应的所述散装药品记录作为当前散装记录;并基于所述当前库存记录的所述入库药品编码、所述入库药品名、所述入库批次号、所述入库包装标识、所述药品有效期、所述散装单位、所述散装规格对所述当前散装记录中对应的所述散装药品编码、所述散装药品名、所述源批次号、所述源包装标识、所述药品有效期、所述散装单位、所述散装规格进行设置;并基于所述当前库存记录的所述散装数量对所述当前散装记录的所述散装剩余数量进行设置;并基于所述当前记录的所述第一拆解时间对所述当前散装记录的所述源包装拆零时间进行设置。
33、进一步的,所述按先失效先出原则,根据所述当前明细和所述当前补充数量从所述库存数据库中选出满足药品明细和数量要求的补充记录集合,具体包括:
34、将所述库存数据库中所述入库药品编码、所述入库药品名分别与所述当前明细的所述药品编码、所述药品名匹配的所述库存数据表组成对应的当前表集合;并将所述当前表集合的各个所述库存数据表中,所述散装单位和所述散装规格分别与所述当前明细的所述药品单位和所述药品规格匹配、且所述库存状态为在库、且所述药品有效期未过期的所述库存药品记录记为对应的库存匹配记录;并按所述药品有效期的时间先后顺序,对所有所述库存匹配记录进行排序得到对应的当前记录序列;
35、并对所述当前记录序列的所有所述库存匹配记录进行一轮顺序遍历;并在本轮遍历过程中,将当前遍历的所述库存匹配记录作为当前记录;并将所述当前记录序列中从第1个记录到所述当前记录的子序列作为当前子序列;并将所述当前子序列的所有所述库存匹配记录的所述散装数量的总和作为对应的当前总和数量;并对所述当前总和数量是否小于所述当前补充数量进行识别;若是,则转至下一个所述库存匹配记录继续进行遍历直到最后一个所述库存匹配记录遍历结束为止;若否,则停止本轮遍历,并由所述当前子序列的所有所述库存匹配记录组成对应的所述补充记录集合,并将所述库存数据库中与所述补充记录集合对应的所有所述库存药品记录的所述库存状态都设为锁定。
36、优选的,所述根据所述发药单据、所述散药缓存池以及预设的药品分发处理接口和药品分发数据表进行散装药品分发和药品分发信息记录处理,具体包括:
37、步骤61,按小余量先发原则根据所述发药单据、所述散药缓存池和所述药品分发处理接口进行散装药品分发处理,具体为:
38、按小余量先发原则根据所述发药单据的各个所述发药明细和所述散药缓存池设置对应的所述第三记录;并由得到的所有所述第三记录组成对应的所述第三记录集;并将所述第三记录集输入所述药品分发处理接口进行药品分发处理得到对应的所述第四记录集;
39、步骤62,将所述散药缓存池中,所述散装剩余数量为零或所述药品有效期过期的所述散装药品记录删除;
40、步骤63,基于所述发药单据、所述第三记录集和所述第四记录集对所述药品分发数据表进行药品分发信息记录处理,具体为:
41、由所述第三记录集的各个所述第三记录及其对应的所述第四记录的所述发药明细、所述库存溯源集、所述分发人员标识和所述药品分发时间组成一个对应的所述分发明细;并由得到的所有所述分发明细组成对应的所述分发明细集;并由所述发药单据的所述发药单号、所述源处方号以及所述分发明细集组成一个对应的所述药品分发记录向所述药品分发数据表中添加。
42、进一步的,所述按小余量先发原则根据所述发药单据的各个所述发药明细和所述散药缓存池设置对应的所述第三记录,具体包括:
43、将所述发药单据的各个所述发药明细作为当前明细;并将所述散药缓存池中,所述散装药品编码、所述散装药品名、所述散装单位、所述散装规格分别与所述当前明细的所述药品编码、所述药品名、所述药品单位、所述药品规格匹配且所述药品有效期未失效的所述散装药品记录记为对应的散装匹配记录;并按所述散装剩余数量从小到大的顺序,对所有所述散装匹配记录进行排序得到对应的当前记录序列;并基于所述当前明细的所述发药数量对当前发药余量进行初始化;
44、并对所述当前记录序列的所有所述散装匹配记录进行一轮顺序遍历;并在本轮遍历过程中,将当前遍历的所述散装匹配记录作为当前记录;并对所述当前记录的所述散装剩余数量是否大于或等于所述当前发药余量进行识别;若否,则先由所述当前记录对应的所述源批次号、所述源包装标识和所述散装剩余数量作为一组对应的所述入库批次号、所述入库包装标识和所述散装发药数量组成一个对应的所述库存溯源组,再将所述当前发药余量减去所述当前记录的所述散装剩余数量的差作为新的所述当前发药余量,再将所述散药缓存池中所述当前记录的所述散装剩余数量重置为0,再继续转至下一个所述散装匹配记录进行遍历直到最后一个所述散装匹配记录遍历结束为止;若是,则停止本轮遍历,并由所述当前记录对应的所述源批次号和所述源包装标识以及所述当前发药余量作为一组对应的所述入库批次号、所述入库包装标识和所述散装发药数量组成一个对应的所述库存溯源组,并将所述当前记录的所述散装剩余数量减去所述当前发药余量的差作为当前散装余量,并基于所述当前散装余量对所述散药缓存池中所述当前记录的所述散装剩余数量进行重置,并由本轮遍历得到的所有所述库存溯源组组成一个对应的所述库存溯源集,并由所述当前明细和所述库存溯源集组成一个对应的所述第三记录。
45、本发明实施例第二方面提供了一种用于实现上述第一方面所述的基于单据驱动的药品拆零分发方法的装置,所述装置包括:单据接收模块、散药余量识别模块、识别结果判断模块、药品拆零处理模块、药品分发处理模块;
46、所述单据接收模块用于接收发药单据;其中,所述发药单据包括发药单号、源处方号、发药明细集;所述发药明细集包括一个或多个发药明细;所述发药明细包括药品编码、药品名、发药数量、药品单位、药品规格;
47、所述散药余量识别模块用于根据所述发药单据和预设的散药缓存池对当前散药余量是否满足当前单据需求进行识别得到对应的单据识别结果;其中,所述散药缓存池不为空时包括一个或多个散装药品记录;所述散装药品记录包括散装药品编码、散装药品名、源批次号、源包装标识、药品有效期、源包装拆零时间、散装剩余数量、散装单位、散装规格,散装剩余数量≥0;所述单据识别结果包括一个或多个药品识别结果;所述药品识别结果与所述发药明细一一对应;所述药品识别结果包括识别状态、补充数量,补充数量≥0;所述识别状态包括余量不足、余量满足两种状态;所述识别状态为余量不足时,所述补充数量大于零且小于或等于对应的所述发药数量;所述识别状态为余量满足时,所述补充数量为零;
48、所述识别结果判断模块用于对所述单据识别结果的所有所述识别状态是否都为余量满足进行识别;若否,则转至所述药品拆零处理模块;若是,则转至所述药品分发处理模块;
49、所述药品拆零处理模块用于根据所述单据识别结果、所述发药单据、所述散药缓存池以及预设的库存数据库和药品拆零处理接口进行库存药品散装拆解、库存数据更新和散药缓存更新处理;并在本次处理结束后返回所述散药余量识别模块;其中,在库存药品散装拆解的处理过程中按先失效先出原则进行处理;所述库存数据库包括多个库存数据表;每个所述库存数据表对应一个唯一的表标识;所述库存数据表包括多个库存药品记录;所述库存药品记录包括入库包装标识、入库药品编码、入库药品名、入库批次号、入库包装单位、入库包装规格、散装数量、所述散装单位、所述散装规格、所述药品有效期、库存状态、入库登记时间、出库登记时间;所述库存状态包括在库、锁定、出库三种状态;所述药品拆零处理接口的接口输入数据为第一记录集、接口输出数据为第二记录集;所述第一记录集包括一个或多个第一记录;所述第二记录集包括一个或多个第二记录;所述第一记录包括第一表标识和第一包装标识;所述第二记录包括第二表标识、第二包装标识和第一拆解时间;各个第一或第二表标识为一个所述表标识;各个第一或第二包装标识为一个所述入库包装标识;
50、所述药品分发处理模块用于根据所述发药单据、所述散药缓存池以及预设的药品分发处理接口和药品分发数据表进行散装药品分发和药品分发信息记录处理;其中,在散装药品分发的处理过程中按小余量先发原则进行处理;所述药品分发处理接口的接口输入数据为第三记录集、接口输出数据为第四记录集;所述第三记录集包括一个或多个第三记录;所述第四记录集包括一个或多个第四记录;所述第三记录与所述发药明细一一对应,所述第四记录与所述第三记录一一对应;所述第三记录包括所述发药明细和库存溯源集;所述第四记录包括分发人员标识和药品分发时间;所述库存溯源集包括一个或多个库存溯源组;所述库存溯源组包括所述入库批次号、所述入库包装标识和散装发药数量;所述库存溯源集的所有所述散装发药数量的总量与其对应的所述发药明细的所述发药数量匹配;所述药品分发数据表包括多个药品分发记录;所述药品分发记录与所述发药单据一一对应;所述药品分发记录包括所述发药单号、所述源处方号、分发明细集;所述分发明细集包括一个或多个分发明细;所述分发明细与所述发药明细一一对应;所述分发明细包括所述发药明细、所述库存溯源集、所述分发人员标识、所述药品分发时间。
51、本发明实施例第三方面提供了一种电子设备,包括:存储器、处理器和收发器;
52、所述处理器用于与所述存储器耦合,读取并执行所述存储器中的指令,以实现上述第一方面所述的方法步骤;
53、所述收发器与所述处理器耦合,由所述处理器控制所述收发器进行消息收发。
54、本发明实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行上述第一方面所述的方法的指令。
55、本发明实施例提供了一种基于单据驱动的药品拆零分发方法、装置、电子设备及计算机可读存储介质。由上述内容可知,本发明实施例每收到一个发药单据,都会根据当前单据和散药缓存池对当前散药余量是否满足当前单据需求进行识别;若发现存在散药余量不足的情况,就根据单据识别结果、发药单据、散药缓存池、库存数据库和药品拆零处理接口进行一轮库存药品散装拆解、库存数据更新和散药缓存更新处理,并在库存药品散装拆解的处理过程中按fefo原则进行处理,并在本轮处理结束后对当前散药余量是否满足当前单据需求进行再次识别,直到识别结果表明不存在任何散药余量不足的情况为止;并在确认不存在任何散药余量不足的情况后,根据发药单据、散药缓存池、药品分发处理接口和药品分发数据表进行散装药品分发和药品分发信息记录处理。基于本发明实施例,一方面减少了近效期药品积压量、减少了近效期药品的过期报废量、降低了药品浪费率;另一方面通过药品分发数据表对每次发药的跨批次信息进行全面补齐,细化了溯源信息的颗粒度;再一方面通过库存数据自动更新、散药缓存数据自动更新、药品分发信息自动记录等一系列操作,简化了人工处理流程、提高了作业效率、降低了账实不符概率。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com