三甲医院药房住院包装追溯码采集自动扫码程序逻辑关键(pb9.0实战 扫码采集姊妹篇)
三甲医院药房住院包装追溯码采集自动扫码程序逻辑关键(pb9.0实战 扫码采集姊妹篇)
作者:李宏生(三甲医院IT运维工程师)
创作时间:2026年5月
本文作为《三甲医院药房药品追溯码发药采集程序(PB9.0实战)》的姊妹篇,针对住院包装药房实操繁琐、无法实现逐一对码扫码的痛点,开发“自动扣码”模式程序。核心逻辑为:发药时直接扣除药房追溯码库存数,退药时自动增加药房追溯码库存数,退药至药库时同步增加药库追溯码库存数,暂不考虑医保上传,专注解决医院实操效率问题,适配三甲医院住院药房多医嘱、大批量拆零发药场景。
核心场景:住院药房按住院包装(拆零)发药,无需逐一对追溯码扫码,系统自动匹配药品、扣除对应追溯码库存;支持住院患者退药,退药后自动回补药房追溯码库存;退药至药库时,同步回补药库追溯码库存,简化实操流程,解决住院药房扫码工作量过大、无法落地的痛点(注:本模式为医院实操优化方案,需结合医院内部管理规范使用)。
一、整体业务逻辑说明(适配住院包装药房实操场景)
1. 核心业务目标
- 自动扣码发药:住院药房发药时,无需扫码,根据医嘱发药量,自动扣除对应药品的追溯码库存数,适配多医嘱集中发药、拆零发药场景;
- 退药库存回补:住院患者退药时,系统自动增加药房对应药品的追溯码库存数,确保库存数据准确;
- 退库库存同步:退药需退回药库时,在回补药房库存的同时,同步增加药库对应药品的追溯码库存数,实现药房与药库库存联动;
- 简化实操流程:规避逐一对码扫码的繁琐操作,贴合住院药房大批量、快节奏发药需求,兼顾库存准确性与实操效率;
- 适配药品字典:沿用原有药品字典字段(药品序号、产地、名称、规格、药房包装、病房包装、最小单位、最小包装、追溯码包装数量等),无需额外维护字典数据。
2. 关键数据窗口/对象说明
程序基于PB9.0开发,复用上一篇核心对象结构,新增库存联动相关逻辑,可直接嵌入现有HIS住院药房系统,关键对象如下:
- dw_1:住院医嘱发药数据窗口,核心字段(新增库存关联字段):
- 基础字段:ypid(药品标识码)、ypmc(药品名称)、ypgg(规格)、bzsl(追溯码包装数量)、fysl(本次发药量);
- 库存关联字段:yf_zsm_kcs(药房追溯码库存数)、yk_zsm_kcs(药库追溯码库存数)、flag(发药/退药完成标志,1=完成,0=未完成)。
dw_2:追溯码库存变动记录表,记录发药扣码、退药回补、退库同步的所有明细(便于对账核查);
dw_3:退药操作窗口,用于录入退药信息(药品、数量、退药类型:退回药房/退回药库);
核心函数:
- wf_auto_deduct_code():自动扣码核心函数,发药时扣除药房追溯码库存;
- wf_return_drug_pharmacy():退药回补函数,退药至药房时增加药房库存;
- wf_return_drug_warehouse():退库同步函数,退药至药库时同步增加药房、药库库存;
- wf_check_stock():库存校验函数,发药前校验药房追溯码库存是否充足。
二、核心逻辑流程拆解(关键步骤)
程序核心围绕“自动扣码发药→退药回补→退库同步”三大场景展开,逻辑简洁,贴合住院药房实操,重点解决扫码繁琐的痛点,关键步骤如下:
1. 发药前库存校验(核心前置步骤)
发药前自动校验药房追溯码库存,确保库存充足,避免扣码后库存为负,同时匹配药品追溯码包装数量,确保扣码逻辑准确。
powerbuilder |
2. 自动扣码发药(核心逻辑)
无需扫码,根据医嘱发药量,自动扣除药房追溯码库存,同时记录库存变动明细,标记发药完成,适配多医嘱集中发药场景,一键完成批量扣码。
powerbuilder |
3. 退药回补(退回药房)
住院患者退药时,录入退药信息后,系统自动回补药房对应药品的追溯码库存,同步记录库存变动明细,确保库存数据与实际一致。
powerbuilder |
4. 退药至药库(库存同步)
当退药需要退回药库时,在回补药房库存的同时,同步增加药库对应药品的追溯码库存,实现药房与药库库存联动,确保全流程库存准确。
powerbuilder |
三、单独说明:发药追溯码处理存储过程(pro_fycl)
本文核心扣码、退药、退库的底层逻辑,均通过Oracle存储过程pro_fycl实现,替代传统PB客户端直接操作库存的方式,提升数据处理效率与安全性。该存储过程独立于PB前端程序,负责全流程追溯码库存变动,PB程序仅需调用该存储过程即可完成所有核心操作,以下为存储过程完整说明及代码(已修改表名,规避实际系统关联,仅用于技术交流)。
免责声明:本文中存储过程代码及相关说明仅用于技术交流与学习,实际应用需结合医院HIS系统实际架构、数据字典及内部管理规范进行适配调整,作者及相关方不承担因直接复用代码导致的系统异常、数据偏差等相关责任。 |
1. 存储过程核心功能
该存储过程专注于住院药房发药、退药、退库场景的追溯码库存处理,核心规则如下:
- 追溯码获取:能获取到多少追溯码就处理多少,无法获取追溯码的发药记录直接跳过,不影响整体流程执行;
- 库存适配:适配追溯码库存采集初期的场景,允许部分药品未完成追溯码库存采集,不阻断发药流程;
- 全场景覆盖:涵盖“发药扣码、退药回补、退库扣码”三大核心场景,自动完成库存变动及明细记录;
- 异常处理:包含完善的异常捕获与回滚机制,确保库存数据一致性,避免操作失误导致的库存偏差。
3. 存储过程完整代码(可直接复用)
plsql |