CREATE OR REPLACE 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, --候诊时间 yyrqsj out varchar2, --预约日期时间 outstr 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_ERROR0 varchar2(100); E_ERROR exception; v_Count2 number(5); -- dsm 2016.03.22 取SF_YYBRB0增加YYZT00='0'; -- dsm 2016.12.13 过时的做提示 for MZYS-20161208-002 -- dsm 2017.03.15 增加YY_YYXPXSSD参数控制是取HZSJ00还是HZQSSJ -- dsm 2017.04.13 YY_YYXPXSSD=Y时小票预约时间点往后推1个小时 for MZHS-20170413-002 begin 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; 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 ; 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; --预约候诊小票显示时段 begin select count(*) into v_Count2 from XT_XTCS00 where name00='YY_YYXPXSSD' and VALUE0='Y' ; exception when others then v_Count2:=0; end; if ls_YYZT00='4' then as_SYSMSG:='此预约已经超时,被系统设置成无效预约,请重新预约!'; raise E_ERROR; end if; outstr:=' '; if ls_YYZT00='0' then SP_YY_YYZYGH_DGBR(ls_BRID00,to_number(id0000),outstr,as_SYSMSG); end if; if nvl(outstr,' ')=' ' then select BRXM00 Custname, --病人姓名 YYYSXM groupname, --医生队列 YYH000 qno000, --预约号码 YYRQ00 visitdatetime, --就诊时间 YYKSMC, --(select decode(v_Count2,1,HZSJ00,HZQSSJ) from YS_HBHZXH where GHHBID=a.GHHBID and HZXH00=a.YYH000) HZSJ00 substr(SF_MZHS_YYHZSD(a.YYJSSJ,(select GHJSSJ from SF_YSGHHB where GHHBID=a.GHHBID),(select HZSJ00 from YS_HBHZXH where GHHBID=a.GHHBID and HZXH00=a.YYH000)),1,20) HZSJ00, a.YYRQ00||YYJSSJ into Custname,groupname,qno000,czsj00,yyksmc,hzsj00,yyrqsj from SF_YYBRB0 a where YYID00=id0000; update SF_YYBRB0 set HZDYCS=NVL(HZDYCS,0)+1 where YYID00=id0000 ; end if; --sp_yy_yyzygh; exception when E_ERROR then outstr:=outstr||','||SqlErrm||as_SYSMSG; RAISE_APPLICATION_ERROR(-20020,'确认失败'||','||SqlErrm||as_SYSMSG); when others then outstr:=outstr||','||SqlErrm||as_SYSMSG; RAISE_APPLICATION_ERROR(-20020,'确认失败'||','||SqlErrm||as_SYSMSG); end;