CREATE OR REPLACE PROCEDURE SP_YHJCPT_TJBRZHKK(VICKH00 in varchar2, --卡号 VBRXM00 in varchar2, --病人姓名 VJYLSH0 in varchar2, --交易流水号 VJZKLX0 in varchar2, --就诊卡类型 VTJH000 in varchar2, --体检号 VJYLX00 in varchar2, --交易类型 VCZBZ00 in varchar2, --操作标志,0消费,1冲销 VCZYBH0 in varchar2, --收费员编号 VCZYXM0 in varchar2, --收费员姓名 VJYJY00 in number, --交易金额 VFID000 in varchar2, --接口编号 VMSG000 out varchar2 --出参 ) as LS_CZY000 BM_YGBM00.YGBH00%type; LS_CZYXM0 BM_YGBM00.ZWXM00%type; LS_JFLBMC BM_BRJFLB.JFLBMC%type; LS_ZZYE00 SF_BRZHXX.ZZYE00%type; LS_BJJE00 SF_BRZHXX.BJJE00%type; LS_YXQFJE SF_BRZHXX.YXQFJE%type; LS_TYJE00 SF_BRZHXX.TYJE00%type; LS_ZFFSMC BM_BRZFFS.ZFFSMC%type; LS_ZPH000 SF_BRJFB0.ZPH000%type; LS_ZPKHYH SF_BRJFB0.ZPKHYH%type; ls_YKTYE0 SF_BRZHXX.YKTYE0%type; LS_ZPDWMC SF_BRJFB0.ZPDWMC%type; LS_YJJXH0 SF_PJSYQK.PJXH00%type; LS_SFJE00 SF_BRJFB0.JFJE00%type; ls_PJH000 SF_BRJFB0.DJH000%type; LS_BRID00 BM_BRXXB0.BRID00%type; is_fbbh00 BM_BRXXB0.fbbh00%type; LS_ZPZH00 varchar2(20); LS_JFYY00 varchar2(20); LS_COUNT0 number(5); IS_FLKBRSFYXJYJJ number(1); LS_ERROR0 varchar2(50); LS_YHMSG0 varchar2(200); LS_SYSMSG varchar2(200); LS_CZBZ00 varchar2(1);--0缴款,1退款 Ecustom exception ;--错误变量 --dsm 2018.05.28 传入的VCZYBH0为BM_YGBM00.YGBH00 --CX 2018.06.15 RESULT_CODE抛出错误 值应该为1 --CX 2018.06.15 省老年医院 FBBH00 IN('21''22')只允许转账, LS_ZFFSMC=转账’ 涉及参数SF_FLKBRSFYXJYJJ begin select BRID00 into LS_BRID00 from IC_YHXX00 where ICKH00=VICKH00; select count(1) into IS_FLKBRSFYXJYJJ FROM XT_XTCS00 WHERE NAME00= 'SF_FLKBRSFYXJYJJ' AND VALUE0='Y'; select count(*) into LS_COUNT0 from BM_BRXXB0 where BRID00=LS_BRID00 and BRXM00=VBRXM00; if LS_COUNT0=0 then LS_ERROR0:='找不到对应的病人!'; raise Ecustom; end if; select FBBH00 into is_fbbh00 from BM_BRXXB0 where BRID00=LS_BRID00 and BRXM00=VBRXM00; select count(*) into LS_COUNT0 from BM_YGBM00 where YGBH00=to_number(VCZYBH0) and ZWXM00=VCZYXM0; --select count(*) into LS_COUNT0 from BM_YGBM00 where XKH000=VCZYBH0 and ZWXM00=VCZYXM0; if LS_COUNT0=0 then LS_ERROR0:='找不到对应收费员!'||VCZYXM0; raise Ecustom; end if; if VJYJY00=0 then LS_ERROR0:='交易金额不能为0!'; raise Ecustom; end if ; -- select YGBH00 into LS_CZY000 from BM_YGBM00 where XKH000=VCZYBH0 and ZWXM00=VCZYXM0; select YGBH00 into LS_CZY000 from BM_YGBM00 where YGBH00=to_number(VCZYBH0) and ZWXM00=VCZYXM0; -- LS_CZY000:=VCZYBH0; LS_CZYXM0:=VCZYXM0; LS_JFLBMC:='门诊预交金'; LS_SFJE00:=0; LS_ZZYE00:=0; LS_BJJE00:=0; select BJJE00,TYJE00 into LS_BJJE00,LS_TYJE00 from SF_BRZHXX where BRID00=LS_BRID00; ls_PJH000:=0; LS_YXQFJE:=0; IF is_fbbh00 IN('21','22') AND IS_FLKBRSFYXJYJJ='1' THEN LS_ZFFSMC:='转账'; ELSE LS_ZFFSMC:='现金'; END IF; LS_ZPH000:=VJYLSH0; --体检系统的交易流水号 LS_ZPKHYH:=VCZYBH0; --体检系统的操作员 --LS_ZPDWMC:='体检系统'; LS_ZPDWMC:=VCZYXM0; --体检系统的操作员姓名 LS_YJJXH0:='0'; LS_ZPZH00:=''; LS_JFYY00:=''; if VCZBZ00='0' then LS_SFJE00:=-abs(VJYJY00); LS_CZBZ00:='1'; elsif VCZBZ00='1' then LS_SFJE00:=abs(VJYJY00); LS_CZBZ00:='0'; end if; LS_YHMSG0:=' '; LS_SYSMSG:=' '; begin select YGBH00,ZWXM00 into LS_CZY000,LS_CZYXM0 from BM_YGBM00 where ZWXM00='体检系统' and rownum=1; exception when others then LS_ERROR0:='请在HIS系统定义一个姓名为"体检系统"的用户!'; raise Ecustom; end; if abs(LS_SFJE00)>0 then SP_SF_BRZHXX(LS_BRID00,LS_CZY000,LS_CZYXM0,LS_JFLBMC,LS_SFJE00,LS_ZZYE00,LS_BJJE00,LS_TYJE00 ,LS_YXQFJE,LS_ZFFSMC,LS_ZPH000,LS_ZPKHYH,LS_ZPDWMC,LS_YJJXH0,LS_CZBZ00,'1' ,ls_PJH000,LS_YHMSG0,LS_SYSMSG,'Y',LS_ZPZH00,LS_JFYY00); update SF_BRJFB0 set JYLSH0=VJYLSH0,JGBM00=LS_CZY000,JGMC00=LS_CZYXM0 where DJH000=ls_PJH000; if nvl(LS_YHMSG0,' ')<>' ' or nvl(LS_SYSMSG,' ')<>' ' then VMSG000:='1' ||''||LS_YHMSG0||LS_SYSMSG||'' ||''||ls_PJH000||''; else VMSG000:='0' ||''||LS_YHMSG0||LS_SYSMSG||'' ||''||ls_PJH000||''; end if; end if; exception when Ecustom then LS_SYSMSG:=LS_ERROR0; VMSG000:='1' ||''||LS_SYSMSG||'' ||''||ls_PJH000||''; rollback; when others then LS_SYSMSG:=substr(sqlerrm,1,100); VMSG000:='1' ||''||LS_SYSMSG||'' ||''||ls_PJH000||''; rollback; end;CREATE OR REPLACE PROCEDURE SP_YHJCPT_TJBRZHKK(VICKH00 in varchar2, --卡号 VBRXM00 in varchar2, --病人姓名 VJYLSH0 in varchar2, --交易流水号 VJZKLX0 in varchar2, --就诊卡类型 VTJH000 in varchar2, --体检号 VJYLX00 in varchar2, --交易类型 VCZBZ00 in varchar2, --操作标志,0消费,1冲销 VCZYBH0 in varchar2, --收费员编号 VCZYXM0 in varchar2, --收费员姓名 VJYJY00 in number, --交易金额 VFID000 in varchar2, --接口编号 VMSG000 out varchar2 --出参 ) as LS_CZY000 BM_YGBM00.YGBH00%type; LS_CZYXM0 BM_YGBM00.ZWXM00%type; LS_JFLBMC BM_BRJFLB.JFLBMC%type; LS_ZZYE00 SF_BRZHXX.ZZYE00%type; LS_BJJE00 SF_BRZHXX.BJJE00%type; LS_YXQFJE SF_BRZHXX.YXQFJE%type; LS_TYJE00 SF_BRZHXX.TYJE00%type; LS_ZFFSMC BM_BRZFFS.ZFFSMC%type; LS_ZPH000 SF_BRJFB0.ZPH000%type; LS_ZPKHYH SF_BRJFB0.ZPKHYH%type; ls_YKTYE0 SF_BRZHXX.YKTYE0%type; LS_ZPDWMC SF_BRJFB0.ZPDWMC%type; LS_YJJXH0 SF_PJSYQK.PJXH00%type; LS_SFJE00 SF_BRJFB0.JFJE00%type; ls_PJH000 SF_BRJFB0.DJH000%type; LS_BRID00 BM_BRXXB0.BRID00%type; is_fbbh00 BM_BRXXB0.fbbh00%type; LS_ZPZH00 varchar2(20); LS_JFYY00 varchar2(20); LS_COUNT0 number(5); IS_FLKBRSFYXJYJJ number(1); LS_ERROR0 varchar2(50); LS_YHMSG0 varchar2(200); LS_SYSMSG varchar2(200); LS_CZBZ00 varchar2(1);--0缴款,1退款 Ecustom exception ;--错误变量 --dsm 2018.05.28 传入的VCZYBH0为BM_YGBM00.YGBH00 --CX 2018.06.15 RESULT_CODE抛出错误 值应该为1 --CX 2018.06.15 省老年医院 FBBH00 IN('21''22')只允许转账, LS_ZFFSMC=转账’ 涉及参数SF_FLKBRSFYXJYJJ begin select BRID00 into LS_BRID00 from IC_YHXX00 where ICKH00=VICKH00; select count(1) into IS_FLKBRSFYXJYJJ FROM XT_XTCS00 WHERE NAME00= 'SF_FLKBRSFYXJYJJ' AND VALUE0='Y'; select count(*) into LS_COUNT0 from BM_BRXXB0 where BRID00=LS_BRID00 and BRXM00=VBRXM00; if LS_COUNT0=0 then LS_ERROR0:='找不到对应的病人!'; raise Ecustom; end if; select FBBH00 into is_fbbh00 from BM_BRXXB0 where BRID00=LS_BRID00 and BRXM00=VBRXM00; select count(*) into LS_COUNT0 from BM_YGBM00 where YGBH00=to_number(VCZYBH0) and ZWXM00=VCZYXM0; --select count(*) into LS_COUNT0 from BM_YGBM00 where XKH000=VCZYBH0 and ZWXM00=VCZYXM0; if LS_COUNT0=0 then LS_ERROR0:='找不到对应收费员!'||VCZYXM0; raise Ecustom; end if; if VJYJY00=0 then LS_ERROR0:='交易金额不能为0!'; raise Ecustom; end if ; -- select YGBH00 into LS_CZY000 from BM_YGBM00 where XKH000=VCZYBH0 and ZWXM00=VCZYXM0; select YGBH00 into LS_CZY000 from BM_YGBM00 where YGBH00=to_number(VCZYBH0) and ZWXM00=VCZYXM0; -- LS_CZY000:=VCZYBH0; LS_CZYXM0:=VCZYXM0; LS_JFLBMC:='门诊预交金'; LS_SFJE00:=0; LS_ZZYE00:=0; LS_BJJE00:=0; select BJJE00,TYJE00 into LS_BJJE00,LS_TYJE00 from SF_BRZHXX where BRID00=LS_BRID00; ls_PJH000:=0; LS_YXQFJE:=0; IF is_fbbh00 IN('21','22') AND IS_FLKBRSFYXJYJJ='1' THEN LS_ZFFSMC:='转账'; ELSE LS_ZFFSMC:='现金'; END IF; LS_ZPH000:=VJYLSH0; --体检系统的交易流水号 LS_ZPKHYH:=VCZYBH0; --体检系统的操作员 --LS_ZPDWMC:='体检系统'; LS_ZPDWMC:=VCZYXM0; --体检系统的操作员姓名 LS_YJJXH0:='0'; LS_ZPZH00:=''; LS_JFYY00:=''; if VCZBZ00='0' then LS_SFJE00:=-abs(VJYJY00); LS_CZBZ00:='1'; elsif VCZBZ00='1' then LS_SFJE00:=abs(VJYJY00); LS_CZBZ00:='0'; end if; LS_YHMSG0:=' '; LS_SYSMSG:=' '; begin select YGBH00,ZWXM00 into LS_CZY000,LS_CZYXM0 from BM_YGBM00 where ZWXM00='体检系统' and rownum=1; exception when others then LS_ERROR0:='请在HIS系统定义一个姓名为"体检系统"的用户!'; raise Ecustom; end; if abs(LS_SFJE00)>0 then SP_SF_BRZHXX(LS_BRID00,LS_CZY000,LS_CZYXM0,LS_JFLBMC,LS_SFJE00,LS_ZZYE00,LS_BJJE00,LS_TYJE00 ,LS_YXQFJE,LS_ZFFSMC,LS_ZPH000,LS_ZPKHYH,LS_ZPDWMC,LS_YJJXH0,LS_CZBZ00,'1' ,ls_PJH000,LS_YHMSG0,LS_SYSMSG,'Y',LS_ZPZH00,LS_JFYY00); update SF_BRJFB0 set JYLSH0=VJYLSH0,JGBM00=LS_CZY000,JGMC00=LS_CZYXM0 where DJH000=ls_PJH000; if nvl(LS_YHMSG0,' ')<>' ' or nvl(LS_SYSMSG,' ')<>' ' then VMSG000:='1' ||''||LS_YHMSG0||LS_SYSMSG||'' ||''||ls_PJH000||''; else VMSG000:='0' ||''||LS_YHMSG0||LS_SYSMSG||'' ||''||ls_PJH000||''; end if; end if; exception when Ecustom then LS_SYSMSG:=LS_ERROR0; VMSG000:='1' ||''||LS_SYSMSG||'' ||''||ls_PJH000||''; rollback; when others then LS_SYSMSG:=substr(sqlerrm,1,100); VMSG000:='1' ||''||LS_SYSMSG||'' ||''||ls_PJH000||''; rollback; end;