PROMPT 11. 正在创建过程 SP_ZS_YZMBYY_ZYDZBL 医嘱模板引用... create or replace procedure SP_ZS_YZMBYY_ZYDZBL --过程说明 ( pmbid00 in number , --模板ID0000 pkdysbh in number , --开单医生编号 pkdksbh in number default 0 , --开单医生编号 pzyid00 in number , --病人住院id pqyrqsj in char , --医嘱起用日期时间'2003050710:00:00' pyexm00 in char , --婴儿姓名 Pczy000 in number , --操作员id号 Pzxjg00 out varchar2 , --执行结果提示 Pzxbz00 out number , --传出参数说明 Pcommit in varchar2 default 'N', --是否提交 Pclbz00 in char default '0', --药品长临标志 默认为长 '0':长嘱; '1':短嘱; '2': 非药医嘱强制为短嘱 PZBBH00 IN VARCHAR2 default '-1',--组别编号 PZLMXID IN VARCHAR2 default '-1', --诊疗 明细ID PYYMBNR IN CHAR default '-1', --引用模板类别 0:西成药 1:中草药 2:诊疗 Pljid00 in number default 0, ---路径ID Prcid00 in number default 0, --日程ID Pzxid00 in number default 0, --执行节点ID Pssksbh in number default 0, --手术科室编号 用于手术系统手术医嘱管理时模版引用 Psrcs00 in number default 0, --首日次数 Pyyrq00 in varchar2 default '', --用药日期 Pcfmc00 in varchar2 default '' --处方名称 ) AS -- Person Date Comments -- 阮炳辉 2014.12.11 create for DZBL-20141210-007 -- xuxm 2014.12.15 原先为“全院”或“仅住院”的项目更改为“仅门诊”时,阻止该次引用。for DZBL-20141206-001 -- 阮炳辉 2015.01.07 modify for DZBL-20141210-007 引用zydzbl视图 -- xuxm 2016.01.25 DZBL-20151204-002 中草药医嘱模板维护时,未判断库存!导致医嘱界面能引出此库存不足药品,导致中草药药品复制黏贴报错,见附件;请做修改! -- xuxm 2016.05.19 ZYDZBL-20160415-002 医嘱界面,引用医嘱模板:引用颗粒剂时,会提示药品库存不足或暂停使用,但通过新增是可以开出来的 -- xuxm 2016.10.17 ZYDZBL-20161012-001 模板调用或路径引用时,输液、注射类药品首日次数默认满频次,口服类药品首日次数默认为当前时间到23:59:59之间的频次点数量。 -- xuxm 2017.04.12 ZYDZBL-20170221-001 引用出的草药,默认的“每日次数”为2 -- wuzy 2018.06.04 ZYDZBL-20180531-002 过程加上日志 SP_TransLog -- huanglw 2018.08.24 ZYDZBL-20180815-001 增加参数控制,是否取有库存药房 -- huanglw 2018.10.11 ZYDZBL-20181010-001 引用模版时,若细目方法为“冲服”代煎数量应为0 -- xuxm 2018.10.25 ZYDZBL-20181025-002 诊疗管理-医嘱管理-模板引用,操作引用,当出现库存不足时或者暂停使用,已停用时需要作出提醒。 -- linxw 2018.12.7 ZYDZBL-20181109-002 引用模板与医嘱管理界面的顺序问题,在里面加了PLXH00,MXId00,按这两个字段进行排序 -- linxw 2019.1.4 ZYDZBL-20190103-002 医嘱模板中有同组药品,引用时会引用多条,西药和中药模板都会,请修改,急! -- huanglw 2019.03.14 ZYDZBL-20190313-008 引用中药模版时,总数量与实际数量不一至 -- zouqc 2019.07.23 ZYDZBL-20190719-001 引用模版中有颗粒剂代煎数量为0 Vsysdate date; --日期变量 Vczyxm0 bm_ygbm00.zwxm00%type; --操作员姓名 Vyzmxid bq_yjyz00.yzmxid%type; --医嘱号 Vyfbmbh xt_ypfwfx.yfbmbh%type; --领药药房 Vypdlbh bm_yd0000.lbbh00%type; --药品大类编号 Vkdbq00 zy_brxxb0.dqbq00%type; --当前病区 Vdqks00 zy_brxxb0.dqks00%type; --当前科室 Vzqdw00 bm_pc0000.zqdw00%type; --频次单位 Vypyfmc bm_ypyf00.ypyfmc%type; --药品用法名称 Vyflbid bm_ypyf00.yflbid%type; --药品用法类别 Vmrqssj bm_ypyf00.mrqssj%type; --药品用法默认起始 Vyfid00 bm_ypyf00.yfid00%type; --药品用法ID Vqysj00 char(8); --起用时间 Vsyxtsj boolean; --是否使用系统时间作为医嘱的启用时间 Vclbz00 char(1); --长临标志 VCLBZSFTS char(1); --是否使用参数中的长临标志 Vcounter number(10); --计数器变量 Vparams varchar2(255); --参数变量 Verrmsg varchar2(255); --错误提示变量 V_SRCS00 number(5); --首日次数 V_PCID00 number(5); --频次ID V_SFICU0 BM_BMBM00.SFICU0%type; V_icuks0 BM_BMBM00.BMBH00%TYPE; Ecustom exception; --错误变量 E_ICUCW0 EXCEPTION; ZS_YZWHSFKZCJKS XT_XTCS00.VALUE0%TYPE; --住院医生医嘱维护非药品编辑界面是否开展采集科室 V_ICUSFWKS XT_XTCS00.VALUE0%type; ls_str varchar2(255); --被停止的药品 ls_str1 varchar2(255); --被停止的药品 V_MBWHSFXZDYF varchar2(10); --模板维护时,药品明细是否限制只能是同一个药房的药品 LS_COU number(5); V_ZYMRCS number(5); LS_COU1 number(5); V_YZFZSRCSMR char(1); --药品医嘱复制用法大类为“输液”或者“注射”类的药品首日次数默认1 Y:是 N:否 默认为:N v_YSZID0 zy_brxxb0.yszid0%type; V_PDYFYKKC char(1);--判断药房预扣药房库存 V_PDSFWKLY number(2);--判断是否为颗粒药 -- cursor C_zlmbmx is select a.zlxmid,a.ts0000,a.tsdw00,a.mcsl00,b.zqcs00,a.bz0000,a.dw0000, -- a.mxid00,a.clbz00,a.pcid00,b.pcmc00,a.lbbh00,a.zlxmjc,a.BBID00,a.BB0000 -- from vw_xt_zlmbmx a,vw_bm_pc0000 b -- where a.pcid00=b.pcid00(+) and MBID00=pmbid00 -- and (PYYMBNR='2' or PYYMBNR='-1') -- AND (PZLMXID='-1' OR instr(PZLMXID,','||to_char(a.mxid00)||',')>0) -- order by a.xsxh00; -- cursor C_ypyzzb is select distinct zbbh00,yplb00 from (select zbbh00,yplb00 from xt_ypmbmx where MBID00=pmbid00 -- AND (PZBBH00='-1' OR instr(PZBBH00,','||to_char(zbbh00)||',')>0) -- and (yplb00 = PYYMBNR or PYYMBNR='-1') order by zbbh00,znxh00); cursor C_zlmbmx is select a.zlxmid,a.ts0000,a.tsdw00,a.mcsl00,b.zqcs00,a.bz0000,a.dw0000, a.mxid00,a.clbz00,a.pcid00,b.pcmc00,a.lbbh00,a.zlxmjc,a.BBID00,a.BB0000, decode(sign(pssksbh),1,nvl(a.CJKS00,Pssksbh),nvl(a.CJKS00,Vkdbq00)) CJKS00,a.CJKSMC,a.ZXKS00 from vw_xt_zlmbmx_zydzbl a,vw_bm_pc0000_zydzbl b where a.pcid00=b.pcid00(+) and MBID00=pmbid00 and (instr(PYYMBNR,'2')>0 or PYYMBNR='-1') AND (PZLMXID='-1' OR instr(PZLMXID,','||to_char(a.mxid00)||',')>0) and exists(select 1 from BM_ZLZD00 where ZLXMID=a.ZLXMID and nvl(TZRQ00,'20991231')>to_char(sysdate,'YYYYMMDD')) --and ZYMZBZ<>'0' order by a.plxh00,a.mxid00; cursor C_ypyzzb is select distinct ZBBH00,YPLB00 from (select ZBBH00,YPLB00,PLXH00,mxid00 from xt_ypmbmx where MBID00=pmbid00 AND ( ((PZBBH00='-1' OR instr(PZBBH00,','||to_char(zbbh00)||',')>0) and yplb00='0' and (instr(PYYMBNR,'0')>0 or PYYMBNR='-1')) or (yplb00='1' and (instr(PYYMBNR,'1')>0 or PYYMBNR='-1') ) ) order by plxh00,mxid00 ) ; begin Vsysdate:=sysdate; Vparams :='SP_ZS_YZMBYY_ZYDZBL('||nvl(to_char(Pmbid00),'null')||','||nvl(to_char(Pkdysbh),'null')||','|| nvl(to_char(Pzyid00),'null')||','||','|| nvl(to_char(Pczy000),'null')||',pzxjg00,pzxbz00,'''||Pcommit||''')'; SP_TRANSLOG(Vsysdate,'SP_ZS_YZMBYY_ZYDZBL',Pczy000,0,Vparams); begin select trim(VALUE0) into V_ICUSFWKS from XT_XTCS00 where NAME00='ZS_ICUSFWKS'; exception when OTHERS then V_ICUSFWKS:='N' ; end; begin select trim(VALUE0) into V_MBWHSFXZDYF from XT_XTCS00 where NAME00='YS_MBWHSFXZDYF'; exception when OTHERS then V_MBWHSFXZDYF:='N' ; end; select nvl(max(trim(value0)),'N') into V_PDYFYKKC from XT_XTCS00 where NAME00='ZS_PDYFYKKC'; select zwxm00 into Vczyxm0 from bm_ygbm00 where ygbh00=pczy000; select dqbq00,dqks00,YSZID0 into Vkdbq00,Vdqks00,v_YSZID0 from zy_brxxb0 where zyid00=pzyid00; V_icuks0 := Vdqks00; if Pssksbh>0 then V_icuks0:=Pssksbh; end if; select NVL(MAX(SFICU0),'0') INTO V_SFICU0 FROM BM_BMBM00 WHERE BMBH00=Vkdbq00; IF V_SFICU0='1' and V_ICUSFWKS='N' THEN begin select a.ksh000 into V_icuks0 from bm_bqks00 a, bm_bmbm00 b where a.ksh000=b.bmbh00 and b.sficu0='1' and a.bqh000=Vkdbq00; exception when OTHERS then raise E_ICUCW0; return; end; end if; begin --住院医生医嘱维护非药品编辑界面是否开展采集科室 select upper(VALUE0) into ZS_YZWHSFKZCJKS from XT_XTCS00 where name00='ZS_YZWHSFKZCJKS'; exception when others then ZS_YZWHSFKZCJKS:='N'; end; --是否使用参数中的长临标志 select NVL(MAX(TRIM(VALUE0)),'Y') into VCLBZSFTS from xt_xtcs00 where name00 ='ZS_CFMBYYCLBZSFTS'; --取服务器时间做医嘱启用时间 select count(*) into Vcounter from xt_xtcs00 where name00='ZS_YZ_DQSJWYZQYSJ' and value0='Y'; if Vcounter>0 then Vsyxtsj:=True; else Vsyxtsj:=False; end if; Vqysj00 := substr(pqyrqsj,12,5)||':00'; for zl in C_zlmbmx loop select sq_bq_yzmx00_yzmxid.nextval into Vyzmxid from dual where rownum=1; -- if Vsyxtsj=False then--取非药医嘱的启用时间 -- begin -- select substr(VALUE0,1,8) into Vqysj00 from xt_xtcs00 where NAME00 = 'BQ_FYYZMRQYSJ'; -- exception -- when others then -- Vqysj00:='10:00:00'; -- end; -- else -- end if; if VCLBZSFTS = 'N' then vclbz00 := zl.clbz00; else vclbz00 := vclbz00; end if; insert into bq_yjyz00(yzmxid, zyid00, yexm00, yzlb00, clbz00, pxsj00, zlxmid, zlxmjc, zxks00, kzys00, lrrq00, lrsj00, lrrxm0, qyrq00, qysj00, ts0000, tsdw00, bqh000, ksh000, pcid00, mcsl00, dw0000, pcmc00, yzzt00, tqfs00, yzcllb, bz0000,LJID00,MBRCID,BRZXJD,BBID00,BB0000,YZLY00,CJKS00,YSZID0) Values (Vyzmxid, pzyid00,decode(pyexm00,'全部','','母亲','',pyexm00),zl.lbbh00, decode(vclbz00, '2', '1', zl.clbz00), to_char(sysdate,'hh24:mi:ss'),zl.zlxmid,zl.zlxmjc,nvl(zl.zxks00,sf_zs_xmzxks_zydzbl(zl.zlxmid,Vkdbq00,V_icuks0)),pkdysbh,to_char(sysdate,'yyyymmdd'), to_char(sysdate,'hh24:mi:ss'),Vczyxm0,to_char(to_date(substr(pqyrqsj,1,10),'yyyy.mm.dd'),'yyyymmdd'),Vqysj00, decode(decode(Pclbz00, '2', '1', zl.clbz00),'0',0,'1',zl.ts0000), zl.tsdw00, vkdbq00,V_icuks0,NVL(zl.pcid00,0),nvl(zl.mcsl00,1),zl.dw0000,nvl(zl.pcmc00,' '), decode(pkdysbh,pczy000,'7','0'),'0','正常',zl.bz0000,Pljid00,Prcid00,Pzxid00,zl.BBID00,zl.BB0000, decode(sign(pssksbh),1,'2','0'),decode(zl.LBBH00,'4',decode(trim(ZS_YZWHSFKZCJKS),'Y',zl.CJKS00,''),''),v_YSZID0); --update zfbl00,yblb00 --自动生成附加费用 if sql%notfound then Verrmsg:='生成非药医嘱时发生错误!'; Raise ECustom; end if; sp_bq_yjfjfy_zydzbl(Vyzmxid,0); end loop; ls_str:=' '; Vcounter:=0; if V_MBWHSFXZDYF='Y' then --引用时是否做多个药房判断 select count(*) into LS_COU from xt_ypmbmx where mbid00=pmbid00 and yplb00='0'; select count(*) into LS_COU1 from yf_ypkcxx c where ypnm00 in(select ypnm00 from xt_ypmbmx where mbid00=pmbid00 and yplb00='0') and yfbmbh in (select yfbmbh from xt_ypfwfx where slbmbh = vkdbq00 and mrbz00 = 'Y' and yplbbh in(select decode(c.lbbh00,'1','1','2','2','0') YPLBBH from xt_ypmbmx z,bm_yd0000 c where mbid00=pmbid00 and z.ypnm00=c.ypnm00 and z.yplb00='0') and rownum=1); if LS_COU<>LS_COU1 then Verrmsg:='对不起,模板中的西(成)药存在多个药房,不能被引用!' ; Raise ECustom; end if; LS_COU:=0; LS_COU1:=0; select count(*) into LS_COU from xt_ypmbmx where mbid00=pmbid00 and yplb00='0'; select count(*) into LS_COU1 from yf_ypkcxx c where ypnm00 in(select ypnm00 from xt_ypmbmx where mbid00=pmbid00 and yplb00='1') and yfbmbh in (select yfbmbh from xt_ypfwfx where slbmbh = vkdbq00 and mrbz00 = 'Y' and yplbbh in(select decode(c.lbbh00,'1','1','2','2','0') YPLBBH from xt_ypmbmx z,bm_yd0000 c where mbid00=pmbid00 and z.ypnm00=c.ypnm00 and z.yplb00='1') and rownum=1); if LS_COU<>LS_COU1 then Verrmsg:='对不起,模板中的中药存在多个药房,不能被引用!' ; Raise ECustom; end if; end if; if(V_PDYFYKKC='Y') then --判断中药药品当天的预扣库存 for c_ypmc in( select YPMC00 from vw_xt_ypmbmx_zydzbl a where mbid00=pmbid00 and a.YPNM00 in(select B.YPNM00 from YF_YPKCXX b where a.ypnm00=b.ypnm00 and (jl0000*nvl(ZSL000,1)*z2j000)>ykkcsl and b.yfbmbh in (select yfbmbh from xt_ypfwfx where slbmbh = vkdbq00 and (PYYMBNR='1' or PYYMBNR='-1') and yplbbh in(select decode(c.lbbh00,'1','1','2','2','0') YPLBBH from xt_ypmbmx z,bm_yd0000 c where mbid00=pmbid00 and z.ypnm00=c.ypnm00 and z.yplb00='1') and rownum=1)) ) loop if ls_str=' ' then ls_str:=c_ypmc.ypmc00; else ls_str:=ls_str||'/'||c_ypmc.ypmc00; end if; end loop; --判断药房是否存在这个药品 for c_ypmc in( select YPMC00 from VW_XT_YPMBMX_ZYDZBL a where mbid00=pmbid00 and a.YPLB00='1' and a.YPNM00 not in(select B.YPNM00 from YF_YPKCXX b where a.ypnm00=b.ypnm00 and b.yfbmbh in (select yfbmbh from xt_ypfwfx where slbmbh = vkdbq00 and (PYYMBNR='1' or PYYMBNR='-1') and yplbbh in(select decode(c.lbbh00,'1','1','2','2','0') YPLBBH from xt_ypmbmx z,bm_yd0000 c where mbid00=pmbid00 and z.ypnm00=c.ypnm00 and z.yplb00='1') )) ) loop if ls_str=' ' then ls_str:=c_ypmc.ypmc00; else ls_str:=ls_str||'/'||c_ypmc.ypmc00; end if; end loop; end if; for zb in C_ypyzzb loop select sq_bq_yzmx00_yzmxid.nextval into Vyzmxid from dual where rownum=1; begin select decode(c.lbbh00,'1','1','2','2','0')into Vypdlbh from xt_ypmbmx z,bm_yd0000 c where mbid00=pmbid00 and zbbh00=zb.zbbh00 and z.yplb00=zb.yplb00 and rownum=1 and z.ypnm00=c.ypnm00; select yfbmbh into vyfbmbh from xt_ypfwfx where slbmbh = vkdbq00 and yplbbh =Vypdlbh and mrbz00 = 'Y' and rownum = 1; exception when others then Vyfbmbh := 0; end; for c_ypmc in( select YPMC00 from vw_xt_ypmbmx_zydzbl where mbid00=pmbid00 and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 and ypnm00 in(select ypnm00 from yf_ypkcxx a where YFBMBH=Vyfbmbh and ZTBZ00='1')) loop if ls_str=' ' then ls_str:=c_ypmc.ypmc00; else ls_str:=ls_str||'/'||c_ypmc.ypmc00; end if; end loop; ls_str:=' '; if(V_PDYFYKKC='Y') then --判断药品当天的预扣库存 for c_ypmc in( select YPMC00 from vw_xt_ypmbmx_zydzbl a where mbid00=pmbid00 and a.YPNM00 in(select B.YPNM00 from YF_YPKCXX b where a.ypnm00=b.ypnm00 and (ZSL000*z2j000)>ykkcsl and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 and b.yfbmbh=Vyfbmbh) ) loop if ls_str=' ' then ls_str:=c_ypmc.ypmc00; else ls_str:=ls_str||'/'||c_ypmc.ypmc00; end if; end loop; end if; ls_str1:=' '; for c_ypmc1 in( --and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 select a.YPMC00 from XT_YPMBMX A,bm_yd0000 B where A.YPNM00=B.YPNM00 and mbid00=pmbid00 and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 and b.tzrq00 is not null ) loop if ls_str1=' ' then ls_str1:=c_ypmc1.ypmc00; else ls_str1:=ls_str1||'/'||c_ypmc1.ypmc00; end if; end loop; begin --select a.YPMC00 into ls_str1 from XT_YPMBMX A,bm_yd0000 B where A.YPNM00=B.YPNM00 and mbid00=pmbid00 and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 and rownum=1; select zqdw00,yfmc00,yflbid,mrqssj,z.yfid00,z.pcid00 into Vzqdw00,Vypyfmc,Vyflbid,Vmrqssj,Vyfid00,V_PCID00 from vw_xt_ypmbmx_zydzbl z where mbid00=pmbid00 and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 and rownum=1; if Vsyxtsj=True then Vqysj00:= Vqysj00; --to_char(sysdate,'hh24:mi:ss'); elsif (Vmrqssj is not null)or (Trim(Vmrqssj)='') then Vqysj00:=Vmrqssj||':00'; elsif Vyflbid in (1,2) then begin select Substr(VALUE0,1,8) into Vqysj00 from xt_xtcs00 where NAME00 = 'BQ_ZSYZMRQYSJ'; exception when others then Vqysj00:='08:00:00'; end; else begin select Substr(VALUE0,1,8) into Vqysj00 from xt_xtcs00 where NAME00 = 'BQ_PTYZMRQYSJ'; exception when others then Vqysj00:='09:00:00'; end; end if; if Trim(Vzqdw00)='天'or Trim(Vzqdw00)='周' then Vclbz00:='0'; else Vclbz00:='1'; end if; exception when others then -- Verrmsg:=ls_str||'该药品已经停用'; -- Raise ECustom; Vqysj00:='10:00:00'; Vclbz00:='1'; end; if VCLBZSFTS <> 'N' then Vclbz00 := Pclbz00; end if; if Vclbz00 = '0' then --长嘱首日次数 全部 为0 begin select decode(trim(VALUE0),'Y',0,-1) into V_SRCS00 from xt_xtcs00 where NAME00 = 'ZS_SYSRCS'; if V_SRCS00=0 then V_SRCS00:= SF_ZS_SRCS00_DZBL(Vqysj00,Vyfid00,V_PCID00); end if; exception when others then V_SRCS00:=-1; end; else --临嘱首日次数 -1 V_SRCS00 := -1; end if; select count(1) into V_PDSFWKLY from xt_ypmbmx a,bm_yd0000 b where a.ypnm00=b.ypnm00 and mbid00=pmbid00 and b.ypczfl in(1,2); insert into bq_ypyz00( yzid00, zyid00, yexm00, yplbbh,clbz00, pxsj00, kzys00, lrrq00, lrsj00, lrrxm0, qyrq00, qysj00, zqs000, zqcd00, zqdw00, zqcyts, jycs00, bqh000, ksh000, yfbmbh, pcid00, pcmc00, yfid00, ypyfmc, yyzf00, yzzt00, YZLY00, SRCS00,YYRQ00,CFMC00,YSZID0) select Vyzmxid,pzyid00,decode(pyexm00,'全部','','母亲','',pyexm00),lbbh00, Vclbz00, to_char(sysdate,'hh24:mi:ss'),pkdysbh,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss'),Vczyxm0, to_char(to_date(substr(pqyrqsj,1,10),'yyyy.mm.dd'),'yyyymmdd'),Vqysj00, decode(Pclbz00,'0',1,nvl(yysj00,1)), nvl(z.zqcd00,1),z.zqdw00, ts0000,decode(lbbh00,'2',decode(V_PDSFWKLY,0,nvl(z.JYCS00,TS0000),0),0), Vkdbq00, decode(sign(Pssksbh),1,Pssksbh,Vdqks00),Vyfbmbh,nvl(z.pcid00,0),nvl(z.pcmc00,' '), z.yfid00,z.yfmc00,z.yyzf00,decode(pkdysbh,pczy000,'7','0'),decode(sign(pssksbh),1,'2','0'),V_SRCS00,Pyyrq00,Pcfmc00,v_YSZID0 from vw_xt_ypmbmx_zydzbl z where mbid00=pmbid00 and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 and rownum=1; if Not sql%Notfound then --插入药品医嘱明细表 insert into bq_ypyzmx(yzid00,yzmxid,ypnm00,ypmc00,ypgg00, mcsl00,jldw00,lyl000,zyfydw,z2j000,xmyfmc,tqfs00,yzcllb,dmbz00,LJID00,MBRCID,BRZXJD) select Vyzmxid,sq_bq_yzmx00_yzmxid.nextval,ypnm00,ypmc00,ypgg00, nvl(jl0000,0),jldw00, decode(lbbh00,'2',SF_BQ_LYLJS0(qzfs00,jl0000,z2j000,1,ts0000), nvl(ypzsl0/z2j000,decode(yplb00,'1',(decode(qzfs00,'2',CEIL(ts0000*jl0000/z2j000),'0',CEIL(jl0000/z2j000)*ts0000,ts0000*jl0000/z2j000)) ,'0',0))) ,zyfydw,z2j000,xmyfmc,'0','正常',DMBZ00,Pljid00,Prcid00,Pzxid00 from vw_xt_ypmbmx_zydzbl where mbid00=pmbid00 and zbbh00=zb.zbbh00 and yplb00=zb.yplb00 and ls_str not like '%'||ypmc00||'%'; select nvl(max(trim(value0)),'N') into V_YZFZSRCSMR from XT_XTCS00 where NAME00='ZS_YZFZSRCSMR'; if(V_YZFZSRCSMR='Y' and Vclbz00 = '0') then --用法大类为“输液”或者“注射”类的药品首日次数默认为1 update BQ_YPYZ00 set SRCS00=1 where YZID00=Vyzmxid and CLBZ00='0' and YFID00 in( select YFID00 from bm_ypyf00 where yflbid in(1,2)) ; end if; begin select to_number(VALUE0) into V_ZYMRCS from XT_XTCS00 where NAME00 = 'ZS_YZYYZCYMRCS'; exception when others then V_ZYMRCS := 0; end; if V_ZYMRCS >0 then update BQ_YPYZ00 set ZYMRCS = V_ZYMRCS where YZID00 = Vyzmxid and CLBZ00 = '1' and YPLBBH = '2' ; end if; --Update zfbl00,yblb00,qzfsid --自动生成附加费用 sp_bq_ypfjfy_zydzbl(Vyzmxid,0); end if; end loop; if pcommit='Y' then commit; end if; if ls_str<>' ' then Verrmsg:=''''||ls_str||''',等药品预扣库存不足或已暂停使用'; Raise ECustom; end if; if ls_str1<>' ' then Verrmsg:=''''||ls_str1||''',等药品已停止使用'; Raise ECustom; end if; exception when no_data_found then raise_application_error(-20001,substr('数据没有找到!*'||sqlerrm||','||Vparams,1,220)); when E_ICUCW0 then Raise_Application_Error(-20004,substrb('取ICU科室错误!*返回信息:'||Vparams,1,220)); when Ecustom then raise_application_error(-20010,substr(Verrmsg||'!*'||Vparams,1,220)); when others then raise_application_error(-20002,substr(nvl(sqlerrm, '原因不明出错')||'!*'||Vparams,1,220)); end; / --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%