CREATE OR REPLACE FUNCTION SF_JY_GET_ZDMC00 ( PYJDJH0 IN NUMBER , PZDID00 IN VARCHAR2 ) RETURN VARCHAR2 IS V_COUNT0 NUMBER; V_ZDMC00 VARCHAR2(100); V_MZZYBZ CHAR(1); V_ZYGHID NUMBER; -- V_COUNT NUMBER; V_YEXM00 VARCHAR2(100); BEGIN BEGIN SELECT TRIM(MZZYBZ), ZYGHID, ZDMC00 INTO V_MZZYBZ, V_ZYGHID, V_ZDMC00 FROM YJ_YW0000 WHERE YJDJH0=PYJDJH0; EXCEPTION WHEN OTHERS THEN SELECT TRIM(MZZYBZ), ZYGHID INTO V_MZZYBZ, V_ZYGHID FROM JY_YW0000 A WHERE YJDJH0=PYJDJH0; IF PZDID00 IS NOT NULL THEN -- JXQ 2009.12.23 8I库要单独运行 BEGIN SELECT TRIM(JBMC00) INTO V_ZDMC00 FROM XT_ICD900 WHERE TRIM(ICD900)= PZDID00; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; END IF; END; -- IF (V_ZDMC00 IS NOT NULL) AND (V_MZZYBZ = '0') THEN --门诊 IF V_MZZYBZ = '0' THEN --门诊病人 IF (V_ZDMC00 IS NOT NULL) THEN RETURN V_ZDMC00; ELSE /*BEGIN SELECT ZDMC00 INTO V_ZDMC00 FROM YS_BRZDXX WHERE GHID00=V_ZYGHID AND ROWNUM = 1; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END;*/ IF V_ZDMC00 IS NULL THEN --无则取主要诊断 BEGIN SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM YS_BRZDXX WHERE GHID00=V_ZYGHID AND ZZDBZ0='3' AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; END IF; IF V_ZDMC00 IS NULL THEN --无则取诊断 BEGIN SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM YS_BRZDXX WHERE GHID00=V_ZYGHID AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; END IF; END IF; END IF; -- IF (PZDID00 IS NULL) OR (TRIM(PZDID00) = '0') OR (TRIM(PZDID00) = '') THEN -- SELECT TRIM(ZDMC00),MZZYBZ,ZYGHID INTO V_ZDMC00,V_MZZYBZ,V_ZYGHID FROM YJ_YW0000 WHERE YJDJH0=PYJDJH0; -- IF (NVL(V_ZDMC00,'0')='0') AND (V_MZZYBZ = '1') THEN IF V_MZZYBZ = '1' THEN --住院病人 select YEXM00 into V_YEXM00 from YJ_yw0000 where yjdjh0=Pyjdjh0 and rownum=1; IF V_YEXM00 IS NOT NULL THEN V_ZDMC00 := NULL; else BEGIN --先取入院诊断 SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM VW_BQ_BRZDXX WHERE ZYID00=V_ZYGHID AND ZDLB00='2' AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; IF V_ZDMC00 IS NULL THEN --无则取门诊诊断 BEGIN SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM VW_BQ_BRZDXX WHERE ZYID00=V_ZYGHID AND ZDLB00='1' AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; END IF; IF V_ZDMC00 IS NULL THEN --无则取主要诊断 BEGIN SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM VW_BQ_BRZDXX WHERE ZYID00=V_ZYGHID AND ZDLB00='3' AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; END IF; IF V_ZDMC00 IS NULL THEN --无则取其他诊断 BEGIN SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM VW_BQ_BRZDXX WHERE ZYID00=V_ZYGHID AND ZDLB00='4' AND ROWNUM=1; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; END IF; IF V_ZDMC00 IS NULL THEN --无则最后取医技诊断 BEGIN SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM YJ_YW0000 WHERE YJDJH0=PYJDJH0; EXCEPTION WHEN OTHERS THEN V_ZDMC00 := NULL; END; END IF; IF (V_ZDMC00 IS NULL) OR (V_ZDMC00 = '') THEN BEGIN SELECT TRIM(JBMC00) INTO V_ZDMC00 FROM XT_ICD900 WHERE trim(ICD900)=trim(PZDID00); EXCEPTION WHEN OTHERS THEN SELECT TRIM(ZDMC00) INTO V_ZDMC00 FROM BM_ZDZD00 WHERE trim(TO_CHAR(ZDID00))=TRIM(PZDID00); END; END IF; END IF; END IF; RETURN V_ZDMC00; END;