CREATE OR REPLACE FUNCTION SF_ZY_BQBM00_DBZBM0 ( PBRID00 in number, --BRID00 PZYID00 in number, --ZYID00 PFHLX00 in char , --返回类型 0:bqbm00 1:dbzbm0 PQTBZXZ in char , --前台选择病种标志 0:未选择 1:特殊病种或诊断(bm_tsbzb0) ,2:单病种选择(BM_DBZDEB) PBQBM00 in char , --病情编码 PDBZBM0 in char --单病种编码 ) return varchar2 is VFHXX00 varchar2(100); --返回信息 VCYZYZD varchar2(100); --出院主要诊断 VYBZDBH varchar2(100); --XT_ICD900.YBZDBH VYBBZBM varchar2(100); --BM_TSBZB0.YBBZBM VYBZXLB IC_YBBRLB.YBZXLB%type; VYBBRLB BM_BRXXB0.YBBRLB%type; VFBBH00 BM_BRXXB0.FBBH00%type; VSFXNH0 IC_YBBRLB.SFXNH0%type; VDBZBM0 ZY_BRXXB0.DBZBM0%type; COUNT1 NUMBER(1); LS_DKTSBRTS XT_XTCS00.value0%TYPE; VSFCYZD varchar2(100); --是否发送出院诊断 Y:是 N:否 ZY_DBZJSBQBMFS varchar2(100); --住院单病种结算bqbm00是否按单病种编码发送 Y:bqbm00=dbzbm0(单病种编码不为空时按单病种编码发送) N:bqbm00=出院主要诊断 默认值:Y -- MODIFICATION HISTORY --Person Date Comment --zhangyc 2016.08.08 create by ZYSF-20170724-002 (SF_ZY_YBZDBM,SF_SF_YBBZBM整合到这里一起处理) --CX 2019.02.08 指定精准扶贫病人,按照FPBZBH发送病情编码 ZYSF-20190218-002 begin if PZYID00=0 then select B.YBZXLB,A.YBBRLB,A.FBBH00,B.SFXNH0 into VYBZXLB,VYBBRLB,VFBBH00,VSFXNH0 from BM_BRXXB0 A,IC_YBBRLB B where A.BRID00=PBRID00 and A.YBLB00=B.YBLB00 and A.FBBH00=B.FBBH00; else select B.YBZXLB,A.YBBRLB,A.FBBH00,B.SFXNH0,C.DBZBM0 into VYBZXLB,VYBBRLB,VFBBH00,VSFXNH0,VDBZBM0 from BM_BRXXB0 A,IC_YBBRLB B,ZY_BRXXB0 C where A.BRID00=C.BRID00 and A.YBLB00=B.YBLB00 and A.FBBH00=B.FBBH00 and C.ZYID00=PZYID00; end if; --ZYSF-20190218-002 指定精准扶贫病人,按照FPBZBH发送病情编码 SELECT COUNT(1) INTO COUNT1 FROM ZY_BRXXB0 A,BM_MZJZBR C,BM_BRXXB0 B WHERE MZLY00 IN('建档立卡贫困人口','省定扶贫标准下的低保') AND A.BRID00=B.BRID00 AND B.BRZJBH=C.BRSFZH AND A.ZYID00=PZYID00; select substr(trim(VALUE0),1,1) into LS_DKTSBRTS from XT_XTCS00 where NAME00='YS_DKTSBRTS'; begin select upper(trim(value0)) into ZY_DBZJSBQBMFS from XT_XTCS00 where name00='ZY_DBZJSBQBMFS'; exception when others then ZY_DBZJSBQBMFS:='N'; end; --ZY_CYJSBQZDFS:住院收费医保病人结算[zyfs]request中bqbm00是否发送出院主要诊断 0:都不发送 1:都发送 2:医保发送(农合除外) 3:农合发送(医保除外) 4:省医保发送 5:市医保发送 默认值:0都不发送 begin select trim(SF_SF_XTCS00(PBRID00,'ZY_CYJSBQZDFS')) into VSFCYZD from dual; exception when others then VSFCYZD:='Y'; end; --获取出院主要诊断 begin select trim(ZDM000) into VCYZYZD from BQ_BRZDXX where BRID00=PBRID00 and ZYID00=PZYID00 and ZDLB00='3' and rownum=1; exception when others then VCYZYZD:=''; end; if PFHLX00 in ('0') then --返回类型 0:bqbm00 1:dbzbm0 if PQTBZXZ in ('1') then --前台选择病种标志 0:未选择 1:特殊病种或诊断(bm_tsbzb0) ,2:单病种选择(BM_DBZDEB) VFHXX00:=trim(PBQBM00); --病情编码 elsif PQTBZXZ in ('2') then VFHXX00:=trim(PDBZBM0);--单病种编码 else VFHXX00:=''; end if; if PQTBZXZ in ('1') and (VFHXX00 is not null) then --前台选择病种标志 0:未选择 1:特殊病种或诊断(bm_tsbzb0) ,2:单病种选择(BM_DBZDEB) begin select trim(YBBZBM) into VYBBZBM from BM_TSBZB0 where trim(BH0000)=VFHXX00 and YBZXLB=VYBZXLB and rownum=1; exception when others then VYBBZBM:=''; end; if VYBBZBM is not null then VFHXX00:=VYBBZBM; end if; end if; if LS_DKTSBRTS='Y' and COUNT1=1 AND (VFHXX00 is null ) then begin select FPBZBH into VYBZDBH from XT_ICD900 where trim(ICD900)=trim(VCYZYZD); exception when others then VYBZDBH:=PBQBM00; end; end if; if VYBZDBH is not null then VFHXX00:=VYBZDBH; end if; if (VSFCYZD='Y') and (VFHXX00 is null) then VFHXX00:=trim(VCYZYZD); end if; --新农合 获取XT_ICD900.YBZDBH if (VSFXNH0='1') and (VFHXX00 is not null) then begin select trim(YBZDBH) into VYBZDBH from XT_ICD900 where trim(ICD900)=trim(VFHXX00); exception when others then VYBZDBH:=''; end; if VYBZDBH is not null then VFHXX00:=VYBZDBH; end if; end if; else --返回类型 0:bqbm00 1:dbzbm0 VFHXX00:=PDBZBM0; end if; return trim(VFHXX00); end; /