create or replace trigger TR_JY_JYJG00_TEMP_BINS before insert or update on JY_JYJG00_TEMP referencing new as new old as old for each row declare V_count0 number; V_count1 number; vJCSJLX varchar2(2); V_JYYWID JY_YW0000.JYYWID%type; V_ZLXMID JY_YW0000.ZLXMID%type; V_XB0000 JY_YW0000.XB0000%type; V_NL0000 JY_YW0000.NL0000%type; V_NLDW00 JY_YW0000.NLDW00%type; V_BBID00 JY_YW0000.BBID00%type; V_BGR000 JY_YW0000.BGR000%type; V_SQKS00 JY_YW0000.SQKS00%type; V_CKZNL0 JY_BGXMZD.CKZNL0%type; V_CKZXB0 JY_BGXMZD.CKZXB0%type; V_CKZBB0 JY_BGXMZD.CKZBB0%type; V_QSZ000 JY_BGXMZD.QSZ000%type; V_DW0000 JY_BGXMZD.DW0000%type; V_JGLX00 JY_BGXMZD.JGLX00%type; V_JD0000 JY_BGXMZD.JD0000%type; V_XXTS00 JY_XMCKZ0.XXTS00%type; V_SXTS00 JY_XMCKZ0.SXTS00%type; V_JYJG00 JY_JYJG00_TEMP.JYJG00%type; V_YQZ000 JY_XMCKZ0.YQZ000%type; V_ZCFWNR JY_XMCKZ0.ZCFWNR%type; V_CKZKS0 JY_BGXMZD.CKZKS0%type; V_CKZZD0 JY_BGXMZD.CKZZD0%type; V_ZDID00 JY_YW0000.ZDID00%type; V_VALUE0 char(1); V_JGFS00 varchar2(100); V_JYJG01 number(20,5); lsJY_JYJGTSTS number(5); lvJY_WFBTGXTPDZCBZYQ number(5); E_MODifY exception; JY_SFYXZJQTZLBGXM XT_XTCS00.VALUE0%type; JY_BXRCJJKSBH XT_XTCS00.VALUE0%type; JY_BXRCJJZLXM XT_XTCS00.VALUE0%type; JY_ZDBGXMTSJG XT_XTCS00.VALUE0%type; F_CSZ000 varchar2(200); F_BGXMID JY_JYJG00.BGXMID%type; F_JYJG00 JY_JYJG00.JYJG00%type; V_JYJG JY_JYJG00.JYJG00%type; JY_BGXJGZCBZYQ XT_XTCS00.VALUE0%type; v_count number; -- MODifICATIon HISTorY -- Person Date Comments -- Lintj 2010.09.01 SFDY00重新判断; -- Lintj 2010.10.14 SFDY00重新判断; -- Lintj 2010.10.22 插入时相应插入JY_YWMX00 -- chenyw 2011.10.12 把参考范围年龄是‘M’都转化到 ‘D’来计算 --chenyw 2012.04.09 增加'>>'和'<<'情况结果值处理 --chenyw 2012.11.29 定量结果的结果提示要求提示显示(阴性/阳性) by LIS-20121129-001 --chenyw 2013.01.23 增加参考范围为'W'(周) by LIS-20130118-001 --jinfl 2013.04.23 修改参考值按年龄判断时显示不出 LIS-20130416-001 --jinfl 2013.05.27 增加是否超疫情值的判定 LIS-20130422-002 --jinfl 2013.06.20 解决当病人年龄单位为月时,且报告项目有按年龄区分时,取参考值错误的问题。归档LIS-20130613-002 --chenyw 2014.04.21 危急值时把提示标志改成↑↑或者↓↓ --chenyw 2015.05.19 外送标本导入结果的时候不通过本系统判断结果超出标志 for LIS-20150519-001 --chenyw 2015.09.29 非数值型维护危急值也要能够提示危急值 for LIS-20150929-001 --xutz 2015.12.28 修改列表性参考范围的判断,>0修改成=0, for LIS-20151228-001 --chenyw 2016.04.28 增加特殊报告项目参考范围提取 for LIS-20160428-001 --xutz 2016.07.30 增加条件当SJLY00为空时,才通过参考上下限判断结果正常标志 for LIS-20160802-001 --xutz 2016.08.19 不清空JGZCBZ,且当SJLY00为空时,判断LIS系统的参考范围 for LIS-20160818-002 --daihq 2016.12.14 zlxmid不为空时,取JYYWID的查询语句增加zlxmid的判断条件 for LIS9-20161213-001 --daihq 2017.01.17 增加写入FCXX00,FCSX00 for LIS9-20170116-002 --daihq 2017.04.19 增加参数JY_SFYXZJQTZLBGXM控制是否允许增加其他诊疗项目的报告项目 for LIS9-20170419-001 --chenhn 2017.11.09 检验结果重传时候将原始结果写入到字段FCYSJG for LIS9-20170927-008 --chenhn 2017.11.20 修改写入字段FCYSJG的条件 for LIS9-20171120-002 --chenhn 2018.01.15 修改写入字段FCYSJG的条件(界面复查按钮) for LIS9-20171027-001 --wusd 2018.11.01 增加不写入超警戒值的参数 for LIS9-20180927-001 --chenhn 2018.12.06 修改判断列表型结果(L)的时候用,隔开,而不是|。 for LIS9-20181203-001 --chenhn 2020.02.18 增加参数JY_ZDBGXMTSJG,指定某些报告项目不显示上下限(↑↓) for LIS9-20200114-001 --wusd 2020.04.22 质控样本不写入超警戒值 for LIS9-20200422-001 --Nixj 2020.04.27 科学计数法的数据处理 for LIS9-20200424-003 --Nixj 2020.05.12 质控出现危急值显示问题处理 for LIS9-20200512-001 --Nixj 2020.05.21 增加正常范围内容判断 for LIS9-20200424-002 --wusd 2020.06.09 优化参考范围涉及年龄的判断 for LIS9-20200521-002 --Nixj 2020.07.10 修正错误 for LIS9-20200616-002 --Nixj 2021.04.18 增加科室参考值 for LIS9-20210418-004 --Nixj 2021.06.11 增加诊断参考值 for LIS9-20210506-001 --wusd 2022.06.16 超警戒值更新业务表 for LIS9-20220607-002 --Nixj 2022.07.28 新增针对指定仪器使用写入结果正常标志 for LIS9-20220728-001 --wusd 2022.08.05 增加是否使用检验结果转换功能,N否 Y是,默认N by LIS9-20220802-001 begin V_JYYWID := 0; V_ZLXMID := 0; :new.SFDY00 := 'N'; begin select value0 into JY_BGXJGZCBZYQ from XT_XTCS00 where name00='JY_BGXJGZCBZYQ'; exception when others then JY_BGXJGZCBZYQ:='N'; end; begin select '|'||trim(value0)||'|' into JY_ZDBGXMTSJG from xt_xtcs00 where name00 in ('JY_ZDBGXMTSJG'); exception when others then JY_ZDBGXMTSJG:='N'; end; begin select instr(','||trim(value0)||',',','||trim(:new.yqdh00)||',') into lsJY_JYJGTSTS from xt_xtcs00 where name00 in ('JY_JYJGTSTS'); exception when others then lsJY_JYJGTSTS:=0; end; begin select instr(','||trim(value0)||',',','||trim(:new.yqdh00)||',') into lvJY_WFBTGXTPDZCBZYQ from xt_xtcs00 where name00 in ('JY_WFBTGXTPDZCBZYQ'); exception when others then lvJY_WFBTGXTPDZCBZYQ:=0; end; --2017.04.19 daihq add 检验结果处理-增加,是否允许增加其他诊疗项目的报告项目,Y 是,N 否,默认N begin select nvl(max(trim(value0)),'N') into JY_SFYXZJQTZLBGXM from xt_xtcs00 where name00 = 'JY_SFYXZJQTZLBGXM'; exception when others then JY_SFYXZJQTZLBGXM:='N'; end; --2018.11.01 wsd 不写入超警戒值的科室编号,多个可以用,隔开,默认空 for LIS9-20180927-001 begin select trim(VALUE0) into JY_BXRCJJKSBH from XT_XTCS00 where NAME00 = 'JY_BXRCJJKSBH'; exception when others then JY_BXRCJJKSBH:=''; end; begin select trim(VALUE0) into JY_BXRCJJZLXM from XT_XTCS00 where NAME00 = 'JY_BXRCJJZLXM'; exception when others then JY_BXRCJJZLXM:=''; end; --##2022.08.04 wusd 是否使用检验结果转换功能,N否 Y是,默认N by LIS9-20220802-001 begin select trim(VALUE0) into V_VALUE0 from XT_XTCS00 where NAME00='JY_SFSYJYJGZHGN'; exception when others then V_VALUE0 := 'N'; end; if V_VALUE0 = 'Y' then :new.JYJG00 := SF_JY_JYJGZH(:new.BGXMID,:new.JYJG00); end if; if UPDATING then if ((:old.JYJG00 is not null) and (:new.JYJG00 is not null)) and (:new.JYJG00<>:old.JYJG00) and (:new.SFFC00='Y') then :new.FCYSJG:=:old.JYJG00; end if; V_BGR000 := 0; if (:new.CZR000 IS NOT NULL) and (:new.JYJG00 <> :old.JYJG00) then begin select trim(VALUE0) into V_VALUE0 from XT_XTCS00 where NAME00='JY_PYRXGJG'; if V_VALUE0 = 'Y' then select BGR000 into V_BGR000 from JY_YW0000 where PYRQ00=:new.PYRQ00 and YBH000=:new.YBH000 and rownum=1; end if; exception when NO_DATA_FOUND then V_BGR000 := 0; end; --if (V_BGR000 <> 0) and (:new.CZR000 <> V_BGR000) then --RAISE E_MODifY; --end if; end if; end if; :new.JYJG00 := trim(:new.JYJG00); if :new.JYJG00 = '' then :new.JYJG00 := NULL; end if; if :new.BGXMID < 999992 then select JGLX00,JD0000 into V_JGLX00,V_JD0000 from JY_BGXMZD where BGXMID=:new.BGXMID; end if; if ((V_JGLX00 = 'N') or (V_JGLX00 = 'C')) and (:new.JYJG00 IS NOT NULL) then V_JGFS00 := '9999999999999999999.'; V_JGFS00 := rpad(V_JGFS00,length(V_JGFS00)+V_JD0000,'9'); begin V_JYJG01 := ROUND(:new.JYJG00,V_JD0000); select trim(to_char(V_JYJG01,V_JGFS00)) into :new.JYJG00 from DUAL; if instr(:new.JYJG00,'-.') = 1 then :new.JYJG00 := '-0.'||substr(:new.JYJG00,3,length(:new.JYJG00)); end if; if instr(:new.JYJG00,'.') = 1 then :new.JYJG00 := '0'||:new.JYJG00; end if; if instr(:new.JYJG00,'.') = length(:new.JYJG00) then :new.JYJG00 := substr(:new.JYJG00,1,length(:new.JYJG00)-1); end if; exception when others then :new.JYJG00 := :new.JYJG00; end; end if; --modify by daihq 2016.12.14 if (trim(JY_SFYXZJQTZLBGXM)<>'Y') and (nvl(:new.ZLXMID,0)<>0) then select count(*) into V_count0 from JY_YW0000_CKZ000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and ZLXMID=:new.ZLXMID; else select count(*) into V_count0 from JY_YW0000_CKZ000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00; end if; if V_count0 > 0 then if (trim(JY_SFYXZJQTZLBGXM)<>'Y') and (nvl(:new.ZLXMID,0)<>0) then select JYYWID,ZLXMID,XB0000,NL0000,NLDW00,BBID00 into V_JYYWID,V_ZLXMID,V_XB0000,V_NL0000,V_NLDW00,V_BBID00 from JY_YW0000_CKZ000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and ZLXMID=:new.ZLXMID and rownum=1; else select JYYWID,ZLXMID,XB0000,NL0000,NLDW00,BBID00 into V_JYYWID,V_ZLXMID,V_XB0000,V_NL0000,V_NLDW00,V_BBID00 from JY_YW0000_CKZ000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and rownum=1; end if; else if (trim(JY_SFYXZJQTZLBGXM)<>'Y') and (nvl(:new.ZLXMID,0)<>0) then select count(*) into V_count0 from JY_YW0000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and ZLXMID=:new.ZLXMID; else select count(*) into V_count0 from JY_YW0000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00; end if; if V_count0 > 0 then if (trim(JY_SFYXZJQTZLBGXM)<>'Y') and (nvl(:new.ZLXMID,0)<>0) then select JYYWID,ZLXMID,XB0000,NL0000,NLDW00,BBID00 into V_JYYWID,V_ZLXMID,V_XB0000,V_NL0000,V_NLDW00,V_BBID00 from JY_YW0000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and ZLXMID=:new.ZLXMID and rownum=1; else select JYYWID,ZLXMID,XB0000,NL0000,NLDW00,BBID00 into V_JYYWID,V_ZLXMID,V_XB0000,V_NL0000,V_NLDW00,V_BBID00 from JY_YW0000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and rownum=1; end if; --select XB0000,NL0000,NLDW00,BBID00 into V_XB0000,V_NL0000,V_NLDW00,V_BBID00 from JY_YW0000 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and rownum=1; end if; end if; if nvl(:new.JYYWID,0) = 0 then :new.JYYWID := V_JYYWID; end if; if :new.JYYWID <> 0 then :new.SFDY00 := 'Y'; end if; if nvl(:new.ZLXMID,0) = 0 then :new.ZLXMID := V_ZLXMID; end if; if :new.ZLXMID=99999999 then :new.JYYWID := V_JYYWID; :new.ZLXMID := V_ZLXMID; end if; if :new.BGXMID > 999993 then return; end if; if insertING and (:new.JYYWID <> 0) then insert into JY_YWMX00(JYMXID,JYYWID,ZLXMID,PYRQ00,YBH000) select SEQ_JY_YWMX00_JYMXID.nextval,:new.JYYWID,:new.ZLXMID,:new.PYRQ00,:new.YBH000 from DUAL where NOT EXISTS(select 1 from JY_YWMX00 where YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and ZLXMID=:new.ZLXMID); end if; if lvJY_WFBTGXTPDZCBZYQ<>0 then return; end if; if nvl(:new.SJLY00,'0')='0' then :new.JGZCBZ := NULL; :new.SFCJJZ := 'N'; :new.SFCYQZ := 'Y'; end if; -- if (:new.CKFW00 IS NULL) or (trim(:new.CKFW00) = '') then begin select count(1) into V_count1 from xt_xtcs00 where name00 in ('JY_YQXMGJJCSJQCKZ') and instr(','||trim(value0)||',',','||to_char(:new.BGXMID)||',')>0; exception when others then V_count1:=0; end; if V_count1=0 then begin select CKZNL0,CKZXB0,CKZBB0,QSZ000,DW0000,CKZKS0,CKZZD0 into V_CKZNL0,V_CKZXB0,V_CKZBB0,V_QSZ000,V_DW0000,V_CKZKS0,V_CKZZD0 from JY_BGXMZD where BGXMID=:new.BGXMID; begin select ZDID00 into V_ZDID00 from JY_YW0000 where JYYWID=:new.JYYWID; exception when others then V_ZDID00:='0'; end; if V_CKZZD0='Y' Then select count(1) into v_count from jy_xmckz0 WHERE BGXMID=:NEW.BGXMID AND ZDID00=V_ZDID00; if v_count=0 then V_ZDID00:='0'; end if; end if; if V_CKZKS0='Y' then begin select SQKS00 into V_SQKS00 from JY_YW0000 where JYYWID=:new.JYYWID; exception when NO_DATA_FOUND then V_SQKS00:=0; end; end if; select count(*) into v_count from JY_XMCKZ0 where KSBH00=V_SQKS00 and BGXMID=:new.BGXMID ; if v_count>0 then if V_CKZNL0 = 'Y' then select a.ckxx00,a.cksx00,a.ckfw00,a.jjzsx0,a.jjzxx0,XXTS00,SXTS00,a.YQZ000,a.FCXX00,a.FCSX00 into :new.CKXX00,:new.CKSX00,:new.CKFW00,:new.JJZSX0,:new.JJZXX0,V_XXTS00,V_SXTS00,V_YQZ000,:new.FCXX00,:new.FCSX00 from JY_XMCKZ0 A where BGXMID=:new.BGXMID and nvl(XBDM00,'W')=nvl(decode(V_CKZXB0,'Y',V_XB0000,XBDM00),'W') and nvl(BBID00,0)=nvl(decode(V_CKZBB0,'Y',V_BBID00,BBID00),0) --wusd 2020.06.09 优化参考范围涉及年龄的判断 for LIS9-20200521-002 and decode(V_NLDW00,'T','D',V_NLDW00)=A.NLDW00 and decode(V_NLDW00,'Y',to_number(V_NL0000)*365,'M',to_number(V_NL0000)*30,'W',to_number(V_NL0000)*7,to_number(V_NL0000)) >=decode(A.NLDW00,'Y',nvl(A.NLXX00,0)*365, 'M',nvl(A.NLXX00,0)*30, 'W',nvl(A.NLXX00,0)*7, nvl(A.NLXX00,0)) and decode(V_NLDW00,'Y',to_number(V_NL0000)*365,'M',to_number(V_NL0000)*30,'W',to_number(V_NL0000)*7,to_number(V_NL0000)) <=decode(A.NLDW00,'Y',nvl(A.NLSX00,180)*365, 'M',nvl(A.NLSX00,180)*30, 'W',nvl(A.NLSX00,1200)*7, nvl(A.NLSX00,180)) and nvl(ZDID00,'0')=nvl(decode(V_CKZZD0,'Y',V_ZDID00,ZDID00),'0') and KSBH00=V_SQKS00 and rownum=1; else select a.ckxx00,a.cksx00,a.ckfw00,a.jjzsx0,a.jjzxx0,XXTS00,SXTS00,a.YQZ000,a.FCXX00,a.FCSX00 into :new.CKXX00,:new.CKSX00,:new.CKFW00,:new.JJZSX0,:new.JJZXX0,V_XXTS00,V_SXTS00,V_YQZ000,:new.FCXX00,:new.FCSX00 from JY_XMCKZ0 A where BGXMID=:new.BGXMID and nvl(XBDM00,'W')=nvl(decode(V_CKZXB0,'Y',V_XB0000,XBDM00),'W') and nvl(BBID00,0)=nvl(decode(V_CKZBB0,'Y',V_BBID00,BBID00),0) and nvl(ZDID00,'0')=nvl(decode(V_CKZZD0,'Y',V_ZDID00,ZDID00),'0') and KSBH00=V_SQKS00 and rownum=1; end if; else if V_CKZNL0 = 'Y' then select a.ckxx00,a.cksx00,a.ckfw00,a.jjzsx0,a.jjzxx0,XXTS00,SXTS00,a.YQZ000,a.FCXX00,a.FCSX00 into :new.CKXX00,:new.CKSX00,:new.CKFW00,:new.JJZSX0,:new.JJZXX0,V_XXTS00,V_SXTS00,V_YQZ000,:new.FCXX00,:new.FCSX00 from JY_XMCKZ0 A where BGXMID=:new.BGXMID and nvl(XBDM00,'W')=nvl(decode(V_CKZXB0,'Y',V_XB0000,XBDM00),'W') and nvl(BBID00,0)=nvl(decode(V_CKZBB0,'Y',V_BBID00,BBID00),0) --wusd 2020.06.09 优化参考范围涉及年龄的判断 for LIS9-20200521-002 and decode(V_NLDW00,'T','D',V_NLDW00)=A.NLDW00 and decode(V_NLDW00,'Y',to_number(V_NL0000)*365,'M',to_number(V_NL0000)*30,'W',to_number(V_NL0000)*7,to_number(V_NL0000)) >=decode(A.NLDW00,'Y',nvl(A.NLXX00,0)*365, 'M',nvl(A.NLXX00,0)*30, 'W',nvl(A.NLXX00,0)*7, nvl(A.NLXX00,0)) and decode(V_NLDW00,'Y',to_number(V_NL0000)*365,'M',to_number(V_NL0000)*30,'W',to_number(V_NL0000)*7,to_number(V_NL0000)) <=decode(A.NLDW00,'Y',nvl(A.NLSX00,180)*365, 'M',nvl(A.NLSX00,180)*30, 'W',nvl(A.NLSX00,1200)*7, nvl(A.NLSX00,180)) and nvl(ZDID00,'0')=nvl(decode(V_CKZZD0,'Y',V_ZDID00,ZDID00),'0') and nvl(KSBH00,0)='0' and rownum=1; else select a.ckxx00,a.cksx00,a.ckfw00,a.jjzsx0,a.jjzxx0,XXTS00,SXTS00,a.YQZ000,a.FCXX00,a.FCSX00 into :new.CKXX00,:new.CKSX00,:new.CKFW00,:new.JJZSX0,:new.JJZXX0,V_XXTS00,V_SXTS00,V_YQZ000,:new.FCXX00,:new.FCSX00 from JY_XMCKZ0 A where BGXMID=:new.BGXMID and nvl(XBDM00,'W')=nvl(decode(V_CKZXB0,'Y',V_XB0000,XBDM00),'W') and nvl(BBID00,0)=nvl(decode(V_CKZBB0,'Y',V_BBID00,BBID00),0) and nvl(ZDID00,'0')=nvl(decode(V_CKZZD0,'Y',V_ZDID00,ZDID00),'0') and nvl(KSBH00,0)='0' and rownum=1; end if; end if; exception when NO_DATA_FOUND then return; end; else --2017.01.17 daihq 备注 南平市一特殊处理 JY_BGSJCKZ表数据用insert语句写入 2016.04.28 chenyw for LIS-20160428-001 --0:CKXX;1:CKSX,2:CKFW00,3:JJZXX0,4:JJZSX0,5:SXTS00,6:XXTS00,7:YQZ000,8:JJSXTS,9:JJXXTS; select SF_GET_XMCKZNR('0',:new.BGXMID,:new.YBH000),SF_GET_XMCKZNR('1',:new.BGXMID,:new.YBH000), SF_GET_XMCKZNR('2',:new.BGXMID,:new.YBH000),SF_GET_XMCKZNR('4',:new.BGXMID,:new.YBH000), SF_GET_XMCKZNR('3',:new.BGXMID,:new.YBH000),SF_GET_XMCKZNR('6',:new.BGXMID,:new.YBH000), SF_GET_XMCKZNR('5',:new.BGXMID,:new.YBH000),SF_GET_XMCKZNR('7',:new.BGXMID,:new.YBH000) into :new.CKXX00,:new.CKSX00,:new.CKFW00,:new.JJZSX0,:new.JJZXX0,V_XXTS00,V_SXTS00,V_YQZ000 from dual; end if; if (:new.CKFW00 IS NULL) or (trim(:new.CKFW00) = '') then return; end if; if instr(','||JY_BGXJGZCBZYQ||',',','||:new.YQDH00||',')>0 then return; end if; --2020.04.22 wsd 质控样本不写入超警戒值 for LIS9-20200422-001 select count(1) into V_COUNT0 from JY_ZLKZBB where YQDH00=:new.YQDH00 and YBH000=substr(:new.YBH000,3,4); if V_COUNT0 > 0 then return; end if; if nvl(:new.SJLY00,'0')='0' then if (V_JGLX00 = 'N') or (V_JGLX00 = 'C') then :new.JYJG00:=trim(:new.JYJG00); if(instr(:new.JYJG00,'E+')>0) then begin V_JYJG:=to_number(trim(substr(:new.JYJG00,1,instr(:new.JYJG00,'E+')-1)))*power(10,to_number(trim(substr(:new.JYJG00,instr(:new.JYJG00,'E+')+2,2)))); exception when others then V_JYJG := :new.JYJG00; end; elsif (instr(:new.JYJG00,'*10^')>0) then begin V_JYJG:=to_number(trim(substr(:new.JYJG00,1,instr(:new.JYJG00,'*10^')-1)))*power(10,to_number(trim(substr(:new.JYJG00,instr(:new.JYJG00,'*10^')+4,2)))); exception when others then V_JYJG := :new.JYJG00; end; else V_JYJG := :new.JYJG00; end if; begin if to_number(V_JYJG) > to_number(:new.CKSX00) then :new.JGZCBZ := V_SXTS00; end if; exception when others then :new.JGZCBZ := NULL; end; begin if to_number(V_JYJG) < to_number(:new.CKXX00) then :new.JGZCBZ := V_XXTS00; end if; exception when others then :new.JGZCBZ := NULL; end; begin if (to_number(V_JYJG) > to_number(:new.JJZSX0)) then :new.SFCJJZ := 'Y'; :new.JGZCBZ :='↑↑'; elsif (to_number(V_JYJG) < to_number(:new.JJZXX0)) then :new.SFCJJZ := 'Y'; :new.JGZCBZ :='↓↓'; end if; exception when others then :new.SFCJJZ := 'N'; end; if instr(V_JYJG,'>') = 1 then if (instr(V_JYJG,'>=') = 1) or (instr(V_JYJG,'>>') = 1) then V_JYJG00 := substr(V_JYJG,3,length(V_JYJG)); else V_JYJG00 := substr(V_JYJG,2,length(V_JYJG)); end if; begin if to_number(V_JYJG00)+0.0001 > to_number(:new.CKSX00) then :new.JGZCBZ := V_SXTS00; end if; exception when others then :new.JGZCBZ := NULL; end; begin if to_number(V_JYJG00)+0.0001 > to_number(:new.JJZSX0) then :new.SFCJJZ := 'Y'; :new.JGZCBZ :='↑↑'; end if; exception when others then :new.SFCJJZ := 'N'; end; end if; if instr(V_JYJG,'<') = 1 then if (instr(V_JYJG,'<=') = 1) or (instr(V_JYJG,'<<') = 1) then V_JYJG00 := substr(V_JYJG,3,length(V_JYJG)); else V_JYJG00 := substr(V_JYJG,2,length(V_JYJG)); end if; begin if to_number(V_JYJG00)-0.0001 < to_number(:new.CKXX00) then :new.JGZCBZ := V_XXTS00; end if; exception when others then :new.JGZCBZ := NULL; end; begin if to_number(V_JYJG00)-0.0001 > to_number(:new.JJZXX0) then :new.SFCJJZ := 'Y'; :new.JGZCBZ :='↓↓'; end if; exception when others then :new.SFCJJZ := 'N'; end; end if; end if; if lsJY_JYJGTSTS<>0 then if nvl(:new.JGZCBZ,'阴性')='阴性' then :new.JGZCBZ:='阴性'; elsif nvl(:new.JGZCBZ,'阴性')='弱阳性' then :new.JGZCBZ:='弱阳性'; else :new.JGZCBZ:='阳性'; end if; end if; select ZCFWNR into V_ZCFWNR from JY_XMCKZ0 where BGXMID=:new.BGXMID; if (V_JGLX00 = 'L') or (V_JGLX00 = 'D') or (V_JGLX00 = 'T') then if (instr(trim('|'||:new.CKFW00)||'|','|'||:new.JYJG00||'|',1) = 0) and (instr(trim('|'||V_ZCFWNR)||'|','|'||:new.JYJG00||'|',1) = 0)then :new.JGZCBZ := V_SXTS00; else :new.JGZCBZ := null; end if; if (nvl(:new.JJZXX0,'0')<>'0') and (instr(trim('|'||:new.JJZXX0)||'|','|'||trim(:new.JYJG00)||'|',1) >0) then :new.SFCJJZ := 'Y'; :new.JGZCBZ :='↓↓'; elsif (nvl(:new.JJZSX0,'0')<>'0') and (instr(trim('|'||:new.JJZSX0)||'|','|'||trim(:new.JYJG00)||'|',1) >0) then :new.SFCJJZ := 'Y'; :new.JGZCBZ :='↑↑'; end if ; if (nvl(V_YQZ000,'0')<>'0') and (V_YQZ000 is not null ) and (instr(trim('|'||V_YQZ000)||'|','|'||:new.JYJG00||'|',1)>0) then :new.SFCYQZ := 'Y'; end if; end if; --指定某些报告项目id为特定的结果时不显示上下限 while length(JY_ZDBGXMTSJG)>2 loop F_CSZ000 :=substr(JY_ZDBGXMTSJG,instr(JY_ZDBGXMTSJG ,'|',1,1)+1,instr(JY_ZDBGXMTSJG ,'|',1,2)-instr(JY_ZDBGXMTSJG ,'|',1,1)-1); F_BGXMID :=substr(F_CSZ000,1,instr(F_CSZ000 ,',',1,1)-1); F_JYJG00 :=substr(F_CSZ000,instr(F_CSZ000 ,',',1,1)+1,length(F_CSZ000)); if (:new.BGXMID=F_BGXMID) and (:new.JYJG00=F_JYJG00) then :new.SFCJJZ :='N'; :new.JGZCBZ :=''; end if; JY_ZDBGXMTSJG:=substr(JY_ZDBGXMTSJG ,instr(JY_ZDBGXMTSJG ,'|',1,2),length(JY_ZDBGXMTSJG)); end loop; end if; --2018.11.01 wsd 不写入超警戒值 for LIS9-20180927-001 select SQKS00 into V_SQKS00 from JY_YW0000 where JYYWID=:new.JYYWID and YBH000=:new.YBH000 and PYRQ00=:new.PYRQ00 and ZLXMID=:new.ZLXMID and rownum=1; if (instr(','||JY_BXRCJJZLXM||',',','||:new.ZLXMID||',',1) > 0) and (instr(','||JY_BXRCJJKSBH||',',','||V_SQKS00||',',1) > 0) then :new.SFCJJZ := 'N'; end if; --2022.06.16 wsd 超警戒值更新业务表 for LIS9-20220607-002 if :new.SFCJJZ = 'Y' then update JY_YW0000 set SFWJZ0='1' where JYYWID=:new.JYYWID; end if; exception when E_MODifY then raise_application_error(-20005,'该标本非您排样,不能修改结果!*'); when others then return; end;