create or replace procedure SP_SF_BRGHXX ( as_BRBLH0 IN CHAR, --门诊病历号 as_YBGHH0 IN CHAR, --医保程序生成的挂号流水号,默认值为0 as_GHLBMC IN CHAR, --挂号类别名称 ad_BRID00 IN NUMBER, --病人ID号,若=0,说明是现金病人 as_SFCZ00 IN CHAR, --是否初诊,'0':初诊病人,'1':复诊病人 as_XM0000 IN CHAR, --姓名 as_XB0000 IN CHAR, --性别 as_CSRQ00 IN CHAR, --出生日期 as_FBMC00 IN CHAR, --病人费别 as_GFZH00 IN CHAR, --公费证号,Add at GZ, on 2002-12-28 as_BRDH00 IN CHAR, --电话,Add at GZ,on 2002-12-31 as_BRHYZK IN CHAR, --婚姻状况,Add at GZ, on 2002-12-31 ad_GHY000 IN NUMBER, --挂号员编号、或操作员编号 as_GHYXM0 IN CHAR, --挂号员姓名 ad_CZYKS0 IN NUMBER, --操作员的科室,或挂号员的科室 ad_GHKS00 IN NUMBER, --挂号科室编号 ad_JZYS00 IN NUMBER, --就诊医生编号 as_JZYSXM IN CHAR, --就诊医生姓名 ad_GHHBID IN NUMBER, --挂号号表流水号 as_YJJXH0 IN CHAR, --打印在挂号单的外部序列号 as_FPXH00 IN CHAR, --打印在发票上的序号 ad_GHF000 IN NUMBER, --挂号费总金额(挂号费+挂号附加费)+病历工本费(若在窗体有打勾收病历费) ad_GRZHZF IN NUMBER, --医保个人医疗账户支付 ad_TCJJZF IN NUMBER, --医保统筹基金支付 ad_ZFJE00 IN NUMBER, --医保自付金额,若是现金病人,与挂号费总金额相同 as_ZPZH00 IN CHAR, --对应的医保中心的编号 as_YBID00 IN CHAR, --病人医疗保险号(医保Id),非医保病人='0' as_YBKH00 IN CHAR, --病人医保卡号 as_GHRQ00 IN CHAR, --挂号日期,只是在预约挂号时使用 as_SFYYGH IN CHAR, --是否预约挂号,'Y':预约挂号,'N':正常挂号 as_CZBZ00 IN CHAR, --挂号标志,'0':持卡病人,'1':现金病人 as_SFSBLF IN CHAR, --是否收取病人的病历费,'Y':收病历费,'N':不收病历费 as_BRZY00 IN CHAR, --职业(考虑现金病人时,这些信息的填写) as_BRMZ00 IN CHAR, --民族 as_BRZJLX IN CHAR, --证件类型 as_BRZJBH IN CHAR, --证件编号 as_TYDWMC IN CHAR, --单位名称 as_SFNLYD IN CHAR, --老年优待,Add at GuangZhou on 2002-11-25 as_HZLB00 IN CHAR, --优先级别,Add at GuangZhou on 2002-11-25 as_ICKH00 IN CHAR, --就诊卡号,若没有卡号(='0'),现金病人挂号时,同时分配卡号 ,Add at GuangZhou on 2002-12-28 as_BRJTDZ IN VARCHAR2, --家庭地址/通信地址 ad_FJJZDH OUT NUMBER, --除了挂号费外的附加费的结算单号(供医保接口使用) --NEW! ad_ZFDJH0 OUT NUMBER, --自费金额对应的单据号 ad_TJDJH0 OUT NUMBER, --医保的统筹基金对应的单据号 ad_GRDJH0 OUT NUMBER, --医保的个人账户对应的单据号 ad_SBZHDH OUT NUMBER, --商保个人帐户单据流水号 ad_SBTJDH OUT NUMBER, --商保统筹基金单据流水号 as_GHH000 IN OUT VARCHAR2, --门诊挂号号,供前台程序打印挂号单时使用 as_YHMSG0 OUT VARCHAR, --存储过程提示的中文错误信息 as_SYSMSG OUT VARCHAR, --系统提示的错误信息 as_JZSJ00 IN CHAR DEFAULT '', --计划就诊时间 as_GHXZQK IN CHAR default 'N',--挂号限制情况 'Y':预约挂号即广东的那种情况,'N':正常挂号 'Z' :预约转正式挂号 as_ybzhye in number default 0, --医保账户余额 as_SFHSGH in char default 'N' ,--是否护士站挂号 默认为N ad_jjdjh0 in number default 0 , --保健基金单据号 as_GHSJD0 IN VARCHAR2 default '', --预约时间段 as_HZXH00 IN NUMBER DEFAULT 0 , --候诊时间 as_sfjzlb IN CHAR default '2', --是否急诊类别 as_ZSQGFF IN CHAR default 'N', --是否“电子钱包”支付方式挂号 as_SFZRZY in char default 'N' --是否择日住院 ) as -- MODIFICATION HISTORY -- Person Date Comments -- xzw 2007.06.15 传递参数增加基金单据号; -- yangy 2007.07.03 在门诊护士挂号时,虽然挂号员和就诊医生不同,但是也不需要分配票据号; -- xzw 2007.07.04 解决挂号的时候附加费信息在SF_PJSYQK中没有记录的问题; -- jlg 2007.07.11 修改游标CUR_BM_GHXMDY_ZLXMID,使取前台传入的挂号类别 -- zhr 2007.07.13 邵武医院对医保病人统一挂“医保号”(GHLB00=22),要求系统自动根据医生技术职称类别带出相应的诊疗项--目,其他医院直接按医生选择的挂号类别带出相应的诊疗项目 -- xzw 2007.07.23 预约时传递参数增加预约时间段 -- yangy 2007.08.08 省二候诊病人候诊序号跳号和变号的问题 -- yangy 2007.08.13 省二候诊病人预约病人预挂号转为正式挂号 -- yangy 2007.08.13 省二候诊病人优待病人预挂号转为正式挂号 -- xzw 2007.08.14 特困病人挂号时,挂“简易医生”时费用1元照收。 -- xzw 2007.08.15 残疾军人挂号时:若挂专家或名专家号则费用照收 -- yangy 2007.08.15 护士站挂号时,可以选择候诊序号进行挂号 -- xzw 2007.08.20 对省公医及市公医病人挂急诊号时对诊金的处理 -- yangy 2007.08.22 挂预挂号时,SF_YSGHHB.GHYGHS不变,挂预约号时,GHYYHS要增加 -- csf 2008.06.17 记录“sfjzlb” -- yangy 2008.06.17 本院职算法改变 -- yangy 2009.02.09 体检科建的卡,只能能挂体检号 -- yangy 2009.03.25 医保锁卡病人限制金额,超过限制金额未结算的第二天不让挂号 -- yangy 2009.03.27 医保锁卡病人限制金额,医技平台挂号的取消限制。 -- yangy 2009.04.15 重复挂号时,补充医保挂号号。 -- yangy 2009.07.03 有出现过候诊序号丢失的情况 -- zhr 2009.11.02 住院期间也允许看门诊 -- CSF 2010.09.29 预约挂号扣费处理 -- csf 2011.01.06 是否是预约挂号的判断改成YS_HBHZXH.YYID00>0,以此增加SF_YSGHHB.GHYYHS -- csf 2011.04.27 重复挂号的判断应过滤预挂号 -- qks 2011.06.25 增加传入参数as_ZSQGFF,是否只收取挂号费,不收诊察费,同时自动带出诊察费的医技项目 -- csf 2011.10.21 医保锁卡病人限制金额,超过限制金额未结算的第二天不让挂号,该功能不该限制预挂号 -- dsm 2011.11.22 医保病人超过一定的天数(SF_YBWFSZDTS)未发送医保时,不让挂号 -- dsm 2011.12.27 SF_YBWFSZDTS<>'-1'时,由于退费的问题,如果病人的未结算金额=0则允许通过for MZYS-20111220-002 -- zhangyc 2013.04.16 增加SF_BRXXB0 YBZXLB,YBBRLB BY MZSF-20130413-001 -- jinfl 2013.09.05 重要来人短信通知 归档 YJ-20130924-001 -- chenhn 2017.01.10 龙岩人民医院小余7岁的病人,挂号自动加收诊察费 for MZYS-20170106-001 -- dsm 2017.10.21 增加as_SFZRZY择日住院参数 for MZYS-20171021-001 -- dsm 2018.07.09 扩展YS_YXCFGH控制可以重复挂号的挂号类别 MZYS-20180709-001 ls_MZID00 SF_BRXXB0.GHID00%TYPE; --病人的挂号ID ls_DJH000 SF_BRFY00.DJH000%TYPE; --病人费用单据号 ls_FJDJH0 SF_BRFY00.DJH000%TYPE; --病人费用单据号 ls_WJSDJH SF_BRFY00.DJH000%TYPE; --广东省中医院在挂号时,虽是现金,但有部分的费用放在结算时,一起结算 ls_GHLB00 BM_GHLBB0.LBBH00%TYPE; --挂号类别编码 ls_FBBH00 BM_BRFBB0.FBBH00%TYPE; --病人费别名称 ls_LBBH00 BM_BRJFLB.JFLBID%TYPE; --病人交费类别 ls_GFBL00 NUMBER(12,2); --公费报销比例 ls_JZBL00 NUMBER(12,2); --记账报销比例 ls_SCZFJE BM_YBSFDY.ZFJE00%TYPE; --首次自付金额,由于挂号时,广东省的收费是分两次进行的 ls_YBBRLB BM_BRXXB0.YBBRLB%TYPE; --病人类别 ls_YBZXLB IC_YBBRLB.YBZXLB%TYPE; --医保中心类别 ls_YBLB00 IC_YBBRLB.YBLB00%TYPE; ls_TMPJE0 SF_BRFY00.ZFJE00%TYPE; --自费金额,临时保存 ls_TMPJZ0 SF_BRFY00.JZJE00%TYPE; --记账金额,临时保存 ls_JZJE00 SF_BRFY00.JZJE00%TYPE; --记账总金额 ls_MXZFJE SF_FYMX00.ZFJE00%TYPE; --费用明细表的自付金额 ls_MXJZJE SF_FYMX00.JZJE00%TYPE; --费用明细表的记账金额 ls_MXGFJE SF_FYMX00.GFJE00%TYPE; --费用明细表的公费金额 ls_MXHJJE SF_FYMX00.HJJE00%TYPE; --费用明细表的合计金额 ls_FJGHKS SF_FJGHF0.FJGHKS%TYPE; --附加挂号费的附加挂号科室 ls_TMPKS0 SF_FJGHF0.FJGHKS%TYPE; --附加挂号费的附加挂号科室 ls_FJFFBH SF_FJGHF0.FJFFBH%TYPE; --附加挂号费的附加费编码 ls_YDJM00 SF_GHF000.YDJM00%TYPE; --能否优待减免 ls_SFDM00 SF_GHF000.SFXMID%TYPE; --挂号费的收费代码 vSFXMID SF_GHF000.SFXMID%TYPE; --预约费的收费代码 ls_GHHZCK SF_YSGHHB.GHHZCK%TYPE; --挂号候诊窗口 ls_ZFFSBH BM_BRZFFS.ZFFSBH%TYPE; --病人支付方式编码 ls_ZFFSMC BM_BRZFFS.ZFFSMC%TYPE; --病人支付方式名称 ls_ZFFSBH_2 BM_BRZFFS.ZFFSBH%TYPE; --病人支付方式编码 ls_ZFFSMC_2 BM_BRZFFS.ZFFSMC%TYPE; --病人支付方式名称 ls_JZDH00 SF_JZB000.JZDH00%TYPE; --病人结账单号 ls_GHRQ00 SF_BRXXB0.GHRQ00%TYPE; --挂号日期 ls_BRID00 SF_BRXXB0.BRID00%TYPE; --病人ID ls_PJH000 SF_PJSYQK.PJH000%TYPE; --票据流水号 ls_FJPJH0 SF_PJSYQK.PJH000%TYPE; --附加费对应的票据流水号 ls_PJXJJE SF_PJSYQK.XJJE00%TYPE; --票据上的现金金额 ls_PJZZJE SF_PJSYQK.ZZJE00%TYPE; --转账金额,也可称为从病人预交金账户上扣除的金额 ls_YSKS00 SF_FYMX00.YSKS00%TYPE; --医生科室名称 ls_SFYDJ0 SF_FYMX00.SFYDJ0%TYPE; --是否是收费处登记 ls_BLSFDM BM_YYSFXM.SFXMID%TYPE; --病历工本费收费代码 ls_BLSFJE BM_YYSFXM.SFJE00%TYPE; --病历工本费金额 ls_BLXMMC BM_YYSFXM.XMMC00%TYPE; --病历工本费收费名称 ls_OGHJE0 BM_YYSFXM.SFJE00%TYPE; --挂号费金额,本金额只是挂号的金额,不含诊疗费部门的金额 ls_GHYXTS SF_BRXXB0.GHYXTS%TYPE; --门诊挂号有效天数 ls_HZLB00 SF_BRXXB0.HZLB00%TYPE; --优先级别,或称为候诊类别 Add at GuangZhou on 2002-11-25 ls_HZLBID SF_HZBR00.ID0000%TYPE; --候诊类别ID,SF_HZBR00.ID0000 ls_HZSJTD_STR SF_BRXXB0.HZSJD0%TYPE; --候诊时间段 ls_ICKDM0 IC_YHXX00.SFDM00%TYPE; --就诊卡收费代码 ls_ICKJE0 IC_YHXX00.ICKJE0%TYPE; --就诊卡收费金额 ls_ICKMC0 SF_FYMX00.XMMC00%TYPE; --就诊卡收费项目名称 ls_ICKDW0 SF_FYMX00.XMDW00%TYPE; --就诊卡收费项目单位 ls_HZQSRQ SF_HZBR00.HZQSRQ%TYPE; --候诊开始日期 ls_HZQSSJ SF_HZBR00.HZQSSJ%TYPE; ls_HZJZRQ SF_HZBR00.HZJZRQ%TYPE; --候诊结束日期 ls_HZJZSJ SF_HZBR00.HZJZSJ%TYPE; ls_xzghlb bm_ybbrlb.xzghlb%type; ls_xzghlb_byzg bm_ghlbb0.lbbh00%type; --本院职工的限制挂号类别 ls_tydw00 bm_brxxb0.tydwmc%type; ls_brfb00 bm_brxxb0.fbbh00%type; ls_YBSFYXQF XT_XTCS00.value0%type; --取医保个人帐户余额作为允许欠费金额(建阳模式) ls_yhbl00 bm_yyhsxm.yhbl00%type; ls_tydwid bm_brxxb0.tydwid%type; YS_DETJZMSGHF CHAR(1); --参数 ls_SFSQGHF CHAR(1); --是否收取挂号费 默认为 :1 ls_YBGHFJF CHAR(1); ls_YXCFGH CHAR(1); --允许医生有效期内给病人重复挂号 ls_CZRQ00 CHAR(8); ls_CZSJ00 CHAR(8); ls_COUNT0 NUMBER(5); ls_GHDLX0 VARCHAR2(30); ls_GHDJXZ CHAR(1); SF_YJJGHZXJ CHAR(5); ls_gfxydw char(1); ls_yhdate_1 char(14); ls_yhdate_2 char(14); ls_BZ0000 BM_BRXXB0.BZ0000%type; ls_GHXXSFTXJT char(2); ls_ghlbbh char(8); ls_GHXMBH number(8); ls_GHXMBH_1 number(8); ls_sfje00 bm_yysfxm.sfje00%type; ls_xmmc00_1 bm_yysfxm.xmmc00%type; ls_GHZKBH sf_ysghhb.GHZKBH%type; --专科名称编号 ls_HZXH00 VARCHAR2(5); ls_DLXH00 SF_HZBR00.DLXH00%type; ls_HZXHLB CHAR(1); ls_XZHZXH CHAR(1); -- ls_YYID00 YS_HBHZXH.YYID00%TYPE ls_GHXZQK CHAR(1); ls_ybghh0 sf_brxxb0.ybghh0%type; ls_JKKSMC BM_BMBM00.BMMC00%TYPE; ls_YBSKBRXZJE number(8,2); --医保锁卡病人限制金额,超过限制金额未结算的第二天不让挂号, 默认为0:表示不限制 ls_sdczfs sf_brzhxx.sdczfs%type; --是否锁卡 ls_wjsje0 number(10,2); --未结算金额 LS_YYID00 SF_YYBRB0.YYID00%TYPE; --预约id v_count number(2); ls_yjdjh0 yj_yw0000.yjdjh0%TYPE; ls_minRQ0 SF_BRFY00.CZRQ00%type; ls_wfsts0 varchar(2);--允许未发送的最大天数 Vzxcgbz number; ls_SFXEJS varchar2(1); --是否小儿加收诊查费 Vcounter number; LS_YXCFGHLB varchar2(20); --进行挂号登记限制 CURSOR CUR_SF_FJGHF0_GHF000 IS SELECT FJFFBH FROM SF_FJGHF0 where FJBRLB=as_SFCZ00 and FJGHLB=ls_GHLB00 and (FJGHKS=ls_FJGHKS or (ls_FJGHKS = ls_TMPKS0 and FJGHKS is null)) union all select XEJSXM from BM_GHLBB0 where LBBH00=ls_GHLB00 and XEJSXM>0 and ls_SFXEJS='1'; CURSOR CUR_BM_GHLBB0_MC IS SELECT LBMC00 FROM BM_GHLBB0 WHERE INSTR(','||LS_XZGHLB||',',','||LBBH00||',')>0; --挂号带出诊疗项目 --ls_count0>0说明是邵武医院,则按医生的职称类别带出诊疗项目,否则直接按选择的挂号类别带出诊疗项目 CURSOR CUR_BM_GHXMDY_ZLXMID IS SELECT ZLXMID FROM BM_GHXMDY WHERE ((ls_count0>0 and LBBH00=(select mrghlb from bm_ygbm00 where ygbh00=ad_jzys00)) or (LBBH00=ls_GHLB00 and ls_count0=0)) AND SYBZ00='1' ORDER BY LBBH00,XMDYID; CURSOR CUR_GHDCZL IS SELECT YJDJH0 FROM YJ_YW0000 WHERE ZYGHID=ls_MZID00 AND mzzybz='0' and XMZT00 IN ('0'); --2007.07.13 zhr 邵武医院对医保病人统一挂“医保号”(GHLB00=22),要求系统自动根据医生技术职称类别带出相应的诊疗项目,其他医院直接按医生选择的挂号类别带出相应的诊疗项目 BEGIN ls_YYID00 :=0; ls_CZRQ00 := to_char(sysdate,'YYYYMMDD'); ls_CZSJ00 := to_char(sysdate,'HH24:MI:SS'); ad_SBZHDH := 0 ; --商保个人帐户单据流水号 ad_SBTJDH := 0 ; --商保统筹基金单据流水号 ad_FJJZDH := 0 ; --除了挂号费外的附加费的结算单号 ad_ZFDJH0 := 0 ; --自费金额对应的单据号 ad_TJDJH0 := 0 ; --医保的统筹基金对应的单据号 ad_GRDJH0 := 0 ; --医保的个人账户对应的单据号 ls_YSKS00 := 0 ; --门诊挂号医生默认的科室名称 ls_FJPJH0 := 0 ; ls_GHYXTS := 1 ; ls_ICKDM0 := 0 ; ls_ICKJE0 := 0 ; ls_sfje00 := 0 ; ls_SFSQGHF :='1'; --ls_YYBZ00 :='1'; ls_GHXZQK := as_GHXZQK; --公费病人建卡时是否一定要输入单位 begin select upper(substrb(value0,1,1)) into ls_gfxydw from xt_xtcs00 where name00='SF_GFBRJKBXSRDW'; exception when others then ls_gfxydw:='N'; end; begin select value0 into ls_YBSFYXQF from xt_xtcs00 where name00='SF_YBSFYXQF'; exception when others then ls_YBSFYXQF:='N'; end; begin select trim(value0) into SF_YJJGHZXJ from xt_xtcs00 where name00='SF_YJJGHZXJ'; exception when others then SF_YJJGHZXJ:='N'; end; begin select substrb(upper(trim(value0)),1,1) into ls_GHDJXZ from xt_xtcs00 where name00='XT_GHDJXZ'; exception when others then ls_GHDJXZ:='N'; end; begin select substrb(upper(trim(value0)),1,1),substrb(upper(trim(value0)),3,100) into ls_YXCFGH,ls_YXCFGHLB from xt_xtcs00 where name00='YS_YXCFGH'; ls_YXCFGHLB:=','||ls_YXCFGHLB||','; exception when others then ls_YXCFGH:='Y'; --允许医生有效期内给病人重复挂号 ls_YXCFGHLB:=''; end; -- 病人在一个科室挂完号后,过了挂号有效期后的第二天来这个科室就诊,是否免收挂号费 Y: 是; N: 否 默认为N begin select substrb(upper(trim(value0)),1,1) into YS_DETJZMSGHF from xt_xtcs00 where name00='YS_DETJZMSGHF'; exception when others then YS_DETJZMSGHF:='N'; -- end; begin select trim(value0) into ls_ghlbbh from xt_xtcs00 where name00='SF_GHLBBH'; exception when others then ls_ghlbbh:='-100000'; end; --'护士挂号时,是否指定候诊序号 Y: 是 , N: 否 默认为N' select UPPER(TRIM(NVL(MAX(VALUE0),'N'))) into ls_XZHZXH from xt_xtcs00 where name00='YS_HSGHXZHZXH'; if (ad_GHKS00=0) and (as_GHLBMC='0') then begin select trim(value0) into ls_GHXMBH from xt_xtcs00 where name00='SF_GHXMBH'; exception when others then ls_GHXMBH:=''; end; begin select sfxmid,sfje00,xmmc00 into ls_GHXMBH_1,ls_sfje00,ls_xmmc00_1 from bm_yysfxm where sfxmid=ls_ghxmbh; exception when others then ls_GHXMBH_1:=''; ls_sfje00:=0; end; if (ls_GHXMBH_1='') or (ls_sfje00=0) then as_YHMSG0:='挂号项目没有维护完整,请找相关人员'; as_SYSMSG:=SQLERRM||'brid00='||to_char(ad_BRID00); ROLLBACK; RETURN; end if; END IF; --1、判断用户输入的挂号类别是否存在 --if (ad_GHKS00<>0) and ((as_GHLBMC<>'0') or (as_GHLBMC='免费号')) then if (as_GHLBMC<>'0') then BEGIN select LBBH00 into ls_GHLB00 from BM_GHLBB0 where LBMC00 = as_GHLBMC; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统没有找到满足条件的挂号类别名称,请重新输入该病人的挂号类别!'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; END; end if; if ad_BRID00>0 and ls_YXCFGH='N' then--预交金挂号,要判定病人是否被重复挂号 select count(*) into ls_COUNT0 from vw_ys_yxgh00 where brid00=ad_BRID00 and GHKS00=ad_GHKS00 and JZYS00=ad_JZYS00 and GHLB00<>-99999 and instr(','||LS_YXCFGHLB||',',','||ls_GHLB00||',')=0; if ls_COUNT0 > 0 then as_YHMSG0:='该病人已经挂过号,不允许重复挂号!'; as_SYSMSG:=SQLERRM||'brid00='||to_char(ad_BRID00); ROLLBACK; RETURN; end if; end if; IF as_ICKH00 <> '0' THEN BEGIN select NVL(SFDM00,0),NVL(ICKJE0,0) into ls_ICKDM0,ls_ICKJE0 from IC_YHXX00 where ICKH00 = as_ICKH00 and ZT0000 = '0'; if ls_ICKDM0 <> 0 then select trim(XMMC00), NVL(trim(DW0000),'次') into ls_ICKMC0,ls_ICKDW0 from BM_YYSFXM where SFXMID = ls_ICKDM0; end if; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='非法卡,请重新输入病人的就诊卡号!'; as_SYSMSG:=SQLERRM||'select * from IC_YHXX00 where zt0000=0 and ICKH00 = '||as_ICKH00; ROLLBACK; RETURN; END; END IF; BEGIN select HZLB00 into ls_HZLB00 from BM_HZLB00 where HZLBMC = as_HZLB00; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统无法得到该挂号病人的优先级别对应的编码,请与系统管理员联系!'; as_SYSMSG:=SQLERRM||'select * from BM_HZLB00 where HZLBMC = '||as_HZLB00; ROLLBACK; RETURN; END; --判断是否急诊挂号病人 if ad_BRID00>0 then select BZ0000 into ls_BZ0000 from BM_BRXXB0 WHERE BRID00 = ad_BRID00; if ls_BZ0000='急诊' then select count(*) into ls_COUNT0 from sf_brxxb0 where BRID00 = ad_BRID00; if ls_COUNT0=0 then if INSTR(as_GHLBMC,'急诊')<=0 then as_YHMSG0:='该病人为急诊收费处建卡的病人,第一次挂号必须挂急诊号,病人挂号登记失败!'; as_SYSMSG:=SQLERRM||'brid00='||to_char(ad_BRID00); ROLLBACK; RETURN; end if; end if ; end if ; end if ; --先得到挂号有效天数,Modified on 2001-09-28 BEGIN select NVL(max(VAlUE0),1) into ls_GHYXTS from XT_XTCS00 where name00 = 'GHYXTS'; EXCEPTION WHEN OTHERS THEN ls_GHYXTS:=1 ; --若没有查找到,设置成1天 END; BEGIN select NVL(rtrim(VAlUE0),'Y') into ls_YBGHFJF from XT_XTCS00 where name00 = 'SF_YBGHFJF'; EXCEPTION WHEN OTHERS THEN ls_YBGHFJF:='Y' ; --若没有查找到,设置成医保病人挂号附加费打印在发票上 END; BEGIN select NVL(rtrim(value0),'0') into ls_GHDLX0 from XT_XTCS00 where name00 = 'SF_GHDLX0'; EXCEPTION WHEN OTHERS THEN ls_GHDLX0:='0'; --若没有查找到,挂号单类型默认为'0', ls_GHDLX0=221094:挂号单使用发票 END; if ad_GHY000 = ad_JZYS00 then --为了不修改医生工作站的程序,所以直接判断挂号员与医生是否为同一个人 ls_SFYDJ0:='0'; else ls_SFYDJ0:='1'; end if; if as_SFHSGH='Y' THEN ls_SFYDJ0:='0'; END IF; --建阳医院修改余额 if (ls_YBSFYXQF='Y') then begin select TYDWMC,fbbh00 into ls_tydw00,ls_brfb00 from bm_brxxb0 where brid00=ad_BRID00; exception when others then ls_tydw00:=''; end; if ls_BRFB00=3 and (ad_GHY000<>ad_JZYS00) then--收费处挂号的,有传递as_ybzhye,医生站挂号的没有 if (ls_tydw00 not in('建阳市本级离休、5.12、二乙人员','建阳市乡镇离休、512人员')) then update sf_brzhxx set YXQFJE=as_ybzhye+ls_ICKJE0 where brid00=ad_BRID00; end if; end if; end if; --.判断病人能否挂号,若是住院病人就不能挂号 select count(*) into ls_COUNT0 from ZY_BRXXB0 where BRID00 = ad_BRID00 and nvl(CYRQ00,'20991231')='20991231' and exists (select 1 from XT_XTCS00 where NAME00='ZY_ZYQJYXMZJZ' and Value0<>'Y'); --未出院的病人 if ls_COUNT0 > 0 then as_YHMSG0:='该病人正在住院,不能挂号,病人挂号登记失败!'; as_SYSMSG:=SQLERRM||'brid00='||to_char(ad_BRID00); ROLLBACK; RETURN; end if; IF as_SFSBLF = 'Y' THEN BEGIN select SFXMID,NVL(SFJE00,0),XMMC00 into ls_BLSFDM,ls_BLSFJE,ls_BLXMMC from BM_YYSFXM WHERE SFXMID=(SELECT to_number(VALUE0) from XT_XTCS00 where name00='SF_BLGBFSFXMBH') and MZFPID is not null and NVL(SFJE00,0) <> 0 and rownum = 1; if ls_BLSFJE = 0 then as_YHMSG0:='病历工本费所对应的收费金额未确定,请与系统管理人员联系,先确定病历工本费后,再进行本操作!'; as_SYSMSG:=SQLERRM||'select sfje00 from bm_yysfxm where xmmc00 = 病历工本费'; ROLLBACK; RETURN; end if; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统未找到病历工本费所对应的收费项目,请先定义病历工本费后再进行本操作!'; as_SYSMSG:=SQLERRM||'Not exists select * from bm_yysfxm where xmmc00='||'病历工本费'; ROLLBACK; RETURN; END; END IF; --0.若挂号有指定医生,查找医生的科室编号 if ad_JZYS00 <> 0 then BEGIN select BMBH00 into ls_YSKS00 from BM_YGBM00 where YGBH00 = ad_JZYS00; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='查找不到该医生对应的挂号科室名称!'; as_SYSMSG:=SQLERRM||'YGBH00='||to_char(ad_JZYS00); ROLLBACK; RETURN; END; end if; if ls_GHLB00<>-99999 then select to_number(nvl(trim(max(value0)),'0')) into ls_YBSKBRXZJE from xt_xtcs00 where name00='SF_YBSKBRXZJE'; if ls_YBSKBRXZJE<>0 then select count(*) into ls_COUNT0 from xt_xtcs00 where name00='YJ_YJMRGHLB' and to_number(value0)=ls_ghlb00; if ls_COUNT0=0 then select nvl(max(sdczfs),'0') into ls_sdczfs from sf_brzhxx where brid00=ad_BRID00; if ls_sdczfs='1' then --昨天开始未结算的费用超过一定值,要进行限制 begin --允许未发送的天数 select trim(VALUE0) into ls_wfsts0 from XT_XTCS00 where NAME00='SF_YBWFSZDTS'; exception when others then ls_wfsts0:='-1'; end; select sum(hjje00) into ls_wjsje0 from sf_brfy00 where brid00=ad_BRID00 and jzdh00+0=0 and czrq00 <=to_char(sysdate-1,'YYYYMMDD'); if ls_wfsts0<>'-1' then begin select nvl(min(CZRQ00),to_char(sysdate,'YYYYMMDD')) into ls_minRQ0 from sf_brfy00 a where brid00=ad_BRID00 and jzdh00+0=0 and YBDJH0='0'; if ls_wjsje0=0 and ls_minRQ0<>to_char(sysdate,'YYYYMMDD') then --被冲销的设置一个值 update SF_BRFY00 set JZDH00=-1 where brid00=ad_BRID00 and jzdh00+0=0 and czrq00 <=to_char(sysdate-1,'YYYYMMDD'); ls_minRQ0:=to_char(sysdate,'YYYYMMDD'); end if; exception when others then ls_minRQ0:=to_char(sysdate,'YYYYMMDD'); end; end if; select sum(hjje00) into ls_wjsje0 from sf_brfy00 where brid00=ad_BRID00 and jzdh00+0=0 and czrq00 <=to_char(sysdate-1,'YYYYMMDD'); IF (ls_wjsje0 > ls_YBSKBRXZJE) then as_YHMSG0:='该病人未结算的费用超过'||to_char(ls_YBSKBRXZJE)||'元,请先到收费处结算!'; as_SYSMSG:=SQLERRM||'brid00='||to_char(ad_BRID00); ROLLBACK; RETURN; end if; IF (ls_wfsts0<>'-1') and ((sysdate-to_date(ls_minRQ0,'YYYY.MM.DD'))>=to_number(ls_wfsts0)) Then as_YHMSG0:='该病人未结算的费用超过'||ls_wfsts0||'天未发送,请先到收费处结算!'; as_SYSMSG:=SQLERRM||'brid00='||to_char(ad_BRID00); ROLLBACK; RETURN; end if; end if; end if; end if; end if; select count(1) into ls_COUNT0 from SF_JKKSGH a, sf_brzhxx b where a.JKKSBH=b.czyks0 and b.brid00=ad_BRID00; if ls_COUNT0>0 then --体检科建的卡 select count(1) into ls_COUNT0 from SF_JKKSGH a, sf_brzhxx b where a.JKKSBH=b.czyks0 and b.brid00=ad_BRID00 and a.GHLBBH = ls_GHLB00; IF ls_COUNT0 = 0 then SELECT A.BMMC00 INTO ls_JKKSMC FROM BM_BMBM00 A,sf_brzhxx B WHERE A.BMBH00=B.CZYKS0 AND B.BRID00= ad_BRID00; as_YHMSG0:=ls_JKKSMC||'建的卡不能挂'||trim(as_GHLBMC); as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; end if; end if; if ls_GHDJXZ='Y' then--进行医生挂号等级限制 select count(*) into ls_COUNT0 from BM_GHLBB0 where LBBH00 =ls_GHLB00 and GHDJ00>(select GHDJ00 from BM_GHLBB0 where lbbh00=(select MRGHLB from BM_YGBM00 where YGBH00=ad_JZYS00 and ad_GHY000=ad_JZYS00)); if ls_COUNT0>0 then as_YHMSG0:='不能挂级别高的号!*'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; end if; end if; --2、得到挂号费对应的收费代码 BEGIN select NVL(SFXMID,0),YDJM00 into ls_SFDM00,ls_YDJM00 from VW_SF_GHF000 where GHLB00 = ls_GHLB00 and SFYY00 = as_SFYYGH ;--'Y':预约挂号,'N':正常挂号 EXCEPTION WHEN OTHERS THEN if (trim(as_SFYYGH) <> 'Y') then --若不是预约挂号,则提示挂号费表维护不完整! ls_SFDM00:=0; --Modify on 2002-12-26,放宽该条件 end if; END; IF ls_SFDM00 <> 0 THEN select count(A.FPXMID) into ls_COUNT0 from BM_FPXM00 A,BM_YYSFXM B where A.FPXMID = B.MZFPID and B.SFXMID=ls_SFDM00; if ls_COUNT0 = 0 then as_YHMSG0:='病人挂号操作失败,挂号费对应的发票项目不完整!'; as_SYSMSG:='BM_YYSFXM.SFXMID='||to_char(ls_SFDM00)||'的MZFPID的值NOT IN BM_FPXM00.FPXMID!'; ROLLBACK; RETURN; end if; END IF; /* if (ad_GHKS00=0) and (as_GHLBMC<>'0') then begin select xmmc00 into ls_xmmc00_1 from bm_yysfxm where sfxmid=ls_SFDM00; exception when others then ls_xmmc00_1:=''; end; end if; */ --3、判断用户输入的病人费别名称是否存在 BEGIN select FBBH00 into ls_FBBH00 from BM_BRFBB0 where FBMC00 = as_FBMC00; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统没有找到满足条件的病人费别名称,请重新输入该病人的费别名称!'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; END; if (ls_FBBH00=5) and (ls_GHLB00=12) THEN --广州中医院 as_YHMSG0:='省公医的病人不能挂简易门诊'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; end if; if (ls_gfxydw='Y') and (as_CZBZ00='1') then --公费病人建卡时一定要输入单位 if (ls_FBBH00 not in(1,3)) and (trim(as_TYDWMC)='' or trim(as_TYDWMC) is null) then as_YHMSG0:='公费病人必须输入单位名称'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; end if; end if; --4、判断用户输入的交费类别名称是否存在 IF as_CZBZ00 = '0' THEN --若是持卡病人(既有预交金账户的病人)挂号登记 BEGIN select JFLBID into ls_LBBH00 from BM_BRJFLB where SYBZ00 = '0'; --使用默认的门诊预交金账户,JFLBMC = as_JFLBMC; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统没有找到满足条件的病人的交费类别名称,请重新输入该病人的交费类别名称!'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; END; ELSE ls_LBBH00:=0; --交费类别(或预交金账户类别为0,说明该病人为现金病人) END IF; --5、将病人的挂号费做自动的结算,并得到结算单号 IF ls_LBBH00 = 0 THEN --只有是现金病人的才将挂号费也做结算 select SQ_SF_JZB000_JZDH00.nextval into ls_JZDH00 from dual; else --否则,若是医保的持卡病人,也要立刻结算的 if ad_GRZHZF = 0.0000999 then select SQ_SF_JZB000_JZDH00.nextval into ls_JZDH00 from dual; else ls_JZDH00 := 0; end if; END IF; Select SQ_SF_PJSYQK_PJH000.nextval into ls_PJH000 from dual; --挂号单的票据号 --6、得到门诊病人信息表(门诊挂号号表)的挂号号或病人ID select SQ_SF_BRXXB0_GHID00.nextval into ls_MZID00 from dual; if as_GHH000 is null or trim(as_GHH000) = '' then select SQ_SF_BRXXB0_GHH000.nextval into as_GHH000 from dual; end if; if as_TYDWMC is not null then begin select dwid00 into ls_tydwid from bm_tydwb0 where dwmc00=as_TYDWMC; exception when others then ls_tydwid:=null; end; end if; if ad_BRID00 = 0 then --若病人是现金病人 BEGIN select BRID00 into ls_BRID00 from BM_BRXXB0 where BRBLH0 = as_BRBLH0 and BRXM00=as_XM0000 and YBID00=as_YBID00; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN select count(*) into ls_COUNT0 from BM_BRXXB0 where BRBLH0 = as_BRBLH0; if ls_COUNT0 > 0 then as_YHMSG0:='您所输入的病人病历号已被使用,请重新输入病人的病历号!'; as_SYSMSG:=SQLERRM||'BRBLH0='||as_BRBLH0; ROLLBACK; RETURN; end if; Select SQ_BM_BRXXB0_BRID00.nextval into ls_BRID00 from dual; Insert into BM_BRXXB0(BRID00,BRBLH0,YBKH00,YBID00,YBLB00,BRXM00,BRXB00,BRCSRQ,FBBH00,BRGFZH,CZY000,CZRQ00,CZSJ00,RYCS00,ZYZT00,SFYX00,BRZY00,BRMZ00,BRZJLX,BRZJBH,BRJTDZ,TYDWMC,TYDWID,BRDH00,BRHYZK) values(ls_BRID00,as_BRBLH0,as_YBKH00,as_YBID00,as_ZPZH00,as_XM0000,as_XB0000,as_CSRQ00,ls_FBBH00,as_GFZH00,ad_GHY000,ls_CZRQ00,ls_CZSJ00,1,'0','Y',as_BRZY00,as_BRMZ00,as_BRZJLX,as_BRZJBH,as_BRJTDZ,as_TYDWMC,ls_tydwid,as_BRDH00,as_BRHYZK); END; END; ELSE BEGIN ls_BRID00 := ad_BRID00; if as_CZBZ00 = '1' then --现金病人挂号 Update BM_BRXXB0 SET BRCSRQ = as_CSRQ00, BRZY00 = as_BRZY00, BRMZ00 = as_BRMZ00, BRZJLX = as_BRZJLX, BRZJBH = as_BRZJBH, BRJTDZ = as_BRJTDZ, BRGFZH = as_GFZH00, TYDWID = ls_tydwid, TYDWMC = as_TYDWMC, BRDH00 = as_BRDH00, BRHYZK = as_BRHYZK where BRID00 = ls_BRID00; --根据挂号时信息修改 if SQL%NOTFOUND then Insert into BM_BRXXB0(BRID00,BRBLH0,YBKH00,YBID00,YBLB00,BRXM00,BRXB00,BRCSRQ,FBBH00,BRGFZH,CZY000,CZRQ00,CZSJ00,RYCS00,ZYZT00,SFYX00,BRZY00,BRMZ00,BRZJLX,BRZJBH,BRJTDZ,TYDWMC,TYDWID,BRDH00,BRHYZK) values(ls_BRID00,as_BRBLH0,as_YBKH00,as_YBID00,as_ZPZH00,as_XM0000,as_XB0000,as_CSRQ00,ls_FBBH00,as_GFZH00,ad_GHY000,ls_CZRQ00,ls_CZSJ00,1,'0','Y',as_BRZY00,as_BRMZ00,as_BRZJLX,as_BRZJBH,as_BRJTDZ,as_TYDWMC,ls_tydwid,as_BRDH00,as_BRHYZK); end if; end if; END; end if; --for MZYS-20170106-001 ls_SFXEJS:='0'; begin select to_number(nvl(max(trim(value0)),'0')) into ls_COUNT0 from XT_XTCS00 where NAME00='YS_GHXEJSZCFNL'; exception when others then ls_COUNT0:=0; end; if ls_COUNT0>0 then select nvl(trunc(sysdate)-trunc(to_date(brcsrq,'yyyyMMdd')),0) into Vcounter from bm_brxxb0 where brid00=ls_BRID00; if Vcounter <= ls_COUNT0*365 and Vcounter>0 then ls_SFXEJS := '1'; end if; end if; --7、填写病人挂号信息表 IF as_SFYYGH = 'Y' then ls_GHRQ00:=as_GHRQ00; else ls_GHRQ00:=ls_CZRQ00; end if; ls_OGHJE0:=0; if ls_SFDM00 <> 0 then begin SELECT substrb(VALUE0,1,14) into ls_yhdate_1 FROM XT_XTCS00 WHERE NAME00='YJ_HHSJD'; SELECT substrb(VALUE0,16,14) into ls_yhdate_2 FROM XT_XTCS00 WHERE NAME00='YJ_HHSJD'; select nvl(yhbl00,1) into ls_yhbl00 from BM_YYSFXM A,BM_YYHSXM B where A.hsxmid=B.hsxmid and A.SFXMID = ls_SFDM00 and to_char(sysdate,'YY.MM.DD HH24:MI') between ls_yhdate_1 and ls_yhdate_2; select NVL(ls_yhbl00,1) into ls_yhbl00 from dual; exception when others then ls_yhbl00:=1; end; select nvl(SFJE00*ls_yhbl00,0) into ls_OGHJE0 from BM_YYSFXM where SFXMID = ls_SFDM00; end if; --挂号费金额,本金额只是挂号的金额,不含诊疗费部门的金额 if ad_GHHBID > 0 then BEGIN select GHZKBH,GHMZSJ,GHQSSJ,GHMZSJ,GHJSSJ,GHHZCK into ls_GHZKBH,ls_HZQSRQ,ls_HZQSSJ,ls_HZJZRQ,ls_HZJZSJ,ls_GHHZCK from SF_YSGHHB where GHHBID = ad_GHHBID; EXCEPTION WHEN NO_DATA_FOUND THEN as_YHMSG0:='数据没有找到,请核对您所输入的医生挂号号表是否正确!'; as_SYSMSG:=SQLERRM||'GHHBID='||to_char(ad_GHHBID); ROLLBACK; RETURN; END; ELSE BEGIN ls_HZQSRQ:=ls_CZRQ00; ls_HZQSSJ:=ls_CZSJ00; ls_HZJZRQ:=ls_CZRQ00; ls_HZJZSJ:=ls_CZSJ00; ls_GHHZCK:=0; END; end if; if (ad_GHKS00<>0) and (as_GHLBMC<>'0') then -- 如果挂号科室和挂号类别不为空的话 select SQ_SF_HZBR00_ID0000.nextval into ls_HZLBID from dual; Insert into SF_HZBR00(ID0000,BRID00,GHH000,GHKS00,JZKS00,GHYS00,GHLB00,HZLB00,HZXH00,DJRQ00,DJSJ00,HZQSRQ,HZQSSJ,HZJZRQ,HZJZSJ,HZZT00,CZY000,YSPBID,JZZS00) values(ls_HZLBID,ls_BRID00,as_GHH000,ad_GHKS00,ad_GHKS00,ad_JZYS00,ls_GHLB00,ls_HZLB00,0,ls_CZRQ00,ls_CZSJ00,ls_HZQSRQ,ls_HZQSSJ,ls_HZJZRQ,ls_HZJZSJ,'0',ad_GHY000,ad_GHHBID,ls_GHHZCK); if (ls_XZHZXH='Y') AND (ls_ghlb00=-99999) THEN Update SF_HZBR00 set HZXH00 = as_HZXH00 --候诊序号 where ID0000 = ls_HZLBID; Update YS_HBHZXH SET BRID00=ls_BRID00, BRXM00= as_XM0000 --修改候诊序号 WHERE GHHBID=ad_GHHBID AND HZXH00=as_HZXH00; --SELECT NVL(YYBZ00,'1') INTO ls_YYBZ00 FROM YS_HBHZXH WHERE GHHBID=ad_GHHBID AND HZXH00=as_HZXH00; ls_HZSJTD_STR := NULL; ELSIF (ls_XZHZXH='Y') AND (ls_ghlb00<>-99999) THEN --ls_HZXH00 := NVL(substr(ls_HZSJTD_STR,35,5),'0'); ls_DLXH00 := -100; SELECT COUNT(1) INTO ls_COUNT0 FROM VW_YS_HZBR00 WHERE jzks00=ad_GHKS00 and jzys00=ad_JZYS00 AND BRID00=ls_BRID00 and DLXH00>0 AND GHLB00=-99999 AND YSPBID=ad_GHHBID; IF ls_COUNT0>0 THEN --如果存在一个预约挂号,就是预约挂号转正式挂号 SELECT TO_CHAR(NVL(MAX(HZXH00),0)), MAX(HZLB00), NVL(MAX(DLXH00),-100) INTO ls_HZXH00, ls_HZLB00, ls_DLXH00 FROM VW_YS_HZBR00 WHERE jzks00=ad_GHKS00 and jzys00=ad_JZYS00 AND BRID00=ls_BRID00 and DLXH00>0 AND GHLB00=-99999 AND YSPBID=ad_GHHBID; --and SUBSTR(LPAD(TO_CHAR(HZXH00),4,'0'),1,1)=ls_HZXHLB; ELSE SELECT COUNT(1) INTO ls_COUNT0 FROM VW_YS_HZBR00 WHERE jzks00=ad_GHKS00 and jzys00=ad_JZYS00 AND BRID00=ls_BRID00 and DLXH00>0 AND GHLB00<>-99999 AND YSPBID=ad_GHHBID; IF ls_COUNT0>0 THEN --如果是补挂号的情况 SELECT TO_CHAR(NVL(MAX(HZXH00),0)+1000), NVL((MAX(DLXH00)+50000),-100) INTO ls_HZXH00, ls_DLXH00 FROM VW_YS_HZBR00 WHERE jzks00=ad_GHKS00 and jzys00=ad_JZYS00 AND BRID00=ls_BRID00 and DLXH00>0 AND GHLB00<>-99999 AND YSPBID=ad_GHHBID; --and SUBSTR(LPAD(TO_CHAR(HZXH00),4,'0'),1,1)=ls_HZXHLB; ELSE --有出现过候诊序号丢失的情况 select to_char(nvl(max(hzxh00),0)) into ls_HZXH00 from ys_hbhzxh where ghhbid=ad_GHHBID and brid00=ls_BRID00; if ls_HZXH00 = '0' then ls_DLXH00 := -100; end if; END IF; END IF; Update SF_HZBR00 set HZXH00 = ls_HZXH00, --候诊序号 HZLB00 = ls_HZLB00 where ID0000 = ls_HZLBID; IF (ls_DLXH00<>-100) AND (ls_HZLB00=2) THEN Update SF_HZBR00 set DLXH00=ls_DLXH00 where ID0000 = ls_HZLBID; END IF; --省二预约挂号,正式挂号时候,补收预约费,并把预约记录状态改为就诊 if (ls_XZHZXH='Y') and (ls_ghlb00<>-99999) then begin select YYID00 into LS_YYID00 from YS_HBHZXH where GHHBID=ad_GHHBID and HZXH00=ls_HZXH00 and BRID00=ad_BRID00; exception when others then LS_YYID00:=0; end; end if; ELSE BEGIN ls_HZSJTD_STR:=trim(SF_YS_HZSJ00(ls_HZLBID,trim(as_jzsj00))); --根据函数得到相关的时间段 --ls_HZSJTD_STR:=trim(SF_YS_HZSJ00(ls_HZLBID)); --根据函数得到相关的时间段 EXCEPTION WHEN OTHERS THEN as_YHMSG0:='获得候诊时间出错误,请稍候再试!'; as_SYSMSG:=SQLERRM||'SF_YS_HZSJ00('||to_char(ls_HZLBID)||')'; ROLLBACK; RETURN; END; if ls_HZSJTD_STR is not null then ls_HZXH00 := NVL(substr(ls_HZSJTD_STR,35,5),'0'); ls_HZXHLB := SUBSTR(LPAD(ls_HZXH00,4,'0'),1,1); ls_DLXH00 := -100; IF (ls_ghlb00<>-99999) THEN SELECT TO_CHAR(NVL(MAX(HZXH00),TO_NUMBER(ls_HZXH00))), NVL(MAX(HZLB00),ls_HZLB00), NVL(MAX(DLXH00),-100) INTO ls_HZXH00, ls_HZLB00, ls_DLXH00 FROM VW_YS_HZBR00 WHERE jzks00=ad_GHKS00 and jzys00=ad_JZYS00 AND BRID00=ls_BRID00 and DLXH00>0 AND GHLB00=-99999 AND YSPBID=ad_GHHBID; --and SUBSTR(LPAD(TO_CHAR(HZXH00),4,'0'),1,1)=ls_HZXHLB; END IF; Update SF_HZBR00 set HZQSRQ = NVL(substr(ls_HZSJTD_STR,1,8),ls_CZRQ00), --候诊起始日期 HZQSSJ = NVL(substr(ls_HZSJTD_STR,9,8),ls_CZSJ00), --候诊起始时间 HZJZRQ = NVL(substr(ls_HZSJTD_STR,18,8),ls_CZRQ00), --候诊结束日期 HZJZSJ = NVL(substr(ls_HZSJTD_STR,26,8),ls_CZSJ00), --候诊结束时间 HZXH00 = ls_HZXH00, --候诊序号 HZLB00 = ls_HZLB00 where ID0000 = ls_HZLBID; IF (ls_DLXH00<>-100) AND (ls_HZLB00=2) THEN Update SF_HZBR00 set DLXH00=ls_DLXH00 where ID0000 = ls_HZLBID; END IF; end if; END IF; end if; BEGIN select A.YBBRLB,B.YBZXLB,B.YBLB00 into ls_YBBRLB,ls_YBZXLB,ls_YBLB00 from BM_BRXXB0 A,IC_YBBRLB B where A.YBLB00 = B.YBLB00 and A.FBBH00 = B.FBBH00 and A.BRID00 = ls_BRID00 and B.FBBH00 =ls_FBBH00; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统提取该病人的类别名称时,未查找到满足条件的记录!'; as_SYSMSG:=SQLERRM||'select A.YBBRLB,B.YBZXLB from BM_BRXXB0 A,IC_YBBRLB B where A.YBLB00 = B.YBLB00 and A.FBBH00 = B.FBBH00 and A.BRID00 ='||to_char(ls_BRID00)||' and FBBH00 ='||to_char(ls_FBBH00); ROLLBACK; RETURN; END; --发现SF_YS_HZSJ00返回的参数有问题,故添加了如下的重新得到函数的返回值 --ls_HZSJTD_STR:=NVL(substr(ls_HZSJTD_STR,1,8),ls_CZRQ00)||NVL(substr(ls_HZSJTD_STR,9,8),ls_CZSJ00)||','||NVL(substr(ls_HZSJTD_STR,18,8),ls_CZRQ00)||NVL(substr(ls_HZSJTD_STR,26,8),ls_CZSJ00)||','||NVL(substr(ls_HZSJTD_STR,35,5),'0'); --特殊处理OVER! --if (ad_GHKS00=0) and ((as_GHLBMC='0') or (as_GHLBMC<>'0')) and (ls_ghlbbh<>'-100000') then if (ad_GHKS00=0) and (ls_ghlbbh<>'-100000') then insert into SF_BRXXB0(GHID00,BRBLH0,GHH000,YBGHH0,GHLB00,BRID00,SFCZ00,XM0000,XB0000,CSRQ00, FBBH00,LBBH00,GFZH00,GHRQ00,GHSJ00,GHY000,GHYXM0,GHKS00, JZRQ00,JZSJ00,JZKS00,JZYS00,JZYSXM,SFYY00,THBZ00,PJH000,GHYXTS,SFNLYD,HZLB00,HZSJD0, GHJE00,CZRQ00,CZSJ00,ghfzje,GHZKBH,GHSJD0,sfjzlb,ybzxlb,ybbrlb,YBLB00,SFZRZY) --Values(ls_MZID00,as_BRBLH0,as_GHH000,as_YBGHH0,ls_ghlbbh,ls_BRID00,as_SFCZ00,as_XM0000,as_XB0000,as_CSRQ00, Values(ls_MZID00,as_BRBLH0,as_GHH000,as_YBGHH0,decode(as_GHLBMC,'0',ls_ghlbbh,ls_GHLB00),ls_BRID00,as_SFCZ00,as_XM0000,as_XB0000,as_CSRQ00, --Values(ls_MZID00,as_BRBLH0,as_GHH000,as_YBGHH0,1,ls_BRID00,as_SFCZ00,as_XM0000,as_XB0000,as_CSRQ00, ls_FBBH00,ls_LBBH00,as_GFZH00,NVL(trim(substr(ls_HZSJTD_STR,1,8)),ls_CZRQ00),ls_CZSJ00,ad_GHY000,as_GHYXM0,0, NVL(trim(substr(ls_HZSJTD_STR,1,8)),ls_CZRQ00),ls_CZSJ00,ad_GHKS00,ad_JZYS00,as_JZYSXM,as_SFYYGH,1,ls_PJH000,ls_GHYXTS,as_SFNLYD,ls_HZLB00,ls_HZSJTD_STR, ls_sfje00,ls_CZRQ00,ls_CZSJ00,ls_sfje00,ls_GHZKBH,as_GHSJD0,as_sfjzlb,ls_YBZXLB,ls_YBBRLB,ls_YBLB00,as_SFZRZY); else insert into SF_BRXXB0(GHID00,BRBLH0,GHH000,YBGHH0,GHLB00,BRID00,SFCZ00,XM0000,XB0000,CSRQ00, FBBH00,LBBH00,GFZH00,GHRQ00,GHSJ00,GHY000,GHYXM0,GHKS00, JZRQ00,JZSJ00,JZKS00,JZYS00,JZYSXM,SFYY00,THBZ00,PJH000,GHYXTS,SFNLYD,HZLB00,HZSJD0, GHJE00,CZRQ00,CZSJ00,GHZKBH,GHSJD0,sfjzlb,ybzxlb,ybbrlb,YBLB00,SFZRZY) Values(ls_MZID00,as_BRBLH0,as_GHH000,as_YBGHH0,ls_GHLB00,ls_BRID00,as_SFCZ00,as_XM0000,as_XB0000,as_CSRQ00, ls_FBBH00,ls_LBBH00,as_GFZH00,NVL(trim(substr(ls_HZSJTD_STR,1,8)),ls_CZRQ00),ls_CZSJ00,ad_GHY000,as_GHYXM0,ad_GHKS00, NVL(trim(substr(ls_HZSJTD_STR,1,8)),ls_CZRQ00),nvl(as_JZSJ00,ls_CZSJ00),ad_GHKS00,ad_JZYS00,as_JZYSXM,as_SFYYGH,'1',ls_PJH000,ls_GHYXTS,as_SFNLYD,ls_HZLB00,ls_HZSJTD_STR, ls_OGHJE0,ls_CZRQ00,ls_CZSJ00,ls_GHZKBH,as_GHSJD0,as_sfjzlb,ls_YBZXLB,ls_YBBRLB,ls_YBLB00,as_SFZRZY); end if; select count(1) into ls_COUNT0 from BM_TYZD00 a where ZDMC00 = '来人提醒医保类别' and BZ0000 = to_char(ls_FBBH00) and exists (select 1 from bm_brxxb0 where BRID00=ls_BRID00 and YBLB00=trim(a.MC0000)); --重要来人短信通知 if (ls_COUNT0>0) then SP_YJ_DXTZ00(ls_BRID00,'来人提醒','挂号',ad_GHY000,ad_GHKS00,'N',Vzxcgbz,as_YHMSG0,as_SYSMSG); end if; --先得到费用表、费用明细表都要用到的单据号 select SQ_SF_BRJFB0_DJH000.nextval into ls_DJH000 from dual; --8.0.若病人是现金病人,说明该病人的挂号附加费是要立刻结算的,否则这些费用可以日后结算 IF as_YBID00 <> '0' THEN --说明:若是医保病人,将病人的费用拆分成2条费用 select SQ_SF_BRJFB0_DJH000.nextval into ls_FJDJH0 from dual; if ls_LBBH00 = 0 or ad_GRZHZF = 0.0000999 then --若是医保的现金病人,立刻结算,若是医保的持卡病人,若要立刻结算的 select SQ_SF_JZB000_JZDH00.nextval into ad_FJJZDH from dual; select SQ_SF_PJSYQK_PJH000.nextval into ls_FJPJH0 from dual; end if; else --说明:若是非医保病人,病人的费用只有一条费用 IF ls_GHDLX0 = '221094' THEN BEGIN select SQ_SF_BRJFB0_DJH000.nextval into ls_FJDJH0 from dual; select SQ_SF_JZB000_JZDH00.nextval into ad_FJJZDH from dual; select SQ_SF_PJSYQK_PJH000.nextval into ls_FJPJH0 from dual; END; ELSE BEGIN ls_FJDJH0:=ls_DJH000; if ls_LBBH00 = 0 then ad_FJJZDH := ls_JZDH00; ls_FJPJH0 := ls_PJH000; end if; END; END IF; END IF; --Add at 广州 on 2002-12-01,在收费项目视图中按费别,医保中心类别,病人类别等字段来获得对应的自付比例 --判定挂号的合法性,只能挂限制的号 select count(*) into ls_COUNT0 from xt_xtcs00 where name00='YJ_YJMRGHLB' and to_number(value0)=ls_ghlb00; if ls_COUNT0=0 then--不是医技默认挂号,需要进行判定 begin begin select lbbh00 into ls_xzghlb_byzg from bm_ghlbb0 where lbbh00 in (select to_number(value0) from xt_xtcs00 where name00='SF_BYZGGHLB'); exception when others then ls_xzghlb_byzg:=-1; end; select count(1) into ls_count0 from bm_ygbm00 a,bm_brxxb0 b where a.ygbh00=b.ygbh00 and b.brid00=ls_BRID00; --if ls_count0>0 then--本院职工 --if ls_xzghlb_byzg<>ls_ghlb00 then -- select lbmc00 into as_YHMSG0 from bm_ghlbb0 where lbbh00=ls_xzghlb_byzg; -- as_YHMSG0:='挂号类别不对,本院职工只能挂"'||as_YHMSG0||'"!'; -- as_SYSMSG:='请重新选择挂号类别!'; -- ROLLBACK; -- RETURN; --end if; --else--普通病人 if ls_count0=0 then--非本院职工 if ls_xzghlb_byzg= ls_ghlb00 then select lbmc00 into as_YHMSG0 from bm_ghlbb0 where lbbh00=ls_xzghlb_byzg; as_YHMSG0:='挂号类别不对,非本院职工不能挂"'||as_YHMSG0||'"!'; as_SYSMSG:='请重新选择挂号类别!'; ROLLBACK; RETURN; end if; begin select nvl(xzghlb,'0') into ls_xzghlb from bm_ybbrlb where ybbrlb=ls_ybbrlb and ybzxlb=ls_ybzxlb and rownum=1; exception when others then ls_xzghlb:='0'; end; IF (as_SFHSGH='N') AND (ls_ghlb00=-99999) THEN as_YHMSG0:='挂号失败,该挂号类别只能在护士站使用'; as_SYSMSG:='请重新选择挂号类别!'; ROLLBACK; RETURN; END IF; if (ls_xzghlb<>'0') AND (ls_ghlb00<>-99999) then if INSTR(','||ls_xzghlb||',',','||ls_ghlb00||',')=0 then --select lbmc00 from bm_ghlbb0 where INSTR(ls_xzghlb,','|| lbbh00||',')>0; FOR LBMC IN CUR_BM_GHLBB0_MC LOOP as_YHMSG0 := as_YHMSG0 ||';'||LBMC.LBMC00; END LOOP; as_YHMSG0:='挂号类别不对,该病人只能挂"'||as_YHMSG0||'"!'; as_SYSMSG:='请重新选择挂号类别!'; ROLLBACK; RETURN; end if; --else --如果自己没有限号,也不能挂其他人的限制号 -- select count(*) into ls_xzghlb from bm_ybbrlb where xzghlb=ls_ghlb00 and rownum=1; -- if ls_xzghlb>0 then -- select lbmc00 into as_YHMSG0 from bm_ghlbb0 where lbbh00=ls_ghlb00; -- as_YHMSG0:='挂号类别不对,该病人不能挂"'||as_YHMSG0||'"!'; -- as_SYSMSG:='请重新选择挂号类别!'; -- ROLLBACK; -- RETURN; -- end if; end if; end if; exception when others then ls_xzghlb_byzg:=0; end; end if; --8、填写病人的费用的详细的信息 --a、挂号费信息的添加 ls_GFBL00 := 0; ls_JZBL00 := 0; --特殊医院特殊处理,广东省中医院还要挂号费进行拆分(如:残疾人士,特困人士,其挂号费还可能要减免) BEGIN IF ls_SFDM00 <> 0 THEN --广州特困病人挂“简易医生”时挂号费用1元照收 add by xzw MZSF-20070203-007+残疾军人挂号时:若挂专家或名专家号则费用照收MZSF-20070203-008 if (ls_GHDLX0='9') and (((ls_FBBH00=10) and (ls_GHLB00=12)) or ((ls_FBBH00=9) and ((ls_GHLB00=60005) or (ls_GHLB00=10)))) then select 0,0,NVL(XMJE00*1,0),NVL(XMJE00*1,0),0,0 into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE from VW_BM_YBSFDY where YBBRLB = ls_YBBRLB and YBZXLB = ls_YBZXLB and SFXMID = ls_SFDM00 and FBBH00 = ls_FBBH00 and SFYP00 = 'N'; --是否药品 else select NVL(1-ZFBL00-JMBL00,0),NVL(JMBL00,0),NVL(XMJE00*ls_yhbl00,0),NVL(ZFJE00*ls_yhbl00,0),NVL(XMJE00*ls_yhbl00-ZFJE00*ls_yhbl00-JMJE00*ls_yhbl00,0),NVL(JMJE00*ls_yhbl00,0) into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE from VW_BM_YBSFDY where YBBRLB = ls_YBBRLB and YBZXLB = ls_YBZXLB and SFXMID = ls_SFDM00 and FBBH00 = ls_FBBH00 and SFYP00 = 'N'; --是否药品 end if; ELSE ls_JZBL00 := 0; ls_GFBL00 := 0; ls_MXHJJE := 0; ls_MXZFJE := 0; ls_MXJZJE := 0; ls_MXGFJE := 0; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN as_YHMSG0:='挂号类型未定义错误,请先维护该类别的病人对应的挂号费等信息后再进行本操作!'; as_SYSMSG:=SQLERRM||'未找到数据,select * from VW_BM_YBSFDY where YBBRLB = '||ls_YBBRLB||' and YBZXLB='||ls_YBZXLB||' and SFXMID ='||to_char(ls_SFDM00)||' and FBBH00 ='||to_char(ls_FBBH00)||' and SFYP00=N'; ROLLBACK; RETURN; WHEN OTHERS THEN as_YHMSG0:='获取该挂号类别对应的挂号费的自付比例、记账比例时,出现异常错误!'; as_SYSMSG:=SQLERRM||'select * from VW_BM_YBSFDY where SFYP00 = N and YBBRLB ='||ls_YBBRLB||' and YBZXLB='||ls_YBZXLB||' and SFXMID='||to_char(ls_SFDM00)||'and FBBH00='||to_char(ls_FBBH00); ROLLBACK; RETURN; END; IF as_SFNLYD = 'Y' and ls_YDJM00 = 'Y' THEN --若as_SFNLYD='Y',说明有老年优待,同时该类别的挂号号允许减免,则应处理免收挂号费,否则按收费项目的对应关系获取比例 ls_GFBL00 := 1; ls_JZBL00 := 0; ls_MXZFJE := 0; ls_MXJZJE := 0; --ls_MXGFJE := ls_MXHJJE; ls_MXGFJE := 0;--泉州老年优待金额为0不产生费用 ls_MXHJJE := 0; END IF; --a.添加挂号费的费用 1=2 IF (ls_SFDM00 <> 0) and ((ls_MXZFJE+ls_MXJZJE)<>0) THEN IF YS_DETJZMSGHF='Y' THEN SELECT COUNT(1) INTO ls_count0 FROM sf_brxxb0 a,bm_bmbm00 b ,bm_ghlbb0 c where a.ghks00=b.bmbh00(+) and a.ghlb00=c.lbbh00 and a.THBZ00<>'0' and (trunc(sysdate-1/4)-a.GHYXTS-1) 1 THEN ls_SFSQGHF := '0'; ELSE ls_SFSQGHF := '1'; END IF; ELSE ls_SFSQGHF := '1'; END IF; if ls_SFSQGHF='1' then --自负金额+记帐金额大于0的才写挂号费明细 add by jlg insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) select SQ_SF_FYMX00_MXID00.nextval,ls_DJH000,SFXMID,XMMC00,'',DW0000,ls_MXHJJE,1,ls_MXHJJE,ls_MXZFJE,ls_MXGFJE,ls_MXJZJE, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_GFBL00-ls_JZBL00) from BM_YYSFXM where SFXMID = ls_SFDM00; if SQL%NOTFOUND then if (trim(as_SFYYGH) <> 'Y') then --若不是预约挂号,则提示挂号费表维护不完整! as_YHMSG0:='病人挂号费收取失败!请核对挂号费对应的收费标准是否合法!'; as_SYSMSG:=SQLERRM||'NOT EXISTS select from BM_YYSFXM where SFXMID = '||to_char(ls_SFDM00); ROLLBACK; RETURN; end if; end if; end if; --elsif (ad_GHKS00=0) and ((as_GHLBMC='0') OR (as_GHLBMC<>'0')) then --福大医院 elsif (ad_GHKS00=0) and (as_GHLBMC='0') then --福大医院 insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) values(SQ_SF_FYMX00_MXID00.nextval,ls_DJH000,ls_GHXMBH_1,ls_xmmc00_1,'','次',ls_sfje00,1,ls_sfje00,ls_sfje00,0,0, --values(SQ_SF_FYMX00_MXID00.nextval,ls_DJH000,decode(as_GHLBMC,'0',ls_GHXMBH_1,ls_SFDM00),ls_xmmc00_1,'','次',1,1,ls_sfje00,ls_sfje00,0,0, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_GFBL00-ls_JZBL00)); END IF; if ls_GHDLX0 = '9' then select SQ_SF_BRJFB0_DJH000.nextval into ls_WJSDJH from dual; end if; --广东省中医院格式的挂号单,其医院要求将记账部分放在发票中一起打印,故强行将其拆分成多条 --MODIFY:由于挂号的附加费可以由医保报销,所以将挂号附加费单独设置成一个单据号 --a.1.添加病人病历工本费 IF as_SFSBLF = 'Y' THEN --若有收病人病历本的工本费 BEGIN select NVL((1-ZFBL00-JMBL00),0),NVL(JMBL00,0),NVL(XMJE00-SCZFJE,0),NVL(ZFJE00-SCZFJE,0),NVL(XMJE00-ZFJE00-JMJE00,0),NVL(JMJE00,0),NVL(SCZFJE,0) into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,ls_SCZFJE from VW_BM_YBSFDY where SFXMID = ls_BLSFDM and FBBH00 = ls_FBBH00 and YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB and SFYP00 = 'N' and ROWNUM = 1; --得到对应的记账比例,公费比例 EXCEPTION WHEN OTHERS THEN as_YHMSG0:='病历工本费的对应项目维护不完整,请先维护好后再进行本操作!'; as_SYSMSG:=SQLERRM||'未找到数据,select * from VW_BM_YBSFDY where YBBRLB = '||ls_YBBRLB||' and YBZXLB='||ls_YBZXLB||' and SFXMID ='||to_char(ls_BLSFDM)||' and FBBH00 ='||to_char(ls_FBBH00)||' and SFYP00=N'; ROLLBACK; RETURN; END; if ls_GHDLX0 = '9' then --广东省中医院格式的挂号单,其医院要求将记账部分放在发票中一起打印,故强行将其拆分成多条 --对于广东省中医院的挂号附加费的拆分规则的说明: --先提取VW_BM_YBSFDY中的自付金额,公费金额,先添加一条自付金额+公费金额,再按记账金额添加新记录 if ls_SCZFJE <> 0 then Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) values(SQ_SF_FYMX00_MXID00.nextval,ls_FJDJH0,ls_BLSFDM,ls_BLXMMC,'','本',ls_SCZFJE,1,ls_SCZFJE,ls_SCZFJE,0,0, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,1); end if; if ls_MXHJJE <> 0 then Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) values(SQ_SF_FYMX00_MXID00.nextval,ls_WJSDJH,ls_BLSFDM,ls_BLXMMC,'','本',ls_MXHJJE,1,ls_MXHJJE,ls_MXZFJE,ls_MXGFJE,ls_MXJZJE, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_JZBL00-ls_GFBL00)); end if; else Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) values(SQ_SF_FYMX00_MXID00.nextval,ls_FJDJH0,ls_BLSFDM,ls_BLXMMC,'','本',ls_BLSFJE,1,ls_BLSFJE,ls_BLSFJE*(1-ls_JZBL00-ls_GFBL00),ls_BLSFJE*ls_GFBL00,ls_BLSFJE*ls_JZBL00, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_JZBL00-ls_GFBL00)); end if; END IF; --a.2收取卡费 IF as_ICKH00 <> '0' and ls_ICKJE0 <> 0 THEN BEGIN select NVL((1-ZFBL00-JMBL00),0),NVL(JMBL00,0),NVL(XMJE00-SCZFJE,0),NVL(ZFJE00-SCZFJE,0),NVL(XMJE00-ZFJE00-JMJE00,0),NVL(JMJE00,0),NVL(SCZFJE,0) into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,ls_SCZFJE from VW_BM_YBSFDY where SFXMID = ls_ICKDM0 and FBBH00 = ls_FBBH00 and YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB and SFYP00 = 'N' and ROWNUM = 1; --得到对应的记账比例,公费比例 EXCEPTION WHEN OTHERS THEN as_YHMSG0:='就诊卡的收费项目对应关系未维护完整,请先维护完整后再进行本操作!'; as_SYSMSG:=SQLERRM||'未找到数据,select * from VW_BM_YBSFDY where YBBRLB = '||ls_YBBRLB||' and YBZXLB='||ls_YBZXLB||' and SFXMID ='||to_char(ls_ICKDM0)||' and FBBH00 ='||to_char(ls_FBBH00)||' and SFYP00=N'; ROLLBACK; RETURN; END; if ls_GHDLX0 = '9' then --广东省中医院格式的挂号单,其医院要求将记账部分放在发票中一起打印,故强行将其拆分成多条 --对于广东省中医院的挂号附加费的拆分规则的说明: --先提取VW_BM_YBSFDY中的自付金额,公费金额,先添加一条自付金额+公费金额,再按记账金额添加新记录 if ls_SCZFJE <> 0 then Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) values(SQ_SF_FYMX00_MXID00.nextval,ls_FJDJH0,ls_ICKDM0,ls_ICKMC0,'',ls_ICKDW0,ls_SCZFJE,1,ls_SCZFJE,ls_SCZFJE,0,0, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,1); end if; if ls_MXHJJE <> 0 then Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) values(SQ_SF_FYMX00_MXID00.nextval,ls_WJSDJH,ls_ICKDM0,ls_ICKMC0,'',ls_ICKDW0,ls_MXHJJE,1,ls_MXHJJE,ls_MXZFJE,ls_MXGFJE,ls_MXJZJE, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_JZBL00-ls_GFBL00)); end if; else Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) values(SQ_SF_FYMX00_MXID00.nextval,ls_FJDJH0,ls_ICKDM0,ls_ICKMC0,'',ls_ICKDW0,ls_ICKJE0,1,ls_ICKJE0,ls_ICKJE0*(1-ls_JZBL00-ls_GFBL00),ls_ICKJE0*ls_GFBL00,ls_ICKJE0*ls_JZBL00, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_JZBL00-ls_GFBL00)); end if; END IF; IF as_ICKH00 <> '0' THEN --将该病人旧的卡进行作废登记 Insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH) select SQ_IC_YWLS00_YWID00.nextval,ICKH00,ad_GHY000,'5',ls_GHRQ00,ls_CZSJ00,ICKJE0,ICKH00 from IC_YHXX00 where BRID00 = ls_BRID00 and ZT0000 = '1'; Update IC_YHXX00 set ZT0000 = '4' --无效卡 where BRID00 = ls_BRID00 and ZT0000 = '1'; --再开始修改就诊卡的信息 Update IC_YHXX00 set BRID00 = ls_BRID00 , ZT0000 = '1' where ICKH00 = as_ICKH00 and ZT0000 = '0'; Insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH) values(SQ_IC_YWLS00_YWID00.nextval,as_ICKH00,ad_GHY000,'1',ls_CZRQ00,ls_CZSJ00,ls_ICKJE0,as_ICKH00); END IF; --b、挂号费附加费的添加,注意,挂号附加费的收取是对于非预约挂号的病人才适用 IF (trim(as_SFYYGH) <> 'Y') and (as_ZSQGFF<>'Y') THEN --若不是预约挂号,既是正常的挂号,开始收取病人的挂号附加费 select count(*) into ls_COUNT0 from SF_FJGHF0 where FJBRLB =as_SFCZ00 and FJGHLB = ls_GHLB00 and FJGHKS=ad_GHKS00; IF ls_COUNT0 = 0 THEN ls_TMPKS0 := ad_GHKS00; END IF; IF ls_COUNT0 > 0 THEN ls_TMPKS0 := -1; END IF; --按病人类别、挂号类别、挂号科室来算附加挂号费 ls_FJGHKS:=ad_GHKS00; OPEN CUR_SF_FJGHF0_GHF000; LOOP FETCH CUR_SF_FJGHF0_GHF000 INTO ls_FJFFBH; EXIT WHEN CUR_SF_FJGHF0_GHF000%NOTFOUND; begin SELECT substrb(VALUE0,1,14) into ls_yhdate_1 FROM XT_XTCS00 WHERE NAME00='YJ_HHSJD'; SELECT substrb(VALUE0,16,14) into ls_yhdate_2 FROM XT_XTCS00 WHERE NAME00='YJ_HHSJD'; select nvl(yhbl00,1) into ls_yhbl00 from BM_YYSFXM A,BM_YYHSXM B where A.hsxmid=B.hsxmid and A.SFXMID =ls_FJFFBH and to_char(sysdate,'YY.MM.DD HH24:MI') between ls_yhdate_1 and ls_yhdate_2; select NVL(ls_yhbl00,1) into ls_yhbl00 from dual; exception when others then ls_yhbl00:=1; end; BEGIN --广州中医院省公医(10%、20%)及市公医(10%、20%)的情况下,急诊病人诊金费要减免2元.MZSF-20070203-001 if (ls_GHDLX0='9') and ( ((ls_FBBH00=5) or (ls_FBBH00=7)) and (ls_GHLB00=2) and ((ls_YBZXLB='2') or (ls_YBZXLB='3'))) then select 0,0.3,4,4,0,2,4 into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,ls_SCZFJE from VW_BM_YBSFDY where SFXMID = ls_FJFFBH and FBBH00 = ls_FBBH00 and YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB and SFYP00 = 'N' and ROWNUM = 1; --得到对应的记账比例,公费比例 --省公医(全免)的情况下,急诊病人诊金费要减免3元 elsif (ls_GHDLX0='9') and ((ls_FBBH00=5) and (ls_GHLB00=2) and (ls_YBZXLB='1')) then select 0,0.5,3,3,0,3,3 into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,ls_SCZFJE from VW_BM_YBSFDY where SFXMID = ls_FJFFBH and FBBH00 = ls_FBBH00 and YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB and SFYP00 = 'N' and ROWNUM = 1; --得到对应的记账比例,公费比例 --市公医(全免)的情况下,急诊病人诊查费要减免6元,即诊金费为0 elsif (ls_GHDLX0='9') and ((ls_FBBH00=7) and (ls_GHLB00=2) and (ls_YBZXLB='1')) then select 0,1,0,0,0,6,0 into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,ls_SCZFJE from VW_BM_YBSFDY where SFXMID = ls_FJFFBH and FBBH00 = ls_FBBH00 and YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB and SFYP00 = 'N' and ROWNUM = 1; --得到对应的记账比例,公费比例 --其他 else begin select NVL((1-ZFBL00-JMBL00),0),NVL(JMBL00,0),NVL(XMJE00*ls_yhbl00-SCZFJE*ls_yhbl00,0),NVL(ZFJE00*ls_yhbl00-SCZFJE*ls_yhbl00,0),NVL(XMJE00*ls_yhbl00-ZFJE00*ls_yhbl00-JMJE00*ls_yhbl00,0),NVL(JMJE00*ls_yhbl00,0),NVL(SCZFJE*ls_yhbl00,0) into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,ls_SCZFJE from VW_BM_YBSFDY where SFXMID = ls_FJFFBH and FBBH00 = ls_FBBH00 and YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB and SFYP00 = 'N' and ROWNUM = 1; --得到对应的记账比例,公费比例 EXCEPTION WHEN OTHERS THEN as_YHMSG0:='挂号附加费的收费项目维护不完整,请先维护完整后再进行本操作!'; as_SYSMSG:=SQLERRM||'未找到数据,select * from VW_BM_YBSFDY where YBBRLB = '||ls_YBBRLB||' and YBZXLB='||ls_YBZXLB||' and SFXMID ='||to_char(ls_FJFFBH)||' and FBBH00 ='||to_char(ls_FBBH00)||' and SFYP00=N'; ROLLBACK; RETURN; end; end if; END; if ls_GHDLX0 = '9' then --广东省中医院格式的挂号单,其医院要求将记账部分放在发票中一起打印,故强行将其拆分成多条 --对于广东省中医院的挂号附加费的拆分规则的说明: --先提取VW_BM_YBSFDY中的自付金额,公费金额,先添加一条自付金额+公费金额,再按记账金额添加新记录 if ls_SCZFJE <> 0 then Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) select SQ_SF_FYMX00_MXID00.nextval,ls_FJDJH0,SFXMID,XMMC00,'',DW0000,ls_SCZFJE,1,ls_SCZFJE,ls_SCZFJE,0,0, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,1 from BM_YYSFXM where SFXMID = ls_FJFFBH; end if; -- if ls_MXHJJE <> 0 then if (ls_MXZFJE+ls_MXJZJE)<>0 then --上一行改为如此 jlg Insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) select SQ_SF_FYMX00_MXID00.nextval,ls_WJSDJH,SFXMID,XMMC00,'',DW0000,ls_MXHJJE,1,ls_MXHJJE,ls_MXZFJE,ls_MXGFJE,ls_MXJZJE, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_JZBL00-ls_GFBL00) from BM_YYSFXM where SFXMID = ls_FJFFBH; end if; --End of ls_JZBL00 <> 0 elsif (ls_MXZFJE+ls_MXJZJE+ls_SCZFJE)<>0 then --add by jlg insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) select SQ_SF_FYMX00_MXID00.nextval,ls_FJDJH0,SFXMID,XMMC00,'',DW0000,SFJE00,1,SFJE00, --decode(ls_fbbh00,'3',sfje00,SFJE00*(1-ls_JZBL00-ls_GFBL00)),decode(ls_fbbh00,'3',0,SFJE00*ls_GFBL00),decode(ls_fbbh00,'3',0,SFJE00*ls_JZBL00), -- decode(ls_fbbh00,'3',sfje00,'6',SFJE00*ls_JZBL00,SFJE00*(1-ls_JZBL00-ls_GFBL00)),decode(ls_fbbh00,'3',0,SFJE00*ls_GFBL00),decode(ls_fbbh00,'3',0,'6',SFJE00*(1-ls_JZBL00-ls_GFBL00),SFJE00*ls_JZBL00), decode(ls_fbbh00,'3',sfje00,'6',SFJE00*(1-ls_JZBL00-ls_GFBL00),SFJE00*(1-ls_JZBL00-ls_GFBL00)),decode(ls_fbbh00,'3',0,SFJE00*ls_GFBL00),decode(ls_fbbh00,'3',0,'6',SFJE00*ls_JZBL00,SFJE00*ls_JZBL00), ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00, ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_JZBL00-ls_GFBL00) from VW_SF_YYSFXM where SFXMID = ls_FJFFBH and FBBH00 = ls_FBBH00 and YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB and ROWNUM = 1; end if; --end of ls_GHDLX0='9' END LOOP; CLOSE CUR_SF_FJGHF0_GHF000; END IF; -- end of IF as_SFYYGH<>'Y' if (ad_GHHBID > 0) then BEGIN if ls_XZHZXH='Y' THEN ls_GHXZQK:='N'; END IF; if (trim(ls_GHXZQK) = 'N') and (ls_ghlb00<>-99999) then --- zjf add and(trim(ls_HZLB00)<>'3') Update SF_YSGHHB SET GHYGHS=NVL(GHYGHS,0)+1 where GHHBID = ad_GHHBID; end if; if (trim(ls_GHXZQK) = 'Y') AND (ls_ghlb00<>-99999) then Update SF_YSGHHB SET GHYGHS=NVL(GHYGHS,0)+1,GHYYHS=NVL(GHYYHS,0)+1 where GHHBID = ad_GHHBID; end if; if LS_YYID00>0 then Update SF_YSGHHB SET GHYYHS=NVL(GHYYHS,0)+1 where GHHBID = ad_GHHBID; end if; EXCEPTION WHEN NO_DATA_FOUND THEN as_YHMSG0:='数据没有找到,请核对您所输入的医生挂号号表是否正确!'; as_SYSMSG:=SQLERRM||'GHHBID='||to_char(ad_GHHBID); ROLLBACK; RETURN; END; end if; --Insert into SF_BRFY00,会自动触发修改SF_BRZHXX的TRIGGER --添加挂号费的信息,费用表SF_BRFY00 BEGIN select NVL(sum(HJJE00),0),NVL(sum(ZFJE00),0),NVL(sum(JZJE00),0),NVL(sum(GFJE00),0) into ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE from SF_FYMX00 where DJH000 = ls_DJH000; EXCEPTION WHEN NO_DATA_FOUND THEN ls_MXHJJE:=0; ls_MXZFJE:=0; ls_MXJZJE:=0; ls_MXGFJE:=0; END; if ls_MXHJJE <> 0 then insert into SF_BRFY00(DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00, HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00,CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0,JZDH00) values(ls_DJH000,as_GHH000,ls_MZID00,ls_LBBH00,ls_BRID00,as_XM0000,ls_FBBH00, ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,0,ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,ad_CZYKS0,ls_JZDH00); end if; --添加挂号附加费的信息 if ls_FJDJH0 <> ls_DJH000 then select NVL(sum(HJJE00),0),NVL(sum(ZFJE00),0),NVL(sum(JZJE00),0),NVL(sum(GFJE00),0) into ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE from SF_FYMX00 where DJH000 = ls_FJDJH0; if ls_MXHJJE <> 0 then insert into SF_BRFY00(DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00, HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00,CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0,JZDH00) values(ls_FJDJH0,as_GHH000,ls_MZID00,ls_LBBH00,ls_BRID00,as_XM0000,ls_FBBH00, ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,0,ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,ad_CZYKS0,ad_FJJZDH); end if; end if; if ls_GHDLX0 = '9' then --若是广东省中医院,还要进行挂号 select NVL(sum(HJJE00),0),NVL(sum(ZFJE00),0),NVL(sum(JZJE00),0),NVL(sum(GFJE00),0) into ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE from SF_FYMX00 where DJH000 = ls_WJSDJH; if ls_MXHJJE <> 0 then insert into SF_BRFY00(DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00, HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00,CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0,JZDH00) values(ls_WJSDJH,as_GHH000,ls_MZID00,ls_LBBH00,ls_BRID00,as_XM0000,ls_FBBH00, ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,0,ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,ad_CZYKS0,0); end if; end if; --10、若是现金病人,还应该填写病人交费表的信息,病人结账表、病人结账明细,若病人有预交金账户,不对其做结算处理 IF ls_LBBH00 = 0 THEN BEGIN select ZFFSBH ,ZFFSMC into ls_ZFFSBH,ls_ZFFSMC from BM_BRZFFS where ZFFSMC = '现金'; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统没有找到支付方式为现金的记录,门诊字典表BM_BRZFFS数据不完整,操作失败!'; as_SYSMSG:=SQLERRM||'select * from BM_BRZFFS where ZFFSMC ='||'现金'; ROLLBACK; RETURN; END; BEGIN select ZFFSBH ,ZFFSMC into ls_ZFFSBH_2,ls_ZFFSMC_2 from BM_BRZFFS where ZFFSBH = 7 and ZFFSMC like '%记账%'; EXCEPTION WHEN OTHERS THEN as_YHMSG0:='系统没有找到支付方式为记账的字典数据,门诊字典表BM_BRZFFS数据不完整,操作失败!'; as_SYSMSG:=SQLERRM||'select * from BM_BRZFFS where ZFFSBH = 7 and ZFFSMC like '|| '%记账%'; ROLLBACK; RETURN; END; --1.0、添加挂号费的现金交费金额 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) select SQ_SF_BRJFB0_DJH000.nextval,ls_BRID00,ls_LBBH00,ZFJE00,ls_ZFFSBH,ls_ZFFSMC,ls_PJH000, --对应挂号单的票据号 ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ls_JZDH00,1,ZFJE00 from SF_BRFY00 where DJH000 = ls_DJH000; --1.1、添加挂号费用的记账金额 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) select SQ_SF_BRJFB0_DJH000.nextval,ls_BRID00,ls_LBBH00,JZJE00,ls_ZFFSBH_2,ls_ZFFSMC_2,ls_PJH000, --对应挂号单的票据号 ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ls_JZDH00,1,JZJE00 from SF_BRFY00 where DJH000 = ls_DJH000; --2.0、添加挂号附加费的现金交费金额 if ls_DJH000 <> ls_FJDJH0 then select SQ_SF_BRJFB0_DJH000.nextval into ad_ZFDJH0 from dual; --自费金额对应的单据号 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) select ad_ZFDJH0,ls_BRID00,ls_LBBH00,ZFJE00,ls_ZFFSBH,ls_ZFFSMC,ls_FJPJH0, --对应现金发票的票据号 ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ad_FJJZDH,1,ZFJE00 from SF_BRFY00 where DJH000 = ls_FJDJH0; --2.1、添加挂号附加费的记账金额 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) select SQ_SF_BRJFB0_DJH000.nextval,ls_BRID00,ls_LBBH00,JZJE00,ls_ZFFSBH_2,ls_ZFFSMC_2,ls_PJH000, --对应挂号单的票据号 ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ls_JZDH00,1,JZJE00 from SF_BRFY00 where DJH000 = ls_FJDJH0; end if; END IF; --11、若结算单号<>'0',说明还应该对挂号费做结算登记 IF ls_JZDH00 <> 0 THEN --Insert into SF_JZB000 Insert into SF_JZB000(JZDH00,BRID00,MZID00,BRZJE0,JZJE00,GFJE00, HJJE00,JMJE00,GRZHZF,TCJJZF,ZFJE00,PJH000,JZRQ00,JZSJ00,XJFKJE,ZZFKJE,JZY000,YBZXLB,YBBRLB,YBLB00,FBBH00) select ls_JZDH00,ls_BRID00,ls_MZID00,HJJE00,JZJE00,GFJE00,HJJE00, 0,0,0,ZFJE00,ls_PJH000,ls_CZRQ00,ls_CZSJ00,ZFJE00,0,ad_GHY000,LS_YBZXLB,LS_YBBRLB,ls_YBLB00,ls_FBBH00 from SF_BRFY00 where DJH000 = ls_DJH000; --挂号费的费用结算,对应的票据是挂号单 --Insert into SF_JZMX00 Insert into SF_JZMX00(JZDH00,XMBH00,XMMC00,XMJE00,ZFBL00) select ls_JZDH00,B.FPXMID,B.XMMC00,sum(A.HJJE00),A.ZFBL00 from SF_FYMX00 A,BM_FPXM00 B,BM_YYSFXM C,SF_BRFY00 D where A.XMBH00 = C.SFXMID and C.MZFPID = B.FPXMID and A.DJH000 = D.DJH000 and D.JZDH00 = ls_JZDH00 group by D.JZDH00,B.FPXMID,B.XMMC00,A.ZFBL00; END IF; --添加挂号单票据的使用情况,补充:不管是收费员挂号的或医生挂号的,都要有挂号单的信息 BEGIN select NVL(sum(ZFJE00),0),NVL(sum(JZJE00),0) into ls_TMPJE0,ls_TMPJZ0 from SF_BRFY00 where DJH000 = ls_DJH000; --本句加sum,为了不会出现没有的记录(预约挂号有可能有没有的记录) EXCEPTION WHEN NO_DATA_FOUND THEN ls_TMPJE0:=0; ls_TMPJZ0:=0; END; IF as_CZBZ00 = '0' THEN --持卡病人 ls_PJXJJE := ls_TMPJE0; --不管是现金病人,还是持卡病人,所使用的都是现金金额 ls_PJZZJE := 0; --转账金额,也可称为从病人预交金账户上扣除的金额 ls_JZJE00:=ls_TMPJZ0; --记帐金额 else ls_PJXJJE := ls_TMPJE0; --票据上的现金金额 ls_PJZZJE := 0; --转账金额,也可称为从病人预交金账户上扣除的金额 ls_JZJE00:=ls_TMPJZ0; --记帐金额 END IF; IF as_SFYYGH <> 'Y' THEN --若不是预约挂号,则都要有挂号单的信息 Insert into SF_PJSYQK(PJH000,PLBH00,PLMC00,PJXH00,XJJE00,ZZJE00,CZY000,CZYXM0,DYRQ00,DYSJ00,SFDY00,PJZT00,XM0000,XB0000,BRID00,JZJE00) select ls_PJH000,PLBH00,PLMC00,DECODE(ls_SFYDJ0,'0','-'||as_YJJXH0,as_YJJXH0),ls_PJXJJE,ls_PJZZJE,ad_GHY000,as_GHYXM0, ls_GHRQ00,ls_CZSJ00,DECODE(ls_SFYDJ0,'0','N','Y'),'0',as_XM0000,as_XB0000,ls_BRID00,ls_JZJE00 from bm_pjlxb0 where PLBH00 = 0;--PLBH00=0是挂号单 if SQL%NOTFOUND then as_YHMSG0:='系统字典不完整,所需的票据类型不存在,操作失败!'; as_SYSMSG:=SQLERRM||'票据类型(挂号单)不存在: Not exists(select * from bm_pjlxb0 where PLBH00 = 0)'; ROLLBACK; RETURN; end if; --添加票据使用明细表的信息 --Insert into SF_PJSYMX(PJH000,XMBH00,XMMC00,XMJE00,XMBZ00) -- select ls_PJH000,XMBH00,XMMC00,XMJE00,0 from SF_JZMX00 where JZDH00 = ls_JZDH00; END IF; --11.2.若附加结算单号<>0,说明还应该对挂号附加费做结算登记,注意:附加费的单独结算只是对于医保病人适用 IF (ad_FJJZDH <> 0) and (ls_FJDJH0 <> ls_DJH000) THEN --Insert into SF_JZB000 Insert into SF_JZB000(JZDH00,BRID00,MZID00,BRZJE0,JZJE00,GFJE00,HJJE00, JMJE00,GRZHZF,TCJJZF,ZFJE00,PJH000,JZRQ00,JZSJ00, XJFKJE,ZZFKJE,JZY000,YBZXLB,YBBRLB,YBLB00,FBBH00) select ad_FJJZDH,ls_BRID00,ls_MZID00,HJJE00, JZJE00,GFJE00,ZFJE00,0,0,0,ZFJE00,ls_FJPJH0,ls_CZRQ00,ls_CZSJ00, ZFJE00,0,ad_GHY000,LS_YBZXLB,LS_YBBRLB,LS_YBLB00,ls_FBBH00 from SF_BRFY00 where DJH000 = ls_FJDJH0; --挂号附加费的费用结算,对应的票据是发票 --Insert into SF_JZMX00 Insert into SF_JZMX00(JZDH00,XMBH00,XMMC00,XMJE00,ZFBL00) select ad_FJJZDH,B.FPXMID,B.XMMC00,sum(A.HJJE00),A.ZFBL00 from SF_FYMX00 A,BM_FPXM00 B,BM_YYSFXM C,SF_BRFY00 D where A.XMBH00 = C.SFXMID and C.MZFPID = B.FPXMID and A.DJH000 = D.DJH000 and D.JZDH00 = ad_FJJZDH group by D.JZDH00,B.FPXMID,B.XMMC00,A.ZFBL00; --添加附加费结算对应的发票的使用情况 BEGIN select NVL(ZFJE00,0),NVL(JZJE00,0) into ls_TMPJE0,ls_TMPJZ0 from SF_BRFY00 where DJH000 = ls_FJDJH0; --ADD XUZW EXCEPTION WHEN NO_DATA_FOUND THEN ls_TMPJE0:=0; ls_TMPJZ0:=0; END; IF as_CZBZ00 = '0' THEN --持卡病人 ls_PJXJJE := ls_TMPJE0; --票据上的现金金额 ls_PJZZJE := 0; --转账金额,也可称为从病人预交金账户上扣除的金额 ls_JZJE00 := ls_TMPJZ0; --转帐金额 else ls_PJXJJE := ls_TMPJE0; --票据上的现金金额 ls_PJZZJE := 0; --转账金额,也可称为从病人预交金账户上扣除的金额 ls_JZJE00 := ls_TMPJZ0; --转帐金额 END IF; IF ls_YBGHFJF = 'Y' THEN --若挂号附加费打印在发票上, IF ls_PJXJJE+ls_PJZZJE+ls_JZJE00 <> 0 THEN --modify by xuzw Insert into SF_PJSYQK(PJH000,PLBH00,PLMC00,PJXH00,XJJE00,ZZJE00,CZY000,CZYXM0,DYRQ00,DYSJ00,SFDY00,PJZT00,XM0000,XB0000,BRID00,JZJE00) select ls_FJPJH0,PLBH00,PLMC00,as_FPXH00,ls_PJXJJE,ls_PJZZJE,ad_GHY000,as_GHYXM0, ls_GHRQ00,ls_CZSJ00,'Y','0',as_XM0000,as_XB0000,ls_BRID00,ls_JZJE00 from bm_pjlxb0 where PLBH00 = 1;--PLBH00=1是门诊发票 if SQL%NOTFOUND then as_YHMSG0:='系统字典不完整,所需的票据类型不存在,操作失败!'; as_SYSMSG:=SQLERRM||'票据类型(门诊发票)不存在: Not exists(select * from bm_pjlxb0 where PLBH00 = 1)'; ROLLBACK; RETURN; end if; END IF; --添加票据使用明细表的信息 --Insert into SF_PJSYMX(PJH000,XMBH00,XMMC00,XMJE00,XMBZ00) -- select ls_FJPJH0,XMBH00,XMMC00,XMJE00,0 from SF_JZMX00 where JZDH00 = ad_FJJZDH; ELSE --否则,挂号附加费打印在发票上 Update SF_JZB000 Set PJH000 = ls_PJH000 where JZDH00 = ad_FJJZDH; Update SF_PJSYQK Set XJJE00 = XJJE00 + ls_PJXJJE , ZZJE00 = ZZJE00 + ls_PJZZJE, JZJE00 = JZJE00 + ls_JZJE00 where PJH000 = ls_PJH000; END IF; END IF; --12、若是医保程序有返回医保挂号流水号,将医保传回的个人账户金额、统筹基金金额做为转账金额添加到病人交费表中. --注意核对在Insert完成后,病人账户的余额是否有变化,及SF_BRZHXX表中的病人的余额是否变化,注意核对! IF as_YBID00 <> '0' THEN select SQ_SF_BRJFB0_DJH000.nextval into ad_GRDJH0 from dual; --医保的统筹基金对应的单据号 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) values(ad_GRDJH0,ls_BRID00,ls_LBBH00,0,3,'医保个人账户',as_ZPZH00,ls_FJPJH0, ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ad_FJJZDH,1,0); select SQ_SF_BRJFB0_DJH000.nextval into ad_TJDJH0 from dual; --医保的个人账户对应的单据号 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) values(ad_TJDJH0,ls_BRID00,ls_LBBH00,0,4,'医保统筹基金',as_ZPZH00,ls_FJPJH0, ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ad_FJJZDH,1,0); select SQ_SF_BRJFB0_DJH000.nextval into ad_SBZHDH from dual; --商保个人帐户单据流水号 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) select ad_SBZHDH,ls_BRID00,ls_LBBH00,0,ZFFSBH,ZFFSMC,as_ZPZH00,ls_FJPJH0, ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ad_FJJZDH,1,0 from BM_BRZFFS where ZFFSBH=10; select SQ_SF_BRJFB0_DJH000.nextval into ad_SBTJDH from dual; --商保统筹基金单据流水号 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) select ad_SBTJDH,ls_BRID00,ls_LBBH00,0,ZFFSBH,ZFFSMC,as_ZPZH00,ls_FJPJH0, ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ad_FJJZDH,1,0 from BM_BRZFFS where ZFFSBH=11; -- select SQ_SF_BRJFB0_DJH000.nextval into ad_jjdjh0 from dual; --医保基金单据流水号 Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE) select ad_jjdjh0,ls_BRID00,ls_LBBH00,0,ZFFSBH,ZFFSMC,as_ZPZH00,ls_FJPJH0, ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,0,'0',0,ad_FJJZDH,1,0 from BM_BRZFFS where ZFFSBH=6; END IF; --14、非现金病人基本信息表的病人类别的修改 IF ad_BRID00 <> 0 THEN update BM_BRXXB0 set BRXM00 = as_XM0000, BRXB00 = as_XB0000, ZYZT00 = '0', --病人的状态改为门诊 BRLX00 = '复诊' -- BRDH00 = as_BRDH00, -- BRJTDZ = as_BRJTDZ where BRID00 = ls_BRID00; END IF; --特殊控制:考虑的其它报表的统计,由于广东省中医院在挂号时,有未结算的费用发生,但又没有结算的,所以人为将日期进行Update Update SF_FYMX00 set CZRQ00 = '18000101',ZXRQ00 = '18000101' where DJH000 in (select DJH000 from SF_BRFY00 where JZDH00+0 =0 and MZH000 = as_GHH000 and JFLBID = 0); Update SF_BRFY00 set CZRQ00 = '18000101' where JZDH00+0 =0 and MZH000 = as_GHH000 and JFLBID = 0; if (trim(SF_YJJGHZXJ)='Y') then--更新挂号在SF_FYMX00中的单据号 update sf_brxxb0 set djh000=ls_djh000 where ghid00=ls_MZID00; end if; --修正挂号费和诊查费的金额 if (ad_GHKS00<>0) and (as_GHLBMC<>'0') then -- 如果挂号科室和挂号类别不为空的话 update sf_brxxb0 A set ghfzje=(select hjje00 from sf_brfy00 where djh000=(select min(djh000) from sf_brfy00 where mzid00=ls_MZID00)), zcfje0=(select nvl(sum(X.hjje00),0) from SF_FYMX00 X,BM_YYSFXM S where x.djh000=(select min(djh000) from sf_brfy00 where mzid00=ls_MZID00) and X.xmbh00=S.sfxmid and MZFPID+0=6), ghje00=(select nvl(sum(X.hjje00),0) from SF_FYMX00 X,BM_YYSFXM S where x.djh000=(select min(djh000) from sf_brfy00 where mzid00=ls_MZID00) and X.xmbh00=S.sfxmid and MZFPID+0=4) where ghid00 = ls_MZID00; update sf_brxxb0 A set ghfzje=nvl(ghfzje,0),zcfje0=nvl(zcfje0,0),ghje00=nvl(ghje00,0) where ghid00 = ls_MZID00; END IF; select nvl(trim(max(ybghh0)),'0') into ls_ybghh0 from SF_YBSKJL where brid00 = ad_BRID00 and skrq00=to_char(sysdate,'yyyymmdd'); if ls_ybghh0='0' then select nvl(trim(max(ybghh0)),'0') into ls_ybghh0 from SF_BRXXB0 where brid00 = ad_BRID00 and GHRQ00=to_char(sysdate,'yyyymmdd') and ghlb00<>-99999; end if; if ls_ybghh0<>'0' then update sf_brxxb0 set ybghh0=ls_ybghh0 where ghid00= ls_MZID00 and ghlb00<>-99999; end if; --省二人民医院,补收预约费begin if ls_yyid00>0 then select count(*) into v_count from SF_YYBRB0 where YYID00=ls_yyid00 and YYZT00 IN ('0','1') and (DJH000=0 or DJH000 is null ); if v_count>0 then --取收费项目id begin select to_number(trim(value0)) into vSFXMID from xt_xtcs00 where name00='YY_YYSFXMID'; exception when others then as_YHMSG0:='补收费预约费失败,参数YY_YYSFXMID未设置!'; as_SYSMSG:=SQLERRM||'票据类型(挂号单)不存在: Not exists(select trim(value0) into vSFXMID from xt_xtcs00 where name00=YY_YYSFXMID)'; ROLLBACK; RETURN; end; --先得到费用表、费用明细表都要用到的单据号 select SQ_SF_BRJFB0_DJH000.nextval into ls_DJH000 from dual; ls_GFBL00 := 0; ls_JZBL00 := 0; ls_yhbl00 :=1; begin select NVL(1-ZFBL00-JMBL00,0),NVL(JMBL00,0),NVL(XMJE00*ls_yhbl00,0),NVL(ZFJE00*ls_yhbl00,0),NVL(XMJE00*ls_yhbl00-ZFJE00*ls_yhbl00-JMJE00*ls_yhbl00,0),NVL(JMJE00*ls_yhbl00,0) into ls_JZBL00,ls_GFBL00,ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE from VW_BM_YBSFDY where YBBRLB = ls_YBBRLB and YBZXLB = ls_YBZXLB and SFXMID = vSFXMID and FBBH00 = ls_FBBH00 and SFYP00 = 'N'; --是否药品 EXCEPTION WHEN NO_DATA_FOUND THEN as_YHMSG0:='预约费维护错误,ZLXMID='||to_char(vSFXMID)||'!'; as_SYSMSG:=SQLERRM||'未找到数据,select * from VW_BM_YBSFDY where YBBRLB = '||ls_YBBRLB||' and YBZXLB='||ls_YBZXLB||' and SFXMID ='||to_char(vSFXMID)||' and FBBH00 ='||to_char(ls_FBBH00)||' and SFYP00=N'; ROLLBACK; RETURN; WHEN OTHERS THEN as_YHMSG0:='获取预约费的自付比例、记账比例时,出现异常错误!'; as_SYSMSG:=SQLERRM||'select * from VW_BM_YBSFDY where SFYP00 = N and YBBRLB ='||ls_YBBRLB||' and YBZXLB='||ls_YBZXLB||' and SFXMID='||to_char(vSFXMID)||'and FBBH00='||to_char(ls_FBBH00); ROLLBACK; RETURN; END; --自负金额+记帐金额大于0的才写挂号费明细 add by jlg insert into SF_FYMX00(MXID00,DJH000,XMBH00,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,HJJE00,ZFJE00,GFJE00,JZJE00, CZRQ00,CZSJ00,ZXRQ00,ZXSJ00,KDKS00,KDYS00,ZXKS00,ZXYS00,YSKS00,SFYDJ0,ZFBL00) select SQ_SF_FYMX00_MXID00.nextval,ls_DJH000,SFXMID,XMMC00,'',DW0000,ls_MXHJJE,1,ls_MXHJJE,ls_MXZFJE,ls_MXGFJE,ls_MXJZJE, ls_GHRQ00,ls_CZSJ00,ls_GHRQ00,ls_CZSJ00,ad_GHKS00,ad_JZYS00,ad_GHKS00,ad_JZYS00,ls_YSKS00,ls_SFYDJ0,(1-ls_GFBL00-ls_JZBL00) from BM_YYSFXM where SFXMID = vSFXMID; if SQL%NOTFOUND then as_YHMSG0:='病人预约费收取失败!请核对对应的收费标准是否合法!'; as_SYSMSG:=SQLERRM||'NOT EXISTS select from BM_YYSFXM where SFXMID = '||to_char(vSFXMID); ROLLBACK; RETURN; end if; --Insert into SF_BRFY00,会自动触发修改SF_BRZHXX的TRIGGER --添加预约费的信息,费用表SF_BRFY00 BEGIN select NVL(sum(HJJE00),0),NVL(sum(ZFJE00),0),NVL(sum(JZJE00),0),NVL(sum(GFJE00),0) into ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE from SF_FYMX00 where DJH000 = ls_DJH000; EXCEPTION WHEN NO_DATA_FOUND THEN ls_MXHJJE:=0; ls_MXZFJE:=0; ls_MXJZJE:=0; ls_MXGFJE:=0; END; if ls_MXHJJE <> 0 then insert into SF_BRFY00(DJH000,MZH000,MZID00,JFLBID,BRID00,XM0000,BRFB00, HJJE00,ZFJE00,JZJE00,GFJE00,BRYE00,CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0,JZDH00) values(ls_DJH000,as_GHH000,ls_MZID00,ls_LBBH00,ls_BRID00,as_XM0000,ls_FBBH00, ls_MXHJJE,ls_MXZFJE,ls_MXJZJE,ls_MXGFJE,0,ls_GHRQ00,ls_CZSJ00,ad_GHY000,as_GHYXM0,ad_CZYKS0,0); end if; update SF_YYBRB0 SET DJH000=ls_DJH000 where YYID00=LS_YYID00 and YYZT00 IN ('0','1'); end if; --修改预约记录为的就诊状态 update SF_YYBRB0 SET YYZT00='3' where YYID00=LS_YYID00 and YYZT00 IN ('0','1'); if SQL%NOTFOUND then as_YHMSG0:='未找到病人的预约记录'; as_SYSMSG:=SQLERRM||'NOT EXISTS select from SF_BRYYB0 where YYID00=LS_YYID00 and YYZT00 IN (''0'',''1'')'; ROLLBACK; RETURN; end if; end if; --省二人民医院,补收预约费end --15挂号类别自动带出诊疗项目 --邵武医院对医保病人统一挂“医保号”(gllb00=22),要求系统自动根据医生技术职称类别带出相应的诊疗项目, --其他医院则是直接按医生选择的挂号类别带出相应的诊疗项目 select count(*) into ls_count0 from xt_yyxx00 where YYJC00 like '%邵武%人民%'; if (ls_count0=0) or (ls_ghlb00=22 and ls_count0>0) then for zl in CUR_BM_GHXMDY_ZLXMID loop INSERT INTO YJ_YW0000(ZLXMID,SL0000,DW0000,YJKSBH,KDYS00,KDKSBH,KDRQ00,KDSJ00, LRXM00,XMZT00,DCBZ00,YJDJH0,BRID00,ZYGHID,MZZYBZ ) select zl.ZLXMID,1,DW0000,sf_ys_xmzxks(zl.ZLXMID,ad_GHKS00),ad_GHY000,ad_GHKS00,to_char(sysdate,'YYYYMMDD'), to_char(sysdate,'HH24:MI:SS'),as_GHYXM0,'0','0',SQ_YJ_YW0000_YJDJH0.NEXTVAL,ls_BRID00,ls_MZID00,'0' from VW_BM_ZLZD00 where ZLXMID=zl.ZLXMID; end loop; for yj in CUR_GHDCZL loop INSERT INTO YJ_YWMX00( ID0000,YJDJH0,ZLXMID ) SELECT SQ_YJ_YWMX00_ID0000.NEXTVAL, YJDJH0, ZLXMID FROM YJ_YW0000 WHERE YJDJH0=yj.YJDJH0; SF_YJ_YWJJ_NOCOMMIT(yj.YJDJH0,1); end loop; end if; if as_ZSQGFF='Y' then --生成诊察费计价单 ls_yjdjh0 := 0; OPEN CUR_SF_FJGHF0_GHF000; LOOP FETCH CUR_SF_FJGHF0_GHF000 INTO ls_FJFFBH; EXIT WHEN CUR_SF_FJGHF0_GHF000%NOTFOUND; if ls_yjdjh0 = 0 then select SQ_YJ_YW0000_YJDJH0.NEXTVAL into ls_yjdjh0 from dual; INSERT INTO YJ_YW0000(ZLXMID,ZLXMJC,SL0000,DW0000,YJKSBH,KDYS00,KDKSBH,KDRQ00,KDSJ00, LRXM00,XMZT00,DCBZ00,YJDJH0,BRID00,ZYGHID,MZZYBZ,BZ0000) select 0,'诊察费',1,'次',ad_GHKS00,ad_GHY000,ad_GHKS00,to_char(sysdate,'YYYYMMDD'), to_char(sysdate,'HH24:MI:SS'),as_GHYXM0,'1','0',ls_yjdjh0,ls_BRID00,ls_MZID00,'0','电子钱包挂号' from dual; end if; v_count:=SF_YJ_YWJJ_ADDTOJJB(ls_yjdjh0,ls_FJFFBH,'N','N','Y',1,'0',0,1,0); IF v_count=0 THEN as_YHMSG0:='使用“电子钱包”支付诊察费时出错!请联系管理员处理!'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; END IF; end loop; CLOSE CUR_SF_FJGHF0_GHF000; end if; --特殊控制OVER! --COMMIT,放在Delphi中控制 EXCEPTION WHEN OTHERS THEN as_YHMSG0:='出错原因不详,请记录此信息并和系统管理员联系!'; as_SYSMSG:=substr(SQLERRM||',执行存储过程错误:SP_SF_BRGHXX('||as_BRBLH0||','||as_YBGHH0||','||as_GHLBMC||','||to_char(ad_BRID00)||','|| as_SFCZ00||','||as_XM0000||','||as_XB0000||','||as_CSRQ00||','||as_FBMC00||','||to_char(ad_GHY000)||','||as_GHYXM0||','|| to_char(ad_CZYKS0)||','||to_char(ad_GHKS00)||','||to_char(ad_JZYS00)||','||as_JZYSXM||','||to_char(ad_GHHBID)||','|| as_YJJXH0||','||to_char(ad_GHF000)||','||to_char(ad_GRZHZF)||','||to_char(ad_TCJJZF)||','||to_char(ad_ZFJE00)||','|| as_ZPZH00||','||as_YBID00||','||as_YBKH00||','||as_GHRQ00||','||as_SFYYGH||','||as_CZBZ00||','||as_SFSBLF||','|| as_BRZY00||','||as_BRMZ00||','||as_BRZJLX||','||as_BRZJBH||','||as_TYDWMC||','||as_BRJTDZ||','|| 'ad_ZFDJH0,ad_TJDJH0,ad_GRDJH0,as_GHH000,as_YHMSG0,as_SYSMSG)',1,150); ROLLBACK; END;