PROCEDURE SP_SST_YYQR( id0000 in varchar2, --预约队列标识 cardno in varchar2, --卡号 cartype in number, --IC卡类型 custname out varchar2, --病人姓名 groupname out varchar2, --医生姓名 qno000 out varchar2, --预约号 czsj00 out varchar2, --就诊日期 yyksmc out varchar2, --预约科室 hzsj00 out varchar2, --候诊时间 outstr out varchar2, --错误信息 p_errmsg out varchar2 --判断病人金额是否足以支付侦察费 ) AS LS_BRID00 BM_BRXXB0.BRID00%type; LS_BRID01 BM_BRXXB0.BRID00%type; as_YHMSG0 varchar2(2550); as_SYSMSG varchar2(2550); ls_YYZT00 SF_YYBRB0.YYZT00%type; LS_CARDNO IC_YHXX00.ICKH00%type; LS_KMH000 IC_YHXX00.KMH000%type; LS_BRXM00 SF_YYBRB0.BRXM00%type; LS_YYBZ00 YS_HBHZXH.YYBZ00%type;--预约标志 '1'普通'2'优待 '3'预约 '4'电话 '5'分诊 '6'网络 LS_GHID00 SF_YYBRB0.GHID00%type; LS_YYH000 SF_YYBRB0.YYH000%type; LS_BRDH00 SF_YYBRB0.BRDH00%type; LS_MRGHLB bm_ygbm00.mrghlb%type; LS_GHKS00 bm_bmbm00.bmbh00%type; LS_GHF000 bm_yysfxm.sfje00%type; LS_GHF001 bm_yysfxm.sfje00%type; LS_GHF002 bm_yysfxm.sfje00%type; ls_TYJE00 sf_brzhxx.tyje00%type; ls_zyE000 sf_brzhxx.zye000%type; ls_cj0000 sf_brzhxx.zye000%type; LS_tzbz00 SF_YSGHHB.TZBZ00%type --2020.07.25 xgh 增加医生姓名 LS_yyysxm sf_yybrb0.YYYSXM%type; ls_error varchar2(100); LS_GHJSSJ varchar2(8); LS_DQSD00 number(4); LS_COUNT number(2); LS_COUNT1 number(2); begin p_errmsg :=''; select SF_SST_GETICKH00(cardno) into LS_CARDNO from dual; begin select BRID00,KMH000 into LS_BRID00,LS_KMH000 from IC_YHXX00 where ICKH00 =LS_CARDNO and ZT0000=1; exception WHEN NO_DATA_FOUND THEN outstr:='IC卡号:'||LS_CARDNO||'在本院IC_YHXX00表中未找到,请联系管理员!'; raise NO_DATA_FOUND; end; ls_error :='1'; select to_number(substr(to_char(sysdate,'HH24:MI:SS'),1,2)) into LS_DQSD00 from dual; if LS_DQSD00>12 then LS_GHJSSJ:='23:59:59'; else LS_GHJSSJ:='14:00:00'; end if; begin select nvl(BRID00,0),YYZT00,GHID00,YYH000,BRDH00,BRXM00 into LS_BRID01,ls_YYZT00,LS_GHID00,LS_YYH000,LS_BRDH00,LS_BRXM00 from SF_YYBRB0 where YYID00=id0000 ; end; ls_error :='2'; /* select COUNT(1) INTO LS_COUNT from SF_YYBRB0 a,sf_ysghhb c where a.ghhbid=c.ghhbid and nvl(BRXM00,0)=ls_BRXM00 and YYRQ00=to_char(sysdate,'YYYYMMDD') and YYRQ00||YYJSSJ>=to_char(sysdate,'YYYYMMDDHH24:MI:SS') and YYZT00 in('0','1') and a.HZDYCS='0' and exists(select 1 from YS_HBHZXH where BRID00=a.BRID00 and HZXH00=a.YYH000 and HZQSSJ||':00'<=LS_GHJSSJ); IF LS_COUNT>1 THEN outstr:='请您到窗口取预约号(同名)11111!'; return; END IF; select COUNT(1) INTO LS_COUNT1 from SF_YYBRB0 a,sf_ysghhb c where a.ghhbid=c.ghhbid and nvl(BRXM00,0)=ls_BRXM00 and YYRQ00=to_char(sysdate,'YYYYMMDD') and YYRQ00||YYJSSJ>=to_char(sysdate,'YYYYMMDDHH24:MI:SS') and YYZT00 in('0','1') and a.HZDYCS='0' and exists(select 1 from YS_HBHZXH where BRID00=a.BRID00 and HZXH00=a.YYH000 and HZQSSJ||':00'<=LS_GHJSSJ) AND YYQH01 IS NOT NULL; IF LS_COUNT1>0 THEN outstr:='预约券预约取号,请您到窗口取预约号!'; return; END IF; */ --增加判断是否金额足够 select ghlb00,yyksbh into LS_MRGHLB,LS_GHKS00 from sf_yybrb0 a where a.YYID00=id0000 and yyrq00 >= to_char(sysdate,'yyyymmdd'); select nvl(sum(b.SFJE00),0) into LS_GHF001 from sf_ghf000 a,bm_yysfxm b where a.SFXMID=b.SFXMID and a.GFLB00=LS_MRGHLB; select nvl(sum(FJFFJE),0) into LS_GHF002 from vw_ys_fjghf0 where FJBRLB='0' and FJGHKS=LS_GHKS00 and FJGHLB=LS_MRGHLB; LS_GHF000:=nvl(LS_GHF001,0)+nvl(LS_GHF002,0); select zye000,tyje00 into ls_ZYE000,ls_TYJE00 from sf_brzhxx where brid00 = LS_BRID00; select nvl(ls_ZYE000,0)-nvl(ls_TYJE00,0)-nvl(LS_GHF000,0) into ls_cj0000 from dual; if nvl(ls_ZYE000,0)-nvl(ls_TYJE00,0)-nvl(LS_GHF000,0)<0 then outstr:='预交金不够挂号,请交费'||nvl(ls_cj0000,0)||'元,再进行取号!'; return; end if; if LS_BRID01=0 then ----SP_SST_MZYY_ZJYYDJ --更新预约病人信息 update SF_YYBRB0 set brid00=LS_BRID00,KMH000=LS_KMH000,ICKH00=LS_CARDNO where YYID00=id0000 ; --更新医生号表侯诊序号 update YS_HBHZXH set BRID00=LS_BRID00,YYID00=id0000,BRXM00=LS_BRXM00 where GHHBID=LS_GHID00 and HZXH00=LS_YYH000; --YYBZ00 --update SF_YSGHHB set YYXHS0=YYXHS0+1,TQYYS0=TQYYS0+1 where GHHBID = P_PBLSH; --更新病人电话号码 --update BM_BRXXB0 set BRDH00=nvl(LS_BRDH00,BRDH00) where BRID00=LS_BRID00; end if; outstr:=' '; ls_error :='3'; if ls_YYZT00='0' then ls_error :='4'; --2020.07.25 xgh 取值增加a.yyysxm SP_YY_YYZYGH_DGBR(ls_BRID00,to_number(id0000),outstr,as_SYSMSG); select c.tzbz00,a.yyysxm into LS_tzbz00,LS_yyysxm from sf_yybrb0 a,SF_YSGHHB c where a.GHHBID=c.GHHBID and a.YYID00=id0000; IF LS_tzbz00='1' THEN -- outstr:='该医生停诊,请重新挂号。'; --2020.07.25 xgh 提示信息增加医生姓名LS_yyysxm outstr:=LS_yyysxm||'医生已停诊,请重新挂号。'; END IF; --outstr :=ls_BRID00||'---'||to_number(id0000); end if; ls_error :='5'; if nvl(outstr,' ')=' ' then select a.BRXM00 Custname,a.YYYSXM groupname,a.YYH000 qno000,--a.YYRQ00 visitdatetime, -- 改预约时间格式 20190528 SUBSTR(YYRQ00,1,4)||'年'||SUBSTR(YYRQ00,5,2)||'月'||SUBSTR(YYRQ00,7,2)||'日', --- 20181217预约取号,地点中的科室名称去除。HYS -- a.YYKSMC||','|| (select h.CKXXDZ||h.CKMC00 from bm_ckbm00 h where c.GHHZCK=h.ckbh00 and rownum=1) yyksmc, (select HZQSSJ from YS_HBHZXH where GHHBID=a.GHHBID and HZXH00=a.YYH000) HZSJ00 into Custname,groupname,qno000,czsj00,yyksmc,hzsj00 from sf_yybrb0 a,SF_YSGHHB c where a.GHHBID=c.GHHBID and a.YYID00=id0000; update SF_YYBRB0 set HZDYCS=NVL(HZDYCS,0)+1 where YYID00=id0000 ; end if; --sp_yy_yyzygh; exception when others then outstr:=ls_error||outstr||','||SqlErrm||as_SYSMSG||'111'; RAISE_APPLICATION_ERROR(-20020,'确认失败'||','||SqlErrm||as_SYSMSG); end;