CREATE OR REPLACE PROCEDURE SP_SF_BRFB00_EDIT00 ( ad_BRID00 in number, --病人ID as_FBMC00 in char, --病人费别名称 as_YBKH00 in char, --病人医保卡号 as_YBID00 in char, --病人医疗保险号(医保ID) as_YBLB00 in char, --病人所属医保中心名称 as_BRZTQK in char, --病人职退情况,两会及保健的医保病人类别取的是该值 as_TSBZ00 in char default '1', -- ad_CZY000 in number, --操作员内部号 as_CZYXM0 in char, --操作员姓名 as_YHMSG0 out varchar, --存储过程提示的错误信息 as_SYSMSG out varchar, --系统提示的错误信息 as_XZQH00 in varchar2 default '', --行政区号 as_ICZTMC in varchar2 default '', --医保状态名称 as_SFJZFP in varchar2 default '', --是否精准扶贫 ad_CZYKS0 in number default 0 --操作员登入科室 ) -- MODIFICATION HISTORY -- Person Date Comments -- qks 2012.12.21 不运行过程SP_SF_FBEDIT_FYGX00;公费跟自费转换之前,同时把未记账的医技单和处方单自动作废(未改)。 -- zhanghr 2013.04.19 整改 -- qks 2014.02.21 保留BM_BRXXB0.YBKH00,YBID00 -- qks 2014.08.11 未收费的单据重新计价:"附加项目" 没有对应收费项目,不进行重新计价 (目前公费还是有问题 ) -- jlg 2016.11.12 增加参数处理医保转自费时BM_BRXXB0.YBKH00,YBID00是否保留问题 MZSF9-20161112-002 -- qks 2016.12.16 自费转新农合费,要求取到下面区、县新农合中心:改为入参as_XZQH00有值情况下,改用IC_YBBRLB.XZQH00取值。for MZSF9-20161216-001 -- jlg 2017.10.16 增加同费别同身份证号只能建一个档案信息的限制 MZSF9-20170718-001 -- qks 2017.11.13 修改“农合病人重新取值”判断以及查询条件; for MZSF9-20171113-002 -- qks 2017.12.08 自费转新农合费,当有传入as_XZQH00,还是没有取到下面区、县新农合中心; for MZSF9-20171208-001 -- jlg 2018.04.24 增加as_ICZTMC传入参数 MZSF9-20180424-002 -- liwm 2018.05.08 增加as_SFJZFP for MZSF9-20180503-002 -- liwm 2018.05.14 非医保病人置0,可以不改,但是还是统一处理 for MZSF9-20180512-002 -- liwm 2018.06.07 门诊收费存储过程统一添加调用参数日志 for MZSF9-20180604-003 -- jlg 2018.07.23 增加参数 SF_TFBTSFZHSFZYXJDJL =2的处理 MZSF9-20180713-005 -- liwm 2018.08.15 医院要求记账病人在产生费用的情况下不用结算或者退费也可以转换费别 MZSF9-20180811-001 -- liwm 2018.10.09 病人费别修改调用过程SP_SF_BRFB00_EDIT00修改 yf_mzcfmx 表zfbl00记录时条件未完全用到索引,造成前台卡死,请优化。 MZSF9-20181009-002 -- pwt 2018.11.29 新增插入盉M_BRCZRZ.CZYKS0字段 MZSF9-20181127-005 -- pwt 2019.03.06 插入过程SP_SF_FYMX00_INSERT的ZFBL00应为当前比例 for MZSF9-20190228-001 -- jlg 2020.01.06 增加 SF_TFBTSFZHSFZYXJDJL 关于自费病人的处理 MZSF9-20191231-002 -- linzetao 2020.06.23 启用参数SF_FBZHFYSFZH, 根据参数设定进行相关处理 MZSF9-20200623-001 -- linzetao 2020.08.11 将费用处理部分单独改成存储过程SP_SF_BRFB00_EDIT00_GZFY00 MZSF9-20200622-002 -- linzetao 2021.01.11 处理参数SF_TFBTSFZHSFZYXJDJL时也需考虑IC_YHXX00.ZT0000=2的病人 MZSF9-20210104-004 -- xuchenjun 2021.05.20 控制院内自费卡转医保费别参数和员工权限 as ls_FBBH00 BM_BRFBB0.FBBH00%type; --病人费别编号 ls_FBBH01 BM_BRFBB0.FBBH00%type; --病人转换前的费别编号 ls_YBLB00 IC_YBBRLB.YBLB00%type; --病人所属医保中心名称对应的编号 ls_YBBRLB BM_YBBRLB.YBBRLB%type; --医保病人类别 ls_YBZXLB BM_YBBRLB.YBZXLB%type; --医保病人类别 ls_GHID00 SF_BRXXB0.GHID00%type; --门诊病人挂号ID ls_tsjk00 bm_ybbrlb.tsjk00%type; ls_oldybm IC_YBBRLB.ybmc00%type; ls_NEWYBM IC_YBBRLB.ybmc00%type; ls_zyzt00 BM_BRXXB0.ZYZT00%type; ls_COUNT0 number(5); ls_yyid00 xt_yyxx00.yyid00%type; ls_CZRQ00 char(8); ls_CZSJ00 char(8); Vzxcgbz number(2); ls_CZYKSH SF_BRFY00.CZYKS0%type; LS_GHH000 SF_BRXXB0.GHH000%type; ls_xm0000 sf_brxxb0.xm0000%type; ls_jzje00 sf_FYMX00.JZJE00%type; LS_JZJE01 sf_FYMX00.JZJE00%type; LS_ZFJE00 sf_FYMX00.ZFJE00%type; LS_ZFY000 sf_FYMX00.HJJE00%type; LS_JFLBID SF_BRZHXX.JFLBID%type; ls_DJH000 SF_BRFY00.DJH000%type; ls_ZXJ000 SF_BRJFB0.JFJE00%type; ls_ZZZ000 SF_BRJFB0.JFJE00%type; ls_FBZHFYSFZH XT_XTCS00.VALUE0%type; Vsfzhfy char(1); Vsfblkh XT_XTCS00.VALUE0%type; ls_XZXTZH XT_XTCS00.VALUE0%type; --门诊同费别同身份证号是否只允许一个有效建档记录 ls_BRZJLX BM_BRXXB0.BRZJLX%type; ls_BRZJBH BM_BRXXB0.BRZJBH%type; ls_ICKLB0 IC_YHXX00.ICKLB0%type; --ICK类别 Vfzxmc0 XT_XTCS00.VALUE0%type; Vxxxlog varchar2(2000); Vzfbl00 number(5,2); Vzfje00 number; Vjzje00 SF_FYMX00.JZJE00%type; Pmxid00 number; VICKLB0 ic_yhxx00.ICKLB0%type;-- 2021-05-20 17:23:27 xcj begin Vxxxlog := substr('AD_BRID00:'||nvl(to_char(AD_BRID00), 'null')||','||'AS_FBMC00:'||nvl(to_char(AS_FBMC00), 'null')||','||'AS_YBKH00:'||nvl(to_char(AS_YBKH00), 'null')||','||'AS_YBID00:'||nvl(to_char(AS_YBID00), 'null')||','||'AS_YBLB00:'||nvl(to_char(AS_YBLB00), 'null')||','||'AS_BRZTQK:'||nvl(to_char(AS_BRZTQK), 'null')||','||'AS_TSBZ00:'||nvl(to_char(AS_TSBZ00), 'null')||','||'AD_CZY000:'||nvl(to_char(AD_CZY000), 'null')||','||'AS_CZYXM0:'||nvl(to_char(AS_CZYXM0), 'null')||','||'AS_XZQH00:'||nvl(to_char(AS_XZQH00), 'null')||','||'AS_ICZTMC:'||nvl(to_char(AS_ICZTMC), 'null')||','||'AS_SFJZFP:'||nvl(to_char(AS_SFJZFP), 'null'),1,2000); SP_TransLog(sysdate,'SP_SF_BRFB00_EDIT00',null,null,Vxxxlog); ls_CZRQ00 := to_char(sysdate,'YYYYMMDD'); ls_CZSJ00 := to_char(sysdate,'HH24:MI:SS'); --费别发生变化是否费用也要变化,为Y时只有自费转公费有变化,为M时自费跟公费互转都有变化,默认为M select nvl(max(value0),'M') into ls_FBZHFYSFZH from xt_xtcs00 where name00='SF_FBZHFYSFZH'; --门诊费别转换,医保转自费时BM_BRXXB0的YBKH0,YBID00是否保留原值,Y是N否,默认N select nvl(max(trim(value0)),'N') into Vsfblkh from XT_XTCS00 where name00='SF_YBZZFSFBLYBKHYBID'; --新农合病人修改费别时,是否从对应表BM_DQFZX0中取分中心名称 select nvl(max(trim(value0)),'N') into Vfzxmc0 from XT_XTCS00 where name00='ZY_XNHFZXMC'; select nvl(max(GHID00),0) into ls_GHID00 from SF_BRXXB0 where BRID00 = ad_BRID00; select nvl(max(GHH000),0) into LS_GHH000 from SF_BRXXB0 where GHID00 = ls_GHID00; select A.BMBH00 into ls_CZYKSH from BM_BMBM00 A,BM_YGBM00 B where B.BMBH00=A.BMBH00 and b.YGBH00=ad_CZY000 and rownum=1; select a.BRXM00,a.FBBH00,a.YBLB00,a.ZYZT00 into ls_XM0000,ls_FBBH01,ls_YBLB00,ls_ZYZT00 from BM_BRXXB0 A,BM_BRFBB0 B where A.FBBH00 = B.FBBH00 and A.BRID00=ad_BRID00; select A.YBMC00 into ls_OLDYBM from IC_YBBRLB A,BM_BRFBB0 B where A.FBBH00 = B.FBBH00 and A.YBLB00 = ls_YBLB00 and a.FBBH00=ls_FBBH01; if ls_ZYZT00 in ('1','2') then as_YHMSG0:='病人在院,请用住院收费系统修改病人费别!'; as_SYSMSG:=SQLERRM||'病人在院,请用住院收费系统修改费别!'; rollback; return; end if; ----2021-05-20 17:24:48 控制院内自费卡转医保费别参数和员工权限 select ICKLB0 into VICKLB0 from ic_yhxx00 where brid00=ad_BRID00 and ZT0000='1'; select count(*) into ls_COUNT0 from bm_tyzd00 where ZDMC00 = '门诊院内自费卡转换医保费别员工字典' and YXBZ00='1' and MC0000='是否启用功能' and BH0000='Y'; --是否开启 if((ls_COUNT0>0) and VICKLB0='0') then ---员工是否有权限 select count(*) into ls_COUNT0 from bm_tyzd00 where ZDMC00 ='门诊院内自费卡转换医保费别员工字典' and YXBZ00='1' and MC0000<>'是否启用功能' and BH0000=to_char(ad_CZY000); if (ls_COUNT0=0) then as_YHMSG0:='工号内码:'||ad_CZY000||';该工号权限,不允许进行院内卡转医保费别'; as_SYSMSG:=SQLERRM||'工号内码:'||ad_CZY000||';该工号权限,不允许进行院内卡转医保费别'; rollback; return; end if; end if; LS_JFLBID := 0; ls_YBLB00 := '0'; --若是非医保病人,默认为'0' ls_YBBRLB := '0'; select FBBH00 into ls_FBBH00 from BM_BRFBB0 where FBMC00 = as_FBMC00; --农合病人重新取值(参数ZY_XNHFZXMC<>Y) if nvl(trim(as_XZQH00),' ')<>' ' and as_BRZTQK='农民' and Vfzxmc0<>'Y' then --select count(1) into ls_COUNT0 from IC_YBBRLB where SFXNH0 in ('1','4') and SFYX00='1' and YBLB00=as_YBLB00; select count(1) into ls_COUNT0 from IC_YBBRLB where SFXNH0 in ('1','4') and SFYX00='1' and YBMC00=as_YBLB00; if ls_COUNT0>0 then begin select count(1) into ls_COUNT0 from IC_YBBRLB where SFXNH0 in ('1','4') and SFYX00='1' and XZQH00 = trim(as_XZQH00); if ls_COUNT0=1 then select A.YBLB00,A.YBZXLB,A.YBMC00 into ls_YBLB00,ls_YBZXLB,ls_NEWYBM from IC_YBBRLB A where SFXNH0 in ('1','4') and SFYX00='1' and trim(XZQH00) = trim(as_XZQH00); end if; exception when others then as_YHMSG0:='医保病人所属医保中心名称有错,记录超过1条!'; as_SYSMSG:=SQLERRM||'select 1 from IC_YBBRLB A where trim(XZQH00)='||trim(as_XZQH00)||')'; rollback; return; end; end if; end if; --得到医保机构类别 if ls_YBLB00='0' then begin select YBLB00,YBZXLB,A.YBMC00 into ls_YBLB00,ls_YBZXLB,ls_NEWYBM from IC_YBBRLB A where A.FBBH00 = ls_FBBH00 and A.YBMC00 = as_YBLB00; exception when no_data_found then begin select A.YBLB00,A.YBZXLB,A.YBMC00 into ls_YBLB00,ls_YBZXLB,ls_NEWYBM from IC_YBBRLB a,BM_FZXDY0 b where a.FBBH00=b.FBBH00 and a.YBLB00=b.YBLB00 and b.FZXMC0 = as_YBLB00; exception when no_data_found then as_YHMSG0:='医保病人所属医保中心名称有错,系统字典维护不完整!'; as_SYSMSG:=SQLERRM||'Not exists(select * from IC_YBBRLB A,BM_BRFBB0 B where A.FBBH00 = B.FBBH00 and A.YBMC00 ='||as_YBLB00||')'; rollback; return; end; end; end if; --得到医保病人类别 if trim(as_BRZTQK)<> ' ' then begin select YBBRLB into ls_YBBRLB from BM_BRZTQK where ZTQKMC = trim(as_BRZTQK) and YBZXLB = ls_YBZXLB and FBBH00 = ls_FBBH00; --先从BM_BRZTQK表中取,是否是城镇居民医保> exception when others then begin select YBBRLB into ls_YBBRLB from BM_YBBRLB where BRLBMC = as_BRZTQK and YBZXLB=ls_YBZXLB; exception when no_data_found then select count(*) into ls_COUNT0 from BM_YBBRLB where YBZXLB=ls_YBZXLB and BRLBMC not like '%城镇%' and BRLBMC not like '%居民%'; if ls_COUNT0 > 1 then --说明还应该有病人类别的值 as_YHMSG0:='医保病人对应的病人类别名称{'||as_BRZTQK||'}在医保类别字典表中不存在,请与系统管理员联系!'; as_SYSMSG:=SQLERRM||'Not exists(select * from bm_ybbrlb where ybzxlb='||ls_YBZXLB||' and BRLBMC='||as_BRZTQK||')'; rollback; return; else ls_YBBRLB:='0'; end if; end; end; else ls_YBBRLB:='0'; end if; if as_TSBZ00='2' then select tsjk00 into ls_tsjk00 from IC_YBBRLB where YBLB00 = ls_YBLB00 and FBBH00=ls_FBBH00; if ls_tsjk00='1' then as_YHMSG0:='本操作员没有操作权限'; as_SYSMSG:=SQLERRM; rollback; return; end if; end if; select nvl(max(BRZJLX),'身份证'),nvl(max(BRZJBH),'0') into ls_BRZJLX,ls_BRZJBH from BM_BRXXB0 where BRID00 = ad_BRID00; if (ls_BRZJLX = '身份证') and (ls_BRZJBH <>'0') then --门诊同身份证号是否限制只允许一个有效建档记录,0不限制,1同费别同身份证号只允许一个,2同费别同身份证号同卡类型只允许一个,3自费不限制,其它限制同2,默认0 select nvl(trim(max(value0)),'0') into ls_XZXTZH from XT_XTCS00 where name00='SF_TFBTSFZHSFZYXJDJL'; if (ls_XZXTZH='1') then select count(*) into ls_COUNT0 from BM_BRXXB0 where FBBH00 = ls_FBBH00 and BRZJLX = '身份证' and BRZJBH = ls_BRZJBH and SFYX00 = 'Y'; if ls_COUNT0 >0 then as_YHMSG0:='无法进行费别转换!系统已有该费别同身份证号的有效档案信息记录,系统限制同费别同身份证号不能有重复档案信息!'; as_SYSMSG:=as_YHMSG0; rollback; return; end if; elsif (ls_XZXTZH='2') or (ls_XZXTZH='3' and ls_XZXTZH<>1) then select nvl(max(ICKLB0),'0') into ls_ICKLB0 from IC_YHXX00 where BRID00 = ad_BRID00 and ZT0000 = '1'; select count(*) into ls_COUNT0 from BM_BRXXB0 a,IC_YHXX00 b where a.BRID00 = b.BRID00 and b.ZT0000 in ('1','2') and b.ICKLB0 = ls_ICKLB0 and a.FBBH00 = ls_FBBH00 and a.BRZJLX = '身份证' and a.BRZJBH = ls_BRZJBH and a.SFYX00 = 'Y'; if ls_COUNT0 >0 then as_YHMSG0:='无法进行费别转换!系统已有该费别同身份证号同卡类型的有效档案信息记录,系统限制同费别同身份证号同卡类型不能有重复档案信息!'; as_SYSMSG:=as_YHMSG0; rollback; return; end if; end if; end if; begin select SF_SF_GETYYID00() YYID00 into ls_yyid00 from dual; exception when others then ls_yyid00:=0; end; if ls_yyid00>='A' then --广东中医院 select count(1) into ls_COUNT0 from YJ_YW0000 where BRID00 = ad_BRID00 and KDRQ00 >=to_char(sysdate-2,'YYYYMMDD') and MZZYBZ = '0' and XMZT00<'2'; if ls_COUNT0>0 then as_YHMSG0:='该病人有未收费项目,请收费后再进行该操作!'; as_SYSMSG:=SQLERRM; rollback; return; end if; select count(1) into ls_COUNT0 from YF_MZCF00 where BRID00 = ad_BRID00 and SRRQ00 >=to_char(sysdate-2,'YYYYMMDD') and CFZT00 = '0'; if ls_COUNT0>0 then as_YHMSG0:='该病人有未收费处方,请收费后再进行该操作!'; as_SYSMSG:=SQLERRM; rollback; return; end if; end if; update BM_BRXXB0 set FBBH00 = ls_FBBH00, --费别编号 YBKH00 = decode(Vsfblkh,'Y',decode(as_YBKH00,'0',YBKH00,as_YBKH00),as_YBKH00), --医保卡号 YBID00 = decode(Vsfblkh,'Y',decode(as_YBID00,'0',YBID00,as_YBID00),as_YBID00), --医保ID YBLB00 = ls_YBLB00, --医保类别编号 YBBRLB = ls_YBBRLB, --医保病人类别 BRZTQK = as_BRZTQK, --病人职退情况 XZQH00 = as_XZQH00, --行政区号 ICZTMC = as_ICZTMC --医保状态名称 where BRID00 = ad_BRID00; if ls_FBBH00 = 3 then update BM_BRXXB0 set SFJZFP = as_SFJZFP --是否精准扶贫 where BRID00 = ad_BRID00; else --非医保 update BM_BRXXB0 set SFJZFP = '0' --是否精准扶贫 where BRID00 = ad_BRID00; end if; /* if (ls_FBBH01 not in (1,3)) and (ls_FBBH00 in (1,3)) then --公费转自费重新计算自付金额和记帐金额 select count(*) into ls_COUNT0 from SF_FYMX00 where BRID00=ad_BRID00 and JZDH00=0; if ls_COUNT0>0 then as_YHMSG0:='有费用未结算,不能转费别!'; as_SYSMSG:=SQLERRM; rollback; return; end if; --收过费的进行费用转换 end if; if (ls_FBBH00 not in (1,3)) and (ls_FBBH01 in (1,3)) then --自费转公费重新计算自付金额和记帐金额 select count(*) into ls_COUNT0 from SF_FYMX00 where BRID00=ad_BRID00 and JZDH00=0; if ls_COUNT0>0 then as_YHMSG0:='有费用未结算,不能转费别!'; as_SYSMSG:=SQLERRM; rollback; return; end if; --收过费的进行费用转换 end if; */ SP_SF_BRFB00_EDIT00_GZFY00( ad_BRID00, ls_FBBH00, ls_YBBRLB, ls_YBZXLB, ls_FBBH01, null, null, ad_CZY000, ad_CZYKS0, 'N', Vzxcgbz, as_YHMSG0, as_SYSMSG ); --以下代码单独提列成存储过程SP_SF_BRFB00_EDIT00_GZFY00 --未收费的单据重新计价 --declare cursor C_YJYW is select YJDJH0 from YJ_YW0000 a where BRID00=ad_BRID00 and MZZYBZ='0' and XMZT00 in ('0','1') and SL0000>0 -- and exists (select 1 from xt_zlsfgx where zlxmid=a.zlxmid); --begin -- for YJ in C_YJYW loop -- SF_YJ_YWJJ_NOCOMMIT(yj.YJDJH0,1,ad_czy000,ls_CZYKSH,'N',Vzxcgbz,as_YHMSG0,as_SYSMSG); -- end loop; --end; --declare cursor C_MZCF is select CFLSH0 from YF_MZCF00 where BRID00=ad_BRID00 and CFZT00 in ('0','4') and CFZJE0>0; --begin -- for CF in C_MZCF loop -- SP_SF_JSCFJG(CF.CFLSH0,ad_czy000,ls_CZYKSH,'N',Vzxcgbz,as_YHMSG0,as_SYSMSG); -- end loop; --end; --已经计价的处理 -- if (ls_FBBH00=3) and (ls_FBBH01=1) then --自费转医保,只要修正比例 -- -- update SF_FYMX00 A set ZFBL00= -- (select nvl(max(ZFBL00),1) from VW_BM_YBSFDY B where B.SFXMID=A.XMBH00 and B.SFYP00 in ('N','Y') and B.FBBH00=ls_FBBH00 and B.YBBRLB=ls_YBBRLB and B.YBZXLB=ls_YBZXLB ) -- where BRID00=ad_BRID00 and JZDH00+0=0 and SFLB00<>'3'; -- -- update YF_MZCFMX A set ZFBL00= -- (select nvl(max(ZFBL00),1) from VW_BM_YBSFDY B where B.SFXMID=A.YPNM00 and b.SFYP00='Y' and B.FBBH00=ls_FBBH00 and B.YBBRLB=ls_YBBRLB and B.YBZXLB=ls_YBZXLB) -- where exists (select 1 from SF_FYMX00 where BRID00=ad_BRID00 and JZDH00+0=0 and YJJZID=A.CFID00 and SFLB00='3') -- and CFLSH0 in (select CFLSH0 from YF_MZCF00 where BRID00 = ad_BRID00); -- update YJ_YWJJ00 A set ZFBL00= -- (select nvl(max(ZFBL00),1) from VW_BM_YBSFDY B where B.SFXMID=A.SFXMID and b.SFYP00='N' and B.FBBH00=ls_FBBH00 and B.YBBRLB=ls_YBBRLB and B.YBZXLB=ls_YBZXLB) -- where a.ID0000 in (select YJJZID from SF_FYMX00 where BRID00=ad_BRID00 and JZDH00+0=0 and SFLB00<>'3') ; -- elsif (ls_FBBH00=1) and (ls_FBBH01=3) then --医保转自费,只需把自付比例全部改为1即可 -- --ZY_FYMX00 表的 ZFBL00 -- update SF_FYMX00 A set ZFBL00=1 where BRID00=ad_BRID00 and JZDH00+0=0 ; -- --YF_YZYPSQ -- update YF_MZCFMX A set ZFBL00=1 -- where exists (select 1 from SF_FYMX00 where BRID00=ad_BRID00 and JZDH00+0=0 and YJJZID=a.CFID00 and SFLB00='3') -- and CFLSH0 in (select CFLSH0 from YF_MZCF00 where BRID00 = ad_BRID00); -- --YJ_YWJJ00 -- update YJ_YWJJ00 A set ZFBL00=1 -- where a.ID0000 in (select YJJZID from SF_FYMX00 where BRID00=ad_BRID00 and JZDH00+0=0 and SFLB00<>'3') ; -- elsif ls_FBBH00<>ls_FBBH01 then --其它类型的费别转换 -- if (ls_FBBH00 <> 1 and ls_FBBH00 <> 3) and ls_FBBH01 = 1 then --自费转公费 -- if ls_FBZHFYSFZH = 'Y' or ls_FBZHFYSFZH = 'M' then --参数SF_FBZHFYSFZH等于Y或M时需转换费用 -- Vsfzhfy := 'Y'; -- else -- Vsfzhfy := 'N'; -- end if; -- elsif (ls_FBBH00 = 1) and (ls_FBBH01 <> 1 and ls_FBBH01 <> 3) then --公费转自费 -- if ls_FBZHFYSFZH = 'Q' or ls_FBZHFYSFZH = 'M' then --参数SF_FBZHFYSFZH等于Q或M时需转换费用 -- Vsfzhfy := 'Y'; -- else -- Vsfzhfy := 'N'; -- end if; -- else -- Vsfzhfy := 'Y'; --其它费别修改按原处理方式,需转换费用 -- end if; -- if Vsfzhfy = 'Y' then -- declare cursor C_FYMX is select * from SF_FYMX00 where BRID00=ad_BRID00 and JZDH00=0 and CXBZ00<>'*'; -- begin -- for mx in C_FYMX loop -- if ls_FBBH00 = 1 then -- Vzfbl00 := 1; -- else -- select nvl(max(ZFBL00),1) into Vzfbl00 from VW_BM_YBSFDY b where b.SFXMID=mx.XMBH00 and b.FBBH00=ls_FBBH00 and b.YBBRLB=ls_YBBRLB and b.YBZXLB=ls_YBZXLB; -- end if; -- Vjzje00:=mx.HJJE00*(1-Vzfbl00); -- Vzfje00:=mx.HJJE00-mx.GFJE00-Vjzje00; -- if Vzfje00<>mx.ZFJE00 then -- Pmxid00 := null; -- SP_SF_FYMX00_INSERT( -- Pmxid00, --门诊病人费用明细流水号SQ_SF_FYMX00_MXID00 -- mx.DJH000, --单据号(新生成的) -- mx.MZH000, --门诊号,本处指挂号号 -- ad_BRID00, --病人ID -- null, --冲销批准人 -- null, --冲销原因 -- '2', --是否预扣标志 0要预扣,不允许为负1不预扣,不允许为负2要预扣,允许为负3不预扣,允许为负 -- mx.XMBH00, --医疗收费编码或药品编码 -- mx.SFLB00, --收费类别'0'主项'1'加收'2'材料'3'药品 -- mx.XMDJ00, --单价 -- -mx.XMSL00, --数量 -- -mx.HJJE00, --合计金额 -- -mx.QZFJE0, --全自付金额 -- -mx.ZFJE00, --自费金额 -- -mx.GFJE00, --公费金额,减免时用 -- -mx.JZJE00, --记帐金额 -- null, --折后金额 -- -mx.JMJE00, --减免金额 -- null, --减免审核人 -- null, --减免审核原因 -- mx.JMBZ00, --减免标志 -- null, --转账账户支付金额 -- ls_CZRQ00, --开单日期 -- ls_CZSJ00, --开单时间 -- ls_CZRQ00, --执行日期 -- ls_CZSJ00, --执行日期 -- '*', --冲销标志 -- mx.KDKS00 , --开单科室 Pczyks0 -- mx.YSKS00 , --医生所属科室Pczyks0 -- mx.KDYS00 , --开单医生工号Pczy000 -- null, --开单病区编号 -- mx.ZXKS00 , --执行科室编号Pczyks0 -- mx.ZXYS00 , --执行医生工号Pczy000 -- null, --备注 -- mx.ZFBL00, --自付比例 -- mx.GJBM00, --国家编码 -- --1, --收费员登记 1是 0否 -- mx.SFYDJ0, --收费员登记 1是 0否 -- null, --是否零散处方 '0':非处方,'1':是零散处方,'2':病区处方,作废 -- mx.YJDJH0, --医技单ID/处方单ID -- mx.YJJZID, --医技/处方计价明细ID -----------待写入? -- null, --审核结果 -- null, --库存物资批号 -- mx.MXID00, --冲销时的原费用明细记录ID -- ad_CZY000, --操作员 -- ls_CZYKSH, --操作员科室 -- 'N', --是否提交 -- Vzxcgbz, --执行成功标志 1成功 0失败 -- as_YHMSG0, --执行结果提示信息,成功的情况下也可能有警告信息 -- as_SYSMSG, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 -- mx.JFLBID, --缴费类别id 1预交金 0现金 -- 0, --协定处方ID BM_XDCFWH.MXID00 -- null, --套餐ID SF_BRTCXM.TCID00 -- mx.TCNWBZ --套餐标识(TCNWBZ) 2套餐外折扣项目 -- ); -- update SF_FYMX00 set CXBZ00='*' where BRID00=ad_BRID00 and MXID00=mx.MXID00; -- Pmxid00:=null; -- SP_SF_FYMX00_INSERT( -- Pmxid00, --门诊病人费用明细流水号SQ_SF_FYMX00_MXID00 -- mx.DJH000, --单据号(新生成的) -- mx.MZH000, --门诊号,本处指挂号号 -- ad_BRID00, --病人ID -- null, --冲销批准人 -- null, --冲销原因 -- '2', --是否预扣标志 0要预扣,不允许为负1不预扣,不允许为负2要预扣,允许为负3不预扣,允许为负 -- mx.XMBH00, --医疗收费编码或药品编码 -- mx.SFLB00, --收费类别'0'主项'1'加收'2'材料'3'药品 -- mx.XMDJ00, --单价 -- mx.XMSL00, --数量 -- mx.HJJE00, --合计金额 -- 0, --全自付金额 -- Vzfje00, --自费金额 -- mx.GFJE00, --公费金额,减免时用 -- Vjzje00, --记帐金额 -- null, --折后金额 -- mx.JMJE00, --减免金额 -- null, --减免审核人 -- null, --减免审核原因 -- mx.JMBZ00, --减免标志 -- null, --转账账户支付金额 -- ls_CZRQ00, --开单日期 -- ls_CZSJ00, --开单时间 -- ls_CZRQ00, --执行日期 -- ls_CZSJ00, --执行日期 -- 'Z', --冲销标志 -- mx.KDKS00 , --开单科室 Pczyks0 -- mx.YSKS00 , --医生所属科室Pczyks0 -- mx.KDYS00 , --开单医生工号Pczy000 -- null, --开单病区编号 -- mx.ZXKS00 , --执行科室编号Pczyks0 -- mx.ZXYS00 , --执行医生工号Pczy000 -- null, --备注 -- Vzfbl00, --自付比例 -- mx.GJBM00, --国家编码 -- --1, --收费员登记 1是 0否 -- mx.SFYDJ0, --收费员登记 1是 0否 -- null, --是否零散处方 '0':非处方,'1':是零散处方,'2':病区处方,作废 -- mx.YJDJH0, --医技单ID/处方单ID -- mx.YJJZID, --医技/处方计价明细ID -----------待写入? -- null, --审核结果 -- null, --库存物资批号 -- null, --冲销时的原费用明细记录ID -- ad_CZY000, --操作员 -- ls_CZYKSH, --操作员科室 -- 'N', --是否提交 -- Vzxcgbz, --执行成功标志 1成功 0失败 -- as_YHMSG0, --执行结果提示信息,成功的情况下也可能有警告信息 -- as_SYSMSG, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 -- mx.JFLBID, --缴费类别id 1预交金 0现金 -- 0, --协定处方ID BM_XDCFWH.MXID00 -- null, --套餐ID SF_BRTCXM.TCID00 -- mx.TCNWBZ --套餐标识(TCNWBZ) 2套餐外折扣项目 -- ); -- elsif Vzfbl00<>mx.ZFBL00 then -- update SF_FYMX00 set ZFBL00=Vzfbl00 where MXID00=mx.MXID00; -- end if; -- if Vzfbl00<>mx.ZFBL00 or Vzfje00<>mx.ZFJE00 then -- if mx.SFLB00='3' then -- update YF_MZCFMX set ZFBL00=Vzfbl00,ZFJE00=Vzfje00,JZJE00=Vjzje00 where CFID00=mx.YJJZID; -- else -- update YJ_YWJJ00 set ZFBL00=Vzfbl00,ZFJE00=Vzfje00,JZJE00=Vjzje00 where ID0000=mx.YJJZID; -- end if; -- end if; -- end loop; -- end; -- end if; -- end if; --插入费别转换日志 insert into BM_BRCZRZ(BRID00,CZRQ00,CZSJ00,CZY000,CZYXM0,OLDXX0,NEWXX0,BZ0000,CZYKS0) values(ad_BRID00,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),to_number(ad_CZY000),as_CZYXM0,ls_oldybm,ls_NEWYBM,'门诊费别修改',ad_CZYKS0); --考虑到广东省中医院,不同费别的病人,其记账的方式是不同的,所以本处不修改 --Update SF_BRXXB0 set FBBH00 = ls_FBBH00 where BRID00 = ad_BRID00 and GHID00 = ls_GHID00; --2010.04.27 zhr 绿色通道病人欠费记录失效 update SF_BRDB00 set DBJSRQ=to_char(sysdate,'YYYYMMDD'),DBJSSJ=to_char(sysdate,'HH24:MI:SS'), SFYX00='N',JSCZY0=ad_czy000, JSRXM0=as_CZYXM0 where BRID00=ad_BRID00 and DBYY00='绿色通道病人自动欠费' and SFYX00<>'N'; commit; exception when no_data_found then as_YHMSG0:='病人的费别名称不存在,请重新输入病人费别名称!'; as_SYSMSG:=SQLERRM; rollback; when others then as_YHMSG0:='系统出错,请查看详细信息。如有不明,请与管理员联系!'||SQLERRM; as_SYSMSG:=substr(SQLERRM||'执行存储过程错误:SP_SF_BRFB00_EDIT00('||to_char(ad_BRID00)||','||as_FBMC00||','|| as_YBKH00||','||as_YBID00||','||as_YBLB00||','||as_BRZTQK||',as_YHMSG0,as_SYSMSG)',1,150); rollback; end;