CREATE OR REPLACE PROCEDURE SP_YS_BRZDXX_MZDZBL( PZDXXID in number , --EMR诊断信息ID 唯一号 PGHID00 in number , --EMR 挂号ID PCZLX00 in char , --操作类型 0 新增 1 修改 2 删除 PZZDBZ0 in char , --主诊断标识 PICD900 in varchar2 , --诊断编码 PZDMC00 in varchar2 , --诊断名称 PJZYS00 in number , --就诊医生HIS工号 PZDRQ00 in char , --诊断日期 PZDSJ00 in char --诊断时间 ) as -- MODIFICATION HISTORY -- Person Date Comments -- chenyh 2018.03.19 create -- chenna 2021.06.04 归档EMR通过接口往HIS插诊断 YS_BRZDXX.JZKS00从取员工所属部门改为取挂号的就诊科室 MZYSSJ5-20210528-001 -- ruanbh 2021.09.10 解决PGHID00为空时报错问题 MZYSSJ5-20210827-002 -- caobin 2021.11.15 增加条件 PCZLX00<>’2’ MZYSSJ5-20211009-002 -- chenna 2022.08.06 国家标准编码,国家标准名称同步到his MZYSSJ5-20220809-001 PJZYSXM varchar(200); --就诊医生姓名 PJZKS00 number; --就诊科室 TGHID00 number; --挂号表真实挂号ID TGHH000 number; --挂号表真实挂号号 VCOUNTER number; --计数器变量 ECUSTOM exception; --异常 VTSXX00 varchar2(200); --异常信息 VGHH000 SF_BRXXB0.GHH000%type; VSFXYZD char(1); SFQGHKS XT_XTCS00.VALUE0%type; --往HIS插诊断YS_BRZDXX.JZKS00是否取挂号的就诊科室 VGJBZBM XT_ICD900.DYBZBM%TYPE; VGJBZMC XT_ICD900.DYJBMC%TYPE; begin IF PGHID00 IS NULL and PCZLX00<>'2' THEN return; END IF; VGHH000 := to_char(PGHID00); if PZZDBZ0=3 or PZZDBZ0=4 then VSFXYZD :=1; else VSFXYZD :=0; end if; begin select nvl(VALUE0,'N') into SFQGHKS from XT_XTCS00 where NAME00='YS_EMRSFQGHKS'; exception when others then SFQGHKS:='N'; end; select count(*) into VCOUNTER from YS_BRZDXX where ZDXXID=PZDXXID; if PCZLX00 = 0 or PCZLX00=1 and VCOUNTER=0 then if SFQGHKS='Y' then select ZWXM00 into PJZYSXM from BM_YGBM00 where YGBH00 = PJZYS00; select GHID00,GHH000,JZKS00 into TGHID00,TGHH000,PJZKS00 from SF_BRXXB0 where GHH000 = VGHH000; select DYBZBM,DYJBMC into VGJBZBM,VGJBZMC from xt_icd900 a where a.icd900=PICD900; else select BMBH00,ZWXM00 into PJZKS00,PJZYSXM from BM_YGBM00 where YGBH00 = PJZYS00; select GHID00,GHH000 into TGHID00,TGHH000 from SF_BRXXB0 where GHH000 = VGHH000; select DYBZBM,DYJBMC into VGJBZBM,VGJBZMC from xt_icd900 a where a.icd900=PICD900; end if; insert into YS_BRZDXX(ZDXXID,GHID00,GHH000,ZZDBZ0,ICD900,ZDMC00,JZYS00,JZYSXM,JZKS00,ZDRQ00,ZDSJ00,SFXYZD,WDWID0,GJBZBM,GJBZMC) values(PZDXXID,TGHID00,TGHH000,PZZDBZ0,PICD900,PZDMC00,PJZYS00,PJZYSXM,PJZKS00,PZDRQ00,PZDSJ00,VSFXYZD,PZDXXID,VGJBZBM,VGJBZMC); ---增加操作 elsif PCZLX00 = 1 then select count(*) into VCOUNTER from YS_BRZDXX where ZDXXID=PZDXXID; if Vcounter=0 then VTSXX00 := '诊断信息ID='||PZDXXID||'不存在!'; raise ECUSTOM; end if; if SFQGHKS='Y' then select ZWXM00 into PJZYSXM from BM_YGBM00 where YGBH00 = PJZYS00; select GHID00,GHH000,JZKS00 into TGHID00,TGHH000,PJZKS00 from SF_BRXXB0 where GHH000 = VGHH000; select DYBZBM,DYJBMC into VGJBZBM,VGJBZMC from xt_icd900 a where a.icd900=PICD900; else select BMBH00,ZWXM00 into PJZKS00,PJZYSXM from BM_YGBM00 where YGBH00 = PJZYS00; select GHID00,GHH000 into TGHID00,TGHH000 from SF_BRXXB0 where GHH000 = VGHH000; select DYBZBM,DYJBMC into VGJBZBM,VGJBZMC from xt_icd900 a where a.icd900=PICD900; end if; update YS_BRZDXX set GHID00 = TGHID00,GHH000 = TGHH000,ZZDBZ0 = PZZDBZ0,ICD900 = PICD900,Zdmc00 = PZDMC00,JZYS00 = PJZYS00,JZYSXM = PJZYSXM ,JZKS00 = PJZKS00 ,Zdrq00 = PZDRQ00,Zdsj00 = PZDSJ00,WDWID0=PZDXXID, GJBZBM=VGJBZBM, GJBZMC=VGJBZMC where ZDXXID = PZDXXID; elsif PCZLX00 = 2 then delete from YS_BRZDXX where ZDXXID = PZDXXID and WDWID0=PZDXXID; end if; delete from XT_ZJRWB0 where BM0000='YS_BRZDXX' and ZJZDZ0=to_char(PZDXXID) and ZXBZ00='0'; exception when no_data_found then raise_application_error(-20001,substrb('没有找到数据!*'||sqlerrm,1,240)); when ECUSTOM then raise_application_error(-20010,substrb(VTSXX00||'!*',1,240)); when others then raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240)); end;