CREATE OR REPLACE PROCEDURE sp_zs_basyxx_create ( ad_zyid00 in number ) AS Vcount number; Vmzzdm0 varchar2(20); --门诊诊断编码; Vmzzdmc varchar2(200); --门诊诊断名称; Vryzdm0 varchar2(20); --入院诊断编码; Vryzdmc varchar2(200); --入院诊断名称; Vcyzdm0 varchar2(20); --出院诊断编码; Vcyzdmc varchar2(200); --出院诊断名称; Vybzxlb zy_brxxb0.ybzxlb%type; VRYBQ00 varchar2(20) ; --入院病情:(1.有,2.临床未确定,3.情况不明,4.无) -- MODIFICATION HISTORY -- Person Date Comments -- zhr 2011.11.19 create -- zhr 2011.12.07 手术信息从SS_YW0000改为BA_BRSSXX取 ZYYS-20111213-001 -- qks 2013.10.29 诊断名称截取60个字节 -- qks 2014.04.02 增加条件 or b.RYQK00=DM0000 -- qks 2014.08.08 新增字段RYKSBM-YHDJ08等 -- qks 2014.08.18 处理zkkb00有多个值,只取第1个; 取出院诊断等值时,暂放开限制xt_icd900.xtbz00='1'; -- qks 2014.08.27 异地医保麻醉方式左补0到2位; -- qks 2014.10.29 修改出院诊断游标c_zdxx取值; -- qks 2014.11.25 修改 手术麻醉 取值;手术名称截取100个字节; -- qks 2015.03.30 新增字段CYZD06-CYZD10、ZDMC06-ZDMC10、CYQK06-CYQK06等15个字段; -- qks 2017.09.01 手术名称截取60个字节; -- qks 2017.10.12 写入字段BLHM00值截取20个字节; -- lxl 2020.05.12 因人事科改动部门名称导致医保字段超长无法发送,截取科室名称至20位字符 -- lxl 2020.08.21 医保办要求CYZD01不能取西医出院主要诊断,诊断排序要求由原来的:西医主要诊断-西医其他诊断改为优先取中医主要疾病-中医主要症候-西医主要诊断-西医其他诊断 -- lxl 2020.09.29 医保办上传时报ZS_BASYXX.RYQK00不能为空,住院病案首页数据为"急,危,一般",字典为"急诊,危重,一般" BEGIN delete from ZY_BASYXX where ZYID00=ad_zyid00; insert into ZY_BASYXX (zyid00,zylsh0,cardno,yybah0,rykb00,rybs00,zkkb00,cykb00,cybs00,ryqk00,Ryzdqk,cyzd00,Zdmc00,cyqk00, cyzd01,Zdmc01,cyqk01, cyzd02,Zdmc02,cyqk02,cyzd03,Zdmc03,cyqk03, cyzd04,Zdmc04,cyqk04,cyzd05,Zdmc05,cyqk05,Blzd00,Zzysxm, Ssbh01,Ssmc01,Ssrq01,Mzfs01,Ssbh02,Ssmc02,Ssrq02,Mzfs02,Ssbh03,Ssmc03,Ssrq03,Mzfs03,Ssbh04,Ssmc04,Ssrq04,Mzfs04, Ssbh05,Ssmc05,Ssrq05,Mzfs05,Ssbh06,Ssmc06,Ssrq06,Mzfs06,Ssbh07,Ssmc07,Ssrq07,Mzfs07,Ssbh08,Ssmc08,Ssrq08,Mzfs08, FSCGBZ,ERROR0,RYKSBM,CYKSBM,ZYTS00,RYTJ00,SSYY00,SSYYDM,BLZDBM,BLHM00,YWGM00,GMYWMC,SWSJ00,XUEX00,RH0000,BAZL00, ZKYS00,ZKRQ00,LYFS00,NJSJG0,CYJH00,CYJHMD, YQHMTS,YQHMXS,YQHMFZ,YHHMTS,YHHMXS,YHHMFZ ) select ad_zyid00,trim(a.YBZYH0),nvl(nvl(b.YBKH00,b.cardno),a.YBKH00),trim(a.MRN000), (select substrb(BMMC00,0,20) from bm_bmbm00 where a.RZKS00=BMBH00) rykb00, (select substrb(BMMC00,0,20) from bm_bmbm00 where a.RYBQ00=BMBH00) rybs00, (select substrb(BMMC00,0,20) from bm_bmbm00 where substrb(b.zkkb00,1,decode(instrb(b.zkkb00,';'),0,lengthb(b.zkkb00),instrb(b.zkkb00,';')-1))=BMBH00) zkkb00, (select substrb(BMMC00,0,20) from bm_bmbm00 where a.DQKS00=BMBH00) rykb00, (select substrb(BMMC00,0,20) from bm_bmbm00 where a.DQBQ00=BMBH00) rybs00, ' ',null,' ',' ',' ', null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,b.BLZD00,a.ZZYSXM, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, '0',null, (select YBKSBH from bm_bmbm00 where bmbh00=a.RZKS00) RYKSBM, -- 入院科别编码(新增) (select YBKSBH from bm_bmbm00 where bmbh00=a.DQKS00) CYKSBM, -- 出院科别编码(新增) b.ZYTS00, -- 实际住院天数(新增) b.RYTJ00, -- 入院途径(新增)1.急诊2.门诊3.其他医疗机构转入9.其他 b.SSZDWY, -- 损伤、中毒的外部原因(新增) null, --损伤、中毒的疾病编码(新增) b.BLZDBM, --病理诊断编码(新增) --b.BLH000, --病理号(新增) substrb(b.BLH000,1,20), --病理号(新增) decode(SFYWGM,'有','2','2','2','1'), --药物过敏(新增)(1.无,2.有) b.GMYW00, -- 过敏药物名称 null, --死亡患者尸检(新增)(1.无,2.有) case b.XX0000 when 'AB型' then '4' when 'A型' then '1' when 'B型' then '2' when 'O型' then '3' when '其他' then '3' else '6' end, --血型(1.A2.B3.O4.AB5.不详6.未查) case b.RH0000 when '阴性' then '1' when '阳性' then '2' when '不详' then '3' else '4' end RH0000, --RH(1.阴2.阳3.不详4.未查) case b.BAZL00 when '甲' then '1' when '乙' then '2' else '3' end BAZL00, --病案质量(1.甲2.乙3.丙) null ZKYS00, -- 质控医师 b.ZKRQ00, -- 质控日期(年月日) case b.LYFS00 when '医嘱离院' then '1' when '医嘱转院' then '2' when '医嘱转社区卫生服务机构' then '3' when '非医嘱离院' then '4' when '死亡' then '5' else '9' end LYFS00, --离院方式(1.医嘱离院,2.医嘱转院,3.医嘱转社区卫生服务机构/乡镇卫生院,4.非医嘱离院5.死亡9.其他) null NJSJG0, -- 拟接收医疗机构名称 decode(zzyjh0,'有','2','Y','2','1') CYJH00, --是否有出院31天内再住院计划(新增)(1.无,2.有) b.zzymd0 CYJHMD, --出院31天内再住院目的(新增) b.hmryhd YQHMTS, -- 入院前颅脑损伤患者昏迷时间(_天_小时_分钟)天 b.hmryhh YQHMXS, -- 入院前颅脑损伤患者昏迷时间(_天_小时_分钟)小时 b.hmryhm YQHMFZ, -- 入院前颅脑损伤患者昏迷时间(_天_小时_分钟)分钟 b.hmryqd YHHMTS, -- 入院后颅脑损伤患者昏迷时间(_天_小时_分钟)天 b.hmryqh YHHMXS, -- 入院后颅脑损伤患者昏迷时间(_天_小时_分钟)小时 b.hmryqm YHHMFZ -- 入院后颅脑损伤患者昏迷时间(_天_小时_分钟)分钟 from ZY_BRXXB0 a,BA_BRZYXX b where a.ZYID00=ad_zyid00 and a.ZYID00=b.LSH000; select max(ZDM000) into Vmzzdm0 From bq_brzdxx a,xt_icd900 b where a.zyid00=ad_zyid00 and a.zdlb00='1' and b.XTBZ00='1' and a.zdm000=b.ICD900; --and b.XTBZ00='1' if Vmzzdm0 is not null then select max(nvl(DYBZBM,ICD900)),max(nvl(DYJBMC,JBMC00)) into Vmzzdm0,Vmzzdmc From xt_icd900 where ICD900=Vmzzdm0 and XTBZ00='1'; --and XTBZ00='1' end if; select max(ZDM000) into Vryzdm0 From bq_brzdxx a,xt_icd900 b where zyid00=ad_zyid00 and a.zdlb00='2' and b.XTBZ00='1' and a.zdm000=b.ICD900; if Vryzdm0 is not null then --select zdmc00 into Vryzdmc From bq_brzdxx where zyid00=ad_zyid00 and zdlb00='2' and zdm000=Vryzdm0 and rownum=1; select max(nvl(DYBZBM,ICD900)),max(nvl(DYJBMC,JBMC00)) into Vryzdm0,Vryzdmc From xt_icd900 where ICD900=Vryzdm0 and XTBZ00='1'; end if; select max(ZDM000) into Vcyzdm0 From bq_brzdxx a,xt_icd900 b where zyid00=ad_zyid00 and a.zdlb00='3' and b.XTBZ00='1' and a.zdm000=b.ICD900; if Vcyzdm0 is not null then select max(nvl(DYBZBM,ICD900)),max(nvl(DYJBMC,JBMC00)) into Vcyzdm0,Vcyzdmc From xt_icd900 where ICD900=Vcyzdm0 and XTBZ00='1'; elsif Vmzzdm0 is not null then --1、取西医门诊诊断 Vcyzdm0 := Vmzzdm0; Vcyzdmc := Vmzzdmc; else --2、取同类型西医诊断 select rpad(substrb(replace(max(ZDM000),'+',''),1,5),7,'0') into Vcyzdm0 From bq_brzdxx a,xt_icd900 b where zyid00=ad_zyid00 and a.zdlb00='3' and b.XTBZ00='0' and a.zdm000=b.ICD900; select max(nvl(DYBZBM,ICD900)),max(nvl(DYJBMC,JBMC00)) into Vcyzdm0,Vcyzdmc from xt_icd900 where ICD900=Vcyzdm0 and XTBZ00='1'; if Vcyzdmc is null then --3、取一个有效的西医诊断 select max(ZDM000) into Vcyzdm0 From bq_brzdxx a,xt_icd900 b where zyid00=ad_zyid00 and b.XTBZ00='1' and a.zdm000=b.ICD900; if Vcyzdm0 is null then --4、取一个中医出院疾病诊断 Vcyzdm0 := 'ZY9999'; select max(ZDMC00) into Vcyzdmc from bq_brzdxx where zyid00=ad_zyid00 and zdlb00 in ('a','b','e','f'); if Vcyzdmc is null then select max(ZDMC00) into Vcyzdmc from bq_brzdxx where zyid00=ad_zyid00; end if; else select max(nvl(DYBZBM,ICD900)),max(nvl(DYJBMC,JBMC00)) into Vcyzdm0,Vcyzdmc From xt_icd900 where ICD900=Vcyzdm0 and XTBZ00='1'; end if; end if; end if; select nvl(max(RYBQ00),'4') into VRYBQ00 from bq_brzdxx where zyid00=ad_zyid00 and zdlb00='2' and RYBQ00 is not null; if VRYBQ00='有' then VRYBQ00:='1'; elsif VRYBQ00='临床未确定' then VRYBQ00:='2'; elsif VRYBQ00='情况不明' then VRYBQ00:='3'; elsif VRYBQ00='无' then VRYBQ00:='4'; elsif VRYBQ00 not in ('1','2','3','4') then VRYBQ00:='4'; end if; update ZY_BASYXX z set --RYKSBM, -- 入院科别编码(新增) --CYKSBM, -- 出院科别编码(新增) --ZYTS00, -- 实际住院天数(新增) --RYTJ00, -- 入院途径(新增)1.急诊2.门诊3.其他医疗机构转入9.其他 Mzzdmc=Vmzzdmc, -- 门(急)诊诊断名称 Mzzd00=Vmzzdm0, -- 门(急)诊诊断疾病编码 RYZD00=Vryzdm0, -- 入院诊断编码 Ryzdqk=Vryzdmc, -- 入院诊断名称 RYBQ00=Vrybq00, -- 入院主要病情(新增)(1.有,2.临床未确定,3.情况不明,4.无) CYZD00=Vcyzdm0, -- 出院诊断编码; Zdmc00=Vcyzdmc -- 出院诊断名称; --SSYY00, -- 损伤、中毒的外部原因(新增) --SSYYDM, -- 损伤、中毒的疾病编码(新增) --BLZDBM, -- 病理诊断编码(新增) --BLHM00, -- 病理号(新增) --YWGM00, --药物过敏(新增)(1.无,2.有) --GMYWMC, -- 过敏药物名称 --SWSJ00, --死亡患者尸检(新增)(1.无,2.有) --XUEX00, --血型(1.A2.B3.O4.AB5.不详6.未查) --RH0000, --RH(1.阴2.阳3.不详4.未查) --BAZL00, --病案质量(1.甲2.乙3.丙) --ZKYS00, -- 质控医师 --ZKRQ00, --质控日期(年月日) --LYFS00, --离院方式(1.医嘱离院,2.医嘱转院,3.医嘱转社区卫生服务机构/乡镇卫生院,4.非医嘱离院5.死亡9.其他) --NJSJG0, -- 拟接收医疗机构名称 --CYJH00, --是否有出院31天内再住院计划(新增)(1.无,2.有) --CYJHMD, --出院31天内再住院目的(新增) --YQHMTS, -- 入院前颅脑损伤患者昏迷时间(_天_小时_分钟)天 --YQHMXS, -- 入院前颅脑损伤患者昏迷时间(_天_小时_分钟)小时 --YQHMFZ, -- 入院前颅脑损伤患者昏迷时间(_天_小时_分钟)分钟 --YHHMTS, -- 入院后颅脑损伤患者昏迷时间(_天_小时_分钟)天 --YHHMXS, -- 入院后颅脑损伤患者昏迷时间(_天_小时_分钟)小时 --YHHMFZ, -- 入院后颅脑损伤患者昏迷时间(_天_小时_分钟)分钟 /* SSJB01, -- 手术级别01(见说明,填写“值”) CZYS01, -- 手术及操作医师01(术者,Ⅰ助,Ⅱ助) YHDJ01, -- 切口愈合等级01(见说明,填写“值”) SSJB02, -- 手术级别02(见说明,填写“值”) CZYS02, -- 手术及操作医师02(术者,Ⅰ助,Ⅱ助) YHDJ02, -- 切口愈合等级02(见说明,填写“值”) SSJB03, -- 手术级别03(见说明,填写“值”) CZYS03, -- 手术及操作医师03(术者,Ⅰ助,Ⅱ助) YHDJ03, -- 切口愈合等级03(见说明,填写“值”) SSJB04, -- 手术级别04(见说明,填写“值”) CZYS04, -- 手术及操作医师04(术者,Ⅰ助,Ⅱ助) YHDJ04, -- 切口愈合等级04(见说明,填写“值”) SSJB05, -- 手术级别05(见说明,填写“值”) CZYS05, -- 手术及操作医师05(术者,Ⅰ助,Ⅱ助) YHDJ05, -- 切口愈合等级05(见说明,填写“值”) SSJB06, -- 手术级别06(见说明,填写“值”) CZYS06, -- 手术及操作医师06(术者,Ⅰ助,Ⅱ助) YHDJ06, -- 切口愈合等级06(见说明,填写“值”) SSJB07, -- 手术级别07(见说明,填写“值”) CZYS07, -- 手术及操作医师07(术者,Ⅰ助,Ⅱ助) YHDJ07, -- 切口愈合等级07(见说明,填写“值”) SSJB08, -- 手术级别08(见说明,填写“值”) CZYS08, -- 手术及操作医师08(术者,Ⅰ助,Ⅱ助) YHDJ08, -- 切口愈合等级08(见说明,填写“值”) */ where ZYID00=ad_zyid00; /* update ZY_BASYXX z set rykb00=(select BMMC00 from ZY_BRXXB0 a,BM_BMBM00 where a.ZYID00=z.ZYID00 and a.RZKS00=BMBH00), rybs00=(select BMMC00 from ZY_BRXXB0 a,BM_BMBM00 where a.ZYID00=z.ZYID00 and a.RYBQ00=BMBH00), cykb00=(select BMMC00 from ZY_BRXXB0 a,BM_BMBM00 where a.ZYID00=z.ZYID00 and a.DQKS00=BMBH00), cybs00=(select BMMC00 from ZY_BRXXB0 a,BM_BMBM00 where a.ZYID00=z.ZYID00 and a.DQBQ00=BMBH00) where ZYID00=ad_zyid00; */ update ZY_BASYXX z set --ryqk00=(select DM0000 from BA_BRZYXX b,XT_ZD0000 where b.LSH000=z.ZYID00 and ZDBM00= 'RYQK00' and (b.RYQK00=VALUE0 or b.RYQK00=DM0000) and rownum=1), --lxl 使用模糊匹配实现取值 ryqk00=(select DM0000 from BA_BRZYXX b,XT_ZD0000 where b.LSH000=z.ZYID00 and ZDBM00= 'RYQK00' and (instr(value0,b.ryqk00)>0 or instr(value0,b.ryqk00)>0 or b.RYQK00=DM0000 or value0=DM0000) and rownum=1), --Ryzdqk=(select ZDMC00 from BQ_BRZDXX a where a.ZYID00=z.ZYID00 and ZDLB00='2' and rownum=1), --cyzd00=(select ZDM000 from BQ_BRZDXX a where a.ZYID00=z.ZYID00 and ZDLB00='3' and rownum=1), --Zdmc00=(select substrb(ZDMC00,1,60) from BQ_BRZDXX a where a.ZYID00=z.ZYID00 and ZDLB00='3' and rownum=1), cyqk00=(select x.DM0000 from BQ_BRZDXX v,XT_ZLXG00 x where z.ZYID00=v.ZYID00 and v.ZDLB00='3' and v.ZLXG00=x.DM0000 and rownum=1) where ZYID00=ad_zyid00; select nvl(max(ybzxlb),'0') into Vybzxlb from zy_brxxb0 where ZYID00=ad_zyid00; --手术麻醉 --2014.11.25 /* declare cursor c_ssxx is select a.SSXH00,a.SSQSRQ,a.SSBH00,a.SSMC00,decode(Vybzxlb,'W',lpad(a.MZYBBH,2,'0'),a.MZYBBH) MZBH00,a.SSDJMC,substrb(a.SSYSXM||' '||a.SSZSXM,1,30) SSYSXM, case a.QKDJBM||a.YHDJBM when 'Ⅰ甲' then '1' when 'Ⅰ乙' then '2' when 'Ⅰ丙' then '3' when 'Ⅱ甲' then '4' when 'Ⅱ乙' then '5' when 'Ⅱ丙' then '6' when 'Ⅲ甲' then '7' when 'Ⅲ乙' then '8' when 'Ⅲ丙' then '9' else null end YHDJ00 from VW_BA_YW0000_ZYBAJK a where ZYID00=ad_zyid00 order by SSXH00; */ declare cursor c_ssxx is select a.SSXH00,a.SSRQ00 as SSQSRQ,a.SSM000 as SSBH00,substrb(a.SSMC00,1,60) as SSMC00,(select decode(Vybzxlb,'W',lpad(MZYBBH,2,'0'),MZYBBH) from bm_mzzd00 where MZMC00=a.MZFS00 and rownum=1) as MZBH00, decode(substr(a.SSZL00,1,1),'特','4','大','3','中','2','小','1','0') as SSDJMC,a.SSYSMC as SSYSXM, case a.QKYHDJ when 'Ⅰ甲' then '1' when 'Ⅰ乙' then '2' when 'Ⅰ丙' then '3' when 'Ⅱ甲' then '4' when 'Ⅱ乙' then '5' when 'Ⅱ丙' then '6' when 'Ⅲ甲' then '7' when 'Ⅲ乙' then '8' when 'Ⅲ丙' then '9' else null end YHDJ00 from BA_BRSSXX a where LSH000=ad_zyid00 order by SSXH00; begin for ss in c_ssxx loop if ss.SSXH00=1 then update ZY_BASYXX set SSJB01=ss.SSDJMC,CZYS01=ss.SSYSXM,YHDJ01=ss.YHDJ00,SSBH01=ss.SSBH00,SSMC01=ss.SSMC00,SSRQ01=ss.SSQSRQ,MZFS01=ss.MZBH00 where ZYID00=ad_zyid00; elsif ss.SSXH00=2 then update ZY_BASYXX set SSJB02=ss.SSDJMC,CZYS02=ss.SSYSXM,YHDJ02=ss.YHDJ00,SSBH02=ss.SSBH00,SSMC02=ss.SSMC00,SSRQ02=ss.SSQSRQ,MZFS02=ss.MZBH00 where ZYID00=ad_zyid00; elsif ss.SSXH00=3 then update ZY_BASYXX set SSJB03=ss.SSDJMC,CZYS03=ss.SSYSXM,YHDJ03=ss.YHDJ00,SSBH03=ss.SSBH00,SSMC03=ss.SSMC00,SSRQ03=ss.SSQSRQ,MZFS03=ss.MZBH00 where ZYID00=ad_zyid00; elsif ss.SSXH00=4 then update ZY_BASYXX set SSJB04=ss.SSDJMC,CZYS04=ss.SSYSXM,YHDJ04=ss.YHDJ00,SSBH04=ss.SSBH00,SSMC04=ss.SSMC00,SSRQ04=ss.SSQSRQ,MZFS04=ss.MZBH00 where ZYID00=ad_zyid00; elsif ss.SSXH00=5 then update ZY_BASYXX set SSJB05=ss.SSDJMC,CZYS05=ss.SSYSXM,YHDJ05=ss.YHDJ00,SSBH05=ss.SSBH00,SSMC05=ss.SSMC00,SSRQ05=ss.SSQSRQ,MZFS05=ss.MZBH00 where ZYID00=ad_zyid00; elsif ss.SSXH00=6 then update ZY_BASYXX set SSJB06=ss.SSDJMC,CZYS06=ss.SSYSXM,YHDJ06=ss.YHDJ00,SSBH06=ss.SSBH00,SSMC06=ss.SSMC00,SSRQ06=ss.SSQSRQ,MZFS06=ss.MZBH00 where ZYID00=ad_zyid00; elsif ss.SSXH00=7 then update ZY_BASYXX set SSJB07=ss.SSDJMC,CZYS07=ss.SSYSXM,YHDJ07=ss.YHDJ00,SSBH07=ss.SSBH00,SSMC07=ss.SSMC00,SSRQ07=ss.SSQSRQ,MZFS07=ss.MZBH00 where ZYID00=ad_zyid00; elsif ss.SSXH00=8 then update ZY_BASYXX set SSJB08=ss.SSDJMC,CZYS08=ss.SSYSXM,YHDJ08=ss.YHDJ00,SSBH08=ss.SSBH00,SSMC08=ss.SSMC00,SSRQ08=ss.SSQSRQ,MZFS08=ss.MZBH00 where ZYID00=ad_zyid00; end if; end loop; /* update ZY_BASYXX set MZFS01=nvl(MZFS01,'9'), MZFS02=nvl(MZFS02,'9'), MZFS03=nvl(MZFS03,'9'), MZFS04=nvl(MZFS04,'9'), MZFS05=nvl(MZFS05,'9'), MZFS06=nvl(MZFS06,'9'), MZFS07=nvl(MZFS07,'9'), MZFS08=nvl(MZFS08,'9') where ZYID00=ad_zyid00; */ end; --出院诊断 declare cursor c_zdxx is /* select rownum row000,nvl(c.dybzbm,a.ZDM000) ZDM000,substrb(nvl(c.dyjbmc,c.JBMC00),1,60) ZDMC00, case when (b.DM0000>'5' or b.DM0000 is null) then '5' else b.DM0000 end DM0000 from BQ_BRZDXX a,XT_ZLXG00 b,XT_ICD900 c where ZYID00=ad_zyid00 and ZDLB00 in ('3','4') and a.ZLXG00=b.DM0000(+) and a.ZDM000=c.ICD900--(+)-- and c.XTBZ00='1' order by a.zdlb00,a.ID0000; */ select rownum row000,a.* from ( select --rownum row000, case when d.ZDBM00='ZYZDLB' and instrb(d.VALUE0,'疾病')>0 then (select nvl(DYBZBM,JBBH00) from BM_ZYJB00 where JBBH00=a.ZDM000 and rownum=1) when d.ZDBM00='ZYZDLB' and (instrb(d.VALUE0,'证候')>0 or instrb(d.VALUE0,'症候')>0) then (select nvl(DYBZBM,ZHBH00) from BM_ZYZH00 where ZHBH00=a.ZDM000 and rownum=1) else (select nvl(DYBZBM,ZDM000) from XT_ICD900 where icd900=a.ZDM000 and rownum=1) end ZDM000, --ICD9码BM_ZYJB00.JBBH00'; case when d.ZDBM00='ZYZDLB' and instrb(d.VALUE0,'疾病')>0 then (select nvl(DYJBMC,JBMC00) from BM_ZYJB00 where JBBH00=a.ZDM000 and rownum=1) when d.ZDBM00='ZYZDLB' and (instrb(d.VALUE0,'证候')>0 or instrb(d.VALUE0,'症候')>0) then (select nvl(DYJBMC,ZHMC00) from BM_ZYZH00 where ZHBH00=a.ZDM000 and rownum=1) else (select nvl(DYJBMC,jbmc00) from XT_ICD900 where icd900=a.ZDM000 and rownum=1) end ZDMC00, --诊断描述名称 12.14'; case when (b.DM0000>'5' or b.DM0000 is null) then '5' else b.DM0000 end DM0000 from BQ_BRZDXX a,XT_ZLXG00 b,XT_ZD0000 d --XT_ICD900 c, where a.ZYID00=ad_zyid00 --and ZDLB00 in ('3','4') and a.ZLXG00=b.DM0000(+) --and a.ZDM000=c.ICD900--(+) and a.ZDLB00=d.DM0000 and d.zdbm00 in ('ZDLB00','ZYZDLB') and (d.ZDBM00='ZDLB00' and exists (select 1 from XT_ICD900 where icd900=a.ZDM000) or d.ZDBM00='ZYZDLB' and a.ZDM000 is not null) and a.ZDLB00 not in ('1','2','c','g','d','j','3','e','f') --order by decode(zdlb00,'3','0','4','1','2','2','1','3',zdlb00),a.ID0000 order by decode(zdlb00,'a','0','b','1','3','2','4','3',zdlb00),a.ID0000 ) a; begin for zd in c_zdxx loop if zd.ROW000=1 then update ZY_BASYXX set CYZD01=zd.ZDM000,ZDMC01=zd.ZDMC00,CYQK01=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=2 then update ZY_BASYXX set CYZD02=zd.ZDM000,ZDMC02=zd.ZDMC00,CYQK02=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=3 then update ZY_BASYXX set CYZD03=zd.ZDM000,ZDMC03=zd.ZDMC00,CYQK03=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=4 then update ZY_BASYXX set CYZD04=zd.ZDM000,ZDMC04=zd.ZDMC00,CYQK04=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=5 then update ZY_BASYXX set CYZD05=zd.ZDM000,ZDMC05=zd.ZDMC00,CYQK05=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=6 then update ZY_BASYXX set CYZD06=zd.ZDM000,ZDMC06=zd.ZDMC00,CYQK06=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=7 then update ZY_BASYXX set CYZD07=zd.ZDM000,ZDMC07=zd.ZDMC00,CYQK07=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=8 then update ZY_BASYXX set CYZD08=zd.ZDM000,ZDMC08=zd.ZDMC00,CYQK08=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=9 then update ZY_BASYXX set CYZD09=zd.ZDM000,ZDMC09=zd.ZDMC00,CYQK09=zd.DM0000 where ZYID00=ad_zyid00; elsif zd.ROW000=10 then update ZY_BASYXX set CYZD10=zd.ZDM000,ZDMC10=zd.ZDMC00,CYQK10=zd.DM0000 where ZYID00=ad_zyid00; end if; end loop; update ZY_BASYXX set CYQK01=nvl(CYQK01,'5'), CYQK02=nvl(CYQK02,'5'), CYQK03=decode(CYZD03,null,null,nvl(CYQK03,'5')), CYQK04=decode(CYZD04,null,null,nvl(CYQK04,'5')), CYQK05=decode(CYZD05,null,null,nvl(CYQK05,'5')), CYQK06=decode(CYZD06,null,null,nvl(CYQK06,'5')), CYQK07=decode(CYZD07,null,null,nvl(CYQK07,'5')), CYQK08=decode(CYZD08,null,null,nvl(CYQK08,'5')), CYQK09=decode(CYZD09,null,null,nvl(CYQK09,'5')), CYQK10=decode(CYZD10,null,null,nvl(CYQK10,'5')) where ZYID00=ad_zyid00; end; --转科 commit; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20020, NVL(SQLERRM, '原因不明出错!*')); END; /