CREATE OR REPLACE PROCEDURE SP_PAY_YJJ_GETGRJBXX ( IN_OPERETORID in varchar2 ,--入参:char(30) N 操作员编号 IN_OPERETORNAME in varchar2 ,--入参:char(50) N 操作员姓名 IN_TERMNO in varchar2 ,--入参:char(32) Y 终端编号 IN_CARDTYPE in varchar2 ,--入参:char(2) N 卡类型 IN_CARDNO in varchar2 ,--入参:char(32) N 卡号 IN_ACCOUNTTYPE in varchar2 ,--入参:char(2) N 帐户类型 01门诊预交金账户 02 住院预交金账户 IN_IDNO in varchar2 ,--入参:char(32) Y 身份证号 IN_NOTES in varchar2 ,--入参:char(256) Y 备注信息 OUT_RETCODE out varchar2 ,--出参: 返回码 00成功 OUT_RETMSG out varchar2 ,--出参: 返回说明 OUT_CARDTYPE out varchar2 ,--出参: 卡类型 OUT_CARDNO out varchar2 ,--出参: 卡号 OUT_HISCUSTID out varchar2 ,--出参: 持卡人院内ID OUT_BALANCE out number ,--出参: 余额 OUT_IDTYPE out varchar2 ,--出参: 证件类型 OUT_IDNO out varchar2 ,--出参: 证件号 OUT_USERNAME out varchar2 ,--出参: 用户姓名 OUT_USERSEX out varchar2 ,--出参: 性别 1 男 2 女 OUT_ACCOUNTTYPE out varchar2 ,--出参: 账户类型 01 门诊预交金账户 02 住院预交金账户 OUT_STATE out varchar2 --出参: 账户状态 01:正常 02:挂失 03:冻结 04:注销 ) as -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2018.03.28 created by MZSF-20180328-001 --zhangyc 2018.06.21 支付接口升级 by MZSF-20180621-003 --zhangyc 2020.08.13 住院出院病人直接报错 by ZYSF-20200811-002 LS_BRZYID number(10); LS_ZHYE00 number(12,2); --RBRXX BM_BRXXB0%rowtype; --RZYXX ZY_BRXXB0%rowtype; LS_BRID00 BM_BRXXB0.BRID00%type; LS_BRZJLX BM_BRXXB0.BRZJLX%type; LS_BRZJBH BM_BRXXB0.BRZJBH%type; LS_BRXM00 BM_BRXXB0.BRXM00%type; LS_BRXB00 BM_BRXXB0.BRXB00%type; LS_ZYID00 ZY_BRXXB0.ZYID00%type; LS_BRZT00 ZY_BRXXB0.BRZT00%type; --第一位'0':预约病人,'1':住院处做入院登记,病区未接受,'2':在院病人'3':(病区做)出院登记病人,'4':正常出院病人(收费处登记出院,可能帐未结),'5':出院欠费的病人,'9':取消入院登记 ,'8' 出院已审批,第二位'0':已收 begin --卡类型 01社保卡 02市民健康卡 03院内就诊卡 04身份证号 05:住院号 06:临时卡 07:腕带编码 08:病案号加身份证 09:住ID 10:病人ID OUT_RETCODE:='99';--出参: 返回码 00成功 --门诊业务处理--begin-- if IN_ACCOUNTTYPE in ('01') then --01门诊预交金账户 02 住院预交金账户 select SF_PAY_BRZYID(IN_CARDTYPE,IN_CARDNO,IN_ACCOUNTTYPE) into LS_BRZYID from dual; if LS_BRZYID=0 then OUT_RETCODE:='01'; OUT_RETMSG:='未找到有效的病人基本信息!'; rollback; return; end if; --执行BM_BRXXB0 begin select A.BRID00,A.BRZJLX,A.BRZJBH,A.BRXM00,A.BRXB00 into LS_BRID00,LS_BRZJLX,LS_BRZJBH,LS_BRXM00,LS_BRXB00 from BM_BRXXB0 A where A.BRID00=LS_BRZYID; exception when others then OUT_RETCODE:='02'; OUT_RETMSG:='查找BM_BRXXB0异常!'; rollback; return; end; --执行余额 --0 门诊 1住院 /BRID00 /交费类型 1:门诊 2:住院/返回类型 0:可用余额 1:总余额 2:现金余额 3:停用金额 begin select SF_SF_GETBRZHYE(0,LS_BRZYID,1,0) into LS_ZHYE00 from dual; exception when others then LS_ZHYE00:=0; end; end if; --门诊业务处理--end-- --住院业务处理--begin-- if IN_ACCOUNTTYPE in ('02') then --01门诊预交金账户 02 住院预交金账户 select SF_PAY_BRZYID(IN_CARDTYPE,IN_CARDNO,IN_ACCOUNTTYPE) into LS_BRZYID from dual; if LS_BRZYID=0 then OUT_RETCODE:='01'; OUT_RETMSG:='未找到有效的病人基本信息!'; rollback; return; end if; --执行BM_BRXXB0 begin select A.BRID00,A.BRZJLX,A.BRZJBH,A.BRXM00,A.BRXB00,B.ZYID00,B.BRZT00 into LS_BRID00,LS_BRZJLX,LS_BRZJBH,LS_BRXM00,LS_BRXB00, LS_ZYID00,LS_BRZT00 from BM_BRXXB0 A,ZY_BRXXB0 B where A.BRID00=B.BRID00 and B.ZYID00=LS_BRZYID; exception when others then OUT_RETCODE:='02'; OUT_RETMSG:='查找ZY_BRXXB0异常!'; end; --限制未在院状态 2020.08.13 by ZYSF-20200811-002 if trim(LS_BRZT00) in ('4','5','9') then OUT_RETCODE:='03'; --出参: 返回码 00成功 OUT_STATE:='04';--出参: 账户状态 01:正常 02:挂失 03:冻结 04:注销 OUT_RETMSG:='该病人未在院!'; rollback; return; end if; --执行余额 --0 门诊 1住院 /BRID00 /交费类型 1:门诊 2:住院/返回类型 0:可用余额 1:总余额 2:现金余额 3:停用金额 begin select SF_SF_GETBRZHYE(1,LS_BRID00,2,0) into LS_ZHYE00 from dual; exception when others then LS_ZHYE00:=0; end; end if; --住院业务处理--end-- OUT_RETCODE:='00';--出参: 返回码 00成功 OUT_RETMSG:='';--出参: 返回说明 OUT_CARDTYPE:=IN_CARDTYPE;--出参: 卡类型 OUT_CARDNO:=IN_CARDNO;--出参: 卡号 OUT_ACCOUNTTYPE:=IN_ACCOUNTTYPE;--出参: 账户类型 01 门诊预交金账户 02 住院预交金账户 OUT_BALANCE:=nvl(LS_ZHYE00,0);--出参: 余额 OUT_HISCUSTID:=nvl(LS_BRZYID,0);--出参: 持卡人院内ID OUT_STATE:='01';--出参: 账户状态 01:正常 02:挂失 03:冻结 04:注销 OUT_IDTYPE:=LS_BRZJLX;--出参: 证件类型 OUT_IDNO:=LS_BRZJBH;--出参: 证件号 OUT_USERNAME:=LS_BRXM00;--出参: 用户姓名 if LS_BRXB00='男' then --出参: 性别 1 男 2 女 OUT_USERSEX:='1'; else OUT_USERSEX:='2'; end if; --提交事务 if OUT_RETCODE='00' then commit; else rollback; end if; exception when no_data_found then OUT_RETCODE:='99'; OUT_RETMSG:=substrb('预交金账户查询(SP_PAY_YJJ_GETGRJBXX)错误!'||sqlerrm,1,200); rollback; when others then OUT_RETCODE:='99'; OUT_RETMSG:=substrb('预交金账户查询(SP_PAY_YJJ_GETGRJBXX)错误!'||sqlerrm,1,200); rollback; end;