CREATE OR REPLACE TRIGGER TR_YJ_YW0000_UPD_PACS AFTER INSERT OR DELETE OR UPDATE ON SD_MZ.YJ_YW0000 REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW DECLARE errstr VARCHAR2 (200); ecustom EXCEPTION; vjclbid bm_jclb00.jclbid%TYPE; vickh00 ic_yhxx00.ickh00%TYPE; vybkh00 VARCHAR2 (32); vjclbmc bm_jclb00.jclbmc%type; vcount number(2,0); vFlag00 char(1); -- 1、开单后传送;;3、执行后传送;省二要求开单后传给PACS nRecordB INTEGER; nRecordC INTEGER; nRecordM INTEGER; cExam_SE VARCHAR2(10); cExam_GP VARCHAR2(20); vReturn Integer; vReturnMemo varchar2(2000); vjcbw00 bm_zdms00.zdmsmc%type; vzdmc00 spacs.exam_apply.clin_symp%type; vwbzid0 bljk_yzjkb0.wbzid0%type; v_count_htmz number(2,0); --xgh v_count_ylzmz number(2,0); --xgh v_wy number(2,0); --xgh v_we number(2,0); --xgh v_zhkdksbh VARCHAR2(20); --xgh v_cou_zuofei number(2,0); --xgh v_deldjh number(2,0); --xgh v_Exam_Apply_Item_Del number(2,0); --xgh v_jzfpcount number(2,0); --xgh v_jzfpbz VARCHAR2(20); --xgh BEGIN --return; vFlag00 := '1'; --xgh 下 v_jzfpcount:=0; v_jzfpbz:=''; --select count(1) into v_jzfpcount from bm_brxxb0 where brid00=:new.brid00 and sfjzfp in ('1','Y'); --if v_jzfpcount>=1 then --v_jzfpbz:='【精准扶贫病人】'; --end if; v_zhkdksbh:='118'; if :new.kdksbh='118' then select count(1) into v_wy from bq_brldxx where zyid00=:new.zyghid and qsrq00<=:new.kdrq00 and ksh000='66'; select count(1) into v_we from bq_brldxx where zyid00=:new.zyghid and qsrq00<=:new.kdrq00 and ksh000='160'; if (v_wy>=1 and v_wy>=v_we) then v_zhkdksbh:='66'; elsif (v_we>=1 and v_wy=1 then select wbzid0 into vwbzid0 from SD_DZBLJK.BLJK_YW0000 where yjdjh0=:new.yjdjh0;--yl end if; select count(1) into v_count_ylzmz from sd_hospital.ys_brzdxx where ghh000=:NEW.zyhghh and zzdbz0='3'; if v_count_ylzmz>=1 then select SUBSTR (zdmc00, 1, 100) into vzdmc00 from sd_hospital.ys_brzdxx where ghh000=:NEW.zyhghh and zzdbz0='3'; end if; --xgh 上 end if; exception when no_data_found then vzdmc00:=''; vwbzid0:=''; end; IF INSERTING and vFlag00 = '1' THEN IF :NEW.zlxmid > 0 THEN errstr := 'err1: 诊疗项目不存在ZLXMID=' || TO_CHAR (:NEW.zlxmid); SELECT jclbid,(select zdmsmc from BM_ZDMS00 where ZDMSH0=replace(bwbh00,'''','')) INTO vjclbid,vjcbw00 FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid; END IF; IF vjclbid IS NOT null THEN errstr := 'err2: 检查类别不存在JCLBID=' || vjclbid; SELECT jclbmc INTO vjclbmc FROM bm_jclb00 WHERE jclbid = vjclbid; BEGIN SELECT ickh00 INTO vickh00 FROM ic_yhxx00 WHERE brid00 = :NEW.brid00 AND zt0000 = '1'; --SELECT 'FZYB'||YBKH00 INTO vickh00 FROM BM_BRXXB0 WHERE brid00 = :NEW.brid00 AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN vickh00 := ''; END; BEGIN SELECT RTRIM (ybkh00) INTO vybkh00 FROM bm_brxxb0 WHERE brid00 = :NEW.brid00 AND fbbh00='3'; --xgh 下 select count(1) into v_jzfpcount from bm_brxxb0 where brid00=:new.brid00 and sfjzfp in ('1','Y'); if v_jzfpcount>=1 then v_jzfpbz:='【精准扶贫病人】'; end if; --xgh 上 EXCEPTION WHEN OTHERS THEN vybkh00 := ''; END; SELECT COUNT(*) INTO nRecordB FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid AND (:NEW.zlxmjc like '%B超%' or :NEW.zlxmid=2385 or :NEW.zlxmid=2387 or :NEW.zlxmid=2387 or :NEW.zlxmid=2783 or :NEW.zlxmid=2387 or :NEW.zlxmid=2239 or :NEW.zlxmid=2387 or :NEW.zlxmid=3228 or :NEW.zlxmid=2387 or :NEW.zlxmid=2387); SELECT COUNT(*) INTO nRecordC FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid AND (:NEW.zlxmjc like '%彩超%' or :NEW.zlxmid=2482 or :NEW.zlxmid=2479) and :NEW.zlxmid<>2481 and :NEW.zlxmid <> '2487' and :NEW.zlxmid <> '2488' and :NEW.zlxmid <> '2489'and :NEW.zlxmid <> '3411' and :NEW.zlxmid <> '3219' and :NEW.zlxmid <> '3220' and :NEW.zlxmid <> '3221' and :NEW.zlxmid <> '3222' and :NEW.zlxmid <> '3223' and :NEW.zlxmid <> '3224' and :NEW.zlxmid <> '3225' and :NEW.zlxmid <> '3226'and :NEW.zlxmid <> '2471' and :NEW.zlxmid<>'3727' and :NEW.zlxmid<>'3728' and :NEW.zlxmid<>'3729' and :NEW.zlxmid<>'3730' and :NEW.zlxmid<>'3731' and :NEW.zlxmid<>'3732'; if vjclbid = 2 and nRecordB = 1 then cExam_SE := 'B超'; ELSif vjclbid = 2 and nRecordC = 1 then cExam_SE := '彩超'; ELSif vjclbid = 2 and :NEW.zlxmid = '2471' then cExam_SE := '胸部超声'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2481' or :NEW.zlxmid = '3484') then cExam_SE := '心脏彩超'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2487' or :NEW.zlxmid = '2488' or :NEW.zlxmid = '2489' or :NEW.zlxmid = '3411' or :NEW.zlxmid = '3219' or :NEW.zlxmid = '3220' or :NEW.zlxmid = '3221' or :NEW.zlxmid = '3222' or :NEW.zlxmid = '3223' or :NEW.zlxmid = '3224' or :NEW.zlxmid = '3225' or :NEW.zlxmid = '3226' or :NEW.zlxmid='3727' or :NEW.zlxmid='3728' or :NEW.zlxmid='3729' or :NEW.zlxmid='3730' or :NEW.zlxmid='3731' or :NEW.zlxmid='3732') then cExam_SE := '血管彩超'; ELSif vjclbid = 9 then cExam_SE := '心电'; ELSif vjclbid = 10 then cExam_SE := '肺功能检查'; ELSe cExam_SE := NULL; end if ; if vjclbid = 2 and nRecordB = 1 then cExam_GP := 'B超'; ELSif vjclbid = 2 and nRecordC = 1 then cExam_GP := '彩超'; ELSif vjclbid = 2 and :NEW.zlxmid = '2471' then cExam_GP := '胸部超声'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2481' or :NEW.zlxmid = '2487' or :NEW.zlxmid = '2488' or :NEW.zlxmid = '2489'or :NEW.zlxmid = '3411' or :NEW.zlxmid = '3219' or :NEW.zlxmid = '3220' or :NEW.zlxmid = '3221' or :NEW.zlxmid = '3222' or :NEW.zlxmid = '3223' or :NEW.zlxmid = '3224' or :NEW.zlxmid = '3225' or :NEW.zlxmid = '3226' or :NEW.zlxmid = '3484' or :NEW.zlxmid='3727' or :NEW.zlxmid='3728' or :NEW.zlxmid='3729' or :NEW.zlxmid='3730' or :NEW.zlxmid='3731' or :NEW.zlxmid='3732') then cExam_GP := '心血管彩超'; ELSif vjclbid = 1 then cExam_GP := 'CT一'; ELSif vjclbid = 4 then cExam_GP := '放射一组'; ELSif vjclbid = 9 then cExam_GP := '心电图检查'; ELSif vjclbid = 10 then cExam_GP := '肺功能检查'; ELSe cExam_GP := NULL; end if ; /*if :new.mzzybz='0' then select zdmc00 into vzdmc00 from ys_brzdxx where zzdbz0='3' and ghid00= :new.zyghid and rownum=1; else select zdmc00 into vzdmc00 from bm_brzdxx where zdlb00='3' and zyid00= :new.zyghid and rownum=1; end if;*/ --主表 INSERT INTO spacs.exam_apply (apply_no, sick_id, ic_card,MI_CARD, NAME, sex, birth_date, charge_type, costs, charges, mailing_address, zip_code, phone_number, outpatient_no, inpatient_no, bed_no, patient_source, priority_order, exam_class, req_dept, req_physician, req_date, req_time, req_memo, clin_diag, perform_dept, charge_flag, visit_id,exam_sub_class,exam_group, age,req_dept_name,perform_dept_name, zx_date,zx_time,req_hospital,med_record) --xgh 增加 ,zx_date,zx_time SELECT :NEW.yjdjh0, brid00, TRIM (vickh00),TRIM(vybkh00), SUBSTR (brxm00, 1, 24), SUBSTR (brxb00, 1, 4), TO_CHAR (TO_DATE (brcsrq, 'yyyymmdd'), 'yyyy-mm-dd'), SUBSTR (fbmc00, 1, 8), :NEW.zje000, :NEW.zje000, brjtdz, SUBSTR (bryb00, 1, 6), SUBSTR (brdh00, 1, 16), DECODE (:NEW.mzzybz,'0', SUBSTR (TRIM (:NEW.zyhghh), 1, 10),''), DECODE (:NEW.mzzybz,1, SUBSTR (TRIM (:NEW.zyhghh), 1, 10),''), :NEW.ch0000, DECODE (:NEW.mzzybz, 0, '门诊', 1, '住院', '外来'), DECODE (:NEW.jzbz00, 'Y', '急诊', '普通'), vjclbmc, decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh), SUBSTR (:NEW.kdysxm, 1, 8), --xgh :NEW.kdksbh 改为decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh) TO_CHAR (TO_DATE (:NEW.kdrq00, 'yyyymmdd'), 'yyyy-mm-dd'), :NEW.kdsj00, v_jzfpbz||' '||:NEW.bz0000||' '||:NEW.tsbsmc, nvl(SUBSTR (:NEW.zdmc00, 1, 100),vzdmc00), :NEW.yjksbh, '0', :NEW.zyghid,cExam_SE,cExam_GP, :new.nl0000,(select bmmc00 from bm_bmbm00 where bmbh00=decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh)),(select bmmc00 from bm_bmbm00 where bmbh00= :new.yjksbh), -- bmbh00=:NEW.kdksbh 改为 bmbh00=decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh) TO_CHAR (TO_DATE (:new.zxrq00, 'yyyymmdd'), 'yyyy-mm-dd'),:NEW.zxsj00,'福州肺科医院',:NEW.tsbsmc --xgh 增加 ,TO_CHAR (TO_DATE (:new.zxrq00, 'yyyymmdd'), 'yyyy-mm-dd'),:NEW.zxsj00 FROM vw_bm_brxxb1 WHERE brid00 = :NEW.brid00; if VJCLBMC = 'CT' then insert into spacs.exam_apply_organ(apply_no , organ_no ,organ_name) values(:new.yjdjh0,'1',nvl(:new.bwmc00,vjcbw00));--xgh values(:new.yjdjh0,'1','肺部'); end if; if VJCLBMC = '放射' then insert into spacs.exam_apply_organ(apply_no , organ_no ,organ_name) values(:new.yjdjh0,'1','胸正位'); end if; insert into spacs.hisfacelog(apply_no,event,event_type) values(:new.yjdjh0,'插入数据','INSERT'); END IF; ELSIF UPDATING THEN SELECT jclbid,(select zdmsmc from BM_ZDMS00 where ZDMSH0=replace(bwbh00,'''','')) INTO vjclbid,vjcbw00 FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid; if vjclbid is not null then IF :NEW.zlxmid > 0 THEN errstr := 'err1: 诊疗项目不存在ZLXMID=' || TO_CHAR (:NEW.zlxmid); SELECT jclbid INTO vjclbid FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid; if :new.yjksbh in (531,566) and vjclbid = 10 then vjclbid:= 12; ELSif :new.yjksbh in (499,505) and vjclbid = 10 then vjclbid:= 13; end if; END IF; if :new.yjdjh0 is not null then select count(*) into vcount from spacs.exam_apply where apply_no = to_char(:new.yjdjh0); end if; IF (vjclbid IS NOT null) and (vcount=0) THEN errstr := 'err2: 检查类别不存在JCLBID=' || vjclbid; SELECT jclbmc INTO vjclbmc FROM bm_jclb00 WHERE jclbid = vjclbid; BEGIN SELECT ickh00 INTO vickh00 FROM ic_yhxx00 WHERE brid00 = :NEW.brid00 AND zt0000 = '1'; --SELECT 'FZYB'||YBKH00 INTO vickh00 FROM BM_BRXXB0 WHERE brid00 = :NEW.brid00 AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN vickh00 := ''; END; BEGIN SELECT RTRIM (ybkh00) INTO vybkh00 FROM bm_brxxb0 WHERE brid00 = :NEW.brid00 AND fbbh00='3'; --xgh 下 select count(1) into v_jzfpcount from bm_brxxb0 where brid00=:new.brid00 and sfjzfp in ('1','Y'); if v_jzfpcount>=1 then v_jzfpbz:='【精准扶贫病人】'; end if; --xgh 上 EXCEPTION WHEN OTHERS THEN vybkh00 := ''; END; SELECT COUNT(*) INTO nRecordB FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid AND (:NEW.zlxmjc like '%B超%' or :NEW.zlxmid=2385 or :NEW.zlxmid=2387 or :NEW.zlxmid=2387 or :NEW.zlxmid=2783 or :NEW.zlxmid=2387 or :NEW.zlxmid=2239 or :NEW.zlxmid=2387 or :NEW.zlxmid=3228 or :NEW.zlxmid=2387 or :NEW.zlxmid=2387); SELECT COUNT(*) INTO nRecordC FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid AND (:NEW.zlxmjc like '%彩超%' or :NEW.zlxmid=2482 or :NEW.zlxmid=2479) and :NEW.zlxmid<>2481 and :NEW.zlxmid <> '2487' and :NEW.zlxmid <> '2488' and :NEW.zlxmid <> '2489'and :NEW.zlxmid <> '3411' and :NEW.zlxmid <> '3219' and :NEW.zlxmid <> '3220' and :NEW.zlxmid <> '3221' and :NEW.zlxmid <> '3222' and :NEW.zlxmid <> '3223' and :NEW.zlxmid <> '3224' and :NEW.zlxmid <> '3225' and :NEW.zlxmid <> '3226'and :NEW.zlxmid <> '2471' and :NEW.zlxmid<>'3727' and :NEW.zlxmid<>'3728' and :NEW.zlxmid<>'3729' and :NEW.zlxmid<>'3730' and :NEW.zlxmid<>'3731' and :NEW.zlxmid<>'3732' ; if vjclbid = 2 and nRecordB = 1 then cExam_SE := 'B超'; ELSif vjclbid = 2 and nRecordC = 1 then cExam_SE := '彩超'; ELSif vjclbid = 2 and :NEW.zlxmid = '2471' then cExam_SE := '胸部超声'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2481' or :NEW.zlxmid = '3484') then cExam_SE := '心脏彩超'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2487' or :NEW.zlxmid = '2488' or :NEW.zlxmid = '2489' or :NEW.zlxmid = '3411' or :NEW.zlxmid = '3219' or :NEW.zlxmid = '3220' or :NEW.zlxmid = '3221' or :NEW.zlxmid = '3222' or :NEW.zlxmid = '3223' or :NEW.zlxmid = '3224' or :NEW.zlxmid = '3225' or :NEW.zlxmid = '3226' or :NEW.zlxmid='3727' or :NEW.zlxmid='3728' or :NEW.zlxmid='3729' or :NEW.zlxmid='3730' or :NEW.zlxmid='3731' or :NEW.zlxmid='3732') then cExam_SE := '血管彩超'; ELSif vjclbid = 9 then cExam_SE := '心电'; ELSif vjclbid = 10 then cExam_SE := '肺功能检查'; ELSe cExam_SE := NULL; end if ; if vjclbid = 2 and nRecordB = 1 then cExam_GP := 'B超'; ELSif vjclbid = 2 and nRecordC = 1 then cExam_GP := '彩超'; ELSif vjclbid = 2 and :NEW.zlxmid = '2471' then cExam_GP := '胸部超声'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2481' or :NEW.zlxmid = '2487' or :NEW.zlxmid = '2488' or :NEW.zlxmid = '2489'or :NEW.zlxmid = '3411' or :NEW.zlxmid = '3219' or :NEW.zlxmid = '3220' or :NEW.zlxmid = '3221' or :NEW.zlxmid = '3222' or :NEW.zlxmid = '3223' or :NEW.zlxmid = '3224' or :NEW.zlxmid = '3225' or :NEW.zlxmid = '3226' or :NEW.zlxmid = '3484' or :NEW.zlxmid='3727' or :NEW.zlxmid='3728' or :NEW.zlxmid='3729' or :NEW.zlxmid='3730' or :NEW.zlxmid='3731' or :NEW.zlxmid='3732') then cExam_GP := '心血管彩超'; ELSif vjclbid = 1 then cExam_GP := 'CT一'; ELSif vjclbid = 4 then cExam_GP := '放射一组'; ELSif vjclbid = 9 then cExam_GP := '心电图检查'; ELSif vjclbid = 10 then cExam_GP := '肺功能检查'; ELSe cExam_GP := NULL; end if ; if --(vFlag00 = '3') :new.kdrq00||:new.kdsj00<='2017081512:50:00' --wzy加时间判断兼容新旧方式病人 and (:NEW.XMZT00 = 3 or (:New.zlxmid='20011')) then if (:New.zxsl00 > 0) then INSERT INTO spacs.exam_apply (apply_no, sick_id, ic_card,MI_CARD, NAME, sex, birth_date, charge_type, costs, charges, mailing_address, zip_code, phone_number, outpatient_no, inpatient_no, bed_no, patient_source, priority_order, exam_class, req_dept, req_physician, req_date, req_time, req_memo, clin_diag, perform_dept, charge_flag, visit_id,exam_sub_class,exam_group, age,req_dept_name,perform_dept_name, zx_date,zx_time,req_hospital,med_record) --xgh 增加 ,zx_date,zx_time SELECT :NEW.yjdjh0, brid00, TRIM (vickh00),TRIM(vybkh00), SUBSTR (brxm00, 1, 24), SUBSTR (brxb00, 1, 4), TO_CHAR (TO_DATE (brcsrq, 'yyyymmdd'), 'yyyy-mm-dd'), SUBSTR (fbmc00, 1, 8), :NEW.zje000, :NEW.zje000, brjtdz, SUBSTR (bryb00, 1, 6), SUBSTR (brdh00, 1, 16), DECODE (:NEW.mzzybz, '0', SUBSTR (TRIM (:NEW.zyhghh), 1, 10), '' ), DECODE (:NEW.mzzybz,1, SUBSTR (TRIM (:NEW.zyhghh), 1, 10),''), :NEW.ch0000, DECODE (:NEW.mzzybz, 0, '门诊', 1, '住院', '外来'), DECODE (:NEW.jzbz00, 'Y', '急诊', '普通'), vjclbmc, decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh), SUBSTR (:NEW.kdysxm, 1, 8), TO_CHAR (TO_DATE (:NEW.kdrq00, 'yyyymmdd'), 'yyyy-mm-dd'), :NEW.kdsj00, v_jzfpbz||' '||:NEW.bz0000||' '||:NEW.tsbsmc, nvl(SUBSTR (:NEW.zdmc00, 1, 100),vzdmc00), :NEW.yjksbh, '0', :NEW.zyghid ,cExam_SE,cExam_GP, :new.nl0000,(select bmmc00 from bm_bmbm00 where bmbh00=decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh)),(select bmmc00 from bm_bmbm00 where bmbh00= :new.yjksbh), TO_CHAR (TO_DATE (:new.zxrq00, 'yyyymmdd'), 'yyyy-mm-dd'),:NEW.zxsj00,'福州肺科医院',:NEW.tsbsmc --xgh 增加 ,TO_CHAR (TO_DATE (:new.zxrq00, 'yyyymmdd'), 'yyyy-mm-dd'),:NEW.zxsj00 FROM vw_bm_brxxb1 WHERE brid00 = :NEW.brid00; if VJCLBMC = 'CT' then insert into spacs.exam_apply_organ(apply_no , organ_no ,organ_name) values(:new.yjdjh0,'1',nvl(:new.bwmc00,vjcbw00));--xgh values(:new.yjdjh0,'1','肺部'); end if; if VJCLBMC = '放射' then insert into spacs.exam_apply_organ(apply_no , organ_no ,organ_name) values(:new.yjdjh0,'1','胸正位'); end if; insert into spacs.hisfacelog(apply_no,event,event_type) values(:new.yjdjh0,'插入数据','UPDATE'); end if; end if; END IF; --检查项目变动时 IF (vjclbid IS NOT NULL) AND (:NEW.zlxmid <> :OLD.zlxmid) THEN errstr := 'err2: 检查类别不存在JCLBID=' || vjclbid; SELECT jclbmc INTO vjclbmc FROM bm_jclb00 WHERE jclbid = vjclbid; BEGIN SELECT ickh00 INTO vickh00 FROM ic_yhxx00 WHERE brid00 = :NEW.brid00 AND zt0000 = '1'; --SELECT 'FZYB'||YBKH00 INTO vickh00 FROM BM_BRXXB0 WHERE brid00 = :NEW.brid00 AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN vickh00 := ''; END; BEGIN SELECT RTRIM (ybkh00) INTO vybkh00 FROM bm_brxxb0 WHERE brid00 = :NEW.brid00 AND fbbh00='3'; --xgh 下 select count(1) into v_jzfpcount from bm_brxxb0 where brid00=:new.brid00 and sfjzfp in ('1','Y'); if v_jzfpcount>=1 then v_jzfpbz:='【精准扶贫病人】'; end if; --xgh 上 EXCEPTION WHEN OTHERS THEN vybkh00 := ''; END; --DELETE FROM spacs.exam_apply WHERE apply_no = :OLD.yjdjh0; begin spacs.Proc_MergeApplication(:old.yjdjh0,1,vReturn,vReturnMemo); if vReturnMemo is not null then ErrStr:=vReturnMemo; raise ECUSTOM; end if; end; SELECT COUNT(*) INTO nRecordB FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid AND (:NEW.zlxmjc like '%B超%' or :NEW.zlxmid=2385 or :NEW.zlxmid=2387 or :NEW.zlxmid=2387 or :NEW.zlxmid=2783 or :NEW.zlxmid=2387 or :NEW.zlxmid=2239 or :NEW.zlxmid=2387 or :NEW.zlxmid=3228 or :NEW.zlxmid=2387 or :NEW.zlxmid=2387); SELECT COUNT(*) INTO nRecordC FROM bm_zlzd00 WHERE zlxmid = :NEW.zlxmid AND (:NEW.zlxmjc like '%彩超%' or :NEW.zlxmid=2482 or :NEW.zlxmid=2479) and :NEW.zlxmid<>2481 and :NEW.zlxmid <> '2487' and :NEW.zlxmid <> '2488' and :NEW.zlxmid <> '2489' and :NEW.zlxmid = '3411'and :NEW.zlxmid <> '3219' and :NEW.zlxmid <> '3220' and :NEW.zlxmid <> '3221' and :NEW.zlxmid <> '3222' and :NEW.zlxmid <> '3223' and :NEW.zlxmid <> '3224' and :NEW.zlxmid <> '3225' and :NEW.zlxmid <> '3226'and :NEW.zlxmid <> '2471' and :NEW.zlxmid<>'3727' and :NEW.zlxmid<>'3728' and :NEW.zlxmid<>'3729' and :NEW.zlxmid<>'3730' and :NEW.zlxmid<>'3731' and :NEW.zlxmid<>'3732'; if vjclbid = 2 and nRecordB = 1 then cExam_SE := 'B超'; ELSif vjclbid = 2 and nRecordC = 1 then cExam_SE := '彩超'; ELSif vjclbid = 2 and :NEW.zlxmid = '2471' then cExam_SE := '胸部超声'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2481' or :NEW.zlxmid = '3484') then cExam_SE := '心脏彩超'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2487' or :NEW.zlxmid = '2488' or :NEW.zlxmid = '2489' or :NEW.zlxmid = '3411'or :NEW.zlxmid = '3219' or :NEW.zlxmid = '3220' or :NEW.zlxmid = '3221' or :NEW.zlxmid = '3222' or :NEW.zlxmid = '3223' or :NEW.zlxmid = '3224' or :NEW.zlxmid = '3225' or :NEW.zlxmid = '3226' or :NEW.zlxmid='3727' or :NEW.zlxmid='3728' or :NEW.zlxmid='3729' or :NEW.zlxmid='3730' or :NEW.zlxmid='3731' or :NEW.zlxmid='3732') then cExam_SE := '血管彩超'; ELSif vjclbid = 9 then cExam_SE := '心电'; ELSif vjclbid = 10 then cExam_SE := '肺功能检查'; ELSe cExam_SE := NULL; end if ; if vjclbid = 2 and nRecordB = 1 then cExam_GP := 'B超'; ELSif vjclbid = 2 and nRecordC = 1 then cExam_GP := '彩超'; ELSif vjclbid = 2 and :NEW.zlxmid = '2471' then cExam_GP := '胸部超声'; ELSif vjclbid = 2 and (:NEW.zlxmid = '2481' or :NEW.zlxmid = '2487' or :NEW.zlxmid = '2488' or :NEW.zlxmid = '2489'or :NEW.zlxmid = '3411' or :NEW.zlxmid = '3219' or :NEW.zlxmid = '3220' or :NEW.zlxmid = '3221' or :NEW.zlxmid = '3222' or :NEW.zlxmid = '3223' or :NEW.zlxmid = '3224' or :NEW.zlxmid = '3225' or :NEW.zlxmid = '3226' or :NEW.zlxmid = '3484' or :NEW.zlxmid='3727' or :NEW.zlxmid='3728' or :NEW.zlxmid='3729' or :NEW.zlxmid='3730' or :NEW.zlxmid='3731' or :NEW.zlxmid='3732') then cExam_GP := '心血管彩超'; ELSif vjclbid = 1 then cExam_GP := 'CT一'; ELSif vjclbid = 4 then cExam_GP := '放射一组'; ELSif vjclbid = 9 then cExam_GP := '心电图检查'; ELSif vjclbid = 10 then cExam_GP := '肺功能检查'; ELSe cExam_GP := NULL; end if ; INSERT INTO spacs.exam_apply (apply_no, sick_id, ic_card,MI_CARD, NAME, sex, birth_date, charge_type, costs, charges, mailing_address, zip_code, phone_number, outpatient_no, inpatient_no, bed_no, patient_source, priority_order, exam_class, req_dept, req_physician, req_date, req_time, req_memo, clin_diag, perform_dept, charge_flag, visit_id,exam_sub_class,exam_group, age,req_dept_name,perform_dept_name, zx_date,zx_time,req_hospital,med_record) --xgh 增加 ,zx_date,zx_time SELECT :NEW.yjdjh0, brid00, TRIM (vickh00),TRIM(vybkh00), SUBSTR (brxm00, 1, 24), SUBSTR (brxb00, 1, 4), TO_CHAR (TO_DATE (brcsrq, 'yyyymmdd'), 'yyyy-mm-dd'), SUBSTR (fbmc00, 1, 8), :NEW.zje000, :NEW.zje000, brjtdz, SUBSTR (bryb00, 1, 6), SUBSTR (brdh00, 1, 16), DECODE (:NEW.mzzybz,'0', SUBSTR (TRIM (:NEW.zyhghh), 1, 10),''), DECODE (:NEW.mzzybz,1, SUBSTR (TRIM (:NEW.zyhghh), 1, 10),''), :NEW.ch0000, DECODE (:NEW.mzzybz, 0, '门诊', 1, '住院', '外来'), DECODE (:NEW.jzbz00, 'Y', '急诊', '普通'), vjclbmc, decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh), SUBSTR (:NEW.kdysxm, 1, 8), TO_CHAR (TO_DATE (:NEW.kdrq00, 'yyyymmdd'), 'yyyy-mm-dd'), :NEW.kdsj00, v_jzfpbz||' '||:NEW.bz0000||' '||:NEW.tsbsmc, nvl(SUBSTR (:NEW.zdmc00, 1, 100),vzdmc00), :NEW.yjksbh, '0', :NEW.zyghid,cExam_SE,cExam_GP, :new.nl0000,(select bmmc00 from bm_bmbm00 where bmbh00=decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh)),(select bmmc00 from bm_bmbm00 where bmbh00= :new.yjksbh), TO_CHAR (TO_DATE (:new.zxrq00, 'yyyymmdd'), 'yyyy-mm-dd'),:NEW.zxsj00,'福州肺科医院',:NEW.tsbsmc --xgh 增加 ,TO_CHAR (TO_DATE (:new.zxrq00, 'yyyymmdd'), 'yyyy-mm-dd'),:NEW.zxsj00 FROM vw_bm_brxxb1 WHERE brid00 = :NEW.brid00; if VJCLBMC = 'CT' then insert into spacs.exam_apply_organ(apply_no , organ_no ,organ_name) values(:new.yjdjh0,'1',nvl(:new.bwmc00,vjcbw00));--xgh values(:new.yjdjh0,'1','肺部'); end if; if VJCLBMC = '放射' then insert into spacs.exam_apply_organ(apply_no , organ_no ,organ_name) values(:new.yjdjh0,'1','胸正位'); end if; insert into spacs.hisfacelog(apply_no,event,event_type) values(:new.yjdjh0,'插入数据','UPDATE'); END IF; IF (vjclbid IS NOT NULL) AND ((:NEW.kdksbh <> :OLD.kdksbh)OR (:NEW.kdysxm <> :OLD.kdysxm)OR (:NEW.yjksbh <>:OLD.yjksbh)) THEN UPDATE spacs.exam_apply SET req_dept = decode(:NEW.kdksbh,118,v_zhkdksbh,:NEW.kdksbh), req_physician = :NEW.kdysxm,perform_dept = :NEW.yjksbh WHERE apply_no = :OLD.yjdjh0; END IF; --检查类别项目修改收费标志 IF :NEW.sfdjh0 <> :OLD.sfdjh0 AND vjclbid IS NOT NULL THEN UPDATE spacs.exam_apply SET charge_flag = '1' WHERE apply_no = to_char(:NEW.yjdjh0); UPDATE spacs.exam_apply_item SET charge_flag = '1' WHERE apply_id = to_char(:NEW.yjdjh0); END IF; if vjclbid is not null then update spacs.exam_apply_item set order_no=vwbzid0 /*:new.sqid00*/ where apply_id= to_char(:new.yjdjh0); end if; --作废时,删除接口表记录 select count(1) into v_cou_zuofei from spacs.exam_apply where apply_no=to_char(:new.yjdjh0); --xgh if :NEW.xmzt00 = '6' and nvl(:new.bbzt00,'N') not in ('1','2','3') and v_cou_zuofei>=1 AND vjclbid IS NOT NULL and :new.kdrq00||:new.kdsj00>'2017081512:50:00' --and :old.yjksbh='217'--wzy加时间判断兼容新旧方式病人 -xgh --if :NEW.xmzt00 = '6' and nvl(:new.bbzt00,'N') not in ('1','2','3') and :new.yjdjh0 not in ('32964683','32964684','33175755','33175756','33577563') AND vjclbid IS NOT NULL and :new.kdrq00||:new.kdsj00>'2017081512:50:00' --and :old.yjksbh='217'--wzy加时间判断兼容新旧方式病人 THEN --DELETE FROM spacs.exam_apply_item WHERE apply_id = :OLD.yjdjh0; --DELETE FROM spacs.exam_apply WHERE apply_no = :OLD.yjdjh0; begin spacs.Proc_MergeApplication(:old.yjdjh0,1,vReturn,vReturnMemo); --if vReturnMemo is not null then if vReturn < 0 then ErrStr:=vReturnMemo; raise ECUSTOM; end if; end; insert into spacs.hisfacelog(apply_no,event,event_type) values(:old.yjdjh0,'删除数据','DELETE'); else if :NEW.xmzt00 = '6' and :new.bbzt00 in ('1','2','3') then errstr :='执行科室报告已登记,不能作废!'; raise ECUSTOM; end if; END IF; end if; ELSIF DELETING THEN select count(1) into v_deldjh from spacs.Exam_Apply Where Apply_No = :old.yjdjh0;--xgh select count(1) into v_Exam_Apply_Item_Del from spacs.Exam_Apply_Item_Del Where Apply_No = :old.yjdjh0;--xgh IF :OLD.zlxmid > 0 THEN errstr := 'err1: 诊疗项目不存在ZLXMID=' || TO_CHAR (:OLD.zlxmid); if :new.yjksbh in (531,566) and vjclbid = 10 then vjclbid:= 12; ELSif :new.yjksbh in (499,505) and vjclbid = 10 then vjclbid:= 13; end if; SELECT jclbid INTO vjclbid FROM bm_zlzd00 WHERE zlxmid = :OLD.zlxmid; END IF; IF vjclbid IS NOT NULL and :old.kdrq00||:old.kdsj00>'2017081512:50:00' and :old.sl0000>0 --and :old.yjksbh='217' THEN --DELETE FROM spacs.exam_apply WHERE apply_no = :OLD.yjdjh0; begin spacs.Proc_MergeApplication(:old.yjdjh0,1,vReturn,vReturnMemo); --if vReturnMemo is not null then if vReturn < 0 then ErrStr:=vReturnMemo; raise ECUSTOM; end if; end; else if vjclbid IS NOT NULL and :old.cxdjh0 is not null and :old.kdrq00||:old.kdsj00>'2017081512:50:00' and :old.yjdjh0 not in ('34117282') and v_deldjh>=1 and v_Exam_Apply_Item_Del>=1 then --xgh 增加vjclbid IS NOT NULL and ‘未查到可撤销的单据号’处理用 spacs.proc_applicationforrefund(null, :old.Yjdjh0, :old.zxrxm0,:old.zxrq00,:old.zxsj00,'','福州肺科医院',vReturn,vReturnMemo,'1'); end if; insert into spacs.hisfacelog(apply_no,event,event_type) values(:old.yjdjh0,'删除数据','DELETE'); END IF; END IF; EXCEPTION WHEN ecustom THEN raise_application_error (-20030, errstr || '!*'); WHEN NO_DATA_FOUND THEN raise_application_error (-20010, '数据没有找到,' || errstr || '!*'); WHEN OTHERS THEN raise_application_error (-20020, NVL (SQLERRM, '原因不明出错!*')); END; /