create or replace procedure SP_ZS_CLJMBCSYZ_ZYDZBL --从路径模板产生医嘱 --过程说明 ( ad_KDYSBH in number default 0 ,--开单医生编号 ad_ZYID00 in number , --病人住院id as_QYRQSJ in char , --医嘱起用日期时间'2003050710:00:00' as_YEXM00 in char , --婴儿姓名 as_MXSTR0 in char , --jhmxid用,间隔的串 as_BXSTR0 in char , --jhmxid:YPNM00用,间隔的串,--为了解决备选替换问题 ad_CZY000 in number , --操作员id号 as_SFYYYZ in char default '0' , --是否延用原来的停止医嘱 as_YHMSG0 OUT VARCHAR, --存储过程提示的错误信息 as_SYSMSG OUT VARCHAR, --系统提示的错误信息 P_KDKSBH in number --开单科室编号 ) AS -- Person Date Comments -- dsm 2011.04.18 创建; -- dsm 2011.05.24 修改启用日期; -- dsm 2011.06.10 修改启用时间; -- dsm 2011.06.17 把默认的预停止日期和时间也插入; -- dsm 2011.06.23 用参数控制启用时间--与原来的医嘱相同的控制; -- dsm 2011.06.29 过期的引用:改用zlmx.BZKSRQ校验 -- dsm 2011.07.21 长期医嘱天数为0 -- dsm 2011.07.25 DMBZ00改用DMBZ01 -- dsm 2011.07.27 加参数ZS_LJ_SFXYZTZRQ判断是否写入医嘱表的停止日期 -- dsm 2011.08.01 取用法默认时间时加Trim: trim(YFID00)=trim(zlmx.yfid00) -- dsm 2011.08.14 YZCLLB的取值 -- dsm 2011.08.19 备注写入数据 -- dsm 2011.09.09 加库存判断 -- dsm 2011.09.15 增加CJKS00,BBID00,BBMC00 -- dsm 2011.10.19 修改生成YZNR00,YZNR01 -- dsm 2012.02.07 无库存(分无库存,无隶属) for ZYYS-20120208-002 -- dsm 2012.02.20 长期医嘱计算默认量 for ZYYS-20120217-003 -- dsm 2012.07.25 修改提示 for ZYYS-20120710-001 -- dsm 2013.01.04 修改提示 for ZYYS-20121224-001 -- dsm 2013.01.04 冲服的煎药次数为0 -- dsm 2013.01.31 ls_kcsl>-1000 改成 ls_kcsl<>-1000 and ls_kcsl<=0 for ZYYS-20130131-002 -- dsm 2013.02.21 提前开时,把qyrq00直接设置成开始日期; for ZYYS-20130218-001; -- dsm 2013.04.08 增加as_SFYYYZ参数控制是否延用停止的医嘱; for ZYYS-20130408-001 -- yangy 2013.10.09 中药医嘱生成错误,住院发药单位不一致的情况 -- 阮炳辉 2013.12.17 写SSXMJC for DZBL-20131216-003 -- XXM 2015.05.15 重新归档视图 DZBL-20150515-001 -- xuxm 2016.01.28 DZBL-20160128-002 路径脚本速度优化 -- XXM 2016.05.10 【医嘱】临床路径生成医嘱报错 ZYDZBL-20160510-001 -- XXM 2017.05.12 临床路径选择药品医嘱生成中药没有默认频次CYMRPC。 ZYDZBL-20170512-001 -- XXM 2017.09.05 诊疗管理--医嘱管理,调用SP_ZS_CLJMBCSYZ_ZYDZBL过程引用路径里面的手术,会把SS_YW0000.ssks00写成当前开单科室.请修改. ZYDZBL-20170901-001 -- wuzy 2018.06.05 过程加上日志 SP_TransLog for ZYDZBL-20180531-002 -- --------- ------------- ------------------------------- 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; --药品用法默认起始 Vqysj00 char(8); --起用时间 Vsyxtsj number(1); --是否使用系统时间作为医嘱的启用时间 VCLBZSFTS char(1); --是否使用参数中的长临标志 Vcounter number(10); --计数器变量 Vparams varchar2(255); --参数变量 Verrmsg varchar2(255); --错误提示变量 V_SFICU0 BM_BMBM00.SFICU0%type; V_icuks0 BM_BMBM00.BMBH00%TYPE; Ecustom exception; --错误变量 E_ICUCW0 EXCEPTION; E_NOKC EXCEPTION; --没有库存 Vold_no0000 LJ_JDYZMX.NO0000%type; --组号 Vfjfscbz number(2); --附加费生成标志 i number(2); -- tempStr varchar(200); -- 临时字符串 ls_zlxmid BM_ZLZD00.ZLXMID%type; ls_ypnm00 BM_YD0000.YPNM00%type; old_ypnm00 BM_YD0000.YPNM00%type; ls_ypgg00 BM_YD0000.YPGG00%type; ls_zlxmjc BM_ZLZD00.ZLXMJC%type; ls_ypmc00 BM_YD0000.YPMC00%type; ls_qzfs00 BM_YD0000.QZFS00%type; ls_lysl00 BQ_YPYZMX.LYL000%type; ls_ksrq varchar(10); ls_qyrq varchar(10); ls_qysj varchar(8); tmpstr varchar(200); tmpstr1 varchar(200); tmpstr2 varchar(200); ls_mrpcid BQ_YPYZ00.PCID00%type; ls_mrzqdw BQ_YPYZ00.ZQDW00%type; ls_mrzqcs BQ_YPYZ00.ZQDW00%type; ls_SFXYZTZRQ XT_XTCS00.VALUE0%type; ls_kcsl YF_YPKCXX.YKKCSL%TYPE; ls_yfbmbh YF_YPKCXX.YFBMBH%TYPE; ls_z2j000 BM_YD0000.Z2J000%type; v_srcs00 BQ_YPYZ00.SRCS00%type;--首日次数 v_zlxmlb BM_ZLZD00.LBBH00%type;--诊疗项目类别 v_ssdh00 SS_YW0000.SSDH00%type;--手术单号 v_zyh000 ZY_BRXXB0.ZYH000%type;--住院号 v_ryzdmc ZY_BRXXB0.RYZDMC%type;--入院诊断名称 cursor C_yzmxKC is select a.zlxmid,a.ypnm00,a.ZLXMJC,a.LBBH00,a.MCSL00 from VW_ZS_LJJHYZXX_ZYDZBL a,LJ_ZRZC00 b where a.ZYID00=ad_ZYID00 and a.ZRZCID=b.ZRZCID and nvl(b.JSRQ00,' ')=' ' and instr (as_MXSTR0,','||to_char(a.JHMXID)||',')>0 and a.ypnm00>0; cursor C_ljyzmx is select a.LJYZMX,a.zlxmid,a.ypnm00,a.mcsl00,b.zqcs00,a.yyzf00,sl0000,b.zqdw00 TSDW00,a.YFID00,b.zqcd00 ,b.zqdw00, a.jhmxid,a.clbz00,a.pcid00,a.pcmc00,a.zlxmjc,a.NO0000,a.lbbh00,a.yzlb00,a.DMBZ01 as DMBZ00,a.TZTS00, b.ZQCD00 ZQTS00,a.DW0000,a.yfmc00,a.ypgg00,a.jldw00,a.zhl000,a.ljid00,a.rcid00,brzxjd, a.TS0000,a.MXYF00,a.cycfbz,a.TZRQ00,a.TZSJ00,a.BZKSRQ,a.YZCLLB,a.BZ0000,a.CJKS00,a.BBID00,a.BBMC00,a.KSRQ00,BRYZZT,a.ypczfl,a.SSXMJC from VW_ZS_LJJHYZXX_ZYDZBL a,bm_pc0000 b,LJ_ZRZC00 c where a.ZRZCID=c.ZRZCID and nvl(c.JSRQ00,' ')=' ' and a.pcid00=b.pcid00(+) and a.ksrq00<= to_char(sysdate,'YYYYMMDD') and instr (as_MXSTR0,','||to_char(a.JHMXID)||',')>0 and a.ZYID00=ad_ZYID00 order by a.LJID00,a.RCID00,a.PXH000,a.NO0000,a.XH0000 ; begin Vsysdate:=sysdate; as_SYSMSG :='SP_ZS_CLJMBCSYZ_ZYDZBL('||nvl(to_char(AD_KDYSBH),'null')||','|| nvl(to_char(ad_ZYID00),'null')||','||as_QYRQSJ||','||as_YEXM00||','||as_MXSTR0||','||as_BXSTR0||','|| nvl(to_char(ad_CZY000),'null')||')'; SP_TRANSLOG(Vsysdate,'SP_ZS_CLJMBCSYZ_ZYDZBL',ad_CZY000,0,as_SYSMSG); select zwxm00 into Vczyxm0 from bm_ygbm00 where ygbh00=ad_czy000; select dqbq00,dqks00,ZYH000,RYZDMC into Vkdbq00,Vdqks00,v_zyh000,v_ryzdmc from zy_brxxb0 where zyid00=ad_zyid00; tmpstr:=' '; tmpstr1:=' '; tmpstr2:=' '; as_YHMSG0:=' ' ; /*for kcmx in C_yzmxKC loop --判断库存 begin begin --select YKKCSL into ls_kcsl from YF_YPKCXX a,BM_YD0000 b where yfbmbh=ls_yfbmbh and a.ypnm00=kcmx.ypnm00 and a.ZTBZ00='0' and a.YPNM00=b.YPNM00 and b.TZRQ00 is null; select YKKCSL into ls_kcsl from xt_ypfwfx a,YF_YPKCXX b where a.yplbbh=kcmx.lbbh00 and a.slbmbh=Vkdbq00 and a.YFBMBH=b.YFBMBH and YPNM00=kcmx.YPNM00 and rownum=1; exception when others then ls_kcsl:=-1000; end ; if kcmx.MCSL00<=0 then if tmpstr2=' ' then tmpstr2:=kcmx.zlxmjc; else tmpstr2:=tmpstr2||','||kcmx.zlxmjc; end if; end if; if ls_kcsl<>-1000 and ls_kcsl<=0 then if tmpstr=' ' then tmpstr:=kcmx.zlxmjc; else tmpstr:=tmpstr||','||kcmx.zlxmjc; end if; elsif ls_kcsl=-1000 then if tmpstr1=' ' then tmpstr1:=kcmx.zlxmjc; else tmpstr1:=tmpstr1||','||kcmx.zlxmjc; end if; end if; --判断库存 end end loop;*/ if tmpstr<>' ' then as_YHMSG0:=tmpstr||'药品, 在药房库存不足!'||to_char(ls_kcsl); end if; if tmpstr1<>' ' then if as_YHMSG0=' ' then as_YHMSG0:=tmpstr1||'药品,'||' 在药房已暂停使用!'; else as_YHMSG0:=as_YHMSG0||','||tmpstr1||'药品,'||' 在药房已暂停使用!'; end if; end if; if tmpstr2<>' ' then if as_YHMSG0=' ' then as_YHMSG0:=tmpstr2||'药品,'||'剂量不能为0!'; else as_YHMSG0:=as_YHMSG0||','||tmpstr2||'药品,'||' 剂量不对!'; end if; end if; if as_YHMSG0<>' ' then raise E_NOKC; end if; begin select VALUE0 into ls_SFXYZTZRQ from XT_XTCS00 where name00='ZS_LJ_SFXYZTZRQ'; exception when others then ls_SFXYZTZRQ:='N' ; end; V_icuks0 := Vdqks00; select NVL(MAX(SFICU0),'0') INTO V_SFICU0 FROM BM_BMBM00 WHERE BMBH00=Vkdbq00; IF V_SFICU0='1' 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; --取服务器时间做医嘱启用时间 select count(*) into Vcounter from xt_xtcs00 where name00='ZS_YZ_DQSJWYZQYSJ' and value0='Y'; if Vcounter>0 then Vsyxtsj:=1; else Vsyxtsj:=0; end if; Vqysj00 := substr(as_qyrqsj,12,5)||':00'; Vold_no0000:=0; tmpstr:=''; old_ypnm00:=0; for zlmx in C_ljyzmx loop --zlmx.BZKSRQ--> zlmx.ksrq00 modify by 20013.02.19 if zlmx.ksrq00>=to_char(sysdate,'YYYYMMDD') then ls_qyrq:=zlmx.bzksrq; else select to_char(sysdate,'YYYYMMDD') into ls_qyrq from dual; --过期的用引入的日期 end if; if nvl(zlmx.ypnm00,0)=0 then i:=instr(as_BXSTR0,','||to_char(zlmx.jhmxid)||':') ; if i>0 then tempStr:=substr(as_BXSTR0,i+length(','||to_char(zlmx.jhmxid)||':'),length(as_BXSTR0)-i-length(','||to_char(zlmx.jhmxid)||':')+1); if instr(tempStr,',')>0 then ls_zlxmid:=to_number(substr(tempStr,1,instr(tempStr,',')-1)); else ls_zlxmid:=to_number(tempStr); end if; else ls_zlxmid:=zlmx.zlxmid; end if; if Vsyxtsj=1 then select to_char(sysdate,'hh24:mi:ss') into Vqysj00 from dual; else begin select Substr(VALUE0,1,8) into Vqysj00 from xt_xtcs00 where NAME00 = 'BQ_PTYZMRQYSJ'; exception when others then Vqysj00:='08:00:00'; end; end if; if ls_zlxmid<>'0' then begin select ZLXMJC into ls_zlxmjc from vw_bq_zlxm00 where ZLXMID=ls_zlxmid ; exception when others then as_YHMSG0:='项目:'||zlmx.zlxmjc||'已暂停使用!'; raise E_NOKC; end ; end if ; select ZLXMJC,LBBH00 into ls_zlxmjc,v_zlxmlb from bm_zlzd00 where ZLXMID=ls_zlxmid; select sq_bq_yzmx00_yzmxid.nextval into Vyzmxid from dual where rownum=1; 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,yzly00, LJID00,MBRCID,BRZXJD,JHMXID,TZRQ00,TZSJ00, CJKS00,BB0000,BBID00,XGLYID,KDKSBH,SSXMJC) Values (Vyzmxid, ad_zyid00,as_yexm00,zlmx.yzlb00,zlmx.clbz00, to_char(sysdate,'hh24:mi:ss'),ls_zlxmid,nvl(zlmx.SSXMJC,zlmx.zlxmjc),sf_zs_xmzxks_zydzbl(zlmx.zlxmid,Vkdbq00,V_icuks0),ad_KDYSBH, to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss'),Vczyxm0, -- to_char(to_date(substr(as_QYRQSJ,1,10),'yyyy.mm.dd'),'yyyymmdd'),Vqysj00, ls_qyrq,Vqysj00, --0, zlmx.tsdw00, decode(zlmx.clbz00,'0',0,zlmx.zqts00), zlmx.tsdw00, vkdbq00,V_icuks0,NVL(zlmx.pcid00,0),nvl(zlmx.mcsl00,1),zlmx.dw0000,nvl(zlmx.pcmc00,' '), '7','0',nvl(zlmx.YZCLLB,'正常'),zlmx.bz0000,'1', zlmx.ljid00,zlmx.rcid00,zlmx.brzxjd,zlmx.jhmxid,decode(ls_SFXYZTZRQ,'Y',zlmx.TZRQ00,''),decode(ls_SFXYZTZRQ,'Y',zlmx.TZSJ00,''), decode(zlmx.CJKS00,0,Vkdbq00,zlmx.CJKS00),zlmx.BBMC00,zlmx.BBID00,decode(as_SFYYYZ,'0',0,zlmx.LJYZMX),P_KDKSBH,decode(nvl(zlmx.SSXMJC,''),'','',zlmx.ZLXMJC)); --自动生成附加费用 if sql%notfound then Verrmsg:='生成非药医嘱时发生错误!'; Raise ECustom; end if; sp_bq_yjfjfy(Vyzmxid,0); old_ypnm00:=zlmx.ypnm00; --插入手术业务表 20131217 阮炳辉 if v_zlxmlb = '6' then select SQ_SS_YW0000_SSDH00.nextval into v_ssdh00 from dual; insert into SS_YW0000 (SSDH00, MZZYBZ, ZYHGHH, SSZT00, SQYS00, SQZD00, SQBQSM, BZ0000, SQKS00, SQR000, CZY000, SRKSLB, YYBZ00, YYSSRQ, YYSSSJ, JZBZ00, YZMXID, SSYS00, SSYSXM, SSZS00, SSZSXM, MZBH00, MZMC00, GLDJMC, SSKS00, SSTC00, SQBQ00, GRQK00, MZYS00, MZYSXM, SQRQ00, SQSJ00, SSQSRQ, SSQSSJ, CZRQ00 ) values( v_ssdh00, '1', v_zyh000, '0', ad_CZY000, v_ryzdmc, '', '', Vdqks00, ad_CZY000, ad_CZY000, sf_ss_yw0000_srkslb ('9'), 'Y', to_char(sysdate,'YYYYMMDD'), to_char(sysdate,'HH24:MI:SS'), 'N', Vyzmxid, ad_CZY000, Vczyxm0, '', '', '17', '其它麻醉', '',sf_zs_xmzxks_zydzbl(zlmx.zlxmid,Vkdbq00,V_icuks0), '', Vkdbq00, '', '', '', TO_CHAR (SYSDATE, 'YYYYMMDD'), to_char(sysdate, 'HH24:MI:SS'), to_char(sysdate,'YYYYMMDD'), to_char(sysdate,'HH24:MI:SS'), to_char(sysdate, 'YYYYMMDDHH24:MI:SS') ); insert into SS_YWMX00 (ID0000, SSDH00, SFZSS0, SSBH00, SSDJMC, SSXMJC, QKDJMC, BWMC00 ) values( sq_ss_ssywmx_id0000.NEXTVAL, v_ssdh00, '1', ls_zlxmid, '', zlmx.zlxmjc, '', '' ); end if; elsif zlmx.ypnm00>0 then --药品 if zlmx.no0000<>Vold_no0000 or zlmx.no0000=0 then---插入主表zlmx.no0000相同的是同组的 begin select decode(zlmx.lbbh00,'1','1','2','2','0') into Vypdlbh from dual; 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; if nvl(zlmx.yfid00,' ')=' ' or zlmx.yfid00='' then Vyflbid:=0; end if; begin select YFLBID,nvl(MRQSSJ,'A') into Vyflbid,Vqysj00 from BM_YPYF00 where trim(YFID00)=trim(zlmx.yfid00); exception when others then Vyflbid:=0; --Vqysj00:='08:00:00'; end; if Vsyxtsj=1 then select to_char(sysdate,'hh24:mi:ss') into Vqysj00 from dual; else if Vqysj00='A' and 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; elsif Vqysj00='A' then 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; end if; select sq_bq_yzmx00_yzmxid.nextval into Vyzmxid from dual where rownum=1; begin select PCID00,ZQDW00,ZQCS00 into ls_mrpcid,ls_mrzqdw,ls_mrzqcs from VW_BQ_CYMRPC where rownum=1; exception when No_Data_Found then begin ls_mrpcid := 0; ls_mrzqcs := 0; ls_mrzqdw := null; end; end; if zlmx.clbz00 = '0' then --长嘱首日次数 全部 begin select ceil(zqcs00/hszqcd*24) into v_srcs00 from bm_pc0000 where pcid00=zlmx.pcid00; exception when No_Data_Found then begin v_srcs00 := -1; end; end; else --临嘱首日次数 -1 v_srcs00 := -1; end if; insert into bq_ypyz00( yzid00, zyid00, yexm00, yplbbh,clbz00, pxsj00, kzys00, lrrq00, lrsj00, lrrxm0, qyrq00, qysj00, zqs000, zqcd00, zqdw00,jycs00,zqcyts, bqh000, ksh000, yfbmbh, pcid00, pcmc00, yfid00, ypyfmc, yyzf00, yzzt00,yzly00,TZRQ00,TZSJ00,BZ0000, KDKSBH, YSZID0, YYRQ00, YYSJ00,SRCS00) values( Vyzmxid,ad_zyid00,as_yexm00,zlmx.lbbh00,zlmx.clbz00, to_char(sysdate,'hh24:mi:ss'),ad_kdysbh,to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss'),Vczyxm0, ls_qyrq,Vqysj00, 1, nvl(zlmx.zqcd00,1),nvl(zlmx.zqdw00,'天'),decode(zlmx.lbbh00,'2',decode(zlmx.ypczfl,'0',zlmx.ts0000,0),0),decode(zlmx.lbbh00,'2',zlmx.ts0000,1), --zlmx.ts0000, Vkdbq00, Vdqks00,Vyfbmbh,decode(zlmx.cycfbz,'0',zlmx.pcid00,'1',ls_mrpcid),nvl(zlmx.pcmc00,' '), zlmx.yfid00,zlmx.yfmc00,zlmx.yyzf00,'7','1',decode(ls_SFXYZTZRQ,'Y',zlmx.TZRQ00,''),decode(ls_SFXYZTZRQ,'Y',zlmx.TZSJ00,''),substrb(ZLMX.BZ0000,0,10), P_KDKSBH, (select yszid0 from zy_brxxb0 where zyid00=ad_zyid00),--医生组id ls_qyrq,Vqysj00,--用药日期时间和起用日期时间一样 v_srcs00 --首日次数 ); Vfjfscbz:=0; end if; --取得备用药品begin i:=instr(as_BXSTR0,','||to_char(zlmx.jhmxid)||':'); if i>0 then tempStr:=substr(as_BXSTR0,i+length(','||to_char(zlmx.jhmxid)||':'),length(as_BXSTR0)-i-length(','||to_char(zlmx.jhmxid)||':')+1); if instr(tempStr,',')>0 then ls_ypnm00:=to_number(substr(tempStr,1,instr(tempStr,',')-1)); else ls_ypnm00:=to_number(tempStr); end if; else ls_ypnm00:=zlmx.ypnm00; end if; --取得备用药品end select YPGG00,YPMC00,QZFS00,Z2J000 into ls_ypgg00,ls_ypmc00,ls_qzfs00,ls_z2j000 from bm_yd0000 where YPNM00=ls_ypnm00; /*--判断库存 begin --select yfbmbh into ls_yfbmbh from xt_ypfwfx where yplbbh=zlmx.lbbh00 and mrbz00='Y' and slbmbh=Vkdbq00 and rownum<=1; begin --select YKKCSL into ls_kcsl from YF_YPKCXX where yfbmbh=ls_yfbmbh and ypnm00=ls_ypnm00 and ZTBZ00='0' ; select YKKCSL into ls_kcsl from xt_ypfwfx a,YF_YPKCXX b where a.yplbbh=zlmx.lbbh00 and a.slbmbh=Vkdbq00 and a.YFBMBH=b.YFBMBH and YPNM00=ls_YPNM00 and rownum=1; exception when others then ls_kcsl:=-1; end ; if ls_kcsl=0 then tmpstr:=ls_ypmc00||', 可能是药品目录已停用或规格已变化,请通知网络中心重新维护!'; as_YHMSG0:='YPNM00='||to_char(ls_ypnm00)||' 药品名称'||'库存不足,可能是药品目录已停用或规格已变化,请通知网络中心重新维护!'; raise E_NOKC; elsif ls_kcsl<0 then tmpstr:='在药房已暂停使用!'; as_YHMSG0:='YPNM00='||to_char(ls_ypnm00)||' 药品名称'||ls_ypmc00||'在药房已暂停使用!'; raise E_NOKC; end if; --判断库存 end*/ if zlmx.clbz00='2' then select decode(ls_qzfs00,'2',CEIL(zlmx.ts0000*zlmx.mcsl00),'0',CEIL(zlmx.mcsl00)*zlmx.ts0000,zlmx.ts0000*zlmx.mcsl00) into ls_lysl00 from dual; end if; if zlmx.clbz00='1' then if zlmx.lbbh00 = '2' then--计算草药医嘱领药量 ls_lysl00 := SF_BQ_LYLJS0(ls_qzfs00,zlmx.mcsl00,ls_z2j000,1,zlmx.ts0000); else ls_lysl00:=zlmx.sl0000; end if; end if; if zlmx.clbz00='0' then ls_lysl00:=SF_BQ_LYLJS0(ls_qzfs00,zlmx.mcsl00,ls_z2j000,zlmx.zqcs00,1); --ls_lysl00:=0; end if; insert into bq_ypyzmx(yzid00,yzmxid,ypnm00,ypmc00,ypgg00, mcsl00,jldw00,lyl000,zyfydw,z2j000,tqfs00,yzcllb,dmbz00,xmyfmc, LJID00,MBRCID,BRZXJD,JHMXID,XGLYID) values(Vyzmxid,sq_bq_yzmx00_yzmxid.nextval,ls_ypnm00,ls_ypmc00,ls_ypgg00, zlmx.mcsl00,zlmx.jldw00, ls_lysl00, zlmx.dw0000,zlmx.zhl000,'0',nvl(zlmx.YZCLLB,'正常'),nvl(zlmx.DMBZ00,'0'),zlmx.mxyf00, zlmx.ljid00,zlmx.rcid00,zlmx.brzxjd,zlmx.jhmxid,decode(as_SFYYYZ,'0',0,zlmx.LJYZMX)); /*if Vfjfscbz=0 then sp_bq_ypfjfy(Vyzmxid,0); Vfjfscbz:=1; end if;*/ if (Vold_no0000<>0 and old_ypnm00>0) or old_ypnm00=0 then --生成YZNR00,YZNR01 SP_BQ_YPFJFY (Vyzmxid,ad_CZY000); end if; end if; Vold_no0000:=zlmx.NO0000; old_ypnm00:=zlmx.ypnm00; end loop; if Vold_no0000<>0 and old_ypnm00>0 then --生成YZNR00,YZNR01 SP_BQ_YPFJFY (Vyzmxid,ad_CZY000); end if; exception when no_data_found then as_YHMSG0:='数据没有找到!'; raise_application_error(-20001,substr('数据没有找到!*'||sqlerrm||','||as_SYSMSG,1,220)); when E_ICUCW0 then as_YHMSG0:='取ICU科室错误!'; Raise_Application_Error(-20004,substrb('取ICU科室错误!*返回信息:'||as_SYSMSG,1,220)); when E_NOKC then Raise_Application_Error(-20010,substrb(as_YHMSG0||'*',1,220)); when Ecustom then as_YHMSG0:=Verrmsg; raise_application_error(-20010,substr(Verrmsg||'!*'||as_SYSMSG,1,220)); when others then as_YHMSG0:=Verrmsg; raise_application_error(-20002,substr(nvl(sqlerrm, '原因不明出错')||'!*'||as_SYSMSG,1,220)); end; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%