CREATE OR REPLACE TRIGGER TR_ZY_BRXXB0_JCPT_SRMYY AFTER UPDATE ON SD_ZY.ZY_BRXXB0 REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW declare lv_count number(5) ; --计数器 VXMZT00 ZY_DFSADT.XMZT00%type; VXXLX00 ZY_DFSADT.XXLX00%type; VFSCJ00 ZY_DFSADT.FSCJ00%type; VJSXT00 ZY_DFSADT.JSXT00%type; LS_JCPTCJ varchar2(10); --------------------------------------------------------- begin VXMZT00:='-1'; if :new.BRZT00='20' and :OLD.BRZT00='1' then --入科登记 VXMZT00:='1'; VFSCJ00:='Patient_Admit'; VXXLX00:='ADT^A01^ADT_A01'; elsif :old.BRZT00='20' and :new.BRZT00='1' then --取消入科登记 VXMZT00:='2'; VFSCJ00:='Patient_Admit_Cancel'; VXXLX00:='ADT^A11^ADT_A09'; elsif :old.BRZT00<>:new.BRZT00 and :new.BRZT00='20' and :old.BRZT00='21' then--转科登记收治结束 VXMZT00:='3'; VFSCJ00:='Patient_Transfer'; VXXLX00:='ADT^A02^ADT_A02'; elsif :old.BRZT00<>:new.BRZT00 and :new.BRZT00='3' then --出院登记 VXMZT00:='4'; VFSCJ00:='Patient_Discharge'; VXXLX00:='DFT^P03^DFT_P03'; elsif :old.BRZT00<>:new.BRZT00 and :new.BRZT00='20' and :old.BRZT00='3' then --取消出院登记 VXMZT00:='5'; VFSCJ00:='Patient_Discharge_Cancel'; VXXLX00:='DFT^P03^DFT_P03'; elsif VXMZT00='-1' and (:new.RYCWH0<>:OLD.RYCWH0 or :new.XM0000<>:OLD.XM0000 or :new.CSRQ00<>:old.CSRQ00 or :new.FBBH00<>:old.FBBH00 OR :NEW.ZRYS00<>:OLD.ZRYS00 OR :NEW.SXYS00<>:OLD.SXYS00 OR :NEW.ZZYS00<> :OLD.ZZYS00)then VXMZT00:='6'; VFSCJ00:='Patient_Update'; VXXLX00:='ADT^A08^ADT_A01';--更新患者信息 end if; VJSXT00:='EMR'; if VXMZT00>='0' then insert into ZY_DFSADT(ID0000, ZYID00, XMZT00, FSBZ00, FSCJ00, JSXT00, JSMK00, XXLX00, BZ0000, CZBZ00, RYCWH0, KSH000, BQH000, ZZYS00, ZRYS00, OKSH00, OBQH00, OCH000,YSZID0,OYSZID) values(SQ_ZY_DFSADT_ID0000.nextval,:new.ZYID00,VXMZT00,'0',VFSCJ00,VJSXT00, 'EMR',VXXLX00,'','0',:new.RYCWH0,:new.DQKS00,:new.DQBQ00,:new.ZZYS00, :new.ZRYS00,:OLD.DQKS00,:OLD.DQBQ00,:OLD.RYCWH0,:new.YSZID0,:OLD.YSZID0) ; end if; exception when others then raise_application_error(-20001,'发送集成平台病人信息错误!'); end; /