CREATE OR REPLACE PROCEDURE SP_SST_ZZFK_DAXXDJ_YKT( P_ZDBH00 in varchar2, --终端编号 P_FZXBH0 in varchar2, --参保机构代码 P_CARDNO in varchar2, --病人卡号 P_ID0000 in varchar2, --保险编号 P_SFZHAO in varchar2, --身份证号 P_XMING0 in varchar2, --姓名 P_XBIE00 in varchar2, --性别(男;女) -->(1:男;2:女) P_BRNL00 in varchar2, --病人年龄 P_RYLB00 in varchar2,--人员类别(工作状态) P_CSRQ00 in varchar2, --出生日期(如:19861202) P_FZXMC0 in varchar2, --分中心名称 P_GZDWMC in varchar2, --工作单位名称 P_GRZHYE in varchar2, --个人账户余额 P_LXDH00 in varchar2, --联系电话 P_CZLB00 in varchar2, --入参:操作类别 1 社保卡建档 0自助发卡 P_LXDZ00 in varchar2, --联系地址(新加)2014.04.08 P_CZJE00 in number, --充值金额(新加)2014.04.08 P_BYRC00 in varchar2, --备用入参(0:医保建档 1:自费建档) P_CGJYSJ out varchar2,--成功交易时间 P_PJH000 out varchar2,--充值票据号 P_PJXH00 out varchar2,--充值票据序号 P_ERRMSG out varchar2,--无法获取明细的错误信息,空表示正确 P_BYCC00 out varchar2 --备用出参 ) as -- MODIFICATION HISTORY -- Person Date Comments -- zhangyc 2014.04.10 create -- zhangyc 2014.04.16 修正清帐退款后重新建档不成功 -- zhangyc 2014.04.21 增加收取卡费和病历本费 -- zhangyc 2014.04.23 增加参数SST_ZFJDBLBF建档自否收取病历本费 --zhangyc 2014.07.16 根据P_ID0000判断该病人是否在院内已经建档 --zhangyc 2014.08.08 ic卡费和病例本费分两个单号插入 --zhangyc 2015.02.13 优化根据P_ID0000判断是否已经建档 --zhangyc 2015.10.20 修正自助发卡p_ywcz00 状态写入错误 0-->1 --zhangyc 2017.06.09 修正插入性别错误 --zhangyc 2019.02.26 修正FBBH00=1 有两条记录报错 -- --------- ---------- ------- ls_COUNT number(5); ls_BRXB00 BM_BRXXB0.BRXB00%type; --病人性别 ls_YBMC00 IC_YBBRLB.YBMC00%type; --医保中心名称 ls_YGBH00 BM_YGBM00.YGBH00%type; ls_YGXM00 BM_YGBM00.ZWXM00%type; ls_YGBMBH BM_YGBM00.BMBH00%type; ls_YHMSG0 varchar2(400); ls_SYSMSG varchar2(400); E_ERROR exception; LS_CARDNO varchar2(220); LS_ICKQZMC varchar2(50); LS_CarNum number(5); --卡号位数 ls_CZRQ00 char(8); ls_CZSJ00 char(8); v_icklb0 IC_YHXX00.ICKLB0%TYPE;--'0'本院卡(默认), '1'外院卡, '2'医保卡 v_icksx0 IC_YHXX00.ICKSX0%TYPE; v_KLDH00 IC_YHXX00.KLDH00%TYPE; v_yyid00 IC_YYID00.YYID00%type; p_ywcz00 IC_YWLS00.YWCZ00%type; --0入库,1售病人卡,2售员工卡,3报停,4报废,5退卡,6取消报停,7重制空白卡,8医保卡登记,9外院卡登记 v_ywid00 IC_YWLS00.YWID00%type; LS_MZZHID SF_BRZHXX.MZZHID%TYPE; --门诊账户ID LS_YBLBBH IC_YBBRLB.YBLB00%TYPE; --病人所属医保中心名称对应的编号 LS_YBZXLB IC_YBBRLB.YBZXLB%TYPE; --病人医保中心类别 LS_FBBH00 IC_YBBRLB.FBBH00%TYPE; LS_BRID00 BM_BRXXB0.BRID00%TYPE; --病人ID LS_YBBRLB BM_BRXXB0.YBBRLB%TYPE; --医保病人类别 LS_BRBLH0 BM_BRXXB0.BRBLH0%TYPE; LS_YBKH00 BM_BRXXB0.YBKH00%TYPE; LS_YBID00 BM_BRXXB0.YBID00%TYPE; LS_YBZHYE number(12,4); LS_KHQZBH varchar2(4); LS_CSRQ00 varchar2(10); LS_SFYBJD varchar2(4); --是否医保建档 Y:医保建档 N:自费建档 LS_CZJE00 number(12,4); LS_ZFFSMC BM_BRZFFS.ZFFSMC%type; --支付方式 LS_ZFFSBH BM_BRZFFS.ZFFSBH%type; LS_PJH000 SF_BRJFB0.PJH000%type; LS_DJH000 SF_BRJFB0.DJH000%type; LS_TYJE00 SF_BRZHXX.TYJE00%TYPE; --账户停用金额 LS_ZYE000 SF_BRZHXX.XJYE00%TYPE; --总余额 P_JYLSH0 varchar2(30); ls_PJXH00 SF_PJSYQK.PJXH00%type; LS_ZT0000 varchar2(10); SF_BLGBFSFXMBH varchar2(100); --工本费代码 LS_BLSFDM BM_YYSFXM.SFXMID%TYPE; --病历本费对应的收费代码ID LS_BLSFJE BM_YYSFXM.SFJE00%TYPE; --病历本费对应的收费金额 IC_SFDM varchar2(100);--IC卡售卡收费代码 LS_SFJE00 number(12,4); LS_SST_ZFJDBLBF varchar2(100); LS_ID0000 varchar2(30); begin P_ERRMSG:=''; P_JYLSH0:=''; ls_CZRQ00 := to_char(sysdate,'YYYYMMDD'); ls_CZSJ00 := to_char(sysdate,'HH24:MI:SS'); LS_CSRQ00:=P_CSRQ00; LS_SFYBJD:='Y'; LS_CZJE00:=P_CZJE00; if nvl(P_CZLB00,'0')='0' then --1 社保卡建档 0自助发卡 LS_SFYBJD:='N'; LS_ID0000:='0'; else LS_SFYBJD:='Y'; LS_ID0000:=P_ID0000; end if; LS_SYSMSG:='获取终端编号对应表'; begin select YGBH00,ZWXM00,BMBH00 into ls_YGBH00,ls_YGXM00,ls_YGBMBH from VW_SST_YGBMDYXX where ZZJBH0=P_ZDBH00; exception when NO_DATA_FOUND then P_ERRMSG:='终端编号:'||P_ZDBH00||'在本院SST_YGBHDY表中未对应收费员,请联系管理员!'; return; end; begin select YYID00 into v_yyid00 from IC_YYID00 where BZ0000 = '0'; --标志:0本院,1外院 exception when no_data_found then v_yyid00:= '0'; end; --病历本费用--begin-- begin select trim(VALUE0) into SF_BLGBFSFXMBH from XT_XTCS00 where name00='SF_BLGBFSFXMBH'; exception when no_data_found then SF_BLGBFSFXMBH:='0'; end; LS_SYSMSG:='获取病历收费代码'; begin select SFXMID,nvl(SFJE00,0) into LS_BLSFDM,LS_BLSFJE from BM_YYSFXM where SFXMID=to_number(SF_BLGBFSFXMBH) and MZFPID is not null and NVL(SFJE00,0) <> 0 and rownum = 1; exception when no_data_found then LS_BLSFDM:=0; LS_SFJE00:=0; end; --病历本费用--end-- --ick费用--begin-- begin select trim(VALUE0) into IC_SFDM from XT_XTCS00 where name00='IC_SFDM'; exception when no_data_found then IC_SFDM:='0'; end; begin select SFJE00 into LS_SFJE00 from BM_YYSFXM where SFXMID=IC_SFDM; exception when no_data_found then LS_SFJE00:=0; end; --ick费用--end-- --自费建档发卡是否收取病历本费 Y:收 N:不收 默认:N begin select trim(VALUE0) into LS_SST_ZFJDBLBF from XT_XTCS00 where name00='SST_ZFJDBLBF'; exception when no_data_found then LS_SST_ZFJDBLBF:='N'; end; select length(P_CARDNO)into LS_CarNum from dual; if LS_CarNum=9 then --社保卡 v_KLDH00:='YB-SBK'; v_icksx0:=v_yyid00; v_icklb0:='2'; p_ywcz00:='8'; elsif LS_CarNum=12 then --医保卡 v_KLDH00:='YB-MMRK'; v_icksx0:=v_yyid00; v_icklb0:='2'; p_ywcz00:='8'; else LS_KHQZBH:=''; v_KLDH00:='SLE4442'; v_icklb0:='0'; v_icksx0:=v_yyid00; p_ywcz00:='1'; end if; select SF_SST_GETICKH00_YKT(P_CARDNO) into LS_CARDNO from dual; select Count(*) into ls_count from IC_YHXX00 where ICKH00 = LS_CARDNO AND ZT0000='1'; if ls_count > 0 then P_ERRMSG:='该卡号已经建档,不能重复建档!'; return; end if; --出生日期 begin select SF_SST_GETCSRQ00_YKT(P_BRNL00,P_CSRQ00,P_SFZHAO) into LS_CSRQ00 from dual; LS_YBZHYE:=to_number(nvl(P_GRZHYE,'0')); exception when others then LS_YBZHYE:=0; end; --性别转化 select trim(SF_SST_XBIE00_YKT(trim(P_XBIE00),'0')) into LS_BRXB00 from dual; if LS_BRXB00 is null then if P_XBIE00='1' then --1:男;2:女 LS_BRXB00:='男'; else LS_BRXB00:='女'; end if; end if; --获取医保中心名称 if LS_SFYBJD='Y' then --医保建档 LS_SYSMSG:='判断医保中心名称是否存在'; --判断医保中心名称是否存在 select Count(*) into LS_COUNT from IC_YBBRLB where YBMC00 = P_FZXMC0; if LS_COUNT<0 then select Count(*) into LS_COUNT from IC_YBBRLB a,BM_FZXDY0 b where a.FBBH00=b.FBBH00 and a.YBLB00=b.YBLB00 and b.FZXMC0 = P_FZXMC0; end if; if LS_COUNT>0 then --有存在医保中心名称--begin--- begin select YBLB00,YBZXLB,YBMC00,FBBH00 into ls_YBLBBH,ls_YBZXLB,ls_YBMC00,LS_FBBH00 from IC_YBBRLB where YBMC00 = P_FZXMC0; exception when no_data_found then begin select a.YBLB00,a.YBZXLB,a.YBMC00 into ls_YBLBBH,ls_YBZXLB,ls_YBMC00 from IC_YBBRLB a,BM_FZXDY0 b where a.FBBH00=b.FBBH00 and a.YBLB00=b.YBLB00 and b.FZXMC0 = P_FZXMC0; exception when no_data_found then P_ERRMSG:='医保中心:'||P_FZXMC0||'在本院IC_YBBRLB表中未找到,请联系管理员!'; return; end; end; LS_SYSMSG:='医保病人类别'; --再得到医保病人类别 begin select YBBRLB into ls_YBBRLB from BM_BRZTQK where ZTQKMC = P_RYLB00 and YBZXLB = ls_YBZXLB and FBBH00=3; --先从BM_BRZTQK表中取,是否是城镇居民医保 exception when others then begin select YBBRLB into ls_YBBRLB from BM_YBBRLB where BRLBMC = P_RYLB00 and YBZXLB = ls_YBZXLB ; exception when others then ls_YBBRLB:='0'; end; end; else --有存在医保中心名称--end---如果不存在按自费处理 begin select YBLB00,YBZXLB,YBMC00,FBBH00 into ls_YBLBBH,ls_YBZXLB,ls_YBMC00,LS_FBBH00 from IC_YBBRLB where FBBH00 = 1 and rownum=1; exception when others then ls_YBBRLB:='0'; end; ls_YBBRLB:='0'; end if; else --自费建档 LS_KHQZBH:=''; v_KLDH00:='SLE4442'; v_icklb0:='0'; v_icksx0:=v_yyid00; p_ywcz00:='1'; ls_YBBRLB:='0'; select Count(*) into LS_COUNT from IC_YBBRLB where YBMC00 = P_FZXMC0; if LS_COUNT>0 then select YBLB00,YBZXLB,YBMC00,FBBH00 into ls_YBLBBH,ls_YBZXLB,ls_YBMC00,LS_FBBH00 from IC_YBBRLB where YBMC00 = P_FZXMC0; else begin select YBLB00,YBZXLB,YBMC00,FBBH00 into ls_YBLBBH,ls_YBZXLB,ls_YBMC00,LS_FBBH00 from IC_YBBRLB where FBBH00 = 1 and rownum=1; exception when others then ls_YBBRLB:='0'; end; end if; end if; if LS_FBBH00=1 then LS_YBKH00:='0'; LS_YBID00:='0'; else LS_YBKH00:=nvl(P_CARDNO,'0'); LS_YBID00:=nvl(LS_ID0000,'0'); end if; --判断医保和自费院内是否已经建档 if LS_SFYBJD='Y' then --医保建档 -- 根据医保ID(YBID00)判断该病人是否在院内已经建档 --if (nvl(LS_YBID00,'0')<>'0') and (P_CZLB00='0') then if trim(LS_YBID00) not in ('0') then select Count(*) into LS_COUNT from BM_BRXXB0 a,IC_YHXX00 b where a.BRID00=B.BRID00 and a.BRXM00=P_XMING0 and a.YBID00=rpad(LS_YBID00,30,' ') and b.ZT0000 in ('1'); if ls_count > 0 then P_ERRMSG:='医疗证号:'||LS_YBID00||'在院内已经建档,不能重复建档!'; return; end if; end if; else -- 根据身份证(P_SFZHAO)判断该病人是否在院内已经建档 if trim(P_SFZHAO) not in ('0') and trim(P_SFZHAO) is not null then select Count(*) into ls_count from BM_BRXXB0 a,IC_YHXX00 b where a.BRID00=B.BRID00 and a.BRXM00=P_XMING0 and a.BRZJBH=P_SFZHAO and b.ZT0000 in ('1'); if ls_count > 0 then P_ERRMSG:='身份证号:'||P_SFZHAO||'在院内已经建档,不能重复建档!'; return; end if; end if; end if; select SQ_BM_BRXXB0_BRBLH0.nextval into ls_BRBLH0 from dual; ls_BRBLH0:='*'||trim(ls_BRBLH0); --2:判断该卡号是否已经入库登记无先入库登记 select SQ_BM_BRXXB0_BRID00.nextval into ls_BRID00 from dual; select SQ_IC_YWLS00_YWID00.nextval into v_ywid00 from dual; select SQ_SF_BRZHXX_ZHYEID.nextval into ls_MZZHID from dual; ls_SYSMSG:='IC_YHXX00'; --ick入库-- select Count(*) into ls_count from IC_YHXX00 where ICKH00 = LS_CARDNO AND ZT0000='0'; if ls_count=0 then begin select Count(*),min(ZT0000) ZT0000 into ls_count,LS_ZT0000 from IC_YHXX00 where ICKH00 = LS_CARDNO and rownum=1; if (ls_count>0) then if LS_ZT0000 not in ('4') then --0空白卡,1有效卡,2暂停使用卡,3作废卡,4无效卡(退卡) P_ERRMSG:='该IC卡号已经存在,不能入库!'; return; else --如果是作废卡或无效卡直接更卡号后在用 update IC_YHXX00 set BRID00=ls_BRID00,ZT0000='1' where ICKH00=LS_CARDNO and ZT0000 in ('3','4'); end if; else insert into IC_YHXX00(ICKNBH,ICKH00,ICKMM0,KMH000,YGBH00,BRID00,KLDH00,ICKLB0,ICKSX0,ZT0000,SFDM00,ICKJE0) values(LS_CARDNO,LS_CARDNO,null,P_CARDNO,ls_YGBH00,ls_BRID00,v_KLDH00,v_icklb0,v_icksx0,'1',IC_SFDM,LS_SFJE00); end if; exception when no_data_found then P_ERRMSG:='插入IC_YHXX00数据错误!'; return; end; else update IC_YHXX00 set BRID00=ls_BRID00,ZT0000='1' where ICKH00=LS_CARDNO and ZT0000='0'; end if; ls_SYSMSG:='IC_YWLS00'; --业务流水 begin insert into IC_YWLS00(YWID00,ICKNBH,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00) values(v_ywid00,LS_CARDNO,LS_CARDNO,ls_YGBH00,p_ywcz00,ls_CZRQ00,ls_CZSJ00,LS_SFJE00); --LS_SFJE00 exception when no_data_found then P_ERRMSG:='插入IC_YWLS00数据错误!'; return; end; ls_SYSMSG:='BM_BRXXB0'; --基本信息- begin Insert into BM_BRXXB0(BRID00,MRN000,BRBLH0,YBKH00,YBID00,YBLB00,BRXM00,BRXB00,BRXX00,BRCSRQ, BRHYZK,BRZY00,BRMZ00,BRGJ00,BRZJLX,BRZJBH,FBBH00,BRGFZH,BRDYFW,BRDH00, BRSZSF,BRSZS0,BRSZZ0,BRSZC0,BRJTDZ,BRYB00,TYDWID,TYDWMC,BRLXGX,BRLXXM, BRLXDZ,BRLXDH,BRZTQK,BRJKQK,BRLX00,CZY000,CZRQ00,CZSJ00,RYCS00,SFYX00, BZ0000,YBBRLB,SFYD00,SFYXJB,BJJBIE,TSSXMC,FWBJ00,XZQH00,GRSFEN,GRSFMC, SFBLWT,CARD16) values(ls_BRID00,'0',ls_BRBLH0,LS_YBKH00,LS_YBID00,ls_YBLBBH,P_XMING0,ls_BRXB00,null,LS_CSRQ00, null,null,'汉族','中国','身份证',P_SFZHAO,LS_FBBH00,'0','未知',P_LXDH00, null,null,null,null,P_LXDZ00,null,null,P_GZDWMC,null,null, null,null,P_RYLB00,null,'初诊',ls_YGBH00,ls_CZRQ00,ls_CZSJ00,0,'Y', null,ls_YBBRLB,'0','0','04','普通',null,null,null,null, null,null); exception when no_data_found then P_ERRMSG:='插入BM_BRXXB0数据错误!'; return; end; ls_SYSMSG:='SF_BRZHXX'; --账户信息 Insert into SF_BRZHXX(MZZHID,JFLBID,BRID00,SFDJ00,KHRQ00,KHSJ00, CZYBH0,CZYXM0,XJYE00,ZZYE00,ZYE000,YKZYE0,BJJE00,TYJE00,YXQFJE,YBZHYE,KL0000) values(ls_MZZHID,1,ls_BRID00,'0',ls_CZRQ00,ls_CZSJ00, ls_YGBH00,ls_YGXM00,0,0,0,0,0,0,0,LS_YBZHYE,null); if LS_CZJE00>0 then select ZFFSBH,ZFFSMC into LS_ZFFSBH,LS_ZFFSMC from BM_BRZFFS where ZFFSBH=1; --获取自助机对应收费员的票据序号-- begin select PJDQH0 into ls_PJXH00 from BM_PJLYQK where PJLXBM = 7 and SYBZ00='Y' and PJSYR0=LS_YGBH00; exception when others then ls_PJXH00:=0; end; select SQ_SF_BRJFB0_DJH000.nextval into LS_DJH000 from dual; select SQ_SF_PJSYQK_PJH000.nextval into LS_PJH000 from dual; ---1、添加病人交费记录,对于病人余额的修改在触发器中修改 LS_SYSMSG:='插入SF_BRJFB0'; begin Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPH000,ZPKHYH,ZPDWMC,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,ZPZH00,CZYKS0) values(LS_DJH000,LS_BRID00,1,LS_CZJE00,ls_ZFFSBH,ls_ZFFSMC,'',P_JYLSH0,'',LS_PJH000, ls_CZRQ00,ls_CZSJ00,ls_YGBH00,ls_YGXM00,0,0,0,0,1,LS_CZJE00,P_ZDBH00,ls_YGBMBH); exception when no_data_found then P_ERRMSG:='插入SF_BRJFB0数据错误!'; return; end; --2、添加票据使用情况 LS_SYSMSG:='插入SF_PJSYQK'; begin Insert into SF_PJSYQK(PJH000,PLBH00,PLMC00,PJXH00,XJJE00,ZZJE00,YHKJE0,CZY000,CZYXM0, DYRQ00,DYSJ00,SFDY00,PJZT00,XM0000,XB0000,BRID00,DZQBJE,CZYKS0) select LS_PJH000,PLBH00,PLMC00,LS_PJXH00,LS_CZJE00,0,0,ls_YGBH00,ls_YGXM00, ls_CZRQ00,ls_CZSJ00,'Y','0',P_XMING0,LS_BRXB00,LS_BRID00,0,ls_YGBMBH from BM_PJLXB0 where PLBH00 = 7 ; --收预交金票据 exception when no_data_found then P_ERRMSG:='插入SF_PJSYQK数据错误!'; return; end; --自费病人扣取卡费和工本费费 if LS_SFYBJD='N' then if nvl(LS_SFJE00,0) = 0 then P_ERRMSG:='ICK费所对应的收费金额未对应,无法建档!'; return; end if; if (nvl(LS_BLSFJE,0) = 0) and (LS_SST_ZFJDBLBF='Y') then P_ERRMSG:='病历工本费所对应的收费金额未对应,无法建档!'; return; end if; select SQ_SF_BRJFB0_DJH000.nextval into ls_DJH000 from dual; --卡费 Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00,JMJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,ZXKS00,YSKS00) select SQ_SF_FYMX00_MXID00.nextval,ls_DJH000,SFXMID,XMMC00,'',DW0000,LS_SFJE00,1,LS_SFJE00,LS_SFJE00,0,0,0, ls_CZRQ00,ls_CZSJ00,ls_CZRQ00,ls_CZSJ00,ls_YGBMBH,ls_YGBMBH,ls_YGBMBH from BM_YYSFXM where SFXMID = IC_SFDM; Insert into SF_BRFY00(DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00,HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00, CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0,JZDH00) select ls_DJH000,0,0,1,ls_BRID00,P_XMING0,ls_FBBH00,sum(HJJE00),SUM(ZFJE00),SUM(JZJE00),SUM(GFJE00),0, ls_CZRQ00,ls_CZSJ00,ls_YGBH00,ls_YGXM00,ls_YGBMBH,0 FROM SF_FYMX00 WHERE DJH000=ls_DJH000; --病例本费 if LS_SST_ZFJDBLBF='Y' then select SQ_SF_BRJFB0_DJH000.nextval into ls_DJH000 from dual; Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00,JMJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,ZXKS00,YSKS00) select SQ_SF_FYMX00_MXID00.nextval,ls_DJH000,SFXMID,XMMC00,'',DW0000,LS_BLSFJE,1,LS_BLSFJE,LS_BLSFJE,0,0,0, ls_CZRQ00,ls_CZSJ00,ls_CZRQ00,ls_CZSJ00,ls_YGBMBH,ls_YGBMBH,ls_YGBMBH from BM_YYSFXM where SFXMID = ls_BLSFDM; Insert into SF_BRFY00(DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00,HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00, CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0,JZDH00) select ls_DJH000,0,0,1,ls_BRID00,P_XMING0,ls_FBBH00,sum(HJJE00),SUM(ZFJE00),SUM(JZJE00),SUM(GFJE00),0, ls_CZRQ00,ls_CZSJ00,ls_YGBH00,ls_YGXM00,ls_YGBMBH,0 FROM SF_FYMX00 WHERE DJH000=ls_DJH000; end if; end if; select nvl(TYJE00,0),nvl(ZYE000,0) into ls_TYJE00,ls_ZYE000 from SF_BRZHXX where BRID00=ls_brid00 and JFLBID=1; if ls_ZYE000<0 then P_ERRMSG:='病人账户预交金额不足,无法建档!'; return; end if; ---插入预交金账户-- delete SST_YJJ_ZHCZ where P_CARDNO=P_CARDNO and BRID00=ls_BRID00; insert into SST_YJJ_ZHCZ(cardno, Jylsh0, Zdbh00 ,Xming0 ,Czje00 ,Zhye00 ,CGJYSJ,Yjjye0,PJH000,PJXH00,BRID00) values(P_CARDNO,P_JYLSH0,P_ZDBH00,P_XMING0,P_CZJE00,ls_ZYE000-ls_TYJE00,ls_CZRQ00||' '||ls_CZSJ00,ls_ZYE000-ls_TYJE00,LS_PJH000,trim(ls_PJXH00),ls_BRID00); insert into SST_YJJ_ZHCZ_LOG(CARDNO,JYLSH0,ZDBH00,XMING0,CZJE00,ZHYE00,YJJYE0,CGJYSJ,PJH000,PJXH00, YHLSH0,ZDLSH0,FKHDM0,FKHMC0,YHKH00,JYJE00,JYLB00,YHKLX0,YHSHH0,YHZDH0, JYRQ00,JYSJ00,JYCKH0,YHSQH0,YHPCH0,ICKXLH,YZDLSH,YJYRQ0,YJYCKH,BRID00) select CARDNO,JYLSH0,ZDBH00,XMING0,CZJE00,ZHYE00,YJJYE0,CGJYSJ,PJH000,PJXH00, YHLSH0,ZDLSH0,FKHDM0,FKHMC0,YHKH00,JYJE00,JYLB00,YHKLX0,YHSHH0,YHZDH0, JYRQ00,JYSJ00,JYCKH0,YHSQH0,YHPCH0,ICKXLH,YZDLSH,YJYRQ0,YJYCKH,BRID00 from SST_YJJ_ZHCZ where CARDNO=P_CARDNO and JYLSH0=P_JYLSH0; P_CGJYSJ:=ls_CZRQ00||' '||ls_CZSJ00; P_PJH000:=LS_PJH000; P_PJXH00:=ls_PJXH00; end if; exception when NO_DATA_FOUND then P_ERRMSG:=substrb(P_ERRMSG||'病人建档失败!'||SQLERRM||'错误位置:'||ls_SYSMSG,1,255); when E_ERROR then P_ERRMSG:=substrb(P_ERRMSG||'病人建档失败!'||SQLERRM||'错误位置:'||ls_SYSMSG,1,255); when others then P_ERRMSG:=substrb(P_ERRMSG||'病人建档失败!'||SQLERRM||'错误位置:'||ls_SYSMSG,1,255); END; /