-- Start of DDL Script for Procedure SD_HOSPITAL.SP_SF_BRGHXX_YZ0000 -- Generated 2011-4-19 14:51:24 from SD_HOSPITAL@DYHIS CREATE OR REPLACE PROCEDURE sp_sf_brghxx_yz0000(AS_GHLBMC IN CHAR, --挂号类别名称 AS_XM0000 IN CHAR, --姓名 AS_FBMC00 IN CHAR, --病人费别 AS_GFZH00 IN CHAR, --公费证号 AD_GHY000 IN NUMBER, --挂号员编号、或操作员编号 AS_GHYXM0 IN CHAR, --挂号员姓名 AD_CZYKS0 IN NUMBER, --操作员的科室,或挂号员的科室 AD_GHKS00 IN NUMBER, --挂号科室编号 AD_JZYS00 IN NUMBER, --就诊医生编号 AS_JZYSXM IN CHAR, --就诊医生姓名 AS_CZBZ00 IN CHAR, --挂号标志,'0':持卡病人,'1':现金病人 AS_SFNLYD IN CHAR, --老年优待 AS_HZLB00 IN CHAR, --优先级别 AS_ICKH00 IN CHAR, --就诊卡号 AS_YHMSG0 OUT VARCHAR, --存储过程提示的中文错误信息 AS_SYSMSG OUT VARCHAR --系统提示的错误信息 ) AS VCOUNTER NUMBER(5); VZFBL1 NUMBER(12, 2); VZFBL2 NUMBER(12, 2); VBRID IC_YHXX00.BRID00%TYPE; -- MODIFICATION HISTORY -- Person Date Comments -- qks 2009.01.22 create MZSF-20090121-001; -- qks 2009.02.25 MZSF-20090225-002; -- qks 2009.06.24 MZSF-20090624-003; BEGIN IF instrb(AS_GHLBMC, '急诊') > 0 THEN RETURN; END IF; SELECT COUNT(1) INTO VCOUNTER FROM BM_GYZHB0_WXYZKS WHERE BMBH00 = AD_GHKS00; ----20100721有些挂号科室不做公医验证 IF VCOUNTER = 0 THEN IF INSTRB(AS_FBMC00, '公医') > 0 THEN IF AS_GFZH00 IS NULL THEN AS_YHMSG0 := '请输入公医证号!'; ROLLBACK; RETURN; ELSIF (INSTRB(AS_FBMC00, '省公医') <= 0) AND (INSTRB(AS_FBMC00, '市公医') <= 0) AND (INSTRB(AS_FBMC00, '天河区公医') <= 0) THEN --非省公医,不再进行判断 RETURN; END IF; ELSE --非公医 RETURN; END IF; IF UPPER(SUBSTRB(AS_GFZH00, 1, 2)) = 'SQ' THEN RETURN; END IF; SELECT COUNT(1) INTO VCOUNTER FROM BM_GYZHB0 WHERE GYZH00 = AS_GFZH00 AND BRXM00 = AS_XM0000; IF VCOUNTER > 0 THEN IF (INSTRB(AS_FBMC00, '市公医') > 0) THEN --先取病人的ID号,因为有时一个病人会有多个卡号 SELECT brid00 INTO VBRID FROM IC_YHXX00 WHERE icknbh = AS_ICKH00; --20100721增加市公医自付比例验证 SELECT DECODE(YBLB00, '1 ', '0', '2 ', '0.1', '3 ', '0.2', '4 ', '0.2', '1') INTO VZFBL1 FROM BM_BRXXB0 WHERE BRID00 = VBRID AND BRXM00 = AS_XM0000 AND BRGFZH = AS_GFZH00 AND FBBH00 = '7'; SELECT MZZFBL INTO VZFBL2 FROM BM_GYZHB0 WHERE BRXM00 = AS_XM0000 AND GYZH00 = AS_GFZH00 AND FBBH00 = '7'; IF VZFBL1 <> VZFBL2 THEN AS_YHMSG0 := '病人市公医的投保类别(自付比例)不对!'; AS_SYSMSG := SQLERRM || 'BRXM00=' || AS_XM0000 || '当前自付比例不应该是' || VZFBL1 || '请核实'; END IF; END IF; ROLLBACK; RETURN; ELSE SELECT COUNT(1) INTO VCOUNTER FROM BM_GYZHB0 WHERE GYZH00 = AS_GFZH00; IF VCOUNTER > 0 THEN AS_YHMSG0 := '您所输入的姓名不对!'; AS_SYSMSG := SQLERRM || 'GYZH00=' || AS_GFZH00; ROLLBACK; RETURN; ELSE SELECT COUNT(1) INTO VCOUNTER FROM BM_GYZHB0 WHERE BRXM00 = AS_XM0000; IF VCOUNTER > 0 THEN AS_YHMSG0 := '您所输入的公医证号不对!'; AS_SYSMSG := SQLERRM || 'BRXM00=' || AS_XM0000; ROLLBACK; RETURN; ELSE AS_YHMSG0 := '您所输入的姓名和公医证号都不对!'; AS_SYSMSG := SQLERRM || 'BRXM00=' || AS_XM0000; ROLLBACK; RETURN; END IF; END IF; END IF; END IF; EXCEPTION WHEN OTHERS THEN AS_YHMSG0 := '出错原因不详,请记录此信息并和系统管理员联系!'; AS_SYSMSG := SUBSTR(SQLERRM || ',执行存储过程错误:SP_SF_BRGHXX_YZ0000(' || AS_GHLBMC || ',' || AS_XM0000 || ',' || AS_FBMC00 || ',' || TO_CHAR(AD_GHY000) || ',' || AS_GHYXM0 || ',' || AS_GFZH00 || ',' || TO_CHAR(AD_CZYKS0) || ',' || TO_CHAR(AD_GHKS00) || ',' || TO_CHAR(AD_JZYS00) || ',' || AS_JZYSXM || ',' || ',' || AS_CZBZ00 || AS_SFNLYD || ',' || AS_HZLB00 || ',' || AS_ICKH00 || ')', 1, 150); ROLLBACK; END; / -- End of DDL Script for Procedure SD_HOSPITAL.SP_SF_BRGHXX_YZ0000