CREATE OR REPLACE PROCEDURE sp_sst_zzcfqh_ykt ( p_zdbh00 IN VARCHAR2, --终端编号 p_cardno IN VARCHAR2, --卡号 P_JYLSH0 IN Varchar2, --入参:自助机流水号(若无消费为空) P_YKTLSH IN Varchar2, --入参:民生通流水号(若无消费为空) P_YKTZFE IN Number, --入参:民生通支付额(若无消费为空) p_qytsxx OUT VARCHAR2, --取药提示信息 p_cftsxx OUT VARCHAR2, --处方数提示信息 p_errmsg OUT VARCHAR2, --错误信息,NULL表示正确 r_cur4 OUT pkg_fee_qry.my_cursor, --结果集游标 P_phzxh0 in number default 0 ) AS -- MODIFICATION HISTORY -- Person Date Comments -- qks 2013.03.04 "未找到未记账的处方和未发药的处方" 改为 如果已经取过号,那么提示所有的取号信息 --先对所有未记账处方一起扣费,之后再一起生成队列以及发药。 -- qks 2014.01.02 增加入参P_phzxh0 -- qks 2014.03.19 刷卡取药 改为 刷卡后等待取药 -- qks 2014.04.01 增加字段 YF_CFDL00.ZDBH00 -- zhangyc 2015.02.04 增加中药待煎金额 -- liwm 2018.09.07 增加中医辨证论治费 的处理,同ZZJJK-20180305-001非常相似 MZPY9-20180307-001 ls_num00 NUMBER (4); ls_num01 NUMBER (4); ls_num02 NUMBER (4); ls_zye000 NUMBER (12, 4); --病人总余额 ls_zfje00 NUMBER (12, 4); --自费金额 pzxcgbz NUMBER (12); ptsxx00 VARCHAR2 (400); pxxxx00 VARCHAR2 (400); ls_djh000 sf_brfy00.djh000%TYPE; --收费单据号 ls_kfpc00 yf_mzcf00.kfpc00%TYPE; --扣费批次号 ls_cardno ic_yhxx00.ickh00%TYPE; --IC卡号 ls_brid00 bm_brxxb0.brid00%TYPE; --病人ID ls_zt0000 ic_yhxx00.zt0000%TYPE; --IC卡状态 ls_ygbh00 bm_ygbm00.ygbh00%TYPE; --结算操作员 ls_ygxm00 bm_ygbm00.zwxm00%TYPE; --结算操作员 ls_czyks0 sf_brfy00.czyks0%TYPE; --操作员科室 mzhs_cyphyf xt_xtcs00.value0%TYPE; --进入诊结排号的药房 默认为0 若有药房 格式为 药房1,药房2.....n zzqh_dmcfsfjrpdjhxt xt_xtcs00.value0%TYPE; --如果病人有毒麻处方的话 提示到优先窗口 zzqh_drjrqhsjfgd xt_xtcs00.value0%TYPE; -- --当天处方进入排号队列的时间处理,00:00:00 取号时间在当天8点之前那么输入时间在前一天的处方也可进入排号队列, --<>00:00:00表示输入时间在当天并且只有处方的输入时间在参数设置时间点后的才进入排号队列 默认00:00:00 zzqh_jrpdjhcfblts xt_xtcs00.value0%TYPE; -- --参与排队的处方按处方输入日期控制,参数值天数内的处方参与排号,为0的话是当天的处方参与排号, --至于时间点的分割沿用参数ZZQH_DRJRQHSJFGD控制的做法 默认为0 mzpy_jzhsfzjfy xt_xtcs00.value0%TYPE; --配药自助取号记帐后是否直接发药 Y:是;N:不发药; 默认:N vsftslc VARCHAR2 (2); --是否特殊流程 '0'正常'1'特殊,如果定义了字典名称为"不进入排号队列药品目录",那么走特殊流程 vsftsyxck VARCHAR2 (2); --是否提示优先窗口 '0'不提示 '1'提示 vsftsdmck VARCHAR2 (2); --毒麻处方是否提示到毒麻窗口 ls_czrq00 VARCHAR2 (8); ls_dyrq00 VARCHAR2 (30); ls_cftsxx VARCHAR2 (400); --处方提示信息 ls_dmtsxx VARCHAR2 (400); --毒麻提示信息 ls_fdrcfts VARCHAR2 (400); --判断病人非当日处方 ls_yxckts VARCHAR2 (400); --优先取号提示 ls_dmckts VARCHAR2 (400); --毒麻取号提示 ls_wpsts VARCHAR2 (400); --未皮试提示 ls_pswtgts VARCHAR2 (400); --皮试未通过提示 ls_zjqyts VARCHAR2 (400); --直接刷卡取药提示 ls_zxh000 NUMBER (12); LS_CarNum number(5); --卡号位数 LS_ZFFSBH SF_BRJFB0.ZFFS00%type; LS_ZFFSMC BM_BRZFFS.ZFFSMC%type; LS_JFBZ00 varchar2(1); LS_ZPH000 SF_BRJFB0.ZPH000%type; LS_ZPKHYH SF_BRJFB0.ZPKHYH%type; LS_ZPDWMC SF_BRJFB0.ZPDWMC%type; LS_MZZHID bm_brxxb0.MZZHID%type; LS_YBKH00 BM_BRXXB0.YBKH00%type; LS_YBID00 BM_BRXXB0.YBID00%type; LS_BRXM00 bm_brxxb0.BRXM00%type; LS_ID0000 SF_YKTKFB.ID0000%type; LS_MKDM00 varchar2(10); LS_YYID00 XT_YYXX00.YYID00%type; LS_ZYDJJE number(12,2);--中医待煎金额 LS_ZYBZLZF number(12 ,2);--中医辨证论治费 LS_ZYBZYJDJH0 YJ_YW0000.YJDJH0%type;--中医辨证论治费的医技单据号 LS_ZYBZZLXMID varchar2(500); --中医辨证论治费的zlxmid LS_ZYBZYJKSBH YJ_YW0000.YJKSBH%type; LS_ZYBZKDYS00 YJ_YW0000.KDYS00%type; --VSQL2毒麻处方,VSQL3未皮试处方,sPSJG00皮试结果 CURSOR cur_wkfcf IS --未扣费处方游标 SELECT cflsh0, brid00, ghh000, thbz00, yfbmbh, ypdlbh, dlxh00, cfzt00, psjg00, pszt00 FROM vw_sst_qhxx00 c WHERE brid00 = ls_brid00 AND cfdgs0 <> '0' AND cfzt00 IN ('0'); CURSOR cur_ykfcf IS --已扣费处方游标 SELECT cflsh0, brid00, ghh000, thbz00, yfbmbh, ypdlbh, dlxh00, cfzt00, psjg00, pszt00 FROM vw_sst_qhxx00 c WHERE brid00 = ls_brid00 AND cfdgs0 <> '0' AND cfzt00 IN ('1'); CURSOR cur_wpdcf IS --毒麻和直接刷卡取药处方数 SELECT DISTINCT bmmc00 FROM (SELECT a.yfbmbh, b.bmmc00, DECODE (a.cfdgs0, '0', '0', '1') cfdgs0, COUNT (1) cfsl00, SUM (DECODE (a.kfpc00, NULL, DECODE (a.sfpdqh, 1, 1, 0), 0 ) ) tssl00 FROM yf_mzcf00 a, bm_bmbm00 b WHERE a.srrq00 >= TO_CHAR (SYSDATE - 1 / 3 - 1, 'YYYYMMDD') AND a.yfbmbh = b.bmbh00 AND a.brid00 = ls_brid00 AND a.sfksly = 'N' AND a.cfzje0 > 0 AND NOT EXISTS (SELECT 1 FROM yf_cfdl00 WHERE cflsh0 = a.cflsh0) AND sf_mz_pscfys (a.ghh000, a.cflsh0) NOT IN (-1, -2) AND ( a.cfzt00 IN ('0', '1') OR ( a.cfzt00 = '2' AND EXISTS ( SELECT 1 FROM yf_cfdl00 WHERE cflsh0 = a.cflsh0 AND zt0000 IN ('0', '1', '2')) ) ) GROUP BY a.yfbmbh, b.bmmc00, DECODE (a.cfdgs0, '0', '0', '1')); --非单日处方数 CURSOR cur_fdrcf IS SELECT c.yfbmbh, d.bmmc00, COUNT (1) cfsl00 FROM yf_mzcf00 c, bm_bmbm00 d WHERE c.yfbmbh = d.bmbh00 AND c.brid00 = ls_brid00 AND c.yfbmbh IN (2275, 2276, 2273, 2272) AND ( ( (c.cfzt00 = '0' OR c.cfzt00 = '1') AND c.srrq00 <= TO_CHAR (SYSDATE - 1 / 3 - 1, 'YYYYMMDD') AND c.srrq00 || c.srsj00 <= TO_CHAR (SYSDATE - 1 / 3 - 1, 'YYYYMMDDHH24:MI:SS') AND c.srrq00 >= TO_CHAR (SYSDATE + 1 - 2, 'YYYYMMDD') --YF_MZCFBLTS 处方保留天数2 AND c.bccfh0 IS NULL ) AND NOT EXISTS (SELECT 1 FROM yf_mzcf00 WHERE brid00 = c.brid00 AND bccfh0 = c.cflsh0) ) AND c.sfksly = 'N' GROUP BY c.yfbmbh, d.bmmc00; BEGIN ls_czrq00 := TO_CHAR (SYSDATE - 1 / 3 - 1, 'YYYYMMDD'); --to_char(sysdate,'YYYYMMDD'); ls_dyrq00 := TO_CHAR (SYSDATE, 'YYYY-MM-DD') || ' ' || TO_CHAR (SYSDATE, 'hh24:mi:ss'); vsftsyxck := '0'; vsftsdmck := '0'; ls_num00 := 0; ls_num01 := 0; ls_num02 := 0; ls_zye000 := 0; ls_zfje00 := 0; ls_cftsxx := ''; ls_dmtsxx := ''; ls_fdrcfts := ''; ls_yxckts := ''; ls_dmckts := ''; ls_wpsts := ''; ls_pswtgts := ''; ls_zjqyts := ''; LS_ZYDJJE :=0; LS_ZYBZLZF := 0; begin select to_char(wm_concat(BH0000)) into LS_ZYBZZLXMID from BM_TYZD00 where ZDMC00 = '中医辩证论治费' and YXBZ00 ='1'; exception when others then LS_ZYBZZLXMID := '-99999999'; end; /* select distinct a.BMBH00 from BM_CKBM00 a,BM_CKBM00 b,BM_CKDY00 c where a.FLAG00='2' and b.FLAG00='3' and a.ZT0000='0' and b.ZT0000='0' and a.CKBH00=c.SCKBH0 and b.CKBH00=c.DCKBH0 and a.BMBH00 in (2275,2276,2273,2272) --MZHS_CYPHYF */ BEGIN SELECT ygbh00, zwxm00 INTO ls_ygbh00, ls_ygxm00 FROM vw_sst_ygbmdyxx WHERE zzjbh0 = p_zdbh00; EXCEPTION WHEN NO_DATA_FOUND THEN p_errmsg := '终端编号:' || p_zdbh00 || '在本院SST_YGBHDY表中未对应收费员!'; RETURN; END; SELECT SF_SST_GETICKH00_YKT (p_cardno) INTO ls_cardno FROM DUAL; --读卡 BEGIN select a.MZZHID,a.BRXM00,a.BRID00,a.YBKH00, a.YBID00,b.ZT0000 into LS_MZZHID,LS_BRXM00,LS_BRID00,LS_YBKH00, LS_YBID00,ls_zt0000 from bm_brxxb0 a, IC_YHXX00 b where a.brid00=b.brid00 and ICKH00 =LS_CARDNO and ZT0000='1' and rownum=1; EXCEPTION WHEN NO_DATA_FOUND THEN p_errmsg := '卡号:' || ls_cardno || '在本院所对应的病人信息未找到!'; RETURN; END; BEGIN SELECT bmbh00 INTO ls_czyks0 FROM bm_ygbm00 WHERE ygbh00 = ls_ygbh00; EXCEPTION WHEN OTHERS THEN ls_czyks0 := 0; END; --进入诊结排号的药房 默认为0 若有药房 格式为 药房1,药房2.....n BEGIN SELECT value0 INTO mzhs_cyphyf FROM xt_xtcs00 WHERE name00 = 'MZHS_CYPHYF'; EXCEPTION WHEN OTHERS THEN mzhs_cyphyf := '0'; END; --如果病人有毒麻处方的话 提示到优先窗口 BEGIN SELECT value0 INTO zzqh_dmcfsfjrpdjhxt FROM xt_xtcs00 WHERE name00 = 'ZZQH_DMCFSFJRPDJHXT'; EXCEPTION WHEN OTHERS THEN zzqh_dmcfsfjrpdjhxt := 'N'; END; BEGIN SELECT value0 INTO zzqh_drjrqhsjfgd FROM xt_xtcs00 WHERE name00 = 'ZZQH_DRJRQHSJFGD'; EXCEPTION WHEN OTHERS THEN zzqh_drjrqhsjfgd := '00:00:00'; END; BEGIN SELECT value0 INTO zzqh_jrpdjhcfblts FROM xt_xtcs00 WHERE name00 = 'ZZQH_JRPDJHCFBLTS'; EXCEPTION WHEN OTHERS THEN zzqh_jrpdjhcfblts := '1'; END; BEGIN SELECT value0 INTO mzpy_jzhsfzjfy FROM xt_xtcs00 WHERE name00 = 'MZPY_JZHSFZJFY'; EXCEPTION WHEN OTHERS THEN mzpy_jzhsfzjfy := 'N'; END; begin select SF_SF_GETYYID00() YYID00 into LS_YYID00 from dual; exception when others then LS_YYID00:='0'; end; ---民生通支付--begin---- if (trim(P_JYLSH0) is not null) and (P_YKTZFE>0) then Select count(1) into LS_CarNum from SF_BRJFB0 where brid00=LS_BRID00 and ZPZH00=P_ZDBH00 and ZPH000=P_JYLSH0; if LS_CarNum>0 then P_ERRMSG:='充值交易流水号:'||P_JYLSH0||'已存在,无法充值!'; return; end if; select ZFFSBH,ZFFSMC into ls_ZFFSBH,ls_ZFFSMC from BM_BRZFFS where ZFFSBH=18; select SQ_SF_BRJFB0_DJH000.nextval into LS_DJH000 from dual; LS_JFBZ00:='0';--'0'交 '1':退 LS_ZPH000:=P_JYLSH0; LS_ZPKHYH:=P_YKTLSH;--自助机流水号 LS_MKDM00:='4'; LS_ZPDWMC:='民生通自助机消费支付'; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPH000,ZPDWMC,ZPZH00,ZPKHYH,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,YHKH00, YYID00,PLBH00) values(LS_DJH000,LS_BRID00,1,abs(P_YKTZFE),LS_ZFFSBH,LS_ZFFSMC,LS_ZPH000,LS_ZPDWMC,P_ZDBH00,LS_ZPKHYH,0, to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),ls_YGBH00,ls_YGXM00,0,LS_JFBZ00,0,0,1,0,ls_CZYKS0,'', ls_YYID00,7); ---2:修改病人账户金额 Update SF_BRZHXX set XJYE00 =nvl(XJYE00,0)+abs(P_YKTZFE), --病人现金余额 ZYE000 = nvl(ZYE000,0)+abs(P_YKTZFE), --账户实际总余额 YKZYE0 = nvl(ZYE000,0)+abs(P_YKTZFE) --预扣总余额 where brid00 = LS_BRID00 and MZZHID=LS_MZZHID; --插入民生通交易信息 if trim(P_JYLSH0) is not null then LS_ID0000:=P_JYLSH0; else select SQ_SF_YKTKFB_ID0000.nextval into LS_ID0000 from dual; end if; insert into SF_YKTKFB( ID0000,--ID CZRQ00,--操作日期 CZSJ00,--操作时间 CZY000,--操作员 ICKH00,--IC卡号 BRID00,--病人ID BRXM00,--病人姓名 YBKH00,--医保卡号 YBID00,--医保卡号 KFRQ00,--扣费日期 KFSJ00,--扣费时间 ZFFS00, --支付方式 ZFFSMC,--支付方式名称 JYJE00,--金额 JFBZ00,--交费备注 '0'交 1:退 KFZT00, --扣费状态 1:扣费成功 2:院内交费成功 3:冲销成功 ZDBH00,--终端编号 收费处0 MKDM00,--模块代码 MKDMMC,--模块代码名称 DJH000,--单据号 JZDH00,--结账单号 JYLSH0,--交易流水号 YKTLSH,--一卡通流水号 ZZJLSH,--自助机流水号 YJYLSH,--一交易流水号 YKTYE0, --一卡通余额 JYLX00 )values( LS_ID0000,--ID to_char(sysdate,'YYYYMMDD'),--操作日期 to_char(sysdate,'HH24:MI:SS'),--操作时间 ls_YGBH00,--操作员 LS_CARDNO,--IC卡号 LS_BRID00,--病人ID LS_BRXM00,--病人姓名 LS_YBKH00,--医保卡号 LS_YBID00,--医保卡号 to_char(sysdate,'YYYYMMDD'),--扣费日期 to_char(sysdate,'HH24:MI:SS'),--扣费时间 18, --支付方式 '民生通支付',--支付方式名称 abs(P_YKTZFE),--金额 LS_JFBZ00,--交费备注 '0'交 1:退 '2', --状态0:其它数据 2:业务数据 4:无效数据 5:自助机民生通充值 P_ZDBH00,--终端编号 收费处0 LS_MKDM00,--模块代码 LS_ZPDWMC,--模块代码名称 LS_DJH000,--单据号 0,--结账单号 P_JYLSH0,--交易流水号 P_YKTLSH,--一卡通流水号 P_JYLSH0,--自助机流水号 '', --原交易流水号 0, '03' ); update SF_BRJFB0 set ZPH000=LS_ID0000,ZPKHYH=P_YKTLSH where BRID00=LS_BRID00 and DJH000=LS_DJH000; end if; ---民生通支付--end---- SELECT COUNT (*) sl INTO ls_num00 FROM bm_tyzd00 WHERE zdmc00 = '不进入排号队列药品目录' AND yxbz00 = '1' AND dj0000 > 0; IF ls_num00 > 0 THEN vsftslc := '1'; ELSE vsftslc := '0'; END IF; ---取病人总余额--- SELECT sf_sf_getkyje (ls_brid00) INTO ls_zye000 FROM DUAL; --取自费金额-- SELECT SUM (b.zfje00) INTO LS_ZFJE00 FROM yf_mzcfmx b, yf_mzcf00 c WHERE c.brid00 = LS_BRID00 AND c.yfbmbh IN (2275, 2276, 2273, 2272,73,74,92) AND b.cflsh0 = c.cflsh0 AND c.cfzt00 = '0' AND c.bccfh0 is null AND c.srrq00 >=to_char(sysdate - 1 / 3 - 1, 'YYYYMMDD') AND NVL (c.cfdgs0, '5') <>'0' --ZZQH_DMCFSFJRPDJHXT=N 毒麻处方不进入排号队列 Y进入 N不进入 默认为Y AND c.sfksly = 'N' AND sf_mz_pscfys (c.ghh000, c.cflsh0) not in (-1, -2) AND c.pszt00 <> '1' AND c.pszt00 <> '2'; --中药待煎金额--begin-- begin select sum(b.ZFJE00)into LS_ZYDJJE from YJ_YW0000 a,YJ_YWJJ00 b where a.YJDJH0=b.YJDJH0 and a.BRID00=LS_BRID00 and a.MZZYBZ='0' and a.FJDJBZ = '7' and a.SFDJH0=0 and a.XMZT00 not in ('5','6') and a.YZCFID in ( select C.CFLSH0 from yf_mzcf00 c where c.brid00 = LS_BRID00 and c.cfzt00 = '0' and c.bccfh0 is null and c.srrq00 >= to_char(sysdate - 1 / 3 - 1, 'YYYYMMDD') and c.sfksly = 'N' and c.pszt00 <> '1' and c.pszt00 <> '2' and c.ZYDJS0>0 ); exception when others then LS_ZYDJJE:=0; end; LS_ZFJE00:=nvl(LS_ZFJE00,0)+nvl(LS_ZYDJJE,0); --中药待煎金额--end-- --中医辨证论治费 begin LS_ZYBZYJDJH0 := -1; if LS_ZYBZZLXMID <> '-99999999' then select b.ZFJE00,a.YJDJH0, a.YJKSBH,a.KDYS00 into LS_ZYBZLZF,LS_ZYBZYJDJH0,LS_ZYBZYJKSBH,LS_ZYBZKDYS00 from YJ_YW0000 a,YJ_YWJJ00 b where a.YJDJH0=b.YJDJH0 and a.BRID00+0=LS_BRID00 and a.MZZYBZ='0' and a.ZLXMID in (select to_number(BH0000) from BM_TYZD00 where ZDMC00 = '中医辩证论治费' and YXBZ00 ='1' and trim(BH0000) is not null ) and a.SFDJH0+0=0 --优化查询速度 and a.ZYHGHH in (select GHH000 from SF_BRXXB0 where BRID00=LS_BRID00 and GHRQ00>=to_char(SYSDATE - 15, 'YYYYMMDD') ) and a.XMZT00 not in ('5','6'); end if; exception when others then LS_ZYBZLZF:=0; LS_ZYBZYJDJH0 := -1; end; --中医辨证论治费end LS_ZFJE00:=nvl(LS_ZFJE00,0)+nvl(LS_ZYBZLZF, 0); select COUNT (1)into ls_num00 from vw_sst_qhxx00 c where brid00 = ls_brid00 AND cfdgs0 <> '0' AND cfzt00 IN ('0', '1'); --1:执行未扣费--begin-- IF NVL (ls_num00, 0) <= 0 THEN --p_errmsg := '未找到未记账的处方和未发药的处方!'; --如果已经取过号,那么提示所有的取号信息 select sf_zzqh_getqhxx(ls_brid00,'73,2275,2273,2272') into p_errmsg from dual; if p_errmsg = '-1' then p_errmsg := '未找到未记账的处方和未发药的处方!'; end if; RETURN; ELSE IF NVL (ls_zfje00, 0) <= NVL (ls_zye000, 0) THEN SELECT sq_yf_mzcf00_kfpc00.NEXTVAL INTO ls_kfpc00 FROM DUAL; FOR rec_kf IN cur_wkfcf LOOP IF (rec_kf.psjg00 NOT IN (-1, -2)) THEN IF (rec_kf.cfzt00 = '0') THEN --未扣费执行扣费--- sp_sf_jscfjg (rec_kf.cflsh0, ls_ygbh00, ls_czyks0, 'N', pzxcgbz, ptsxx00, pxxxx00 ); IF TRIM (pxxxx00) IS NOT NULL THEN p_errmsg := '修正处方明细和主表金额错误:' || pxxxx00; RETURN; END IF; SELECT sq_sf_brjfb0_djh000.NEXTVAL INTO ls_djh000 FROM DUAL; sp_sf_yfcf00 (rec_kf.cflsh0, ls_djh000, 0, 0, 0, 'N', ls_ygbh00, ls_czyks0, ptsxx00, pxxxx00, 0, ls_kfpc00 ); IF TRIM (pxxxx00) IS NOT NULL THEN p_errmsg := '处方记账错误:' || pxxxx00; RETURN; END IF; END IF; END IF; END LOOP; --中医辨证论治费 if LS_ZYBZYJDJH0 <> -1 then SP_YJ_YWSF00_NEW(LS_ZYBZYJDJH0, LS_ZYBZYJKSBH, LS_ZYBZKDYS00, null, 'N',Pzxcgbz,Ptsxx00,Pxxxx00); end if; FOR rec_kf IN cur_ykfcf LOOP IF (rec_kf.psjg00 NOT IN (-1, -2)) THEN SELECT COUNT (1) INTO ls_num00 FROM yf_cfdl00 WHERE cflsh0 = rec_kf.cflsh0 AND brid00 = ls_brid00; IF (ls_num00 <= 0) THEN sp_py_scphdl (rec_kf.cflsh0, 0, 0, 0, ptsxx00, pxxxx00, ls_ygbh00, ls_czyks0 ); IF TRIM (pxxxx00) IS NOT NULL THEN p_errmsg := '生产处方队列错误:' || pxxxx00; RETURN; END IF; END IF; SELECT COUNT (1) INTO ls_num00 FROM yf_cfdl00 WHERE cflsh0 = rec_kf.cflsh0 AND brid00 = ls_brid00; IF ls_num00 > 0 THEN sp_yf_mzcffy (rec_kf.cflsh0, ls_ygbh00, ls_ygbh00, '1', ls_ygbh00, ls_czyks0, 'N', pzxcgbz, ptsxx00, pxxxx00 ); IF TRIM (pxxxx00) IS NOT NULL THEN p_errmsg := '处方发药错误:' || pxxxx00; RETURN; END IF; END IF; END IF; END LOOP; --整理处方队列表数据-- ELSE p_errmsg := '院内账户余额不足,还需交:' ||trim(TO_CHAR (ABS (NVL (ls_zfje00, 0) - NVL (ls_zye000, 0)),'9999990.00')) || '元'; RETURN; END IF; END IF; --1:执行未扣费--end-- --2:未皮试提示-- SELECT COUNT (1) INTO ls_num00 FROM vw_sst_qhxx00 c WHERE brid00 = ls_brid00 AND cfdgs0 <> '0' AND psjg00 IN (-2); IF ls_num00 > 0 THEN ls_wpsts := '您需要先到急诊科做皮试,皮试通过后再到自助机取号!'; END IF; --3:皮试未通过提示-- SELECT COUNT (1) INTO ls_num00 FROM vw_sst_qhxx00 c WHERE brid00 = ls_brid00 AND cfdgs0 <> '0' AND psjg00 IN (-1); IF ls_num00 > 0 THEN ls_pswtgts := '您皮试未通过!'; END IF; --判断别个药房是否有处方--请到【 ' + tmpclc2 + '】刷卡取药! FOR rec_cf IN cur_wpdcf LOOP ls_zjqyts := ls_zjqyts || ' ' || rec_cf.bmmc00; END LOOP; IF ls_zjqyts IS NOT NULL THEN --ls_zjqyts := '请携带就诊卡到【' || ls_zjqyts || '】刷卡取药!'; ls_zjqyts := '请携带就诊卡到【' || ls_zjqyts || '】刷卡后等待取药!'; END IF; --4:判断别个药房是否有处方--请到【 ' + tmpclc2 + '】刷卡取药! /* for REC_CF in CUR_WPDCF loop if REC_CF.TSSL00>0 then if REC_CF.CFDGS0='0' then --毒麻 LS_DMTSXX:=LS_DMTSXX||' '||REC_CF.BMMC00|| ' '||REC_CF.CFSL00||'张毒麻处方'; else LS_CFTSXX:=LS_CFTSXX||' '||REC_CF.BMMC00|| ' '||REC_CF.CFSL00||'张处方'; end if; end if; end loop; */ -- P_ERRMSG:=LS_CFTSXX; --5:判断病人非当日处方-- 有处方未进入排号队列,请到【 ' + tmpclc2 + '】刷卡取药! FOR rec_drcf IN cur_fdrcf LOOP ls_fdrcfts := ls_fdrcfts || ' ' || rec_drcf.bmmc00 || ' ' || rec_drcf.cfsl00 || '张处方'; END LOOP; --BM_TYZD00 字典名称设置为 请到优先窗口刷卡取药!-- SELECT COUNT (*) sl INTO ls_num01 FROM bm_tyzd00 WHERE zdmc00 = '不进入排号队列药品目录' AND yxbz00 = '1' AND dj0000 > 0; SELECT COUNT (1) INTO ls_num02 FROM vw_sst_qhxx00 c WHERE brid00 = ls_brid00; IF (ls_num01 > 0) AND (ls_num02 > 0) THEN SELECT COUNT (1) INTO ls_num01 FROM vw_sst_qhxx00 c WHERE brid00 = ls_brid00 AND cfdgs0 <> '0' AND EXISTS ( SELECT 1 FROM yf_mzcfmx s WHERE s.cflsh0 = c.cflsh0 AND NOT EXISTS ( SELECT 1 FROM bm_tyzd00 WHERE zdmc00 = '不进入排号队列药品目录' AND yxbz00 = '1' AND dj0000 = s.ypnm00)); IF ls_num01 > 0 THEN ls_yxckts := '请到优先窗口刷卡取药:处方数' || TO_CHAR (ls_num01) || '张'; END IF; END IF; --请到毒麻窗口刷卡取药! SELECT COUNT (1) INTO ls_num02 FROM vw_sst_qhxx00 c WHERE brid00 = ls_brid00 AND c.cfdgs0 = '0'; --用来判断是否有毒麻处方; IF ls_num02 > 0 THEN ls_dmckts := '请到毒麻窗口刷卡取药:处方数' || TO_CHAR (ls_num02) || '张'; END IF; p_qytsxx := TRIM ( ls_zjqyts || ' ' || ls_wpsts || ' ' || ls_pswtgts || ' ' || ls_yxckts || ' ' || ls_dmckts ); -- P_CFTSXX:=LS_CFTSXX||chr(13)||LS_DMTSXX||chr(13)||LS_FDRCFTS; IF ls_cftsxx IS NOT NULL THEN p_cftsxx := p_cftsxx || ',' || ls_cftsxx; END IF; IF ls_dmtsxx IS NOT NULL THEN p_cftsxx := p_cftsxx || ',' || ls_dmtsxx; END IF; IF ls_fdrcfts IS NOT NULL THEN p_cftsxx := p_cftsxx || ',' || ls_fdrcfts; END IF; --整理数据-- if nvl(P_phzxh0,0)>0 then ls_zxh000 := P_phzxh0; else SELECT sq_yf_cfdl00_phzxh0.NEXTVAL INTO ls_zxh000 FROM DUAL; end if; UPDATE yf_cfdl00 a SET phbz00 = '5', phzxh0 = ls_zxh000, phrq00 = TO_CHAR (SYSDATE, 'YYYYMMDD'), phdycs = 1, zdbh00 = p_zdbh00 WHERE phbz00 = '0' AND brid00 = ls_brid00 AND a.cflsh0 IN ( SELECT cflsh0 FROM yf_mzcf00 WHERE brid00 = ls_brid00 AND srrq00 >= ls_czrq00 AND cfzt00 IN ('0', '1', '2')); SP_TransLog(sysdate,'SP_SST_ZZCFQH_YKT',4200,null,ls_dyrq00||','||p_cardno); OPEN r_cur4 FOR SELECT qytm00, yfmc00, qyck00, qylsh0, xming0, ddrs00, pydlbh, xq0000, nl0000, xb0000, ls_dyrq00 AS dyrq00, ls_dyrq00 AS dysj00, 'Y' AS sfdyxx, 'Y' AS sftsxx, '' AS bycc00, sf_sst_qyxx00 (pyckbh, qylsh0, brid00, ls_zxh000) cfdyxx, 0 cfxms0 FROM (SELECT DISTINCT brid00, pyckbh, qytm00 AS qytm00, yfmc00, ckmc00 AS qyck00, fydlxh AS qylsh0, MAX (brxm00) AS xming0, MAX (ddrs00) ddrs00, MAX (pydlbh) pydlbh, week00 AS xq0000, MAX (nl0000) nl0000, MAX (xb0000) xb0000 FROM vw_sst_zzcfqh a -- from VW_PY_ZZQHPRINT a WHERE brid00 = ls_brid00 AND zxh000 = ls_zxh000 GROUP BY brid00, pyckbh, qytm00, yfmc00, ckmc00, fydlxh, week00); EXCEPTION WHEN NO_DATA_FOUND THEN p_errmsg := '发生未知错误' || SQLERRM; WHEN OTHERS THEN p_errmsg := '发生未知错误' || SQLERRM; END;