CREATE OR REPLACE PROCEDURE SP_BLJK_YZCL00( P_Flag in char, --01.医嘱操作标志医嘱变更标识(tj-医嘱提交,tz-医嘱停止,cx-医嘱撤销) P_UserId in char, --02.用户ID P_UserName in char, --03.用户名 P_OrderSn in char, --04.医嘱号 P_ParentOrderSn in char, --05.主医嘱号 P_Ipid in char, --06.住院流水号 P_Pid in char, --07.病人ID P_Creator in char, --08.医嘱创建人 P_CreateTime in char, --09.医嘱创建时间 格式:20161018122745 P_Modifier in char, --10.修改人 P_ModifyTime in char, --11.修改时间 P_LongFlag in char, --12.长临标志 P_OrderType in char, --13.医嘱类型 P_OrderClass in char, --14.医嘱分类 P_OrderCode in char, --15.医嘱代码 P_OrderContent in char, --16.医嘱内容 P_DoctorMemo in char, --17.备注 P_FrequencyCode in char, --18.频次编码 P_FrequencyName in char, --19.频次名称 P_RoutecyCode in char, --20.用法编码 P_RoutecyName in char, --21.用法名称 P_PrescriptionCount in char, --22.处方数(周期草药贴数) P_Duration in char, --23.周期数(短嘱),长嘱时为1 P_DurationUnit in char, --24.周期长度(周的长度只能为1) P_StartTime in char, --25.启用日期 P_IntendingStopTime in char, --26.预停止时间 P_StopTime in char, --27.停止时间 P_SubmitTime in char, --28.提交时间【未使用】 P_SubmitId in char, --29.提交医生工号 P_SubmitName in char, --30.提交医生姓名 P_StopId in char, --31.停止医生工号 P_StopName in char, --32.停止医生姓名 P_AffirmTime in char, --33.确认时间【未使用】 P_AffirmId in char, --34.确认医生工号【未使用】 P_AffirmName in char, --35.确认医生姓名【未使用】 P_FirstExecuteTime in char, --36.首次执行时间【未使用】 P_FirstExecuteId in char, --37.首次执行医生工号【未使用】 P_FirstExecuteName in char, --38.首次执行医生姓名【未使用】 P_AffirmStopTime in char, --39.确认停止时间【未使用】 P_AffirmStopId in char, --40.确认停止医生工号【未使用】 P_AffirmStopName in char, --41.确认停止医生姓名【未使用】 P_IsSubOrder in char, --42.是否子项目【未使用】 P_IsEmergency in char, --43.是否急诊【未使用】 P_CreateDeptID in char, --44.下达科室 P_InfantName in char, --45.婴儿姓名 P_NarcoticDrugClassCode in char, --46.毒麻药分类代码 P_AntibioticClassCode in char, --47.抗生素分类代码【未使用】 P_SelfDrug in char, --48.自带药(西、中)N-非自带药 Y-自带药 Q-其它 P_DrugSpec in char, --49.药品规格【未使用】 P_DecoctionCode in char, --50.特殊煎法代码(草药)【未使用】 P_DecoctionName in char, --51.特殊煎法名称(草药) P_RouteCode in char, --52.途径代码(西药) P_RouteName in char, --53.途径名称(西药) P_Dose in char, --54.剂量 P_DoseUnitCode in char, --55.计量单位代码 P_IsSelfFlag in char default 'N', --56.自费标志(Y-是 N-否)【未使用】 P_SkinTest in char, --57.皮试(N—不皮试,Y—皮试)【未使用】 P_SkinTestRESULT in char, --58.皮试结果(阴性/阳性5) P_SkinTestopId in char, --59.皮试操作员工号【未使用】 P_SkinTestopName in char, --60.皮试操作员姓名 P_SkinTestTime in char, --61.皮试时间 P_DosageFormCode in char, --62.剂型代码【未使用】 P_DrugType in char, --63.药品类型(XY—西、ZCY—成药、CY—草药) P_BZ0000 in char, --64.备注【未使用】 P_DrugQty in char, --65.药品数量 P_SampleCode in char, --66.标本代码 P_IsUrgent in char, --67.加急标志(Y-是 N-否) P_PerformedDeptCode in char, --68.执行科室代码 P_ExamCode in char, --69.检查类别代码【未使用】 P_ExamOrderCode in char, --70.检查项目代码【未使用】 P_ExamItemCode in char, --71.检查部位代码 P_LSH000 in number, --72.流水号 P_PSID00 in char default '', --73.皮试ID P_PSMC00 in char default '', --74.皮试名称 P_AcqDeptCode in char default '', --75.采集科室 P_TypeProperty in char default 'IN', --76.='OUT'or'CD'为处理草药出院带药 P_FirstNum in char default '', --77.首日次数 P_DrugDeptCode in char default '', --78.发往药房 P_DecoctionNum in char default '', --79.煎药次数 P_ChiefComplaint in char default '', --80.主诉【未使用】 P_HistorySummary in char default '', --81.现病史【未使用】 P_IsCPP in char default '0', --82.是否路径医嘱【未使用】 P_MainDiagnosis in char default '0', --83.主要诊断【未使用】 P_ExamRequestNo in char default '', --84.申请单ID P_PayMent in char default '', --85.自费发送标志,医保传1,自费传0,不是这种特殊药品的,传空 P_SFMZ00 in char default 'N', --86.是否麻醉 P_YSFS00 in char default '', --87.运送方式 P_SQBRLB in char default '', --88.申请病人类别 P_ISGCP in char default '', --89.是否药物受试者开的项目 Y-是 N-否 P_DEPTGETDRUG in char default '', --90.选择的科室编码 P_OPERATION_ORDERSN in char default '', --91.手术医嘱号 P_IS_PATHOL_EXAM in char default 'N' --92.是否病理检查 ) 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-10-10 增加主诉现病史主要诊断等传入参写入中间表 -- dsm 2018-08.04 增加申请单ID ,P_PayMent -- dsm 2018.03.09 增加SFMZ00 字段 for YJ-20190228-001 -- dsm 2020.06.20 增加运送方式P_YSFS00 for BQ-20200604-001 -- dsm 2021.01.21 增加P_SQBRLB入参 for BQ-20210120-001 -- linbin 2021.09.06 增加P_ISGCP入参 for BQ-20210903-001 -- linbin 2021.11.11 增加P_DEPTGETDRUG,P_OPERATION_ORDERSN入参, 药品医嘱处方维护部门P_DEPTGETDRUG有值时可增加或删除处方单 for SSMZ-20210903-001 -- linbin 2021.11.22 非药品医嘱处方维护部门P_DEPTGETDRUG有值时可增加或删除医技单 for YJ-20211118-001 -- linbin 2022.01.17 增加P_IS_PATHOL_EXAM入参,判断是否病理检查 for YJ-20220116-001 -- linbin 2022.05.19 删除病理项目时其自动生成的医嘱的状态改为撤销 for BQ-20220425-001 -- -------- -------------- ---------------------------------------------------------------------------------- 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; 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); LS_TZYZSFXYHD varchar2(10); ls_MODE number(4); ls_CYCFCLMS varchar2(10); ls_ZFFSBZ BLJK_YZJKB0.ZFFSBZ%type; ls_CFLSH0 YJ_CFXX00.CFLSH0%type; ls_YJDJH0 YJ_YW0000.YJDJH0%type; begin errorstr:=''; lv_PerformedDeptCode:=trim(P_PerformedDeptCode); lv_Flag:=P_Flag; select nvl(max(trim(value0)),'N') into ls_CYCFCLMS from XT_XTCS00 where NAME00='BLJK_CYYZCLMS' and VALUE0='Y';--Y草药按处方处理模式,N按医嘱处理,默认N 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; 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=P_Ipid; errorstr:=''; select count(*) into lv_COUNT0 from BLJK_YZJKB0 where ZYID00=P_Ipid 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-其它 C-草药,CD-草药出院带药,OUT出院带药 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' or (ls_CYCFCLMS='Y' and P_OrderType='CY') 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 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'; ls_ZFFSBZ:=P_PayMent; if nvl(P_ISGCP,'N')='Y' then ls_ZFFSBZ := '0' ; --是否药物受试者开的项目 P_ISGCP = Y 时自费发送标志为 0-自费 end if; 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=P_Ipid; 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; --insert into BLJK_YZTEST(LSH000,WBYZID,BZ0000) values(p_lsh000,P_OrderSn,to_char(sysdate,'yyyymmdd hh24:mi:ss')||' P_Flag:'||P_Flag); 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 ,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,ZFFSBZ,SFMZ00,YSFS00,SQBRLB,CFWHBM,SSYZID) values(P_OrderSn,P_ParentOrderSn,P_Ipid,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_Creator,substr(P_SubmitTime,1,8),TO_CHAR(to_date(P_SubmitTime,'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,P_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,ls_ZFFSBZ,P_SFMZ00,P_YSFS00,P_SQBRLB,decode(nvl(P_IS_PATHOL_EXAM,'N'),'Y',P_PerformedDeptCode,P_DEPTGETDRUG),P_OPERATION_ORDERSN); elsif lv_Flag='tz' then --停止 if nvl(P_DEPTGETDRUG,0)>0 then begin select nvl(max(CFLSH0),' ') into ls_CFLSH0 from SD_DZBLJK.BLJK_YZJKB0 where WBYZID=P_OrderSn; -- LSH000=P_LSH000 and exception when others then ls_CFLSH0:=' ' ; end; if ls_CFLSH0<>' ' then select count(*) into lv_COUNT0 from YJ_CFXX00 where CFLSH0=ls_CFLSH0 and CFZT00='0'; if lv_COUNT0=0 then errorstr:='处方已记账或已发药,不能停止'; raise Ecustom; end if; delete YJ_CFXX00 where CFLSH0=ls_CFLSH0; delete YJ_CFMX00 where CFLSH0=ls_CFLSH0; else errorstr:='中间表找不到处方流水号!' ; raise Ecustom; end if; elsif nvl(P_IS_PATHOL_EXAM,'N')='Y' then begin select nvl(max(YJDJH0),0), nvl(max(ZLXMID),0) into ls_YJDJH0, ls_ZLXMID from SD_DZBLJK.BLJK_YZJKB0 where WBYZID=P_OrderSn; -- LSH000=P_LSH000 and exception when others then ls_YJDJH0:=0 ; ls_ZLXMID:=0 ; end; if ls_YJDJH0<>0 then select count(*) into lv_COUNT0 from YJ_YW0000 where YJDJH0=ls_YJDJH0 and XMZT00='1'; if lv_COUNT0=0 then errorstr:='项目已执行不能停止'; raise Ecustom; end if; delete YJ_YWJJ00 where YJDJH0=ls_YJDJH0; delete YJ_YW0000 where YJDJH0=ls_YJDJH0; update BQ_YJYZ00 set YZZT00=4 where YZMXID=ls_ZLXMID; else errorstr:='中间表找不到医技单据号!' ; raise Ecustom; end if; else 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' 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参数,病区核对才生效 elsif ypyzrow.YZZT00='5' and ypyzrow.TZRQ00 is null then UPDATE BQ_YPYZ00 SET TZYS00 = ls_czy000,TZRXM0 = P_UserName,TZRQ00 = ls_tzrq00,TZSJ00 = ls_tzsj00 WHERE YZID00=ypyzrow.YZID00; update BLJK_YZJKB0 set TZXTDM='DZBLJK' where YZID00=ypyzrow.YZID00; 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' then SP_BQ_YJYZQT(ls_Mode,yjyzrow.YZMXID,yjyzrow.hdrxm0,ls_czy000,'',ls_tzrq00,ls_tzsj00,yjyzrow.PXSJ00,ls_czy000,'','N'); elsif yjyzrow.YZZT00='5' and ypyzrow.TZRQ00 is null then UPDATE BQ_YJYZ00 SET TZYS00 = ls_czy000,TZRXM0 = P_UserName,TZRQ00 = ls_tzrq00,TZSJ00 = ls_tzsj00 where YZMXID=yjyzrow.YZMXID; update BLJK_YZJKB0 set TZXTDM='DZBLJK' where YZID00=ypyzrow.YZID00; 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; end if; elsif lv_Flag='cx' then --撤销 if nvl(P_DEPTGETDRUG,0)>0 then begin select nvl(max(CFLSH0),' ') into ls_CFLSH0 from SD_DZBLJK.BLJK_YZJKB0 where WBYZID=P_OrderSn; -- LSH000=P_LSH000 and exception when others then ls_CFLSH0:=' ' ; end; if ls_CFLSH0<>' ' then select count(*) into lv_COUNT0 from YJ_CFXX00 where CFLSH0=ls_CFLSH0 and CFZT00='0'; if lv_COUNT0=0 then errorstr:='处方已记账或已发药,不能撤销'; raise Ecustom; end if; delete YJ_CFXX00 where CFLSH0=ls_CFLSH0; delete YJ_CFMX00 where CFLSH0=ls_CFLSH0; else errorstr:='中间表找不到处方流水号!' ; raise Ecustom; end if; elsif nvl(P_IS_PATHOL_EXAM,'N')='Y' then begin select nvl(max(YJDJH0),0) into ls_YJDJH0 from SD_DZBLJK.BLJK_YZJKB0 where WBYZID=P_OrderSn; -- LSH000=P_LSH000 and exception when others then ls_YJDJH0:=0 ; end; if ls_YJDJH0<>0 then select count(*) into lv_COUNT0 from YJ_YW0000 where YJDJH0=ls_YJDJH0 and XMZT00='1'; if lv_COUNT0=0 then errorstr:='项目已执行不能撤销'; raise Ecustom; end if; delete YJ_YWJJ00 where YJDJH0=ls_YJDJH0; delete YJ_YW0000 where YJDJH0=ls_YJDJH0; else errorstr:='中间表找不到医技单据号!' ; raise Ecustom; end if; else 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','4') then begin if ypyzrow.YZZT00='2' then errorstr:='医嘱已经提取,不能撤销,请护士执行!' ; elsif ypyzrow.YZZT00='3' or ypyzrow.YZZT00='5' then errorstr:='医嘱已经停止,不能撤销!' ; end if; end; 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','4') then begin if yjyzrow.YZZT00='2' then errorstr:='医嘱已经执行,不能撤销' ; elsif yjyzrow.YZZT00='3' or yjyzrow.YZZT00='5' then errorstr:='医嘱已经停止,不能撤销!' ; end if; end; 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; 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 SP_BLJK_YZCL00;