CREATE OR REPLACE FUNCTION SF_YS_GHXZ00(Pghks00 number,Pghys00 number,Pbrid00 number) return varchar2 is vzxzghlb bm_bmbm00.xzghlb%type ;--总限制过类别 Vbmxz00 bm_bmbm00.bmxz00%type ;--挂号科室部门性质 Vbyzglb varchar2(50) ;--本院职工挂号类别bm_ghlbb0.lbbh00%type vxzbmygghlb bm_bmbm00.xzghlb%type ;--限制部门员工挂号类别 Vxzghlb bm_ybbrlb.xzghlb%type ;--限制挂号类别 Vghhbid SF_YSGHHB.GHHBID%type ;--挂号号表ID Vghxhs0 SF_YSGHHB.GHXHS0%type ;--挂号限号数 ls_YBLB00 BM_BRXXB0.YBLB00%TYPE ; ls_YBZXLB IC_YBBRLB.YBZXLB%TYPE ; ls_FBBH00 BM_BRXXB0.FBBH00%TYPE ; VMZID00 SF_BRXXB0.GHID00%TYPE ; Vghlbbh varchar2(255) ;--挂号类别编号 Vghdjxz char(1) ;--挂号等级限制'Y'限制,允许向下兼容,'M'限制,不允许向下兼 --容,'N'不作等级限制 Vghksxz number(10) ;--对具体科室进行挂号限制 Vxzghdj number(10) ;--挂号等级限制 Vyxgmfh char(1) ;--允许挂免费号 V_COUNT0 Number(5) ;--临时变量 V_COUNT1 Number(5) ;--临时变量 V_COUNT10 Number(5) ;--临时变量 Vcounter number(10) ;--临时变量 Vxs0000 Number(2) ;--临时变量 Vdqxq00 CHAR(1) ;--当天星期 Vdqrq00 CHAR(8) ;--当前日期 Vdqsj00 CHAR(8) ;--当前时间 Vsfqtjz char(1) ;--是否全天急诊 Vjzlbbh varchar2(200) ;--急诊的挂号类别编号 ls_dtghxz CHAR(1) ;--病人同一天在 --同一个医生是否限制只挂一次普通 --挂号和一次急诊号 Y:是(特殊病种患者除外) M:是(特殊病种病人也一样限制) N:都不限制, 默认为N --Q非医保病人一个普通号一个急诊号,医保病人一个普通号急诊号不限 --D:只有一个普通号(特殊病种除外) ls_IP XT_XTRZ00.BZ0000%type; --限制IP Ecustom exception ;--错误变量 Verrmsg varchar2(255) ;--错误信息 ls_TSBZGHCSXZ char(1) ;--Y:特殊病种病人的挂号限制按照上一次收费处结算时特殊病种数目+1 N:该参数不做限制 ls_KSGHZDCS NUMBER(5) ; ls_XZMGYBZXGHCS XT_XTCS00.VALUE0%TYPE ;--限制每个医保中心挂号次数 ls_SFYXPTH CHAR(1) ;-- 是否允许挂 普通号 0:不允许 1:允许 ls_ybbrptghxz char(1) ; YS_BYZGYBSFYXYSZGH char(1) ;--本院职工医保是否允许在医生站挂号 Y允许 N否 YS_NLYBBRGHSSFYCBFGHLB XT_XTCS00.VALUE0%TYPE ;--年老医保病人挂号时是否隐藏部分挂号类别 YS_YBBRNL number(5) ;--医保病人年龄 YS_YCGHLBC XT_XTCS00.VALUE0%TYPE ;--隐藏的挂号类别串 Vghlbbh_clc varchar2(255) ;--挂号类别编号处理串 VS_PROCESS XT_XTRZ00.JCID00%Type; YS_YZSJYHB XT_XTCS00.VALUE0%TYPE ;--医生时间段与号别,默认为N(不启用) 启用格式为YYYYMMDDHH24:MI:SS-YYYYMMDDHH24:MI:SS;lbbh00,lbbh00(多个号用","隔开) YS_YZHB_clc varchar2(100);--义诊号别窜 ls_YSGHCSXZ XT_XTCS00.VALUE0%TYPE ;--限制某个个医保中心医生次数 LS_YBZX00 varchar2(10); LS_YSGS00 varchar2(10); LS_GHCS00 varchar2(10); ls_DTGHZCSXZ NUMBER(5) ; --当天挂号总次数限制 ,0不限制,>0表示医保当天挂普通号不能超过的个数 默认0 ls_SFXYJZH varchar2(2) ;--是否允许挂急诊号 Vghlbbh_pt varchar2(255) ;--普通挂号类别 Vbyqslb varchar2(50) ; Vbyqsgh varchar2(50) ; Vbyqsgh1 varchar2(50) ; ls_YSFLBH BM_YGBM00.YSFLBH%type; VSFQYQZRMYYBYQSGH xt_xtcs00.value0%type; v_byqsbmbh xt_xtcs00.value0%type; V_TSBZS0 number(3); --上次结算的特殊病种数 ls_BMGHLBC XT_XTCS00.VALUE0%TYPE ; --便民挂号类别 ls_BZXZSJ varchar2(12); LS_BYZGGHLB varchar2(10); YS_BYZGSFZXSZGH varchar2(10); ls_SFBYZG bm_brxxb0.SFBYZG%type; VcounterXZIP number(10); ls_XZIP00 varchar2(100); cursor C_ghlbbh is select lbbh00,decode(instr(LBMC00,'急诊'),0,0,1) JZBZ00 from bm_ghlbb0 where SFYX00='Y' and instr(','||Vbyzglb||',',','||lbbh00||',')=0 and --lbbh00<>Vbyzglb instr(','||Vbyqslb||',',','||lbbh00||',')=0 and --挂号等级为-1说明本挂号类别不受等级限制 ((GHDJ00<=Vxzghdj and Vghdjxz='Y')or (GHDJ00=Vxzghdj and Vghdjxz='M') or (GHDJ00=-1) or (Vghdjxz='N')) and --限制免费号 (Vyxgmfh='Y' or LBBH00 in (select LBBH00 from VW_SF_ghlbsf where nvl(ghks00,-1)=-1 or ghks00=Pghks00)) and --是否本科室专用 LBBH00 not in (select LBBH00 from BM_KSGHDY where BKSZY0='Y' and BMBH00<>Pghks00) --是否能返回中医挂号类别 and ((ls_YSFLBH in('2','3') and SFZYLB='N') or (ls_YSFLBH in ('0','1'))) and SYXTFL in ('0','1') --马尾特殊病种第1个号不能是便民号,第2个号只能是便民号 and ((instr(ls_BMGHLBC,','||lbbh00||',')=0 and V_TSBZS0>0 and LS_GHCS00=0) --第1次 or (instr(ls_BMGHLBC,','||lbbh00||',')>0 and V_TSBZS0>0 and LS_GHCS00>0) --第2次 or ls_BMGHLBC='N' or V_TSBZS0=0 ) --正常班不出现急诊挂号类别 for MZYS-20141219-003 and (decode(SF_XT_GETSFJZSJ,'Y','1','0')=SFJZLB or nvl(SFJZLB,'2')='2') --某IP只能挂急诊挂号类别,MC0000是IP,BH0000是GHLB00 and (VcounterXZIP=0 or (VcounterXZIP>0 and LBBH00 in (select XSXH00 from BM_TYZD00 where ZDMC00='IP限制挂号类别' and MC0000=ls_XZIP00 )) ) order by xsxh00,ghdj00,lbbh00; cursor C_jzghlbbh is select to_char(lbbh00) LBBH00 from bm_ghlbb0 where SFYX00='Y' AND LBMC00 LIKE '%急诊%' and SYXTFL in ('0','1') ; cursor C_byqsgh is select lbbh00 from bm_ghlbb0 where ghdj00<=(select ghdj00 from bm_ghlbb0 where lbbh00=(select mrghlb from bm_ygbm00 where ygbh00=Pghys00)) and SYXTFL in ('0','1') and instr(','||Vbyqslb||',',','||lbbh00||',')>0; -- MODIFICATION HISTORY -- Person Date Comments -- YANGY 2007.07.17 老年医院六点以后要求只挂急诊号 -- YANGY 2007.07.19 同一医生同一天只能给同一病人挂一个号,挂第二个号时提示“本日已经挂过号 -- YANGY 2007.07.27 增加一个表可医院自己维护急诊时间段 -- YANGY 2007.08.16 限制一个科室最多只能挂几个号 -- YANGY 2007.08.17 一个医生一天可以挂一个普通号,一个急诊号 -- YANGY 2007.09.06 福州六院要求特殊病种病人也要限制挂号 -- YANGY 2007.09.30 省二院要求一天只能挂一个号,第二个急诊号也不能挂,特殊病种病人允许重复挂号 -- CSF 2008.06.18 福州六院要求医保病人也要限制挂号,但急诊除外 -- CSF 2009.07.23 省二要求,市医保病人,一个医生处一天只能挂一个号 -- CSF 2009.10.29 马尾医院要求:特殊病种病人的挂号限制按照上一次收费处结算时特殊病种数目+1; -- qks 2009.11.17 表BM_KSGHDY增加字段BKSZY0:是否本科室专用,值为'Y'时,其他科室不允许使用 -- zhr 2010.03.21 肺科要求限制某些IP某些时段不能开诊 -- CSF 2010.07.07 省二限制某些IP某些时段不能开诊,加日期的限制,某些日期不受这些限制。 -- CSF 2011.01.10 扩展参数XT_SFYXGH或参数YS_YXGMFH实现病人在同一天在同一个医生处第一次不允许挂免费号,第二次允许挂免费号 -- csf 2011.05.26 本院职工的医保病人不能在医生站挂号 YS_YBBYZGBRSFYXGH -- zhangwz 2011.05.31 扩展参数 YS_XZMGYBZXGHCS 为可支持多个医保中心的限制 by MZYS-20110527-001. -- zhangwz 2011.10.27 增加参数 YS_NLYBBRGHSSFYCBFGHLB 控制 年老医保病人挂号时是否隐藏部分挂号类别 by MZYS-20111020-001. -- csf 2011.11.08 限制某些IP某些时段不能开诊,在终端机器上使用不正常,所以取本进程ip改由XT_XTRZ00取,而不通过sys_context('userenv', 'ip_address') MZYS-20111108-004 -- csf 2011.11.17 加参数,处理指定时间段内只能挂限定号表MZYS-20111117-001 -- zhangwz 2012.03.12 解决参数 YS_XZMGYBZXGHCS 控制不住本院职工每个医生只能挂一个号的功能 by MZYS-20120306-001. -- zhangyc 2012.03.21 限制某个医保中心病人,一天只能看几个医生,一个医生只能挂几个号 参数:YS_YSGHCSXZ开启后(YS_XZMGYBZXGHCS设置无效) by MZYS-20120310-001 -- zhangyc 2012.04.26 医保中心类别不在参数YS_YSGHCSXZ 内的病人限制 一个病人一个科室一天之类挂号的最大次数由YS_KSGHXZCS控制 by MZYS-20120424-002 -- dsm 2012.05.16 YS_YSGHCSXZ该参数设置后的提示,如截图中:“取挂号类别不能成功: for MZYS-20120504-003 -- DSM 2012.06.06 医保病人,当天在全院医生,累计挂号(普通号)次数最多为2次 for MZYS-20120426-002。 -- dsm 2012.10.22 update for MZYS-20121022-002 -- dsm 2012.12.17 扩展参数YS_TYSDTGHXZ='Q' for MZYS-20121023-001 -- dsm 2013.02.22 如果医生没有中医资质的不能返回中医挂号类别 for MZYS-20130220-001 -- dsm 2013.05.17 当参数SF_BYZGGHLB值有两个挂号类别时参数会失效,导致不是本院职工的病人挂号时也可选择本院职工号 for MZYS-20130515-001 -- dsm 2013.07.03 扩展YS_TSBZGHCSXZ参数,YS_TSBZGHCSXZ=M时取年内看病记录中使用最多的特殊病种看病的数目+1 for MZYS-20130702-001 -- chenyw 2013.11.21 增加亲属号功能 for MZYS-20131111-002 -- chenyw 2013.12.04 增加SYXTFL来限制挂号类别的使用范围 for MZYS-20131203-002 -- dsm 2014.07.08 马尾:YS_TSBZGHCSXZ='Y'时,特殊病种病人的第1个号不能挂便民号,最后一个号只能挂便民号 for MZYS-20140610-002 -- dsm 2014.07.28 regexp_replace替换成substr有的医院oracle不支持 for MZYS-20140715-004; -- dsm 2014.08.21 长乐要不同的IP不同的限诊时间 for MZYS-20140821-001 -- dsm 2015.01.07 正常班不出现急诊挂号类别 for MZYS-20141219-003 -- dsm 2015.02.02 本院职工挂号时,除了显示本院职工号,还要显示其它的号 for MZYS-20150119-002 -- dsm 2015.02.09 无登陆日志时限制就诊 for MZYS-20150123-002 -- dsm 2015.05.12 限定某台电脑登陆门诊医生工作站以后,只能给病人挂急诊类别的号 for MZYS-20150505-003 begin --如果指定了本院职工的挂号类别,直接返回本院职工类别; --如果该医生限制了挂号等级,并且有排班,直接返回排班定义的号表; --如果该医生限制了挂号等级,则要按医生的等级进行挂号限制 挂号类别等级为-1的说明该类别不受限制 --定义了该类别的病人做了挂号限制BM_YBBRLB --定义了该科室的挂号类别进行限制BM_KSGHDY --是否允许挂免费号 --医技系统简易门诊的默认挂号 Vbyqslb:='-1'; ls_SFYXPTH:='1'; vzxzghlb:=' '; vxzbmygghlb:=' '; Vxzghlb:=' '; Vxzghdj:=1000; Vghlbbh:='-1'; Vyxgmfh:='N'; ls_YBZX00:='-1'; LS_YSGS00:='2'; LS_GHCS00:='1'; Vghlbbh_pt:='-1'; LS_BYZGGHLB:=' '; YS_BYZGSFZXSZGH:='Y'; --20100321 zhr 肺科要求限制某些IP某些时段不能开诊 --20111108 ,由于终端机客户端取到的ip不准确,所以根据进程取XT_XTRZ0表的IP -- ls_IP:=trim(sys_context('userenv', 'ip_address')); Select userenv('SESSIONID') PROCESS Into VS_PROCESS from dual where rownum=1; Select nvl(max(BZ0000),0) Into ls_IP From XT_XTRZ00 Where JCID00=VS_PROCESS And LSH000=(select max(LSH000) from XT_XTRZ00 where JCID00=VS_PROCESS); if ls_IP='0' then Verrmsg:='对不起,系统找不到登陆日志,请推出系统,重新登陆!'; raise Ecustom; end if; ls_XZIP00:=substrb(ls_IP,1,instrb(ls_IP,'#')-1); if instr(ls_XZIP00,'-')>0 then ls_XZIP00:=substrb(ls_XZIP00,1,instrb(ls_XZIP00,'-')-1); end if; select '*'||substrb(ls_IP,1,instrb(ls_IP,'#')-1)||'*' into ls_ip from dual; if instr(ls_IP,'-')>0 then select substrb(ls_IP,1,instrb(ls_IP,'-')-1)||'*' into ls_ip from dual; end if; begin select 1,nvl(BZ0000,' ') into Vcounter,ls_BZXZSJ from BM_TYZD00 where ZDMC00='限制开诊IP' and instrb('*'||trim(MC0000)||'*',ls_IP)>0 and rownum=1; --(trim(MC0000)||'#' like '%'||ls_IP||'%' or (instrb(MC0000,'*')>0 and MC0000 like '%'||substrb(ls_IP,1,instrb(ls_IP,'*',-1)) ||'%')); exception when others then Vcounter:=0; ls_BZXZSJ:=' '; end; if VCounter>0 and ls_BZXZSJ<>' ' then if to_char(sysdate,'HH24:MI')>=substrb(ls_BZXZSJ,1,instrb(ls_BZXZSJ,'-')-1) and to_char(sysdate,'HH24:MI')<=substrb(ls_BZXZSJ,instrb(ls_BZXZSJ,'-')+1,5) then select count(*) into Vcounter from BM_TYZD00 where ( (ZDMC00='不受限制开诊日期' and to_char(sysdate,'YYYYMMDD') between substrb(MC0000,1,instrb(MC0000,'-')-1) and substrb(MC0000,instrb(MC0000,'-')+1,8) ) or (ZDMC00='不受限制开诊星期' and instr(MC0000,to_char(sysdate-1,'D'))>0 )); if Vcounter=0 then Verrmsg:='取挂号类别不能成功:对不起,此时段不允许接诊!'; raise Ecustom; end if; end if; elsif VCounter>0 and ls_BZXZSJ=' ' then select count(*) into Vcounter from BM_TYZD00 where ZDMC00='限制开诊时间' and to_char(sysdate,'HH24:MI') between substrb(MC0000,1,instrb(MC0000,'-')-1) and substrb(MC0000,instrb(MC0000,'-')+1,5); if Vcounter>0 then select count(*) into Vcounter from BM_TYZD00 where ( (ZDMC00='不受限制开诊日期' and to_char(sysdate,'YYYYMMDD') between substrb(MC0000,1,instrb(MC0000,'-')-1) and substrb(MC0000,instrb(MC0000,'-')+1,8) ) or (ZDMC00='不受限制开诊星期' and instr(MC0000,to_char(sysdate-1,'D'))>0 )); if Vcounter=0 then Verrmsg:='取挂号类别不能成功:对不起,此时段不允许接诊!'; raise Ecustom; end if; end if; end if; --某IP只能挂急诊挂号类别,MC0000是IP,XSXH00是GHLB00 select count(*) into VcounterXZIP from BM_TYZD00 where ZDMC00='IP限制挂号类别' and MC0000=ls_XZIP00; --取医生中医资质类别 select nvl(YSFLBH,'3') into ls_YSFLBH from BM_YGBM00 where YGBH00=Pghys00; --义诊日期、返回义诊号别 select nvl(max(trim(VALUE0)),'N') INTO YS_YZSJYHB from XT_XTCS00 where NAME00='YS_YZSJYHB'; if YS_YZSJYHB<>'N' then if (to_char(sysdate,'YYYYMMDDhh24:MI:SS')>=SUBSTRB(YS_YZSJYHB,1,16) ) and (to_char(sysdate,'YYYYMMDDhh24:MI:SS')<=SUBSTRB(YS_YZSJYHB,18,16) ) then YS_YZHB_clc:=SUBSTRB(YS_YZSJYHB,35); if YS_YZHB_clc is not null then return YS_YZHB_clc; end if; end if; end if; select nvl(max(trim(value0)),'Y') into YS_BYZGYBSFYXYSZGH from XT_XTCS00 where name00='YS_BYZGYBSFYXYSZGH'; select TO_NUMBER(trim(NVL(max(value0),'0'))) into ls_KSGHZDCS FROM xt_xtcs00 where name00='YS_KSGHXZCS'; --限制某个医保中心病人一天一个医生的挂号次数,该参数描述的是具体的YBZXLB 不做限制为-1 默认为-1 select trim(NVL(max(value0),'-1')) into ls_XZMGYBZXGHCS FROM xt_xtcs00 where name00='YS_XZMGYBZXGHCS'; --限制某个医保中心病人,一天只能看几个医生,一个医生只能挂几个号参数:YS_YSGHCSXZ开启后(YS_XZMGYBZXGHCS设置无效) select trim(NVL(max(value0),'-1')) into ls_YSGHCSXZ FROM xt_xtcs00 where name00='YS_YSGHCSXZ'; select trim(NVL(max(value0),'N')) into ls_dtghxz FROM xt_xtcs00 where name00='YS_TYSDTGHXZ'; --ls_ybbrptghxz 医保病人普通挂号限制 N:不限制 Y:医保普通号限制一个 急诊号不限 --特殊病种病人的挂号限制按照上一次收费处结算时特殊病种数目+1 select trim(NVL(max(value0),'N')) into ls_TSBZGHCSXZ FROM xt_xtcs00 where name00='YS_TSBZGHCSXZ'; select trim(NVL(max(value0),'N')) into ls_BMGHLBC FROM xt_xtcs00 where name00='YS_BMGHLBC'; if ls_BMGHLBC<>'N' then -- for MZYS-20140610-002 ls_BMGHLBC:=','||trim(ls_BMGHLBC)||','; end if; if ls_dtghxz='Q' then ls_ybbrptghxz:='Y'; ls_dtghxz:='Y'; else ls_ybbrptghxz:='N'; end if; if Pbrid00>0 then begin select YBLB00,FBBH00,nvl(SFBYZG,'0') INTO ls_YBLB00,ls_FBBH00,ls_SFBYZG FROM BM_BRXXB0 WHERE BRID00=Pbrid00; select ybzxlb INTO ls_YBZXLB from ic_ybbrlb where yblb00=ls_YBLB00 AND FBBH00=ls_FBBH00; exception when others then Verrmsg:='取挂号类别不能成功:本院职工医保请到收费处挂号!'; raise Ecustom; end; end if; if (YS_BYZGYBSFYXYSZGH ='N') and (Pbrid00>0) then select count(*) into Vcounter from bm_ygbm00 where brid00=Pbrid00; if (ls_FBBH00='3') and (Vcounter>0) then Verrmsg:='取挂号类别不能成功:本院职工医保请到收费处挂号!'; raise Ecustom; end if; end if; --限制某个医保中心病人,一天只能看几个医生,一个医生只能挂几个号YS_YSGHCSXZ开启后(YS_XZMGYBZXGHCS设置无效) by MZYS-20120310-001 -- if ls_YSGHCSXZ<>'-1' then select SF_YS_GETGHXZCS(ls_YBZXLB,0) into LS_YBZX00 from dual; --医保中心类别ybzxlb select SF_YS_GETGHXZCS(ls_YBZXLB,1) into LS_YSGS00 from dual; --允许看几个医生 select SF_YS_GETGHXZCS(ls_YBZXLB,2) into LS_GHCS00 from dual; --同一个医生运行挂号次数 end if; --医保病人不论医生不论科室,当天的挂号数不能超过的个数 begin select to_number(Value0) into ls_DTGHZCSXZ from XT_XTCS00 where Name00='YS_DTGHZCSXZ'; exception when others then ls_DTGHZCSXZ:=0; end; --marked for MZYS-20121022-002 -- select count(*) into Vcounter from xt_yyxx00 where YYQC00='福建医科大学附属第二医院'; -- if Vcounter>0 then -- --如果有排班,直接取排班的号别 -- begin -- select to_char(GHLBBH),GHXHS0,GHHBID into Vghlbbh,Vghxhs0,Vghhbid from SF_YSGHHB where GHKSBH=Pghks00 -- and GHYSBH=Pghys00 and GHMZSJ=to_char(sysdate,'yyyymmdd') -- and GHQSSJ<=to_char(sysdate,'hh24:mi:ss') and GHJSSJ>=to_char(sysdate,'hh24:mi:ss'); -- select count(*) into Vcounter from sf_brxxb0 a,sf_ysghhb b -- where b.GHHBID=Vghhbid and a.thbz00<>'0' and b.GHKSBH=a.ghks00 and -- b.GHYSBH=a.JZYS00 and b.GHMZSJ=a.ghrq00 and b.GHQSSJ<=a.ghsj00 and b.GHJSSJ>=a.ghsj00; -- if Vghxhs0>Vcounter then -- return Vghlbbh; -- else -- return -1; -- end if; -- exception -- when others then -- Vghlbbh:='-1'; -- end; -- end if; --本院职工挂号类别限制 begin select trim(value0) into Vbyzglb from xt_xtcs00 where name00='SF_BYZGGHLB'; exception when others then Vbyzglb:='-1'; end; --本院职工亲属挂号 begin select trim(value0) into VSFQYQZRMYYBYQSGH from xt_xtcs00 where name00='SF_SFQYQZRMYYBYQSGH'; exception when others then VSFQYQZRMYYBYQSGH:='N'; end; --本院职工是否限制亲属挂号 begin select trim(value0) into YS_BYZGSFZXSZGH from xt_xtcs00 where name00='YS_BYZGSFZXSZGH' and value0='N'; exception when others then YS_BYZGSFZXSZGH:='Y'; end; if Pbrid00>0 then--指定了病人 --病人是否是本院职工,如果是本院职工,只能挂本院职工号并立即返回,其他病人不能挂本院职工号 if Vbyzglb<>'-1' then if (trim(ls_XZMGYBZXGHCS)<>'-1') and (LS_YBZX00='-1') then -- by MZYS-20120306-001. --add and (LS_YBZX00='-1') by MZYS-20120310-001 如果YS_YSGHCSXZ设置成功(YS_XZMGYBZXGHCS设置无效) SELECT COUNT(1) INTO V_COUNT0 FROM SF_BRXXB0 c WHERE c.BRID00=Pbrid00 AND c.JZYS00=Pghys00 AND c.GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND c.THBZ00<>'0' and c.ghlb00<>-99999 and exists(select 1 from BM_BRXXB0 a,IC_YBBRLB b where a.FBBH00=b.FBBH00 and a.YBLB00=b.YBLB00 and a.BRID00=c.BRID00 and instr(';'||trim(ls_XZMGYBZXGHCS)||';',';'||b.YBZXLB||';')>0); if V_COUNT0>0 then Verrmsg:='取挂号类别不能成功:该病人在本医生处已经挂过号,不能重新挂号!'; raise Ecustom; end if; end if; --by MZYS-20120310-001 限制某个医保中心病人,一天只能看几个医生,一个医生只能挂几个号--参数:YS_YSGHCSXZ开启后(YS_XZMGYBZXGHCS设置无效) if (LS_YBZX00<>'-1') then select count(distinct jzys00) into V_COUNT0 from SF_BRXXB0 c WHERE c.BRID00=Pbrid00 AND c.JZYS00<>Pghys00 AND c.GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND c.THBZ00<>'0' and c.ghlb00<>-99999; if V_COUNT0>=to_number(LS_YSGS00) then Verrmsg:='该病人本日就诊医生已超过('||LS_YSGS00||')个,不能重新挂号!'; raise Ecustom; else select COUNT(1) into V_COUNT0 from SF_BRXXB0 c WHERE c.BRID00=Pbrid00 AND c.JZYS00=Pghys00 and c.GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND c.THBZ00<>'0' and c.ghlb00<>-99999; if V_COUNT0>=to_number(LS_GHCS00) then Verrmsg:='该病人在本医生挂号次数已超过('||LS_GHCS00||')个,不能重新挂号!'; raise Ecustom; end if; end if; end if; if VSFQYQZRMYYBYQSGH='Y' then begin select trim(value0) into v_byqsbmbh from xt_xtcs00 where name00='XT_BYQSBMBH_QZRMYY'; exception when others then v_byqsbmbh:=null; end; if v_byqsbmbh is null then Verrmsg:='系统参数XT_BYQSBMBH_QZRMYY没有维护本院亲属所属的部门,请联系系统管理员!'; raise Ecustom; end if ; begin select trim(value0) into Vbyqslb from xt_xtcs00 where name00='SF_BYQSGHLB'; exception when others then Vbyqslb:=null; end; if Vbyqslb is null then Verrmsg:='系统参数SF_BYQSGHLB没有维护本院亲属挂号类别,请联系系统管理员!'; raise Ecustom; end if ; end if; select count(*) into Vcounter from bm_ygbm00 where brid00=Pbrid00; if Vcounter=0 and ls_SFBYZG='1' then Vcounter:=1; end if; if (Vcounter>0) then select count(*) into Vcounter from bm_ygbm00 where brid00=Pbrid00 and instr(','||trim(v_byqsbmbh)||',',','||bmbh00||',')>0; if (Vcounter>0) and (VSFQYQZRMYYBYQSGH='Y') then select count(*) into Vcounter from bm_ghlbb0 where ghdj00<=(select ghdj00 from bm_ghlbb0 where SYXTFL in ('0','1') and lbbh00=(select mrghlb from bm_ygbm00 where ygbh00=Pghys00)) and instr(','||Vbyqslb||',',','||lbbh00||',')>0; if Vcounter=0 then Verrmsg:='您没有本院亲属挂号的权限,请联系系统管理员!'; raise Ecustom; end if ; Vbyqsgh:=''; open C_byqsgh; loop fetch C_byqsgh into Vbyqsgh1; exit when C_byqsgh%notfound; Vbyqsgh:=Vbyqsgh||','||Vbyqsgh1; end loop; close C_byqsgh; --return regexp_replace(Vbyqsgh,',','',1,1); if YS_BYZGSFZXSZGH='Y' then --本院职工是否只显示职工号 return substr(trim(Vbyqsgh),2,length(trim(Vbyqsgh))); else LS_BYZGGHLB:=substr(trim(Vbyqsgh),2,length(trim(Vbyqsgh))); end if; else begin if YS_BYZGSFZXSZGH='Y' then --本院职工是否只显示职工号 return Vbyzglb; else LS_BYZGGHLB:=Vbyzglb; end if; end; end if; end if; elsif VSFQYQZRMYYBYQSGH='Y' then begin select trim(value0) into v_byqsbmbh from xt_xtcs00 where name00='XT_BYQSBMBH_QZRMYY'; exception when others then v_byqsbmbh:=null; end; if v_byqsbmbh is null then Verrmsg:='系统参数XT_BYQSBMBH_QZRMYY没有维护本院亲属所属的部门,请联系系统管理员!'; raise Ecustom; end if ; begin select trim(value0) into Vbyqslb from xt_xtcs00 where name00='SF_BYQSGHLB'; exception when others then Vbyqslb:=null; end; if Vbyqslb is null then Verrmsg:='系统参数SF_BYQSGHLB没有维护本院亲属挂号类别,请联系系统管理员!'; raise Ecustom; end if ; select count(*) into Vcounter from bm_ygbm00 where brid00=Pbrid00; if Vcounter=0 and ls_SFBYZG='1' then Vcounter:=1; end if; if (Vcounter>0) then select count(*) into Vcounter from bm_ygbm00 where brid00=Pbrid00 and instr(','||trim(v_byqsbmbh)||',',','||bmbh00||',')>0; if (Vcounter>0) then select count(*) into Vcounter from bm_ghlbb0 where SYXTFL in ('0','1') and ghdj00<=(select ghdj00 from bm_ghlbb0 where lbbh00=(select mrghlb from bm_ygbm00 where ygbh00=Pghys00)) and instr(','||Vbyqslb||',',','||lbbh00||',')>0; if Vcounter=0 then Verrmsg:='您没有本院亲属挂号的权限,请联系系统管理员!'; raise Ecustom; end if ; Vbyqsgh:=''; open C_byqsgh; loop fetch C_byqsgh into Vbyqsgh1; exit when C_byqsgh%notfound; Vbyqsgh:=Vbyqsgh||','||Vbyqsgh1; end loop; close C_byqsgh; --return regexp_replace(Vbyqsgh,',','',1,1); if YS_BYZGSFZXSZGH='Y' then --本院职工是否只显示职工号 return substr(trim(Vbyqsgh),2,length(trim(Vbyqsgh))); else LS_BYZGGHLB:=substr(trim(Vbyqsgh),2,length(trim(Vbyqsgh))); end if; end if; end if; end if; -- --限制部门的员工挂号 begin select nvl(xzghlb,' ') into vxzbmygghlb from bm_bmbm00 a,bm_ygbm00 b where a.bmbh00=b.bmbh00 and b.brid00=Pbrid00; exception when others then vxzbmygghlb:=' '; end; --bm_ybbrlb表限制了,该类病人所允许的挂号类别 begin select nvl(xzghlb,' ') into Vxzghlb from bm_brxxb0 a,bm_ybbrlb b,ic_ybbrlb c where a.fbbh00=c.fbbh00 and a.yblb00=c.yblb00 and a.ybbrlb=b.ybbrlb and a.fbbh00=b.fbbh00 and b.ybzxlb=c.ybzxlb and a.brid00=Pbrid00; exception when others then Vxzghlb:=' '; end; if ls_ybbrptghxz<>'N' then--医保普通号限制 SELECT COUNT(1) INTO V_COUNT10 FROM SF_BRXXB0 a, bm_ghlbb0 b WHERE b.SYXTFL in ('0','1') and a.ghlb00=b.lbbh00 and a.BRID00=Pbrid00 AND a.JZYS00=Pghys00 AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND a.THBZ00<>'0' and a.ghlb00<>-99999 and b.lbmc00 not like '%急诊%' and a.fbbh00='3'; end if; if ls_dtghxz='G' then--医保普通号限制每医生2个 SELECT COUNT(1) INTO V_COUNT10 FROM SF_BRXXB0 a, bm_ghlbb0 b WHERE b.SYXTFL in ('0','1') and a.ghlb00=b.lbbh00 and a.BRID00=Pbrid00 AND a.JZYS00=Pghys00 AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND a.THBZ00<>'0' and a.ghlb00<>-99999 and b.lbmc00 not like '%急诊%' and a.fbbh00='3'; if V_COUNT10=1 then V_COUNT10:=0; end if; end if; if ls_dtghxz<> 'N' THEN if ls_dtghxz='G' then SELECT COUNT(1) INTO V_COUNT1 FROM SF_BRXXB0 WHERE BRID00=Pbrid00 AND JZYS00=Pghys00 AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND THBZ00<>'0' and ghlb00<>-99999 and FBBH00='3'; else SELECT COUNT(1) INTO V_COUNT1 FROM SF_BRXXB0 WHERE BRID00=Pbrid00 AND JZYS00=Pghys00 AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND THBZ00<>'0' and ghlb00<>-99999; end if; if V_COUNT1>0 then if (ls_dtghxz='Y') or (ls_dtghxz='D') THEN -- select YBLB00,FBBH00 INTO ls_YBLB00,ls_FBBH00 FROM BM_BRXXB0 WHERE BRID00=Pbrid00; -- select ybzxlb INTO ls_YBZXLB from ic_ybbrlb where yblb00=ls_YBLB00 AND FBBH00=ls_FBBH00; select COUNT(1) INTO V_COUNT0 FROM BM_TSBZB0 WHERE YBZXLB=ls_YBZXLB; ELSIF ls_dtghxz='M' or ls_dtghxz='G' THEN V_COUNT0:=0; end if; if V_COUNT0=0 THEN--参数ls_dtghxz='M' 或((ls_dtghxz='Y') or (ls_dtghxz='D')非特殊病种--病人) if ls_dtghxz='D' THEN Verrmsg:='取挂号类别不能成功:该病人当天已经在这个医生处挂过号,不能重新挂号'; raise Ecustom; end if; if ((V_COUNT1=1) and (ls_dtghxz<>'G')) or (ls_dtghxz='G' and V_COUNT1<=2 and V_COUNT1>0 ) then SELECT COUNT(1) INTO V_COUNT0 FROM SF_BRXXB0 a, bm_ghlbb0 b WHERE a.ghlb00=b.lbbh00 and a.BRID00=Pbrid00 AND a.JZYS00=Pghys00 and b.SYXTFL in ('0','1') AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND a.THBZ00<>'0' and a.ghlb00<>-99999 and b.lbmc00 like '%急诊%'; /*if V_COUNT1=2 and ls_dtghxz='G' and V_COUNT0>0 then ls_SFYXPTH :='1'; */ if V_COUNT0>0 then ls_SFXYJZH:='0' ; else ls_SFXYJZH:='1' ; end if; if (V_COUNT0>0) or (ls_dtghxz='G' and V_COUNT1<2) then ls_SFYXPTH :='1'; else ls_SFYXPTH := '0'; end if; else if ls_dtghxz='G' then Verrmsg:='取挂号类别不能成功:该病人当天已经在这个医生处挂过两个普通号和一个急诊号,不能重新挂号'; else Verrmsg:='取挂号类别不能成功:该病人当天已经在这个医生处挂过一个普通号和一个急诊号,不能重新挂号'; end if; raise Ecustom; end if; end if; end if; end if; --限制某个医保中心病人一天一个医生的挂号次数,该参数描述的是具体的YBZXLB 不做限制为-1 默认为-1 if (trim(ls_XZMGYBZXGHCS)<>'-1') and (LS_YBZX00='-1') then --add and (LS_YBZX00='-1') by MZYS-20120310-001 如果YS_YSGHCSXZ设置成功(YS_XZMGYBZXGHCS设置无效) SELECT COUNT(1) INTO V_COUNT0 FROM SF_BRXXB0 c WHERE c.BRID00=Pbrid00 AND c.JZYS00=Pghys00 AND c.GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND c.THBZ00<>'0' and c.ghlb00<>-99999 and exists(select 1 from BM_BRXXB0 a,IC_YBBRLB b where a.FBBH00=b.FBBH00 and a.YBLB00=b.YBLB00 and a.BRID00=c.BRID00 -- and b.YBZXLB=ls_XZMGYBZXGHCS); by MZYS-20110527-001. and instr(';'||trim(ls_XZMGYBZXGHCS)||';',';'||b.YBZXLB||';')>0); if V_COUNT0>0 then Verrmsg:='取挂号类别不能成功:该病人在本医生处已经挂过号,不能重新挂号!'; raise Ecustom; end if; end if; --by MZYS-20120310-001 限制某个医保中心病人,一天只能看几个医生,一个医生只能挂几个号--参数:YS_YSGHCSXZ开启后(YS_XZMGYBZXGHCS设置无效) if (LS_YBZX00<>'-1') then select count(distinct jzys00) into V_COUNT0 from SF_BRXXB0 c WHERE c.BRID00=Pbrid00 AND c.JZYS00<>Pghys00 AND c.GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND c.THBZ00<>'0' and c.ghlb00<>-99999; -- Verrmsg:='('||to_char(V_COUNT0)||':'||to_number(LS_YSGS00)||')'; --raise Ecustom; if V_COUNT0>=to_number(LS_YSGS00) then Verrmsg:='本日就诊医生已超过('||LS_YSGS00||')个,不能重新挂号!'; raise Ecustom; else select COUNT(1) into V_COUNT0 from SF_BRXXB0 c WHERE c.BRID00=Pbrid00 AND c.JZYS00=Pghys00 and c.GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND c.THBZ00<>'0' and c.ghlb00<>-99999; -- Verrmsg:='('||to_char(V_COUNT0)||':'||to_number(LS_GHCS00)||')'; --raise Ecustom; if V_COUNT0>=to_number(LS_GHCS00) then Verrmsg:='该病人在本医生挂号次数已超过('||LS_GHCS00||')个,不能重新挂号!'; raise Ecustom; end if; end if; end if; --马尾医院,限制特殊病种病人挂号次数为,上一次收费出结算该病人的特殊病种数目+1; V_TSBZS0:=0; if ls_TSBZGHCSXZ='Y' THEN Select COUNT(*) into V_COUNT0 from BM_BRXXB0 WHERE BRID00=Pbrid00 and FBBH00='3'; if V_COUNT0>0 THEN SELECT NVL(MAX(MZID00),0) INTO VMZID00 FROM SF_JZB000 WHERE BRID00=Pbrid00; if VMZID00>0 THEN SELECT COUNT(DISTINCT TSBZBH) INTO V_TSBZS0 FROM XT_YBTSBZ WHERE GHID00=VMZID00; --V_COUNT0换成V_TSBZS0,因后面还要用 else V_TSBZS0:=0; end if; SELECT COUNT(1) INTO V_COUNT1 FROM SF_BRXXB0 WHERE BRID00=Pbrid00 AND JZYS00=Pghys00 AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND THBZ00<>'0' and ghlb00<>-99999; if V_COUNT1>V_TSBZS0 THEN Verrmsg:='取挂号类别不能成功:该病人上次的特殊病种数目为'||to_char(V_TSBZS0)||'次,所以当天最多只能挂'||to_char(V_TSBZS0+1)||'次号!'; raise Ecustom; end if; LS_GHCS00:=V_COUNT1; end if; elsif ls_TSBZGHCSXZ='M' THEN Select COUNT(*) into V_COUNT0 from BM_BRXXB0 WHERE BRID00=Pbrid00 and FBBH00='3'; if V_COUNT0>0 then select nvl(max(TSBZSL),0) INTO V_COUNT0 from ( SELECT GHID00,COUNT(DISTINCT TSBZBH) TSBZSL FROM XT_YBTSBZ WHERE BRID00=Pbrid00 and MZZYBZ='0' and CZRQ00 between to_char(add_months(sysdate,-12),'YYYYMMDD') and to_char(sysdate,'YYYYMMDD') group by GHID00); SELECT COUNT(1) INTO V_COUNT1 FROM SF_BRXXB0 WHERE BRID00=Pbrid00 AND JZYS00=Pghys00 AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND THBZ00<>'0' and ghlb00<>-99999; if V_COUNT1>V_COUNT0 THEN Verrmsg:='取挂号类别不能成功:该病人一年内记录中使用最多的特殊病种看病的数目为'||to_char(V_COUNT0)||'次,所以当天最多只能挂'||to_char(V_COUNT0+1)||'次号!'; raise Ecustom; end if; end if; end if; if (ls_KSGHZDCS>0) and (LS_YBZX00='-1') THEN --modify by MZYS-20120424-002 该病人医保中心类别不在YS_YSGHCSXZ中继续执行以下控制 SELECT COUNT(1) INTO V_COUNT0 FROM SF_BRXXB0 WHERE BRID00=Pbrid00 AND GHKS00=Pghks00 AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND THBZ00<>'0' and ghlb00<>-99999; if V_COUNT0>=ls_KSGHZDCS then Verrmsg:='取挂号类别不能成功:该病人当天已经在本科室挂过'||to_char(ls_KSGHZDCS)||'次号,不能重新挂号!'; raise Ecustom; end if; end if; end if; if ls_DTGHZCSXZ>0 then SELECT COUNT(1) INTO V_COUNT0 FROM SF_BRXXB0 a, bm_ghlbb0 b WHERE a.ghlb00=b.lbbh00 and a.BRID00=Pbrid00 and b.SYXTFL in ('0','1') AND GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') and b.LBMC00 like '普通%' AND a.THBZ00<>'0' and a.ghlb00<>-99999 and a.fbbh00='3'; if V_COUNT0>=ls_DTGHZCSXZ then Verrmsg:='该医保病人当天已挂过'||to_char(ls_DTGHZCSXZ)||'次普通号,不能再挂号!'; raise Ecustom; end if; end if; begin--取部门性质 select bmxz00 into Vbmxz00 from bm_bmbm00 where bmbh00=Pghks00; exception when others then return '-1'; end; --确定该部门是否允许挂免费的号 begin if Vbmxz00 ='5' then select substrb(Value0,1,1) into Vyxgmfh from xt_xtcs00 where name00='XT_SFYXGH'; else select substrb(Value0,1,1) into Vyxgmfh from xt_xtcs00 where name00='YS_YXGMFH'; end if; exception when others then Vyxgmfh:='N'; end; --福州市罗源县医院 (要求病人一天中在同一个医生处挂号允许挂免费号) if Vyxgmfh='M' then select count(*) into Vcounter from SF_BRXXB0 c where GHRQ00=to_char(SYSDATE,'YYYYMMDD') and c.BRID00=Pbrid00 AND c.JZYS00=Pghys00 AND c.GHRQ00= TO_CHAR(SYSDATE,'YYYYMMDD') AND c.THBZ00<>'0' and c.ghlb00<>-99999; if Vcounter>=1 then Vyxgmfh:='Y'; end if; end if; --是否根据医生的挂号级别来限制挂号等级,Y允许向下兼容M不允许向下兼容N不作限制 begin select substrb(value0,1,1) into Vghdjxz from xt_xtcs00 where name00='XT_GHDJXZ'; if Vghdjxz in ('Y','M') then select ghdj00 into Vxzghdj from bm_ghlbb0 where SYXTFL in ('0','1') and lbbh00=(select MRGHLB from bm_ygbm00 where YGBH00=Pghys00); end if; exception when others then Vghdjxz:='N'; Vxzghdj:=1000; end; if vxzbmygghlb<>' ' and Vxzghlb<>' ' then vzxzghlb:= vxzbmygghlb; end if; if vxzbmygghlb<>' ' and Vxzghlb=' ' then vzxzghlb:=vxzbmygghlb; end if; if vxzbmygghlb=' ' and Vxzghlb<>' ' then vzxzghlb:=Vxzghlb; end if; if vxzbmygghlb=' ' and Vxzghlb=' ' then vzxzghlb:=' '; end if; --是否根据科室挂号对应关系表来限制挂号 select count(*) into Vghksxz from BM_KSGHDY where BMBH00=Pghks00; for GH in C_ghlbbh loop --是否根据科室挂号对应关系表来限制挂号 Vcounter:=0; if Vghksxz>0 then select count(*) into Vcounter from BM_KSGHDY where BMBH00=Pghks00 and LBBH00=gh.lbbh00; end if; if Vghksxz=0 or (Vghksxz>0 and Vcounter>0) then --bm_ybbrlb表限制了,该类病人所允许的挂号类别 if (instrb(','||vzxzghlb||',',','||to_char(GH.lbbh00)||',')>0) or (vzxzghlb=' ') then if Vghlbbh='-1' then Vghlbbh:=to_char(GH.lbbh00); else Vghlbbh:=Vghlbbh||','||to_char(GH.lbbh00); end if; if Vghlbbh_pt='-1' and GH.JZBZ00=0 then Vghlbbh_pt:=to_char(GH.lbbh00); elsif GH.JZBZ00=0 then Vghlbbh_pt:=Vghlbbh_pt||','||to_char(GH.lbbh00); end if; end if; end if; end loop; --老年医院六点以后要求只挂急诊号 /*select count(*) into V_COUNT0 from xt_yyxx00 where YYQC00 like '%福建省老年医院%' ; if V_COUNT0>0 then * select TO_NUMBER(to_char(sysdate,'HH24')) INTO Vxs0000 FROM DUAL; if (Vxs0000>=18) OR (Vxs0000<=6) THEN For JZGH in C_jzghlbbh loop if instrb(','||Vghlbbh||',', ','||JZGH.LBBH00||',')>0 then Vghlbbh:= JZGH.LBBH00; end if; end loop; end if; */ Vjzlbbh:= ' '; For JZGH in C_jzghlbbh loop if instrb(','||Vghlbbh||',', ','||JZGH.LBBH00||',')>0 then Vjzlbbh:=Vjzlbbh||','||JZGH.LBBH00; end if; end loop; if Vjzlbbh<>' ' then Vjzlbbh:= SUBSTR(TRIM(Vjzlbbh),2,(LENGTH(Vjzlbbh)-1)); Vsfqtjz := 'N'; select to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS') , to_char(sysdate-1,'D') into Vdqrq00, Vdqsj00, Vdqxq00 from dual; select count(1) into V_COUNT0 from YS_JZSJB0 where rqks00<=Vdqrq00 and rqjz00>=Vdqrq00 and SFYX00='Y'; if V_COUNT0>0 THEN select SFQTJZ into Vsfqtjz from YS_JZSJB0 where rqks00<=Vdqrq00 and rqjz00>=Vdqrq00 and SFYX00='Y' and rownum=1; if Vsfqtjz='Y' THEN Vghlbbh:= Vjzlbbh; else select count(1) into V_COUNT0 from YS_JZSJB0 where rqks00<=Vdqrq00 and rqjz00>=Vdqrq00 and sjks00<=Vdqsj00 and sjjz00>=Vdqsj00 and SFYX00='Y'; if V_COUNT0>0 then Vghlbbh:= Vjzlbbh; end if; end if; else select count(1) into V_COUNT0 from YS_JZSJB0 where xqks00<=Vdqxq00 and xqjz00>=Vdqxq00 and SFYX00='Y'; if V_COUNT0>0 then select count(1) into V_COUNT0 from YS_JZSJB0 where xqks00<=Vdqxq00 and xqjz00>=Vdqxq00 and SFQTJZ='Y' and SFYX00='Y'; if V_COUNT0>0 THEN Vghlbbh:= Vjzlbbh; else select count(1) into V_COUNT0 from YS_JZSJB0 where xqks00<=Vdqxq00 and xqjz00>=Vdqxq00 and sjks00<=Vdqsj00 and sjjz00>=Vdqsj00 and SFYX00='Y'; if V_COUNT0>0 THEN Vghlbbh:= Vjzlbbh; end if; end if; end if; end if; end if; --end if; if ls_SFYXPTH='0' then Vghlbbh:= Vjzlbbh; if Vjzlbbh= ' ' THEN Verrmsg:='取挂号类别不能成功:该病人当天已经在这个医生处挂过一个普通号并且该医生没有有效的急诊号,不能重新挂号'; raise Ecustom; end if; end if; /*if ls_SFYXPTH='1' and ls_SFXYJZH='0' then Vghlbbh:= Vghlbbh_pt; if Vjzlbbh= ' ' THEN Verrmsg:='取挂号类别不能成功:该病人当天已经在这个医生处挂过一个急诊号,且没有有效的普通号,不能重新挂号'; raise Ecustom; end if; end if; */ if (V_COUNT10>0 ) then --如果普通号大于零,则返回的号别只能是急诊号 Vghlbbh:= Vjzlbbh; end if; --年老医保病人挂号时是否隐藏部分挂号类别 begin begin select trim(value0) into YS_NLYBBRGHSSFYCBFGHLB from XT_XTCS00 where NAME00='YS_NLYBBRGHSSFYCBFGHLB'; exception when others then YS_NLYBBRGHSSFYCBFGHLB:='N'; end; if YS_NLYBBRGHSSFYCBFGHLB<>'N' then begin begin select to_number(substr(YS_NLYBBRGHSSFYCBFGHLB,1,instr(YS_NLYBBRGHSSFYCBFGHLB,';')-1)) into YS_YBBRNL from dual; select ','||substr(YS_NLYBBRGHSSFYCBFGHLB,instr(YS_NLYBBRGHSSFYCBFGHLB,';')+1,length(trim(YS_NLYBBRGHSSFYCBFGHLB))-instr(YS_NLYBBRGHSSFYCBFGHLB,';'))||',' into YS_YCGHLBC from dual; exception when others then YS_NLYBBRGHSSFYCBFGHLB:='N'; end; if YS_NLYBBRGHSSFYCBFGHLB<>'N' then begin select count(*) into V_COUNT0 from BM_BRXXB0 where BRID00=Pbrid00 and FBBH00=3 and SF_YS_CSRQTONL(nvl(BRCSRQ,'20111027'))>=YS_YBBRNL; if (V_COUNT0>0) and (trim(YS_YCGHLBC) is not null) then Vghlbbh_clc:='-1'; --Vjzlbbh:=Vghlbbh; while length(Vghlbbh)>0 loop if instr(Vghlbbh,',')>0 then if instr(YS_YCGHLBC,','||substr(Vghlbbh,1,instr(Vghlbbh,',')-1)||',')=0 then if Vghlbbh_clc='-1' then Vghlbbh_clc:= substr(Vghlbbh,1,instr(Vghlbbh,',')-1); else Vghlbbh_clc:=Vghlbbh_clc||','||substr(Vghlbbh,1,instr(Vghlbbh,',')-1); end if; end if; Vghlbbh:=substr(Vghlbbh,instr(Vghlbbh,',')+1,length(Vghlbbh)-instr(Vghlbbh,',')); else if instr(YS_YCGHLBC,','||Vghlbbh||',')=0 then if Vghlbbh_clc='-1' then Vghlbbh_clc:= Vghlbbh; else Vghlbbh_clc:=Vghlbbh_clc||','||Vghlbbh; end if; end if; Vghlbbh:=''; end if; end loop; Vghlbbh:=Vghlbbh_clc; --Vghlbbh:=Vjzlbbh||' -- '||Vghlbbh; --测试比较用的 end if; end; end if; end; end if; --年老医保病人挂号时是否隐藏部分挂号类别 end; if LS_BYZGGHLB<>' ' then LS_BYZGGHLB:=','||LS_BYZGGHLB; end if; return Vghlbbh||LS_BYZGGHLB; exception when Ecustom then raise_application_error(-20010,Verrmsg); end; /