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;