CREATE OR REPLACE PROCEDURE SP_BQ_YPYZZX_BR --可执行的药品医嘱有:提取日期<=执行时间(且) -- 提取记录表中的起始时间<=执行时间 -- (特殊:由于顺延药的存在,同组医嘱的明细医嘱在一次提取中的实际结束时间可能不一致) -- 医嘱执行是根据医嘱的提取来确定提取时间,执行时间以前有未执行的医嘱,必须同时执行。 -- 可以执行的药品医嘱条件:表BQ_YPYZ00 where nvl(TQRQ00,Pzxrq00)>=:ZXRQ00 and -- YZID00 in (select YZID00 from VW_BQ_YZZXJL_WZX -- and QSRQ00<=:ZXRQ00 and DJHLB0='0' and ZT0000='0') -- ( Pczy000 in number , --操作员 Pzyid00 in number , --住院流水号 Pbqh000 in number , --病区号 Pclbz00 in char , --长零标志 '0'长嘱,'1'短嘱,其他长短嘱 Pyflbid in number , --用法类别ID Pyplbbh in char , --药品类别 Pzxrq00 in char , --提取日期 Pczyks0 in number , --操作员科室 Pcommit in varchar2 default 'N' , --是否提交 Pzxcgbz out number , --执行成功标志 1成功 0失败 Ptsxx00 out varchar2 , --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 out varchar2 , --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Psfssmz in char default 'N' , --是否手术麻醉系统进行提取 即有手术麻醉系统里面的药品提取. Pssksbh in number default 0 , --手术科室编号 Ptqdjh0 in number default 0 ) AS Vcount0 number(5); Vczyxm0 BM_YGBM00.ZWXM00%TYPE; --操作员姓名 Vqsrq00 date; Vjsrq00 date; vsfrq00 date; Vksh000 number(5); Vzxcgbz number; Vzlxmid number; Vyjdjh0 number; Vclbz00 char(1); Vyplbbh char(1); Vdjh000 number; Vyptqsf XT_XTCS00.VALUE0%TYPE; Vdsjmdz XT_XTCS00.VALUE0%TYPE; Vdsjyf0 XT_XTCS00.VALUE0%TYPE;--是否代收煎药费 Vyzid00 BQ_YPYZ00.YZID00%TYPE; Vtqdjh0 BQ_YZZXJL.TQDJH0%TYPE; Vdsysf0 XT_XTCS00.VALUE0%TYPE; Vkdks00 BM_BMBM00.BMBH00%TYPE; Vjppzf0 XT_XTCS00.VALUE0%TYPE;--静脉药物配置费 Ecustom exception; Vdealed char(1); --首次收N-1次,其他收N次的附加费的用法是否处理过了 cursor MTYCDCXM_1 is select distinct DCXMID,SL0000,GJBM00 from BQ_DCXMGZ where XMLB00=0 and CSLY00='0' and CJFS00='A' and BQSFBZ='Y' and LYXMID in (select YFID00 from VW_BQ_DDZXYPYZ Z where ZYID00=Pzyid00 and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh) -- and Z.YZID00 not in (select YZID00 from BQ_YPYZMX where PSID00 is not null and PSTGBZ<>'-') ; cursor C_BRFJFY is select X.ID0000,X.SFXMID,X.CS0000,X.XMLB00,Y.YEXM00,X.ZXKS00,x.TQDJH0,x.YZID00,y.KZYS00 from BQ_FJF000 X,BQ_YPYZ00 Y where X.ZYID00=Pzyid00 and JFLBID=2 and X.XMLB00='0' and nvl(SFDJH0,0)=0 and X.YZID00=Y.YZID00(+) and YJDJH0=0 and X.CXBZ00<>'+' and X.CS0000>0; -- Person Date Comments -- dsm 2011.05.25 当只有临时医嘱,BQ_DSYCJMDZ参数启用时,会多收一天的静脉滴注 -- zhangwz 2011.06.17 相关业务表增加YEXM00数据的插入. -- qks 2011.08.22 琐BQ_YPYZ00表,防止药品医嘱同时执行,造成附加费重复收取. -- zhangwz 2011.08.26 增加手术时核对并执行时的BQ_FJF000.ZXKS00要为手术室. by SSMZ-20110822-001. -- zhanghr 2013.05.19 生成附加费医技单并顺带扣费 -- qks 2013.07.13 修改表BQ_FJF000要使用到索引字段ZYID00 -- qks 2014.09.25 修改生成附加费 开单科室编号:由原来的Vksh000改为Vkdks00 -- qks 2015.03.12 生成药单比较卡 -- zhaoxz 2016.04.06 每日一次附加费收取修改 BQHS9.0-20160407-006 -- zhaoxz 2017.01.25 YJ_YW0000表不生成CS0000为0的附加费 BQHS9.0-20170125-003 -- zhaoxz 2017.02.21 福建省人民医院,静配药品收取静脉药物配置费 BQHS9.0-20170220-001 -- zhaoxz 2017.03.14 福建省人民医院,静脉配置费核对直接扣费 BQHS9.0-20170314-001 -- zhuyj 2017.03.30 附加费执行科室改成病人所在科室 BQHS9.0-20180309-001 -- linyx 2018.05.30 医嘱提取生成药单报错,给Vyzid00判空 BQHS9.0-20180529-001 -- linyx 2018.05.30 SP_YJ_YJSQWH增加yzid00入参,为了在婴儿用药附加费要写入婴儿姓名 BQHS9.0-20180528-001 -- linyx 2018.08.30 BQHS9.0-20180807-003 多天提取医嘱时,出现zxrq00和tqrq00不一致,且比较小,是由于程序可能会先执行2号的,再执行1号,这样zxrq00就会变成1号,修改zxrq00应该取最大的zxrq00 -- linyx 2019.02.18 增加参数控制药品附加费执行科室是否取当前床位所属科室 BQHS9.0-20190215-001 -- dongxb 2022.09.05 当有传入本次提取ID时只生成本次提取的药品医嘱附加费 for BQHS9.0-20220818-005 begin Pzxcgbz:=0; Vdealed :='N'; Vclbz00:=nvl(Pclbz00,'%'); Vyplbbh:=nvl(Pyplbbh,'%'); --if (Psfssmz='Y') and (Pssksbh<>0) then -- Vksh000:=Pssksbh; --end if; if Pbqh000 is null OR Pbqh000 =0 then--收取附加费用时出错,删除该病人的提取 Ptsxx00:='传入参数Pbqh000=0!'; raise Ecustom ;--收取附加费用时发生错误 end if; if Pczy000 is null OR Pczy000 =0 then--收取附加费用时出错,删除该病人的提取 Ptsxx00:='传入参数Pczy000=0!'; raise Ecustom ;--收取附加费用时发生错误 end if; select ZWXM00 into Vczyxm0 from BM_YGBM00 where YGBH00=Pczy000; select DQKS00 into Vkdks00 from ZY_BRXXB0 where ZYID00=Pzyid00; --药品附加费执行科室是否取当前床位所属科室,Y是,N否 select count(1) into Vcount0 from XT_XTCS00 where NAME00='BQ_YPFJFZXKSSFQCWKS' and VALUE0='Y'; if Vcount0>0 then select max(ksh000) into Vksh000 FRom bm_cwk000 where cwzt00='1' and ZYID00=Pzyid00; else select nvl(Vkdks00,max(ksh000)) into Vksh000 FRom bm_cwk000 where cwzt00='1' and ZYID00=Pzyid00; end if; --if(Vksh000 = 0) then -- select DQKS00 into Vksh000 from ZY_BRXXB0 where ZYID00=Pzyid00; --end if; if (Psfssmz='Y') and (Pssksbh<>0) then Vksh000:=Pssksbh; Vkdks00:=Pssksbh; end if; select nvl(max(VALUE0),'N') into Vdsjmdz from XT_XTCS00 where NAME00='BQ_DSYCJMDZ'; --病区提取药品时是否代收取药费 select nvl(max(VALUE0),'N') into Vyptqsf from XT_XTCS00 where NAME00='BQ_YPTQSFBZ'; --是否代收煎药费 select nvl(max(VALUE0),'N') into Vdsjyf0 from XT_XTCS00 where NAME00='BQ_SFDSJYF'; --大输液每日一次附加费收取算法 select nvl(max(VALUE0),'0') into Vdsysf0 from XT_XTCS00 where name00='BQ_DSYFJFSF'; --琐BQ_YPYZ00表 update BQ_YPYZ00 set LRSJ00=LRSJ00 where ZYID00=Pzyid00 and YZZT00 in ('1','0','2'); --重新计算药品医嘱是否需要执行 update BQ_YZZXJL J set SFXYZX='Y' where ZYID00=Pzyid00 and ZT0000='0' and DJHLB0='0' and exists (select 1 from BQ_FJZXXM F where J.ZYID00=F.ZYID00 and J.YZID00=F.YZID00); --静脉药物配置费 select nvl(max(VALUE0),'0') into Vjppzf0 from XT_XTCS00 where name00='BQ_JMYWPZFSFXM'; --插入记账项目,收取用药附加费(中药,根据帖数收取附加费)和皮试费用 --当系统设定提取时收取药费时,草药煎药费要一并帮药房收取(插入到BQ_JZXM00的备注字段) insert into BQ_FJF000 (ZYID00, XMLB00, TQDJH0, YZID00, ZXKS00, SFXMID, ZXRQ00, CS0000, SFJE00, CZY000, CZRQ00, CZSJ00, GJBM00, YEXM00, YJDJH0) select Z.ZYID00, '0', TQDJH0, Z.YZID00, Vksh000, SFXMID, z.QSRQ00, --用药费用 短嘱,直接按附加费用表收取, --长嘱,草药:帖数/1周期草药帖数*1周期草药煎药帖数/1周期草药帖数*1周期附加费次数 -- 西成药:按执行次数*(附加费用表)次数 DECODE(Z.CLBZ00,'1',J.ZCS000,decode(J.CJFS00,'A',J.ZCS000,'C',Z.CS0000*J.CS0000-decode(Vdsysf0,'1',1,0),Z.CS0000*J.CS0000)), J.SFJE00,Pczy000,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),GJBM00,Z.YEXM00,0 from VW_BQ_DDZXYPYZ Z,VW_BQ_YXFJXM J where Z.YZID00=J.YZID00 and Z.ZYID00=Pzyid00 and J.CSLY00 in ('0') and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh and J.BQSFBZ='Y' and ((Vdsysf0='0' and J.CJFS00<>'A') or Vdsysf0='1') and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0) union all--收取煎药费 select Z.ZYID00, '0', TQDJH0, Z.YZID00, Vksh000, SFXMID,z.QSRQ00, DECODE(Z.CLBZ00,'1',J.CS0000,Z.CS0000/Z.ZQCYTS*Z.JYCS00/Z.ZQCYTS*J.CS0000), J.SFJE00,Pczy000,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),GJBM00,Z.YEXM00,0 from VW_BQ_DDZXYPYZ Z,VW_BQ_YXFJXM J where Z.YZID00=J.YZID00 and Z.ZYID00=Pzyid00 and J.CSLY00 in ('3')--收取煎药费 and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh and J.BQSFBZ='Y' and Z.YPLBBH='2' and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); -- and Y.YZID00 not in (select YZID00 from BQ_YPYZMX where PSID00 is not null and PSTGBZ<>'-'); if Vyptqsf='Y'and Vdsjyf0='Y' then--当系统设定提取时收取药费时,草药煎药费要一并帮药房收取 insert into BQ_FJF000 ( ZYID00, XMLB00, TQDJH0, YZID00, ZXKS00, SFXMID, ZXRQ00, CS0000, SFJE00, CZY000, CZRQ00, CZSJ00, GJBM00, YEXM00 ,YJDJH0) select Z.ZYID00, '0', TQDJH0, Z.YZID00,Z.YFBMBH, SFXMID,z.QSRQ00, --用药费用 短嘱,直接按附加费用表收取, --长嘱,草药:帖数/1周期草药帖数*1周期草药煎药帖数/1周期草药帖数*1周期附加费次数 -- 西成药:按执行次数*(附加费用表)次数 DECODE(Z.CLBZ00,'1',J.ZCS000,decode(J.CJFS00,'A',J.ZCS000,'C',Z.CS0000*J.CS0000-decode(Vdsysf0,'1',1,0),Z.CS0000*J.CS0000)), J.SFJE00,Pczy000,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),GJBM00,Z.YEXM00,0 from VW_BQ_DDZXYPYZ Z,VW_BQ_YXFJXM J where Z.YZID00=J.YZID00 and Z.ZYID00=Pzyid00 and J.CSLY00 in ('0') and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh and J.BQSFBZ='N' and ((Vdsysf0='0' and J.CJFS00<>'A') or Vdsysf0='1') and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0) union all--收取煎药费 select Z.ZYID00, '0', TQDJH0, Z.YZID00, Z.YFBMBH, SFXMID,z.QSRQ00, DECODE(Z.CLBZ00,'1',J.CS0000,Z.CS0000/Z.ZQCYTS*Z.JYCS00/Z.ZQCYTS*J.CS0000), J.SFJE00,Pczy000,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),GJBM00,YEXM00,0 from VW_BQ_DDZXYPYZ Z,VW_BQ_YXFJXM J where Z.YZID00=J.YZID00 and Z.ZYID00=Pzyid00 and J.CSLY00 in ('3')--收取煎药费 and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh and J.BQSFBZ='N' and Z.YPLBBH='2' and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); -- and Y.YZID00 not in (select YZID00 from BQ_YPYZMX where PSID00 is not null and PSTGBZ<>'-'); end if; if Vjppzf0<>0 then--静脉药物配置费 insert into BQ_FJF000 ( ZYID00, XMLB00, TQDJH0, YZID00, ZXKS00, SFXMID, ZXRQ00, CS0000, SFJE00, CZY000, CZRQ00, CZSJ00, GJBM00, YEXM00 ,YJDJH0) select Z.ZYID00, '0', TQDJH0, Z.YZID00,Z.YFBMBH, Vjppzf0,z.QSRQ00, --用药费用 短嘱,直接按附加费用表收取, --长嘱,草药:帖数/1周期草药帖数*1周期草药煎药帖数/1周期草药帖数*1周期附加费次数 -- 西成药:按执行次数*(附加费用表)次数 length(PSPC00),(select SFJE00 from BM_YYSFXM where SFXMID=Vjppzf0) SFJE00,Pczy000,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),(select GJBM00 from BM_YYSFXM where SFXMID=Vjppzf0)GJBM00,Z.YEXM00,0 from VW_BQ_DDZXYPYZ Z where Z.ZYID00=Pzyid00 and Z.QSRQ00<=Pzxrq00 and nvl(Z.PSPC00,' ')<>' ' and exists(select 1 from bq_ypyzmx where yzid00=Z.yzid00 group by yzid00 having count(*)>1) and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); end if; if Vdsysf0='0' then for DCXM in MTYCDCXM_1 loop --每天一次的附加收费项目 if Vdsjmdz='Y' then--是否多收一次静脉滴注(第一天领两天的药量时,需要多收一天的静脉滴注费) select to_date(min(QSRQ00),'YYYYMMDD'),to_date(max(decode(CLBZ00,'0',JSRQ00,QSRQ00)),'YYYYMMDD') into Vqsrq00,Vjsrq00 from VW_BQ_DDZXYPYZ Z where ZYID00=Pzyid00 and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh -- and Z.YZID00 not in (select YZID00 from BQ_YPYZMX where PSID00 is not null and PSTGBZ<>'-') and YFID00 in (select LYXMID from BQ_DCXMGZ where XMLB00=0 and CSLY00='0' and BQSFBZ='Y' and CJFS00='A' and DCXMID=DCXM.DCXMID) and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); else select to_date(min(QSRQ00),'YYYYMMDD'),to_date(max(JSRQ00),'YYYYMMDD')-1 into Vqsrq00,Vjsrq00 from VW_BQ_DDZXYPYZ Z where ZYID00=Pzyid00 and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh -- and Z.YZID00 not in (select YZID00 from BQ_YPYZMX where PSID00 is not null and PSTGBZ<>'-') and YFID00 in (select LYXMID from BQ_DCXMGZ where XMLB00=0 and CSLY00='0' and BQSFBZ='Y' and CJFS00='A' and DCXMID=DCXM.DCXMID) and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); end if; vsfrq00:=Vqsrq00; while vsfrq00<=Vjsrq00 loop select COUNT(*) into Vcount0 from VW_BQ_DDZXYPYZ Z --重新验证时间的正确性 where ZYID00=Pzyid00 and Z.QSRQ00<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh and not exists (select 1 from BQ_YPYZMX X,BQ_YPYZ00 Y where X.YZID00=Y.YZID00 and X.YZID00=Z.YZID00 and Y.ZYID00=Pzyid00 and X.PSID00 is not null and X.PSTGBZ<>'-') and YFID00 in (select LYXMID from BQ_DCXMGZ where XMLB00=0 and CSLY00='0' and BQSFBZ='Y' and CJFS00='A' and DCXMID=DCXM.DCXMID) and rownum=1 and to_char(vsfrq00,'YYYYMMDD') between QSRQ00 and JSRQ00 and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); if Vcount0=0 then GOTO NEXT_DAY; end if; select COUNT(*) into Vcount0 from BQ_FJF000 M where M.ZYID00=Pzyid00 and M.SFXMID+0=DCXM.DCXMID and M.ZXRQ00=to_char(vsfrq00,'YYYYMMDD') ;--and SFYDJ0='2' and rownum=1 ; if Vcount0=0 then if Vdealed='N' then begin select yzid00,tqdjh0 into Vyzid00,Vtqdjh0 from VW_BQ_DDZXYPYZ Z where ZYID00=Pzyid00 and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh and YFID00 in (select LYXMID from BQ_DCXMGZ where XMLB00=0 and CSLY00='0' and BQSFBZ='Y' and CJFS00 in ('B','C') ) and rownum=1 and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); exception when others then Vyzid00:=0; end; if Vyzid00>0 then --收费次数减1 update BQ_FJF000 set CS0000=CS0000-DCXM.SL0000, ZFJE00=ZFJE00/CS0000*(CS0000-DCXM.SL0000), QZFJE0=QZFJE0/CS0000*(CS0000-DCXM.SL0000), JZJE00=JZJE00/CS0000*(CS0000-DCXM.SL0000), GFJE00=GFJE00/CS0000*(CS0000-DCXM.SL0000) where ZYID00=Pzyid00 and tqdjh0=Vtqdjh0 and yzid00=Vyzid00 and CS0000>0 and sfxmid in (select DCXMID from BQ_DCXMGZ where XMLB00=0 and CSLY00='0' and BQSFBZ='Y' and CJFS00 in ('B','C')) and rownum=1; update BQ_FJF000 set TQDJH0=Vtqdjh0, YZID00=Vyzid00 where ZYID00=Pzyid00 and YZID00=0 and CZRQ00=to_char(sysdate,'YYYYMMDD') and SFXMID=dcxm.DCXMID; end if; end if; if nvl(Vyzid00,0)=0 then begin select yzid00,tqdjh0 into Vyzid00,Vtqdjh0 from VW_BQ_DDZXYPYZ Z where ZYID00=Pzyid00 and Z.QSRQ00<=Pzxrq00 --and nvl(Z.TQRQ00,Pzxrq00)<=Pzxrq00 and Z.CLBZ00 like Vclbz00 and Z.YPLBBH like Vyplbbh and YFID00 in (select LYXMID from BQ_DCXMGZ where XMLB00=0 and CSLY00='0' and BQSFBZ='Y' and CJFS00 in ('A') ) and rownum=1 and (Z.TQDJH0=Ptqdjh0 or Ptqdjh0=0); exception when others then Vyzid00:=0; end; end if; insert into BQ_FJF000 (ZYID00, XMLB00, TQDJH0, YZID00, ZXKS00, SFXMID, CS0000, CZY000, CZRQ00, CZSJ00, ZXRQ00, GJBM00, YJDJH0) values (Pzyid00, '0' , 0 , 0 , Vksh000,DCXM.DCXMID, DCXM.SL0000,Pczy000,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'), to_char(vsfrq00,'YYYYMMDD'),DCXM.GJBM00,0); update BQ_FJF000 set TQDJH0=Vtqdjh0, YZID00=Vyzid00 where ZYID00=Pzyid00 and YZID00=0 and CZRQ00=to_char(sysdate,'YYYYMMDD') and SFXMID=dcxm.DCXMID and Vyzid00>0; end if; <> vsfrq00:=vsfrq00+1; end loop; Vdealed:='Y'; end loop; end if; --修改医嘱的执行时间 /* update BQ_YPYZ00 Z set ZXRQ00=(select to_char(to_date(JSRQ00,'YYYYMMDD')-1,'YYYYMMDD') from (select max(JSRQ00)JSRQ00,YZID00 from VW_BQ_DDZXYPYZ X where X.ZYID00=Pzyid00 and X.QSRQ00<=Pzxrq00 and X.CLBZ00 like Vclbz00 and YPLBBH like Vyplbbh GROUP BY YZID00) S where Z.YZID00=S.YZID00) where ZYID00=Pzyid00 and exists (select 1 from VW_BQ_DDZXYPYZ X where Z.YZID00=X.YZID00 and X.ZYID00=Pzyid00 and X.QSRQ00<=Pzxrq00 and X.CLBZ00 like Vclbz00 and YPLBBH like Vyplbbh); */ --2015.03.12 生成药单比较卡 --修改zxrq00时和先前的zxrq00做比较,取最大的修改。BQHS9.0-20180807-003 update BQ_YPYZ00 Z set ZXRQ00=(select greatest(nvl(Z.ZXRQ00,to_char(to_date(max(JSRQ00),'YYYYMMDD')-1,'YYYYMMDD')),to_char(to_date(max(JSRQ00),'YYYYMMDD')-1,'YYYYMMDD')) from VW_BQ_DDZXYPYZ X where X.ZYID00=Pzyid00 and X.QSRQ00<=Pzxrq00 and X.CLBZ00 like Vclbz00 and YPLBBH like Vyplbbh and X.YZID00=Z.YZID00) where ZYID00=Pzyid00 and exists (select 1 from VW_BQ_DDZXYPYZ X where Z.YZID00=X.YZID00 and X.ZYID00=Pzyid00 and X.QSRQ00<=Pzxrq00 and X.CLBZ00 like Vclbz00 and YPLBBH like Vyplbbh and (X.TQDJH0=Ptqdjh0 or Ptqdjh0=0)); --修改医嘱的首次执行日期、时间 update BQ_YPYZ00 Z set ZXRQSC=to_char(sysdate,'YYYYMMDD'), ZXSJSC=to_char(sysdate,'HH24:MI:SS') where ZYID00=Pzyid00 and ZXRQSC is null and exists (select 1 from VW_BQ_DDZXYPYZ X where Z.YZID00=X.YZID00 and X.ZYID00=Pzyid00 and X.QSRQ00<=Pzxrq00 and X.CLBZ00 like Vclbz00 and YPLBBH like Vyplbbh and (X.TQDJH0=Ptqdjh0 or Ptqdjh0=0)); --修改执行记录 update BQ_YZZXJL Z set ZT0000='1', CZR000=Pczy000, ZXRQ00=to_char(sysdate,'YYYYMMDD'), ZXSJ00=to_char(sysdate,'HH24:MI:SS'), ZXRXM0=Vczyxm0 where exists (select YZID00 from VW_BQ_DDZXYPYZ X where X.ZYID00=Pzyid00 and X.QSRQ00<=Pzxrq00 -- and nvl(X.TQRQ00,Pzxrq00)<=Pzxrq00 and X.CLBZ00 like Vclbz00 and YPLBBH like Vyplbbh and X.YZID00=Z.YZID00 and X.QSRQ00=Z.QSRQ00 and X.JSRQ00=Z.JSRQ00 and (X.TQDJH0=Ptqdjh0 or Ptqdjh0=0)) and ZYID00=Pzyid00 and ZT0000='0'; -- and Z.YZID00 not in (select YZID00 from BQ_YPYZMX where PSID00 is not null and PSTGBZ<>'-' ); select nvl(max(trim(VALUE0)),null) into Vzlxmid from XT_XTCS00 where NAME00='XT_FJGYXMID'; if Vzlxmid is null then Ptsxx00 := '参数XT_FJGYXMID没有维护,请联系管理员!*'; raise Ecustom; end if; for rec_fjfy in C_BRFJFY loop select SQ_YJ_YW0000_YJDJH0.nextval into Vyjdjh0 from dual; SP_YJ_YJSQWH( 2, --操作内容 1修改 2增加 3删除 Vyjdjh0, --操作的医技单据号 Pzyid00, --住院挂号ID '1', --门诊住院标志 Vzlxmid, --诊疗项目id null, --子项目id串,如果没有传入参数,表示使用所有明细项 null, --诊断id null, --诊断名称 null, --标本ID null, --特殊病种编号 'N', --医技录入标志 'N', --急诊标志 rec_fjfy.KZYS00, --开单医生 --Vksh000, --开单科室编号 Vkdks00, --开单科室编号 Pbqh000, --开单病区 rec_fjfy.ZXKS00, --医技科室编号 rec_fjfy.cs0000, --数量 null, --备注 'e', --附加单据 0主单1采血费2试管费3挂号费4诊查费5病历本6预约挂号7代煎9其他子单a注射b床位c病区普通常规费 d病区常规项目附加费 e药品用药附加费(bq_fjf000) Pczy000, --操作员 Pbqh000, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 null, --业务明细ID Popflag=3时 可能用到 null, --部位名称 null, --父医技单据号 0, --重新计价 rec_fjfy.YZID00 --医嘱处方id ); update YJ_YW0000 set YZCFID =to_char(rec_fjfy.YZID00),TQPC00=rec_fjfy.TQDJH0,CFID00=to_char(rec_fjfy.ID0000) where YJDJH0 = Vyjdjh0; Vyzid00:=rec_fjfy.YZID00; if Pzxcgbz = 1 then SP_YJ_YWJJCZ('2',null,'0',Vyjdjh0,rec_fjfy.sfxmid,rec_fjfy.cs0000,Pczy000,Pbqh000,null,Pzxcgbz,Ptsxx00,Pxxxx00); if Pzxcgbz<>1 then Ptsxx00:='医嘱号:'||rec_fjfy.yzid00||','||Pxxxx00; raise Ecustom; end if; update BQ_FJF000 set YJDJH0=Vyjdjh0 where ID0000=rec_fjfy.ID0000; elsif Pzxcgbz<>1 then Ptsxx00:=rec_fjfy.sfxmid; raise Ecustom; end if; end loop; Pzxcgbz:=1; -- if Pcommit='Y' then commit; -- end if; if Vyptqsf='Y' then SP_BQ_FJFYKF(Pzyid00,Pbqh000,Pczy000,Pbqh000,'Y',Vdjh000,Vzxcgbz,Ptsxx00,Pxxxx00); end if; --静脉配置费直接收费 BQHS9.0-20170314-001 SP_BQ_JMPZFYKF(Pzyid00,Pbqh000,Pczy000,Pbqh000,'Y',Vdjh000,Vzxcgbz,Ptsxx00,Pxxxx00); exception when no_data_found then raise_application_error(-20001,substrb('数据没有找到!*'||Ptsxx00||sqlerrm,1,220)); when Ecustom then raise_application_error(-20010,substrb(Ptsxx00||'!*',1,220)); when others then raise_application_error(-20002,'医嘱号:【'||Vyzid00||'】,'||substrb(nvl(sqlerrm, '原因不明出错')||'!*'||Ptsxx00,1,220)); end ;