CREATE OR REPLACE PROCEDURE SP_BLJK_YZCL00( P_Flag in char,--医嘱操作标志医嘱变更标识(tj-医嘱提交,tz-医嘱停止,cx-医嘱撤销) P_UserId in char,--用户ID1 P_UserName in char,--用户名2 P_OrderSn in char,--医嘱号3 P_ParentOrderSn in char,--主医嘱号4 P_Ipid in char,--住院流水号5 P_Pid in char,--病人ID6 P_Creator in char,--医嘱创建人7 P_CreateTime in char,--医嘱创建时间8 格式:20161018122745 P_Modifier in char,--修改人9 P_ModifyTime in char,--修改时间10 P_LongFlag in char,--长临标志11 P_OrderType in char,--医嘱类型12 P_OrderClass in char,--医嘱分类13 P_OrderCode in char,--医嘱代码14 P_OrderContent in char,--医嘱内容15 P_DoctorMemo in char, --备注16 P_FrequencyCode in char,--17 P_FrequencyName in char,--18 P_RoutecyCode in char,--19 P_RoutecyName in char,--20 P_PrescriptionCount in char,--21 P_Duration in char,--22 P_DurationUnit in char,--23 P_StartTime in char,--24 P_IntendingStopTime in char,--25 P_StopTime in char,--26 P_SubmitTime in char,--27 P_SubmitId in char,--28 P_SubmitName in char,--29 P_StopId in char,--30 P_StopName in char,--31 P_AffirmTime in char,--32 P_AffirmId in char,--33 P_AffirmName in char,--34 P_FirstExecuteTime in char,--35 P_FirstExecuteId in char,--36 P_FirstExecuteName in char,--37 P_AffirmStopTime in char,--38 P_AffirmStopId in char,--39 P_AffirmStopName in char,--40 P_IsSubOrder in char,--41 P_IsEmergency in char,--42 P_CreateDeptID in char,--下达科室43 P_InfantName in char,--婴儿姓名44 P_NarcoticDrugClassCode in char,--毒麻药分类代码45 P_AntibioticClassCode in char,--抗生素分类代码46 P_SelfDrug in char,--自带药(西、中)N-非自带药 Y-自带药 Q-其它47 P_DrugSpec in char,--药品规格48 P_DecoctionCode in char,--特殊煎法代码(草药)49 P_DecoctionName in char,--特殊煎法名称(草药)50 P_RouteCode in char,--途径代码(西药)51 P_RouteName in char,--途径名称(西药)52 P_Dose in char,--剂量53 P_DoseUnitCode in char,--计量单位代码54 P_IsSelfFlag in char default 'N',--自费标志(Y-是 N-否)55 P_SkinTest in char,--皮试(N—不皮试,Y—皮试)56 P_SkinTestRESULT in char,--皮试结果(阴性/阳性57 P_SkinTestopId in char,--皮试操作员Id58 P_SkinTestopName in char,--皮试操作员名称59 P_SkinTestTime in char,--皮试时间60 P_DosageFormCode in char,--剂型代码61 P_DrugType in char,--药品类型(XY—西、ZCY—成药、CY—草药)62 P_BZ0000 in char,--备注63 P_DrugQty in char,--药品数量64 P_SampleCode in char,--标本代码65 P_IsUrgent in char,--加急标志(Y-是 N-否)66 P_PerformedDeptCode in char,--执行科室代码67 P_ExamCode in char,--检查类别代码68 P_ExamOrderCode in char,--检查项目代码69 P_ExamItemCode in char, --检查部位代码70 P_LSH000 in number,--流水号71 P_PSID00 in char default '',--72 P_PSMC00 in char default '',--73 P_AcqDeptCode in char default '',--74 P_TypeProperty in char default 'IN', --75 P_FirstNum in char default '',--首日次数76 P_DrugDeptCode in char default '',--发往药房 P_DecoctionNum in char default '', --煎药次数 P_ChiefComplaint in char default '',--主诉79 P_HistorySummary in char default '',--现病史80 P_IsCPP in char default '0', --是否路径医嘱81 P_MainDiagnosis in char default '0' --主要诊断82 ) as -- Person Date Comments -- zhaoxz 2016-10-24 修改SP_BQ_YPYZQT、SP_BQ_YJYZQT入参个数 -- liuj 2016-10-28 修改日期格式转换及增加入参 P_TypeProperty -- liuj 2016-10-31 入参为停止的时候,判断,HIS当前医嘱状态,如果是核对状态 转 停止 为撤销。 -- liuj 2016-11-02 增加传入首日次数 -- liuj 2016-11-10 增加传入皮试名称 -- liuj 2016-11-25 增加传入发往药房 -- liuj 2016-11-25 增加传入代煎次数 -- liuj 2016-11-30 接口传入的用户ID原是XKH000都换为YGBH00 -- liuj 2017-02-17 增加描述性医嘱如有绑定费用则ZLXMID为实际的ZLXMID -- liuj 2017-04-14 增加参数ZYBLJK_SFXXWPDSFXTJ判断是否限制未绑定收费项目不允许提交医嘱 -- liuj 2017-04-21 增加 P_TypeProperty='CD'为处理草药出院带药 -- liuj 2017-09-19 1.P_Ipid转为number处理。2.增加开关处理是否写入电子公告。 -- dsm 2018-01.13 增加病史等 -- liuj 2018.01.15 增加医嘱调用预停止模式 -- liuj 2018.01.15 增加写入药品规格字段到接口表 -- wzy 2018.01.16 字典取出描述医嘱不修改zlxmid为0 ypyzrow BQ_YPYZ00%ROWTYPE; yjyzrow BQ_YJYZ00%ROWTYPE; ls_YZZT00 BLJK_YZJKB0.YZZT00%type; ls_YZCLLB BLJK_YZJKB0.YZCLLB%type; ls_ZLXMID BLJK_YZJKB0.ZLXMID%type; ls_YPNM00 BLJK_YZJKB0.YPNM00%type; ls_BZID00 BLJK_YZJKB0.BZID00%type; ls_BB0000 BLJK_YZJKB0.BBMC00%type; lv_ZYID00 ZY_BRXXB0.ZYID00%type; ls_tzrq00 varchar2(8); ls_tzsj00 varchar2(8); LS_DQBQ00 ZY_BRXXB0.DQBQ00%type; ls_ZYFYDW BLJK_YZJKB0.ZYFYDW%type; ls_YFBMBH BLJK_YZJKB0.YFBMBH%type; ls_KFBZ00 BLJK_YZJKB0.KFBZ00%type; ls_YZLB00 BLJK_YZJKB0.YZLB00%type; ls_yplbbh BLJK_YZJKB0.YPLBBH%type; ls_czy000 BM_YGBM00.YGBH00%type; lv_SFJE00 BM_YYSFXM.SFJE00%TYPE; Ecustom exception; --错误变量 errorstr varchar2(200); ls_zxcgbz number(2); ls_tsxx00 varchar2(200); ls_xxxx00 varchar2(200); lv_Flag varchar2(2); --存储P_Flag变量 lv_PerformedDeptCode varchar2(5); lv_COUNT0 number(6); ls_DLBQZX BM_ZLZD00.DLBQZX%TYPE; lv_YYID00 varchar2(20); lv_ZYBLJK_SFXXWPDSFXTJ varchar2(20); lv_ZYBLJK_YZCZSFXRDZGG varchar2(20); ls_AcqDeptCode BLJK_YZJKB0.CJKS00%type; ls_MODE number(4); LS_TZYZSFXYHD XT_XTCS00.value0%TYPE; begin errorstr:=''; lv_PerformedDeptCode:=trim(P_PerformedDeptCode); lv_Flag:=P_Flag; if P_Flag='tz' then if P_OrderType='XY' or P_OrderType='ZCY' or P_OrderType='CY' then errorstr:='HIS医嘱表无对应数据'||P_ParentOrderSn; select * into ypyzrow from BQ_YPYZ00 where YZID00 in(select YZID00 from BLJK_YZJKB0 where WBZID0=P_ParentOrderSn); if ypyzrow.YZZT00='1' then lv_Flag:='cx'; end if; else select * into yjyzrow from BQ_YJYZ00 where YZMXID in(select YZMXID from BLJK_YZJKB0 where WBYZID=P_OrderSn); if yjyzrow.YZZT00='1' then lv_Flag:='cx'; end if; end if; end if; begin select to_number(P_Ipid) into lv_ZYID00 from dual; exception when others then errorstr:='住院流水号错误('||P_Ipid||')'; raise Ecustom; end; --医嘱操作是否写入电子公告 select nvl(max(trim(VALUE0)),'N') into lv_ZYBLJK_YZCZSFXRDZGG from XT_XTCS00 where NAME00='ZYBLJK_YZCZSFXRDZGG'; if lv_Flag='tj' then ls_YZZT00:='2'; --取属于输血项目ID select nvl(max(trim(VALUE0)),'1') into lv_ZYBLJK_SFXXWPDSFXTJ from XT_XTCS00 where NAME00='ZYBLJK_SFXXWPDSFXTJ'; errorstr:='住院流水号错误('||P_Ipid||')'; select DQBQ00 into LS_DQBQ00 from ZY_BRXXB0 where ZYID00=lv_ZYID00; errorstr:=''; select count(*) into lv_COUNT0 from BLJK_YZJKB0 where ZYID00=lv_ZYID00 and WBYZID=P_OrderSn and ZYID00 is not null and YZMXID is not null; if lv_COUNT0>0 then errorstr:='医嘱【'||P_OrderSn||'】请勿重复提交!'; raise Ecustom; end if; errorstr:=''; --SelfDrug自带药(西、中)N-非自带药 Y-自带药 Q-其它 CD-草药出院带药 if P_SelfDrug='Y' then ls_YZCLLB:='自备药'; elsif P_SelfDrug='C' then ls_YZCLLB:='出院带药'; else ls_YZCLLB:='正常'; end if; IF P_TypeProperty='OUT' or P_TypeProperty='CD' then ls_YZCLLB:='出院带药'; END IF; errorstr:='医嘱代码('||P_OrderCode||')'; if P_OrderType='XY' or P_OrderType='ZCY' or P_OrderType='CY' then select YPNM00,ZYFYDW into ls_YPNM00,ls_ZYFYDW from BM_YD0000 where YPNM00=P_OrderCode; ls_ZLXMID:=0; elsif P_OrderType='ZT' then ls_ZLXMID:=P_OrderCode; --描述性医嘱如绑定费用,则为原来的ZLXMID select nvl(sum(nvl(b.sfje00,0)),0) into lv_SFJE00 from xt_zlsfgx a,bm_yysfxm b where a.sfxmid=b.sfxmid and a.zlxmid=ls_ZLXMID; if lv_SFJE00=0 and P_OrderCode is null then ls_ZLXMID:=0; end if; ls_YPNM00:=0; ls_YZLB00:=9; else select ZLXMID,DW0000,LBBH00 into ls_ZLXMID,ls_ZYFYDW,LS_YZLB00 from BM_ZLZD00 where zlxmid=P_OrderCode; if (P_OrderType<>'SW') and lv_ZYBLJK_SFXXWPDSFXTJ='1' then select nvl(sum(nvl(b.sfje00,0)),0) into lv_SFJE00 from xt_zlsfgx a,bm_yysfxm b where a.sfxmid=b.sfxmid and a.zlxmid=P_OrderCode; if(lv_SFJE00=0) then errorstr:=P_OrderContent||'未绑定收费项目,限制提交医嘱,如有疑问请联系管理员!'; raise Ecustom; end if; end if; ls_YPNM00:=0; end if; errorstr:=''; if nvl(trim(P_DrugDeptCode),' ')<>' ' then LS_YFBMBH:= TO_NUMBER(trim(P_DrugDeptCode)); else LS_YFBMBH := 0; end if; if ls_YPNM00>0 and LS_YFBMBH=0 then begin select count(1) into lv_COUNT0 from bm_yd0000 a,yf_ypkcxx b where a.ypnm00=ls_YPNM00 and a.ypnm00=b.ypnm00 and b.ZTBZ00='0' and a.ypczfl<>'0' and a.lbbh00='2'; if lv_COUNT0>0 then select YFBMBH into LS_YFBMBH from yf_ypkcxx a,bm_yd0000 b where a.ypnm00=b.ypnm00 and b.ypnm00=ls_YPNM00 and a.ZTBZ00='0' and rownum=1; else select YFBMBH into LS_YFBMBH from xt_ypfwfx where slbmbh = LS_DQBQ00 and yplbbh =decode(P_DrugType,'XY','0','ZCY','1','CY','2') and mrbz00 = 'Y' and rownum = 1; end if; exception when others then LS_YFBMBH := 0; end; end if; ls_BZID00:=''; ls_KFBZ00:='N'; begin select BBMC00 into ls_BB0000 from BM_BBZD00 where BBID00=P_SampleCode; exception when others then ls_BB0000:=''; end; --限制非法执行科室 linzy 2016.09.13 if(trim(lv_PerformedDeptCode)='0' or trim(lv_PerformedDeptCode)='null') and ls_ZLXMID>0 then raise_application_error(-20001,SUBSTR('系统错误!*'||'执行科室不正确,请双击项目修改执行科室后重新提交!',1,220)); rollback; return; end if; --如果执行科室为空,则采用HIS的执行科室规则进行处理 linzy 2016.09.13 if nvl(trim(lv_PerformedDeptCode),' ')=' ' and ls_ZLXMID>0 then select nvl(DLBQZX,'N') into ls_DLBQZX from BM_ZLZD00 where ZLXMID = ls_ZLXMID; --如果是本病区执行为Y 则取病人所在科室 if(ls_DLBQZX='Y') then select DQKS00 into lv_PerformedDeptCode from ZY_BRXXB0 where ZYID00=lv_ZYID00; else --先取诊疗项目的发往方向,如果没有再取诊疗项目执行科室 select trim(YYID00) into lv_YYID00 from BM_BMBM00 where BMBH00=P_CreateDeptID; select count(1) into lv_COUNT0 from VW_XT_XMFWFX_ZXKS where ZLXMID = ls_ZLXMID and SQXMKS = P_CreateDeptID; if lv_COUNT0>0 then select JSXMKS into lv_PerformedDeptCode from (select JSXMKS from VW_XT_XMFWFX_ZXKS where ZLXMID = ls_ZLXMID and SQXMKS = P_CreateDeptID order by decode(jsxmks,P_CreateDeptID,0,1),decode(trim(yyid00),lv_YYID00,1,2),ksxmid) where rownum=1; else select count(1) into lv_COUNT0 from VW_XT_KSZXXM_ZXKS where ZLXMID =ls_ZLXMID; if lv_COUNT0>0 then select ZXKSBH into lv_PerformedDeptCode from (select ZXKSBH from VW_XT_KSZXXM_ZXKS where ZLXMID =ls_ZLXMID order by decode(zxksbh,P_CreateDeptID,0,1), decode(trim(yyid00),lv_YYID00,1,2),decode(YYFZ00,'',0,1),ksxmid) where rownum=1; end if; end if; end if; --如果还是没有则取下达科室 if nvl(trim(lv_PerformedDeptCode),' ')=' ' then lv_PerformedDeptCode := P_CreateDeptID; end if; end if; ----最后判断限制非法执行科室 linzy 2016.09.13 if (ls_ZLXMID>0) then select count(1) into lv_count0 from BM_BMBM00 where BMBH00=lv_PerformedDeptCode and BMBH00<>0; if lv_count0=0 then RAISE_APPLICATION_ERROR(-20001,SUBSTR('系统错误!*'||'执行科室不正确,请核对修改后重新提交!',1,220)); rollback; return; end if; end if; --sfchen 20180114 -- if P_AcqDeptCode is not null then ls_AcqDeptCode:=P_AcqDeptCode; if (ls_ZLXMID=3280) or (ls_ZLXMID=3275) then ls_AcqDeptCode:=55; elsif lv_PerformedDeptCode=51 then select NVL(max(BQH000),P_CreateDeptID) INTO ls_AcqDeptCode FROM BM_BQKS00 WHERE YXBZ00='1' AND KSH000=P_CreateDeptID; end if; --end if; --ls_AcqDeptCode:=55; insert into BLJK_YZJKB0(WBYZID, WBZID0, ZYID00, BRID00, ZYH000, YEXM00, YPLBBH, DMBZ00, CLBZ00, KZYS00 , LRRQ00, LRSJ00, LRRXM0 ,XGYS00, XGRQ00, XGSJ00, XGRXM0, YTZRQ0, YTZSJ0, HDRXM0, QYRQ00, QYSJ00, TZRQ00, TZSJ00 ,TZYS00, TZRXM0, ZQS000, ZQDW00, ZQCD00, ZQCYTS, JYCS00, BQH000, KSH000, YFBMBH, PCID00, PCMC00, YFID00 ,YPYFMC, YYZF00, YZZT00, YZMXSM, BZID00, BZ0000, SJQSRQ, SJQSSJ, /* TZCZRQ, TZCZSJ, SFCDBZ,*/ YZLY00, KFBZ00 ,/*DYCJSL, DYCJQL, DECJSL, DECJQL,*/YPBM00, MCSL00, JLDW00, YPMC00, JZBZ00, YPNM00, ZLXMID, YZMC00 ,PSID00, PSMC00, PSTGBZ, PSXGID, XMYFMC, YZCLLB, LYL000, ZYFYDW, ZFBZ00, PSRID0, PSRXM0, PSSJ00, BBID00 ,BBMC00, ZXKS00, CJKS00, BWMC00,YZLB00,LSH000,CYTS00,SubmitID,SubmitName,srcs00,BLXBS0,BLZS00,SFLJYZ,XMSFJJ,ZYZD00,YPGG00) values(P_OrderSn,P_ParentOrderSn,lv_ZYID00,P_Pid,null,P_InfantName,decode(P_DrugType,'XY','0','ZCY','1','CY','2'),decode(nvl(P_NarcoticDrugClassCode,'0'),'0','0','1'),decode(P_LongFlag,'Y','0','1') ,P_Creator,substr(P_CreateTime,1,8),TO_CHAR(to_date(P_CreateTime,'YYYYMMDDHH24MISS'),'HH24:MI:SS' ),P_UserName ,P_Modifier,substr(P_ModifyTime,1,8),TO_CHAR(to_date(P_ModifyTime,'YYYYMMDDHH24MISS'),'HH24:MI:SS' ),P_Modifier,substr(P_IntendingStopTime,1,8),TO_CHAR(to_date(P_IntendingStopTime,'YYYYMMDDHH24MISS'),'HH24:MI:SS' ),null,substr(P_StartTime,1,8),TO_CHAR(to_date(P_StartTime,'YYYYMMDDHH24MISS'),'HH24:MI:SS' ),null,null ,P_StopId,P_StopName,P_Duration,P_DurationUnit,1,nvl(P_PrescriptionCount,1),decode(P_DrugType,'CY',nvl(P_DecoctionNum,0),0),LS_DQBQ00,P_CreateDeptID,LS_YFBMBH,nvl(P_FrequencyCode,0),P_FrequencyName,decode(P_DrugType,'XY',trim(P_RouteCode),'ZCY',trim(P_RouteCode),trim(P_RoutecyCode)) ,decode(P_DrugType,'XY',P_RouteName,'ZCY',P_RouteName,P_RoutecyName),P_DoctorMemo,'2',ls_YZZT00,ls_BZID00,P_DoctorMemo,null,null,'1',ls_KFBZ00 ,P_OrderCode,P_Dose,P_DoseUnitCode,P_OrderContent,P_IsEmergency,ls_YPNM00,ls_ZLXMID,P_OrderContent ,P_PSID00,P_PSMC00,P_SkinTestRESULT,null,P_DecoctionName,ls_YZCLLB,P_DrugQty,ls_ZYFYDW,P_SelfDrug,null,P_SkinTestopName,P_SkinTestTime,P_SampleCode ,ls_BB0000,lv_PerformedDeptCode,ls_AcqDeptCode,P_ExamItemCode,ls_YZLB00,P_LSH000,P_PrescriptionCount,P_SubmitId,p_SubmitName,TO_NUMBER(nvl(P_FirstNum,'-1')),P_HistorySummary,P_ChiefComplaint,P_IsCPP,P_IsUrgent,P_MainDiagnosis,substr(P_DrugSpec,1,20)); elsif lv_Flag='tz' then --停止 if nvl(P_StopTime,' ')<>' ' then ls_tzrq00:=substr(P_StopTime,1,8); ls_tzsj00:=TO_CHAR(to_date(P_StopTime,'YYYYMMDDHH24MISS'),'HH24:MI:SS' ); else ls_tzrq00:=to_char(sysdate,'YYYYMMDD'); ls_tzsj00:=to_char(sysdate,'HH24:MI:SS'); end if; errorstr:='停止医生不对'||P_userid; select YGBH00 into ls_czy000 from bm_ygbm00 where YGBH00=P_userid; select nvl(max(trim(value0)),'N') into LS_TZYZSFXYHD from xt_xtcs00 where name00='BLJK_TZYZSFXYHD'; if LS_TZYZSFXYHD='Y' then ls_MODE:=5; else ls_MODE:=2; end if; if P_OrderType='XY' or P_OrderType='ZCY' or P_OrderType='CY' then errorstr:='HIS医嘱表无对应数据'||P_ParentOrderSn; select * into ypyzrow from BQ_YPYZ00 where YZID00 in(select YZID00 from BLJK_YZJKB0 where WBZID0=P_ParentOrderSn ); if ypyzrow.YZZT00='2' --or ypyzrow.YZZT00='5' then errorstr:='SP_BQ_YPYZQT过程错误'||P_ParentOrderSn; SP_BQ_YPYZQT (ls_MODE,ypyzrow.YZID00,ypyzrow.HDR000,ls_czy000,P_UserName,ls_tzrq00,ls_tzsj00,ypyzrow.PXSJ00,'N');--2014.04.29 要启用BQ_TZYZSFXYHD参数,病区核对才生效 end if; else select * into yjyzrow from BQ_YJYZ00 where YZMXID in(select YZMXID from BLJK_YZJKB0 where WBYZID=P_OrderSn ); if yjyzrow.YZZT00='2' --or ypyzrow.YZZT00='5' then SP_BQ_YJYZQT(ls_MODE,yjyzrow.YZMXID,yjyzrow.hdrxm0,ls_czy000,'',ls_tzrq00,ls_tzsj00,yjyzrow.PXSJ00,ls_czy000,'','N'); end if; end if; update BLJK_YZJKB0 set YZZT00='3',TZRQ00=substr(P_StopTime,1,8),TZSJ00=substr(P_StopTime,9,2)||':'||substr(P_StopTime,11,2)||':'||substr(P_StopTime,13,2) where WBZID0=P_ParentOrderSn; commit; --wzy加防止停止卡死 begin if lv_ZYBLJK_YZCZSFXRDZGG='Y' then Insert into XT_DZGG00(ID0000,ZYID00,FSBQ00,FSBQMC,FSKS00,FSKSMC,FSXX00, YXQSRQ,YXQSSJ,YXZZRQ,YXZZSJ,CZY000,CZLB00,XTDM00) select SQ_XT_DZGG00_ID0000.nextval,lv_ZYID00,0,' ',dqbq00,' ','"'||TRIM(RYCWH0)||'床'||TRIM(ZYH000)||' '||TRIM(XM0000), to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24:mi:ss'),'99991231','00:00:00',P_Modifier,'2','9' from zy_brxxb0 where zyid00=lv_ZYID00; ---插入电子公告 end if; exception when others then errorstr:='写入电子公告失败'||sqlerrm; end; elsif lv_Flag='cx' then --撤销 if nvl(P_StopTime,' ')<>' ' then ls_tzrq00:=substr(P_ModifyTime,1,8); ls_tzsj00:=TO_CHAR(to_date(P_ModifyTime,'YYYYMMDDHH24MISS'),'HH24:MI:SS' ); else ls_tzrq00:=to_char(sysdate,'YYYYMMDD'); ls_tzsj00:=to_char(sysdate,'HH24:MI:SS'); end if; begin select nvl(YPLBBH,'A') into ls_yplbbh from BLJK_YZJKB0 where WBYZID=P_OrderSn and YZMXID>0; exception when others then errorstr:='中间表找不到数据!' ; raise Ecustom; end; select YGBH00 into ls_czy000 from bm_ygbm00 where YGBH00=P_userid; if ls_yplbbh<>'A' then select * into ypyzrow from BQ_YPYZ00 where YZID00 in(select YZID00 from BLJK_YZJKB0 where WBZID0=P_ParentOrderSn ); if (ypyzrow.YZZT00='1') or (ypyzrow.YZZT00='0') then SP_BQ_YPYZQT (3,ypyzrow.YZID00,ypyzrow.HDR000,ls_czy000,P_UserName,ls_tzrq00,ls_tzsj00,ypyzrow.PXSJ00,'N'); elsif ypyzrow.YZZT00 not in('0','1','2','4') then errorstr:='医嘱状态已经不能取消!' ; raise Ecustom; end if; else select * into yjyzrow from BQ_YJYZ00 where YZMXID in(select YZMXID from BLJK_YZJKB0 where WBYZID=P_OrderSn ); if yjyzrow.YZZT00='1' or yjyzrow.YZZT00='0' then SP_BQ_YJYZQT(3,yjyzrow.YZMXID,yjyzrow.hdrxm0,ls_czy000,'',ls_tzrq00,ls_tzsj00,yjyzrow.PXSJ00,ls_czy000,'','N'); elsif yjyzrow.YZZT00 not in('0','1','2','4') then errorstr:='医嘱状态已经不能取消!' ; raise Ecustom; end if; end if; update BLJK_YZJKB0 set YZZT00='4',TZRQ00=substr(P_StopTime,1,8),TZSJ00=substr(P_StopTime,9,2)||':'||substr(P_StopTime,11,2)||':'||substr(P_StopTime,13,2) where WBZID0=P_ParentOrderSn; end if; exception when Ecustom then RAISE_APPLICATION_ERROR(-20001,SUBSTR('系统错误!*'||SQLERRM||':'||errorstr,1,220)); when NO_DATA_FOUND then RAISE_APPLICATION_ERROR(-20001,SUBSTR('数据没有找到!*'||SQLERRM||':'||errorstr,1,220)); when OTHERS then RAISE_APPLICATION_ERROR(-20002,SUBSTR(NVL(SQLERRM, '原因不明出错')||':'||errorstr,1,220)); end;