CREATE OR REPLACE FUNCTION SF_ZY_YBKHZDHQ ( PZYID00 in number, --住院id PFHLX00 in number --返回类型 0 主诊断代码 1 主诊断名称 2 其他诊断代码 3 其他诊断名称 ) -- MODIFICATION HISTORY -- Person Date Comments -- nicl 2026.01.12 create住院医保考核诊断获取 ZHCX13-20251230-001 return varchar2 is VROWNUM number(8); VZDMC00 varchar2(2000); VFHXX00 varchar2(2000); begin select count(1) into VROWNUM from VW_ZY_BAJK_QDSCZDXX where ZYID00 = PZYID00 and CJBM00 is null; begin if VROWNUM > 0 then if Pfhlx00=0 then select REPLACE(WM_CONCAT(DIAG_CODE), ',', '|') into VFHXX00 from VW_ZY_BAJK_QDSCZDXX where ZYID00 = PZYID00 and CJBM00 is null and MAINDIAG_FLAG = '1' ORDER BY LBXH00; elsif Pfhlx00=1 then select REPLACE(WM_CONCAT(DIAG_NAME), ',', '|') into VFHXX00 from VW_ZY_BAJK_QDSCZDXX where ZYID00 = PZYID00 and CJBM00 is null and MAINDIAG_FLAG = '1' ORDER BY LBXH00; elsif Pfhlx00=2 then select REPLACE(WM_CONCAT(DIAG_CODE), ',', '|') into VFHXX00 from VW_ZY_BAJK_QDSCZDXX where ZYID00 = PZYID00 and CJBM00 is null and MAINDIAG_FLAG = '0' ORDER BY LBXH00; elsif Pfhlx00=3 then select REPLACE(WM_CONCAT(DIAG_NAME), ',', '|') into VFHXX00 from VW_ZY_BAJK_QDSCZDXX where ZYID00 = PZYID00 and CJBM00 is null and MAINDIAG_FLAG = '0' ORDER BY LBXH00; end if; else if Pfhlx00=0 then select DIAG_CODE into VZDMC00 from VW_ZY_YBKHZB_RYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '1' ; VFHXX00 := '入院:'||VZDMC00; select DIAG_CODE into VZDMC00 from VW_ZY_YBKHZB_CYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '1'; VFHXX00 := VFHXX00||' 出院:'||VZDMC00; elsif Pfhlx00=1 then select DIAG_NAME into VZDMC00 from VW_ZY_YBKHZB_RYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '1'; VFHXX00 := '入院:'||VZDMC00; select DIAG_NAME into VZDMC00 from VW_ZY_YBKHZB_CYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '1'; VFHXX00 := VFHXX00||' 出院:'||VZDMC00; elsif Pfhlx00=2 then select REPLACE(WM_CONCAT(DIAG_CODE), ',', '|') into VZDMC00 from VW_ZY_YBKHZB_RYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '0'; VFHXX00 := '入院:'||VZDMC00; select REPLACE(WM_CONCAT(DIAG_CODE), ',', '|') into VZDMC00 from VW_ZY_YBKHZB_CYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '0'; VFHXX00 := VFHXX00||' 出院:'||VZDMC00; elsif Pfhlx00=3 then select REPLACE(WM_CONCAT(DIAG_NAME), ',', '|') into VZDMC00 from VW_ZY_YBKHZB_RYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '0'; VFHXX00 := '入院:'||VZDMC00; select REPLACE(WM_CONCAT(DIAG_NAME), ',', '|') into VZDMC00 from VW_ZY_YBKHZB_CYZDXX where ZYID00 = PZYID00 and MAINDIAG_FLAG = '0'; VFHXX00 := VFHXX00||' 出院:'||VZDMC00; end if; end if; exception when others then VFHXX00 := ''; end; return VFHXX00; end;