prompt 20.0、生成住院收费所需的医保接口存储过程 SP_ZY_YBJK00_FJ0000 create or replace procedure SP_ZY_YBJK00_FJ0000 ( ad_QSDJH0 in out number, --起始单据号 ad_ZZDJH0 in out number, --终止单据号 ad_JZDH00 in number, --结帐单号 ad_ZYID00 in out number, --住院ID as_qsrq00 in varchar, --起始日期 as_zzrq00 in varchar, --截至日期 as_YBMC00 in char, --医保中心名称 ad_ID0000 out number, --序列号ID as_FLAG00 in char, --标志 '0':SP_ZY_ZYSF00_YBJK00调用,'1':SP_ZY_ZYSF00_YBJK01调用, --'2':SP_ZY_NPYBFS_YBJK00调用,'3'SP_ZY_ZYSFYB_RQDFS0 调用 --'4':SP_ZY_ZYSFYB_YJS000调用,'5':单病种调用,'6':非单病种调用 as_YHMSG0 out varchar, --存储过程提示的错误信息 as_SYSMSG out varchar, --系统提示的错误信息 ad_YEXM00 in char default '全部', --婴儿姓名 ad_DBZBM0 in varchar2 default '' ,--单病种编码 ad_DDLSH0 in varchar2 default '' ,--订单流水号 as_SFXYB0 in varchar2 default '' ,--是否新医保 0:否 1:是 as_FKJSLX in varchar2 default '' ,--分开结算类型 空值正常结算 FYCF_ZF:拆分_自费 FYCF_YB:拆分_医保 FYCF_YE:拆分_婴儿 FYCF_MQ:拆分_母亲 FYCF_SND:拆分_上年度 FYCF_BND:拆分_本年度 ad_FKJZDH in number default 0 ,--分开结算单号 as_FKLSH0 in varchar2 default '' ,--分开结算流水号 ad_FKJZJE in number default 0 ,--分开结算金额 as_INTXML in varchar2 default '' --备用参数xml ) -- MODIFICATION HISTORY -- Person Date Comments -- xzw 2007.08.16 对收费的项目规格进行截取,截取的长度为10; -- jlg 2007.10.19 把项目的备注作为规格传给医保 -- qks 2010.03.29 农合病人 增加传送费用发生日期 -- qks 2010.03.30 医保病人发送费用给医保之前,判断明细的收费项目合计数量是否小于0 -- qks 2010.04.01 新农合 先把数量为负数的合并到正数上 -- qks 2010.04.23 修改bug,ZYSF-20100423-001 -- qks 2010.05.10 bm_zycfmx_temp00删除记录增加条件 or nvl(xmsl00,0)=0 -- qks 2010.05.25 判断是否超过2000条记录,如果超过,只按同一天日期重新汇总 -- zhr 2010.06.10 解决异地医保结算时,有的医保分中心非医保项目要求用70打头,有的要求用99打头发送。 -- zhr 2010.06.25 处理XMSL00=0 ,XMJE00<>0 -- qks 2010.07.15 游标CUR_ZY_FYMX00_MXID00中项目单价XMDJ00取值方法修改 -- qks 2010.11.29 新增参数ZY_XNHCSLX_SFRQ ZYSF-20101130-003 -- qks 2011.03.18 新农合使用社保卡,同时判断IC_YBBRLB.SFXNH0='1' --zhangyc 2011.03.24 增加参数ZY_YCXCLXMXGS(同安医院=Y) 一次性材料项目(只针对收费项目)格式是否改为 医保对应项目+(医院收费项目) -- csf 2011.04.28 省二人民医院,保健病人的部分药品,是否使用医保目录需要审批 ,没有审批或审批不通过则替换成非医保目录 --zhangyc 2011.06.20 增加传入参数AD_YEXM00(婴儿姓名) --zhangyc 2011.06.28 莆田医保发送名称是否按新格式发送(医保项目名称(院内项目名称))参数控制(SF_YBFSXMMCGS) by ZYSF-20110614-003 -- csf 2011.06.28 审批部分原用参数XT_ZDYBYPMLXYSPBR控制,但维护麻烦,现改成直接从通用字典判断 --zhangyc 2011.07.22 ZY_YCXCLXMXGS='Y'时 材料发送格式厦门地区和其它地区分开 by ZYSF-20110713-003 --zhangyc 2011.08.12 modify by ZYSF-20110810-001 ZY_YCXCLXMXGS=Y的情况下如果名称超过25个汉字医保会报超过50个字节的错误提示,请修改过程,只发送25个汉字 --csf 2011.09.16 未审批被替换的项目,自付比例改成1 --jinfl 2012.01.30 药品医保目录对应有问题时,只做报错提示,不发送医保中心 ZYSF-20120113-002 --dsm 2012.02.01 两费保健 超出部分按自费结算,如未做审批设置,该材料应按全自费结算 for ZYSF-20110808-003 --csf 2012.02.22 SF_XT_GETFYBMLBH 加参数,本过程同步更改 XMGL-20120222-001 --zhangyc 2012.04.10 参数SF_MZSFYSZJHM='Y'明细医生姓名是否改医生证件号 by ZYSF-20120410-001 --zhangyc 2013.01.24 增加医生证件号 BY ZYSF-20130126-001 -- jinfl 2013.04.28 医保有限制项目名称不能超过50个字节,所以将substr改为substrb ZYSF-20130426-002 --zhangyc 2012.06.19 单病种分开结算 by ZYSF-20130619-001 入参as_FLAG00=5 or 6 --zhangyc 2013.06.26 增加发送YPTS00:用药天数 YPPL00:频率代码 YPYL00:剂量+单位 非药品的项目频率编码‘9999’,用法填‘无’,天数填‘0’ by ZYSF-20130625-002 --zhangyc 2013.07.04 ZY_YBDBZJSJK=M 时 VW_BM_YBSFDY.SFSX00 无效(过程SP_ZY_DBZCF0 中有用到) by ZYSF-20130703-001 --zhangyc 2013.07.08 超过医保上限金额写入到ZY_JZB000.YBRL19 BY ZYSF-20130708-002 -- liuj 2013.08.09 增加参数控制中药处方剂量是否不按浓缩比例转化 for ZYSF-20130403-002 --zhangyc 2013.12.23 修正非厦门地区 三个为空默认值 药品用量=* 用药天数=1 使用频率=* BY ZYSF-20131220-002 --dsm 2014.02.26 明细ZFFSBZ='Y'的按自费发送 for BQ-20131018-001 --zhangyc 2014.05.09 ls_YBBHQZ||ls_FPXMBH-->trim(ls_YBBHQZ)||ls_FPXMBH 修正生产request中错误 by ZYSF-20140425-001 --zhangyc 2014.11.17 增加保健医保接口功能 by ZYSF-20141111-003 --zhangyc 2015.01.04 修正厦门同安医院医保项目编码为13位报错 by ZYSF-20150104-001 --zhangyc 2015.05.29 增加判断如果合并后数据中有负数记录,重新算单价后在整理数据 by ZYSF-20150227-001 --zhangyc 2015.06.18 增加高值耗材发送功能 by ZYSF-20150505-001 --zhangyc 2015.10.29 增加函数SF_SF_YWJZMC取值 by ZYSF-20151021-004 --zhangyc 2015.11.06 把YPYL00长度截取到char(6) by ZYSF-20151021-001 --qks 2016.05.26 高值耗材发送修改:高值耗材包发送给医保的 发票项目、是否医保项目(Y或N),使用项目管理系统中的“医保收费管理”对应项目的住院发票以及是否医保项目(Y或N); -- 如果没有对应的医保项目,则发票项目固定为“其他费”,是否医保项目固定为“Y”; by ZYSF-20151021-001 --zhangyc 2017.03.15 修改单病种 by ZYSF-20170206-001 --zhangyc 2017.03.30 修改bug by ZYSF-20170330-004 --zhangyc 2017.03.30 增加打包项目对应国家编码BM_GZHCFL.BZGJBM by ZYSF-20170330-005 --zhangyc 2017.04.06 修正单病种超标床位费SFYB00 全部发送N by ZYSF-20170406-001 --zhangyc 2017.04.12 修改单病种结算病人并且ZY_DBZCEFKJS=N非床位设置上限不拆分 by ZYSF-20170405-001 --zhangyc 2017.05.09 增加参数SF_SFQYYBXJJK控制医保单位发送功能 by ZYSF-20170506-001 --zhangyc 2017.05.24 修正数量为0出现bug by ZYSF-20170524-001 --zhangyc 2017.07.04 修改单价超过最高限价拆分参数:ZY_YBYPZGXJCF 控制 by ZYSF-20170626-001 --zhangyc 2017.08.09 修改单价超过异常 by ZYSF-20170810-001 --zhangyc 2017.10.24 修改最高限价报错 by ZYSF-20171026-001 --zhangyc 2017.12.28 增加中间表CZRQ00处理 by ZYSF-20171227-003 --zhangyc 2018.01.02 增加CDRG结算功能 by ZYSF-20171230-001 --zhangyc 2018.01.05 CDRG结算增加超标床位费和超标项目处理 by ZYSF-20180106-001 --zhangyc 2018.01.10 CDRG非超标项目处理 by ZYSF-20180110-001 --zhangyc 2018.01.29 修正药品超过最好限价后单价问题 by ZYSF-20171113-003 --zhangyc 2018.01.30 耗材打包对应单价和数量处理方式 by ZYSF-20171113-004 --dsm 2018.02.02 药事服务费名称要发送院内名称 for ZYSF-20180201-002 --zhangyc 2018.02.05 修正cdrg超标床位费按原单价发送 BY ZYSF-20180202-001 --zhangyc 2018.02.07 修改一个耗材对应多个病种(BM_GZHCBZ) by ZYSF-20180209-001 --zhangyc 2018.04.09 修改单病种除外耗材打包错误 by ZYSF-20180409-002 --zhangyc 2018.04.09 修正同一项目医生姓名和证件编号不一致问题 by ZYSF-20180409-004 --zhangyc 2018.04.10 修正医生同名报错 by ZYSF-20180410-002 --zhangyc 2018.08.23 修改药品超额拆分项目报错 by ZYSF-20180823-002 --dsm 2018.09.26 耗材包如果是药品也要判断 ZYSF-20180926-004 --dsm 2018.09.26 其他--〉其它 for ZYSF-20180926-002 --zhagnyc 2018.10.31 修改药品超额发送其它项目报错 by ZYSF-20181031-001 --zhangyc 2018.11.02 修改异常报错 by ZYSF-20180927-002 --zhangyc 2018.11.07 注释掉条件LS_YYID00 in ('221956') by ZYSF-20180828-005 --zhangyc 2018.12.07 增加通用字典ZDMC00='住院单病种普通床位转超标' 条件判断 by ZYSF-20181204-002 --zhangyc 2018.12.18 增加参数ZY_YPCWZHFS控制药品差额转化规则 by ZYSF-20181204-003 --zhuyr 2018.12.19 在进行限额拆分时,增加判断药品BM_YD0000.SFCF00是否维护为Y,如果是Y,才允许进行拆分 by ZYSF-20180426-003 --dsm 2018.12.29 LS_SFCF00默认为Y,BM_YD0000.SFCF00没有维护的当作Y来处理 归档ZYYS-20181229-001 --zhangyc 2018.01.09 修正BM_YBCBDY多条记录取值异常 by ZYSF-20190109-001 --pwt 2019.01.16 修改ZY_SFXMCGSXSFCF参数,为N时只对单病种病人进行床位费的拆分 by ZYSF-20181108-001 --zhuyr 2019.01.23 增加参数ZY_SFBQCFS控制日清单发送时,是否要删除负数数据 by ZYSF-20190122-003 --zhangyc 2019.05.10 修改BM_YD0000.YB2J00(医保转换率)为空值时,导致发送医保数据错误 by ZYSF-20190510-002 --zhangyc 2019.05.10 单病种病人BM_YBSFDY.SFYBXM='N'也执行拆分增加条件(or (LS_DBZBM0 is not null and LS_SFYBXM='N')) by ZYSF-20190416-004 --zhangyc 2019.09.23 修正药品单价报错问题round(LS_YBZGDJ*LS_XMSL00)=LS_HJJE00-->round(LS_YBZGDJ*LS_XMSL00,2)=LS_HJJE00 by ZYSF-20190923-001 --dsm 2019.10.17 zy_fymx00.ZFFSBZ=Y按自费发送 for ZYSF-20190919-001 --dsm 2019.10.29 BM_ZYCFMX_TEMP00.XMMC00为空时直接LS_XMMC00,查BM_BRXXB0改查ZY_BRXXB0 for ZYSF-20191029-001 --dsm 2019.12.04 多行子查询错误修正 归档 for ZYSF-20191204-002 --zhangyc 2019.12.13 增加写入BM_ZYCFMX_TEMP00、FPXMBH by ZYSF-20191214-001 --zhangyc 2019.12.16 修改FPXMBH 为空bug by ZYSF-20191217-001 --zhangyc 2019.12.27 修改项目规格为空时赋值“无” by ZYSF-20191227-003 --zhangyc 2020.01.09 增加获取BZBMLB(病种编码类别 0:单病种编码 1:精准扶贫编码 2:出院诊断)=1 并且是精准扶贫病人 不拆分床位和打包耗材 by ZYSF-20200109-002 --zhangyc 2020.03.30 药品先汇总、药品超过最高限价数据取小数2位(项目合计金额直接取游标值) by ZYSF-20200331-001 --zhangyc 2020.04.16 参数ZY_YBYPZGXJCF开启有后,从新算单价时超过医保限价报错 by ZYSF-20200416-001 -- dsm 2020.04.20 增加参数XT_YBMLSPSFZJYYBZX控制是否只判断"指定费别审批的药品目录"维护的医保中心 for XMGL-20200219-001 --zhangyc 2020.05.14 参数ZY_YBYPZGXJCF开启后,药品拆分项目BM_ZYCFMX_TEMP00.HCDBXM='2'导致算超标床位费错误,改成Y by ZYSF-20200514-002 -- dsm 2020.06.20 ZFFSBZ住院期间如果同个的药品选择了自费,有的选择了医保,那么结算时要按选择的实际发(原来只要选过了自费,都按自费发) for ZYSF-20200617-001 --zhangyc 2020.06.20 YPPL00:频率代码(空发送 9999) YPYL00:每次剂量 by ZYSF-20200622-001 --zhangy 2020.08.05 增加收费项目中包含BM_GZHCFL.DBSFXM才打包 by ZYSF-20200616-002 --zhangyc 2020.08.10 耗材打包按个处理或按套打包(BM_GZHCFL.HCDBSX is '耗材打包属性 0:按套打包 1:按个打包') by ZYSF-20200810-002 --zhangyc 2020.09.04 耗材打包的项目会存在发票名称为“床位费”导致取值错误,现改13(其他费)by ZYSF-20200904-002 --zhangyc 2020.09.04 ls_CSL000直接取round(a.CSL000/a.ZHL000,2) by ZYSF-20200904-006 --zhangyc 2020.09.27 药品单位转化时,xmsl00保留小数2位(向上取值) by ZYSF-20200927-003 --zhangyc 2020.09.28 判断主项是否打包去掉条件B.FLAG00='0'条件(因为药品也打包在耗材)以及根据HCID00取DBSFXM去掉FLAG00='0'条件 by ZYSF-20200929-001 --zhangyc 2020.10.22 去掉游标CUR_ZXSFXM 中B.FLAG00='0'条件(因为药品也打包在耗材) by ZYSF-20201027-001 --qiulf 2020.10.30 增加参数ZY_MXCSFSYBMSC控制新医保明细上传项目是否按原编码上传 by ZYSF-20201013-002 --zhangyc 2020.12.01 增加参数ZY_FSYBYPFYSFRQHZ控制药品和项目是否按天汇总以及用SF_ZY_YBJKFSCZRQ转化操作日期 by ZYSF-20201125-002 --zhangyc 2020.12.28 增加医保跨年拆分业务处理(表ZY_JSBCMX取值) by ZYSF-20201229-004 --zhangyc 2021.01.25 BM_YBSFDY.YBSFSX按(合计金额-拆分原)/最新算单价 by ZYSF-20210126-001 --zhangyc 2021.01.27 扩展参数ZY_YPCWZHFS=M时数量和单价不变根据参数ZY_YBYPZGXJCF拆分 by ZYSF-20201130-001 --zhangyc 2021.02.23 BM_YBSFDY.YBXMBH长度变更char(20)改为varchar2(50) by ZYSF-20210222-001 --zhangyc 2021.02.24 整理报文增加bkeh83、bkeh05、bkeh06、bakxml by ZYSF-20210223-001 --zhangyc 2021.03.09 修改药品数量超过最高限价时,项目数量只能保留小数2个小数位 (先进位后,在判断进位后数量*单价<>合计金额重新算单价 算单价) by ZYSF-20210309-004 --zhangyc 2021.03.16 ZY_GZHMMXCLFS=Q,修改单病种耗材打包后,原明细项目,单价、数量、金额按原值发送 by ZYSF-20210320-004 --linbin 2021.03.23 BM_YBSFDY起用门诊住院标志判断,增加参数YBSFDYWZDSFZJAZFJS控制 by ZYSF-20210219-002 --zhangyc 2021.04.08 SQ_ZY_YBFSMX_MXID00.nextval改为SQ_BM_ZYCFMX_TEMP00_MXID00 by ZYSF-20210408-001 --zhangyc 2021.04.14 插入ZY_YBFSMX中YSXM00、FPXMMC、XMMC00、XMDW00、XMGG00 去空 by ZYSF-20210414-005 --linbin 2021.04.20 增加通用参数YSZJHMLY区分医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0 by ZYSF-20210331-002 --zhangyc 2021.04.26 非单病种耗材打包参数ZY_GZHMMXCLFS=Q,原打包的项目(Y:单价和金额为0)by ZYSF-20210426-005 --zhangyc 2021.04.26 单病种耗材打包增加明细表判断BM_HCDBZX同BM_GZHCFL.DBSFXM类似(BM_HCDBZX记录=0(无维护):按原来打包,<>0(有维护):本次收费项目在该表中存在打包,不存在不打包) by ZYSF-20210426-006 --zhangyc 2021.05.13 汇总前增加代码delete BM_ZYCFMX_TEMP00 where ID0000=LS_ID0000 and XMSL00=0 and XMJE00=0;避免某个药品合计金额=0,单位没转化错误 by ZYSF-20210512-001 --zhangyc 2021.07.16 处理泉州医保超标床位费拆分(本地和异地)拆分规则判断通用字典名称(住院单病种超标床位费拆分字典) by ZYSF-20210707-001 --zhangyc 2021.07.23 增加根据参数ZY_HCDBZXTYPE判断(出院结算根据耗材打包主项表(BM_HCDBZX)判断,本次收费是否在主项表中,存在打包否则不打包(0:否 1:非病种 2:病种 3:非病种+病种)默认:0) by ZYSF-20210723-001 --zhangyc 2021.08.20 根据参数GetType_bkeh83控制(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) by ZYSF-20210820-002 --zhangyc 2021.08.23 根据参数zdmc00='医保新接口参数设置' and BH0000='YBZXLB_MXCSFSYBMSC' 控制参数ZY_MXCSFSYBMSC=Y 不发送原码还是按700发送 by ZYSF-20210823-002 --zhangyc 2021.08.27 定义参数LS_YBSFDY_BKEA96获取BM_YBSFDY.BKEA96限制范围类别: Y-范围内 N-范围外,以及ZY_MXCSFSYBMSC=Y and ZY_SFXMCGSXSFCF=Y 是,项目拆分700xx4 也要发原码 by ZYSF-20210828-001 --zhangyc 2021.08.30 as_SFXYB0=0,(是否新医保 0:否 1:是)不取BM_YBSFDY.BKEA96 同时ZY_MXCSFSYBMSC=Y无效 by ZYSF-20210830-003 --zhangyc 2021.08.30 根据参数ZY_YPCWZHFS=F(数量不变,单价=限价超过按原项目非医保) by ZYSF-20210831-002 --zhangyc 2021.09.22 根据参数BKC007_FSYSGJBM(BM_SFCFMX_TEMP00.YSZJHM=BM_YGBM00.YBYGDM)(旧医保不处理) by ZYSF-20210922-003 --zhangyc 2021.09.30 增加参数Change_bkeh83_bke045、Change_bke182_bke046转码 by ZYSF-20210930-002 --zhangyc 2021.10.06 BM_YBFPXM,BZCBBH(varchar2(20)-->varchar2(50)),BZCBMC(varchar2(50)-->varchar2(100)) by ZYSF-20211006-001 --qiulf 2021.10.11 修正CBXMBH不为空时候查询对应表无数据报错 by ZYSF-20211011-002 --zhangyc 2021.10.12 修改单价24.495 金额:612.5 数量:25 最高单价:24.5,参考:7.0 增加代码段(2020.11.04) by ZYSF-20211012-002 --zhangyc 2021.10.12 修正单病种耗材打包以及Change_bkeh83_bke045开启(单病种超标床位费编码CBZXXX)被转化掉 by ZYSF-20211013-001 --zhangyc 2021.10.15 根据参数ZY_WGJYSBMSFGYZGYS:bkc007医师编码是否改用主管医生 by ZYSF-20211015-003 --zhangyc 2021.10.28 处理药品单价:2.5626 最高限价:2.564 数量:3 总额:7.69 。设置上限数量1,剩余=5.13/2=2.565 超过最高限价报错,以及游标合并成CUR_FYMX_DATA by ZYSF-20211028-006 --zhangyc 2021.11.02 修改预结算无生成数据as_FLAG00=4 时ad_QSDJH0、ad_ZZDJH0为空 by ZYSF-20211101-001 --zhangyc 2021.11.03 如果单病种用映射发送时,会存在SF_ZY_SFDBZFZ直接取院内 by ZYSF-20211103-001 --zhangyc 2021.11.08 ZY_FSYBYPFYSFRQHZ=1,2 药品改为按条汇总不在按天汇总 by ZYSF-20211108-001 --zhangyc 2021.12.07 增加根据耗材打包属性:BM_GZHCFL.HCDBSX=9 空值耗材不打包 by ZYSF-20211207-003 -- dsm 2021.12.13 泉二drg病人根据zy_brxxb0.drg_status来判断是否可以结算 for XMGL-20211213-001 --zhangyc 2021.01.04 处理拆分后,还是超过最高限价问题(ZY_YPCWZHFS=F),原单单价:156 原数量:2 原总额:312 最高:71,超额:单价为:71.1297 数量:2.39 金额=170 超过限价医保限制报错 by ZYSF-20220105-006 --zhangyc 2022.01.07 跨年结算,冲销处理会发送if LS_FKJSLX='FYCF_BND' and as_FKLSH0 is not null then --FYCF_BND:拆分_本年度 by ZYSF-20220105-004 --zhangyc 2022.02.21 ZY_FSYBYPFYSFRQHZ=1,2时,插入非负数项目编码时,项目又被汇总成一笔 as --更改结帐单号为单据号,更改YF_YZYPSQ游标的内容 LS_MSGSTR varchar2(100); ls_BRID00 BM_BRXXB0.BRID00%TYPE; --病人ID ls_YBBRLB BM_BRXXB0.YBBRLB%TYPE; --医保病人类别 ls_YBLB00 BM_BRXXB0.YBLB00%TYPE; --医保类别 ls_YBID00 BM_BRXXB0.YBID00%TYPE; --医保ID ls_YBKH00 BM_BRXXB0.YBKH00%TYPE; --医保卡号 ls_FBBH00 BM_BRXXB0.FBBH00%TYPE; --病人费别 ls_SFMLXZ BM_YBBRLB.SFMLXZ%TYPE; --是否受目录限制,0:不受目录限制,1:受目录限制 ls_ZYZFSX BM_YBBRLB.ZYZFSX%type; --住院收费上限 ls_YBZXLB BM_YBFPXM.YBZXLB%TYPE; --医保中心类别编码 ls_FPXMMC BM_YBFPXM.XMMC00%TYPE; --发票项目名称 ls_FPXMBH BM_YBFPXM.BH0000%TYPE; --医保发票项目编号 ls_YBXMMC BM_YBSFXM.XMMC00%TYPE; --医保收费/药品项目名称 ls_YBXMBH BM_YBSFXM.XMBH00%TYPE; --医保收费/药品项目编号 ls_YBXMSX BM_YBSFXM.SFSX00%TYPE; --医保项目收费上限 ls_CBXMBH BM_YBFPXM.CBXMBH%TYPE; --超标项目编号 ls_CBXMMC BM_YBSFXM.XMMC00%TYPE; --超标项目名称 ls_CBFPBH BM_YBFPXM.BH0000%TYPE; --超标医保发票项目编号 ls_CBFPMC BM_YBFPXM.XMMC00%TYPE; --超标发票项目名称 ls_SFYBXM BM_YBSFDY.SFYBXM%TYPE; --是否医保项目 ls_YBXMLB BM_YBSFDY.YBLB00%TYPE; --医保项目类别 ls_ZWXM00 BM_YGBM00.ZWXM00%TYPE; --医生姓名 ls_ID0000 BM_ZYCF00_TEMP00.ID0000%TYPE; ls_FYBQZ0 IC_YBBRLB.FYBQZ0%TYPE; --非医保项目编号前缀(首2位) ls_YBZFBL ZY_FYMX00.ZFBL00%TYPE; --医保自付比例 --ls_MXID00 ZY_FYMX00.MXID00%TYPE; --费用明细ID ls_MXID00 NUMBER(20); --费用明细ID ls_XMBH00 ZY_FYMX00.XMBH00%TYPE; --费用项目编号 ls_XMMC00 ZY_FYMX00.XMMC00%TYPE; --费用项目名称 ls_HJJE00 ZY_FYMX00.HJJE00%TYPE; --费用合计金额 ls_XMJE01 ZY_FYMX00.HJJE00%TYPE; ls_ZFJE00 ZY_FYMX00.ZFJE00%TYPE; --费用合计金额 ls_ZFBL00 ZY_FYMX00.ZFBL00%TYPE; --自付比例 ls_XMDJ00 ZY_FYMX00.XMDJ00%TYPE; --项目单价 ls_XMDJ01 ZY_FYMX00.XMDJ00%TYPE; --项目单价 ls_GG0000 ZY_FYMX00.XMGG00%TYPE; --项目规格 ls_DW0000 ZY_FYMX00.XMDW00%TYPE; --项目单位 ls_XMSL00 ZY_FYMX00.XMSL00%TYPE; --项目数量 ls_XMSL01 ZY_FYMX00.XMSL00%TYPE; --项目数量 ls_CZRQ00 ZY_FYMX00.CZRQ00%TYPE; --操作日期 ls_SFXNH0 IC_YBBRLB.SFXNH0%TYPE; --是否新农合 ls_ZYZFSX_TEMP bm_ybbrlb.ZYZFSX%type; ls_YBMCFS CHAR(1); --是否按医保项目名称发送医保接口 ls_YBBHQZ VARCHAR2(20); --医保编码前缀 ls_DJSYXJ CHAR(1); ls_XNHCSLX VARCHAR2(2); --农合病人是否实时结算 ls_COUNT0 number(5); ls_COUNT1 number(5); LS_TMPNUM number(5); ls_SYFPBH Char(1); --医保接口使用发票编号来传送 ls_CGSXSFCF CHAR(1); --收费项目的金额超过上限是否进行拆分 ls_FLAG00 CHAR(1); --标志 '0'费用,'1'零散处方,'2'医嘱处方 ZY_SFASXJS CHAR(2); --医保住院是否按上限结算 ls_SFBZZWGG CHAR(1); --是否备注作为规格传送给医保 ls_XNHSFRQ CHAR(1); --农合病人实时结算是否发送费用日期 ls_YCXCLXMXGS CHAR(1); --一次性材料项目格式是否改为 医保对应项目+(医院收费项目)。 ls_JSXM00 BM_YYSFXM.JSXM00%type; ls_XMFSGS xt_xtcs00.VALUE0%TYPE; --控制项目发送格式(医保项目名称(院内项目名称)) ls_SFXMYBJK xt_xtcs00.VALUE0%TYPE; --是否厦门医保接口 XT_ZDYBYPMLXYSPBR NUMBER(2); --是否参数描述病人 ls_SFTHML number(3);--0 不替换 1替换 ls_XMDJSX xt_xtcs00.VALUE0%TYPE; --需要审批的单价上限 ls_JSXM01 BM_YYSFXM.JSXM00%type; ls_SPJE00 YK_YBMLSP.SPJE00%Type; --已经审批的金额 ls_SFXYSHEBZ CHAR(1); --是否需要审核标志 ls_SFYBMLDYCWFSYBZX VARCHAR2(2); --医保目录错误时,是否发送医保中心 ls_YBDYML_count NUMBER(5); --医保对应目录中医保项目编号不为空的项目数 ls_MZSFYSZJHM xt_xtcs00.VALUE0%TYPE; --医生姓名是否改为医生证件号参数 ls_YSZJHM varchar2(50); lv_YSZJHM varchar2(30); lv_MAXYSZJH varchar2(30); ls_YPTS00 number(6);--用药天数 ls_PCMC00 varchar2(20);--频次名称 ls_YPPL00 varchar2(6);--频率代码 ls_YPYL00 varchar2(20);--剂量+单位 ls_CSL000 number(14,4);--剂量 ls_JLDW00 BM_YYSFXM.DW0000%TYPE;--剂量单位 ls_DBZJK0 varchar2(100); ls_YBSXCE BM_ZYCFMX_TEMP00.YBSXCE%TYPE; --医保上限金额 ls_ZYQDSFNSBL char(1); ls_ZFFSBZ varchar2(1); LS_NewID0 BM_ZYCF00_TEMP00.ID0000%TYPE; LS_GZHCID number(10);--高值耗材ID=BM_GZHCMX.GZHCID LS_HCDBXM char(1); --是否耗材打包项目 1:是 0:否 2:超标费用 LS_SFFSHC char(1); --是否发送高值耗材 1:发送 0:不发送 LS_HCJKQY char(1); --高值耗材接口启用 Y:是 N:否 LS_SFXMID BM_YYSFXM.SFXMID%TYPE; --收费项目id LS_DBZBM0 ZY_BRXXB0.DBZBM0%type; --住院登记单病种编码 LS_DBZMC0 ZY_BRXXB0.DBZMC0%type; --住院登记单病种名称 LS_BZCBBH BM_YBFPXM.BZCBBH%type; --单病种超标医保发票项目编号 LS_BZCBMC BM_YBFPXM.BZCBMC%type; --单病种超标发票项目名称 LS_BZCBCW ZY_BRZHXX.DBZCWF%type; --单病种超标床位费 LS_BZLSHC ZY_BRZHXX.DBZHCF%type; --单病种另收耗材费 LS_BZGJBM varchar2(200); --单病种允许另收耗材的国家编码前缀组合,用逗号分隔 LS_SFBZHCDB char(1);--是否单病种打包 Y:是 N:否 lv_CZRQ00 char(8); lv_CZSJ00 char(8); ZY_DBZCEFKJS varchar2(100); LS_GJBM00 BM_YYSFXM.GJBM00%type; --国家编码 LS_YBXJQY varchar2(100);--门诊或住院系统是否启用医保限价接口 Y:启用 N:不启用 默认值N:不启用 LS_K2J000 BM_YD0000.K2J000%type;--库存单位转化率 LS_M2J000 BM_YD0000.M2J000%type;--门诊发药单位转化率 LS_Z2J000 BM_YD0000.Z2J000%type;--住院发药单位转化率 LS_YBDW00 BM_YD0000.YBDW00%type;--医保单位 LS_YB2J00 BM_YD0000.YB2J00%type;--医保转换率 LS_YBDDW0 BM_YBSFXM.XMDW00%type;--医保项目单位(大单位) LS_YBXDW0 BM_YBSFXM.XMDW01%type;--医保项目单位(小单位) LS_YBJSDJ BM_YBSFXM.YBJSDJ%type;--医保结算单价 LS_YBZGDJ BM_YBSFXM.YBZGDJ%type;--医保最高单价 LS_YBJSDJ1 BM_YBSFXM.YBJSDJ1%type;--医保结算单价 LS_YBZGDJ1 BM_YBSFXM.YBZGDJ1%type;--医保最高单价 ZY_YBYPZGXJCF varchar2(100); LS_ZGXJCF varchar2(10);--医保药品最高限价拆分 Y:拆分 N:不拆分 LS_ZGXJCS varchar2(10);--医保药品最高限价参数 --LS_ZGXJID number(12); --医保药品最高限价拆分项目ID LS_ZGXJID BM_ZYCFMX_TEMP00.SFXMID%type; --医保药品最高限价拆分项目ID LS_ZGXJDJ number(12,4); --最高限价单价 LS_XJCEDJ number(12,4); --药品超过最高限价单价 LS_XJCEJE number(12,2); --药品超过最高限价金额 LS_ZGXJJE number(12,2); --药品最高限价金额 LS_XJCFSL number(12,2); --限价拆分数量 LS_SFCF00 varchar2(10); --根据药典表来判断是否进行拆分 LS_YNXMSL ZY_FYMX00.XMSL00%type; LS_CDRGFS ZY_BASYXX.CDRGFS%type; LS_CDRGJK varchar2(10);--CDRG接口 Y:启用 N:不启用 LS_CLYBSX number(12,2) ;--医保上限金额(材料) LS_CLCBBH varchar2(50) ;--超标项目编号(材料) LS_CLCBMC varchar2(100);--超标项目名称(材料) LS_SFCFXM varchar2(10);--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 ZY_GZHMMXCLFS XT_XTCS00.VALUE0%type; LS_YYID00 XT_YYXX00.YYID00%type; LS_YPBZ00 varchar2(1); LS_YBFPBH BM_YBFPXM.BH0000%type; --医保发票编号 LS_HCFPBH BM_ZYCFMX_TEMP00.FPXMBH%type; --耗材打包发票项目编码 LS_HCFPMC BM_ZYCFMX_TEMP00.FPXMMC%type; --耗材打包发票项目编码和发票名称 LS_YBFPMC BM_YBFPXM.XMMC00%type; --医保发票编号 LS_CWNUM0 number(10); LS_CWZHBZ char(1);--普通床位费转为超标标志 Y:婴儿床位转化 P:普通床位转化 N:不转化 LS_YNFPBH BM_FPXM00.BH0000%type; --院内发票编号 LS_DJH000 ZY_BRFY00.DJH000%type;--单据号 LS_CXDJH0 ZY_BRFY00.CXDJH0%type;--冲销单据号 ZY_YPCWZHFS varchar2(100);--住院药品最高限价转化方式 LS_DBZCF0 varchar2(1); --普通和单病种病人是否都拆分超标床位费 ZY_SFBQCFS varchar2(100);--住院日清单发送时,是否发送负数数据:Y发送N不发送 默认N LS_SFJZFP ZY_BRXXB0.SFJZFP%type; --是否精准扶贫 Y:是 1:是 LS_BZBMLB ZY_BRXXB0.BZBMLB%type; --病种编码类别 0:单病种编码 1:精准扶贫编码 2:出院诊断 ls_HJJE00_TEMP ZY_FYMX00.HJJE00%type; --费用合计金额 XT_YBMLSPSFZJYYBZX varchar2(20); LS_BZDYBH varchar2(100); LS_YSYGBH ZY_YBFSMX.YSYGBH%type; --医生员工编码=BM_YGBM00.YGBH00 LS_HCDBSX ZY_YBFSMX.HCDBSX%type; --耗材打包属性 0:按套打包 1:按个打包 9:不打包 LS_DBSFXM ZY_YBFSMX.DBSFXM%type; --打包收费项目ID=BM_YYSFXM.SFXMID LS_DBSFSL ZY_YBFSMX.DBSFSL%type; --打包数量 LS_CWHCFY ZY_YBFSMX.CWHCFY%type;--除外耗材金额 LS_CBCWF0 ZY_YBFSMX.CBCWF0%type;--超标床位金额 LS_ZXDBBZ varchar2(1);--耗材包设置主项打包标志 Y:打包 N:不打包 LS_CFSL00 ZY_YBFSMX.XMSL00%type;--拆分数量_原 LS_CFDJ00 ZY_YBFSMX.XMDJ00%type;--拆分单价_原 LS_CFJE00 ZY_YBFSMX.XMJE00%type;--拆分金额_原 LS_CFSL01 ZY_YBFSMX.XMSL00%type;--拆分数量_新 LS_CFDJ01 ZY_YBFSMX.XMDJ00%type;--拆分单价_新 LS_CFJE01 ZY_YBFSMX.XMJE00%type;--拆分金额_新 LS_HCDBBZ varchar2(1); --耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 LS_HCDBBM BM_GZHCFL.HCDBBM%type;--耗材打包编码 LS_HCDBMC BM_GZHCFL.HCDBMC%type;--耗材打包名称 ZY_MXCSFSYBMSC XT_XTCS00.VALUE0%type; LS_FSYBYPFYSFRQHZ varchar2(10); --住院医保数据整理(SP_ZY_YBJK00_FJ0000)药品费用是否按操作日期汇总[0:否 1:药品和项目 2:药品]默认:0 LS_DDLSH0 ZY_JZB000.DDLSH0 %type;--订单流水号 LS_FKJSLX ZY_JZB000.FKJSLX%type;--分开结算类型 空值正常结算 FYCF_ZF:拆分_自费 FYCF_YB:拆分_医保 FYCF_YE:拆分_婴儿 FYCF_MQ:拆分_母亲 FYCF_SND:拆分_上年度 FYCF_BND:拆分_本年度 LS_FKLSH0 ZY_JZB000.FKLSH0%type;--分开结算流水号 LS_FKJZDH ZY_JZB000.FKJZDH%type;--分开结算单号 LS_FKJZJE ZY_JZB000.FKJZJE%type;--分开结算金额 LS_INTXML varchar2(1000);--备用参数xml LS_FKJSQY varchar2(1);--分开结算启用 0:否 8:跨年结算分开结算 LS_CZBZ00 varchar2(2);--操作标志 0:正常结算 1:中途结算 2:年度结算 3:逃跑结算 01:跨年上年度 02:跨年本年度 --药品超过最高限价拆分--参数 LS_YPXJID00 BM_ZYCF00_TEMP00.ID0000%type;--药品最高限价拆分id=ZY_TEMP00_ID0000 LS_YPXJCFBZ varchar2(1); --药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立收费生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) LS_YPXJFPBH BM_YBFPXM.BH0000%type; --药品最高限价医保发票编号 LS_YPXJFPMC BM_YBFPXM.XMMC00%type; --药品最高限价医保发票名称 LS_YPXJSFYB BM_YBSFDY.SFYBXM%type; --药品最高限价是否医保项目 LS_YPXJYBMC BM_YBSFXM.XMMC00%type; --药品最高限价医保项目名称 LS_YPXJYBBH BM_YBSFXM.XMBH00%type; --药品最高限价医保项目编号 LS_YPXJYBDW BM_YBSFXM.XMDW00%type; --药品最高限价医保项目单位 LS_YPXJXMDJ ZY_FYMX00.XMDJ00%type; --药品最高限价项目单价 LS_YPXJXMSL ZY_FYMX00.XMSL00%type; --药品最高限价项目数量 LS_YPXJXMJE ZY_FYMX00.HJJE00%type; --药品最高限价费用合计金额 LS_HJJETEMP ZY_FYMX00.HJJE00%type; --项目金额临时变量 LS_BKEH83 ZY_YBFSMX.BKEH83%type; --国家标准对应编码 LS_BKEH05 ZY_YBFSMX.BKEH05%type; --医保备用1 LS_BKEH06 ZY_YBFSMX.BKEH06%type; --医保备用2 LS_BAKXML ZY_YBFSMX.BAKXML%type; --HIS备用字段(xml格式)后续扩展 LS_WDYZF0 BM_TYZD00.MC0000%type; --医保收费对应未找到是否直接按自费结算 Y:是 N:否-提示错误 默认:N LS_ZJHMLY BM_TYZD00.MC0000%type; --医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0 LS_HCDBZXRec number(12);-- 耗材打包主项明细记录数 LS_HCDBZXNum number(12);-- 耗材打包主项明细临时变量 LS_YBZYH0 varchar2(30);--医保住院号 LS_CWFCFZDBH varchar2(20);--单病种超标床位费拆分规则编码(BD、YD、YDKS) LS_CWFCFZDCS varchar2(20);--单病种超标床位费拆分规则参数 LS_BZCWFCFBZ varchar2(20);--单病种超标床位费拆分规则标志:[单病种床位费拆分[0:原有模式 1:不根据收费上限拆分按原金额发送 2:根据收费上限拆分(收费上限:BM_YBSFDY.SFSX00)] ZY_HCDBZXTYPE varchar2(10);--出院结算根据耗材打包主项表(BM_HCDBZX)判断,本次收费是否在主项表中,存在打包否则不打包(0:否 1:非病种 2:病种 3:非病种+病种)默认:0 LS_SFPDHCDBZX varchar2(10);--是否判断耗材打包主项表(BM_HCDBZX) 0:否 1:是 LS_DBZXGZHCID BM_HCDBZX.GZHCID%type;--主项BM_HCDBZX对应的GZHCID LS_GetType_bkeh83 varchar2(10);--新医保接口bkeh83(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) LS_YYSFXM_BKEH83 BM_YYSFXM.BKEH83%type;--医院收费项目:医保国家标准编码 LS_YBSFDY_BKEH83 BM_YBSFDY.BKEH83%type;--医院收费对应:医保国家标准编码 LS_YBSFXM_BKEH83 BM_YBSFXM.BKEH83%type;--医保收费项目:医保国家标准编码 LS_YBSFDY_MZZYBZ BM_YBSFDY.MZZYBZ%type;--医院收费对应:门诊住院标志 0门诊,1住院,2门诊住院都可用 LS_YBZXLB_MXCSFSYBMSC varchar2(100);--新医保医保项目70开头项目编码(系统参数:SF_MXCSFSYBMSC、ZY_MXCSFSYBMSC=Y)不转成原码医保中心类别(IC_YBBRLB.YBZXLB)多个用|隔开 默认值:空值 LS_YBSFDY_BKEA96 varchar2(1);--限制范围类别: Y-范围内 N-范围外 LS_XMBH00_SXCF BM_ZYCFMX_TEMP00.XMBH00%type;--上限拆分项目编码 LS_XMMC00_SXCF BM_ZYCFMX_TEMP00.XMMC00%type;--上限拆分项目名称 LS_FPXMBH_SXCF BM_ZYCFMX_TEMP00.FPXMBH%type;--上限拆分发票编码 LS_FPXMMC_SXCF BM_ZYCFMX_TEMP00.FPXMMC%type;--上限拆分发票名称 LS_SFYB00_SXCF BM_ZYCFMX_TEMP00.SFYB00%type;--上限拆分是否医保 LS_BCXMHJJE ZY_FYMX00.HJJE00%TYPE; --本次项目合计金额 LS_BKE181 BM_ZYCFMX_TEMP00.bke181%type;--bke181:HIS院内项目编码 LS_BKE182 BM_ZYCFMX_TEMP00.bke182%type;--bke182:His内部名称 LS_BKC507 BM_ZYCFMX_TEMP00.bkc507%type;--bkc507:药师国家编码 LS_BKC506 BM_ZYCFMX_TEMP00.bkc506%type;--bkc506:药师姓名 LS_BKC007_FSYSGJBM varchar2(10);--新医保接口明细上传bkc007节点是否开启发送医师国家编码(=BM_YGBM00.YBYGDM),=0原来模式[0:否,1:门诊,2:住院,3:门诊住院] 默认0 LS_Change_bkeh83_bke045 varchar2(10);--bkeh83(国家编码C码)是否转化为bke045(医保结算编码) LS_Change_bke182_bke046 varchar2(10);--bke182(院内项目名称)是否转化为bke046(医保项目名称) ZY_WGJYSBMSFGYZGYS varchar2(100);--新医保接口明细上传bkc007医师编码是否改用主管医生(参考格式:是否开启|员工性质多个用,隔开) 0:否 1:取ZZYS00 2:取ZRYS00 3:取SXYS00, 默认0| LS_WGJYSBMSFGYZGYS_OPNE varchar2(10); LS_WGJYSBMSFGYZGYS_YGXZ varchar2(100); LS_YGXZ00 BM_YGBM00.YGXZ00%type; --员工性质(一个员工可设置多种性质'0'实习医生,'1'处方医生,'2'护士,'3'收费员,'4'药房人员,'5'系统维护人员'6'采购员,'7'药库保管员 LS_ZZYS00 ZY_BRXXB0.ZZYS00%type; --主治医生员工号 LS_ZRYS00 ZY_BRXXB0.ZRYS00%type; --主任医生员工号 LS_SXYS00 ZY_BRXXB0.SXYS00%type; --实习医生员工号 LS_CFHAO0 BM_ZYCFMX_TEMP00.CFHAO0%type;--医院唯一处方号 LS_SFHCDB_Num number(12,2); --是否耗材打包(数量)=BM_GZHCFL.HCDBSX:耗材打包属性=9:不打包 LS_DRG_STATUS ZY_BRXXB0.DRG_STATUS%type; ZY_CDRGJKQY varchar2(10); CURSOR CUR_FYMX_DATA IS select '0' as FLAG00, --0:项目 1:零散处方,2:医嘱处方 a.MXID00 as MXID00, --明细ID decode(a.JMBZ00,'4',a.ZFJE00,a.ZFJE00-a.JMJE00) as ZFJE00, --自费金额 substrb(c.XMMC00,1,50) as XMMC00, --项目名称 substrb(nvl(decode(ls_SFBZZWGG,'N',c.GG0000,c.BZ0000),'无'),1,10) as GG0000,--规格 nvl(c.DW0000,'无') as DW0000,--单位 a.XMBH00 as XMBH00, --项目编码 e.ZWXM00 as ZWXM00, --医生姓名 round(decode(a.JMBZ00,'0',a.XMDJ00,'4',(a.HJJE00+a.JMJE00)/decode(a.XMSL00,0,1,a.XMSL00),(a.HJJE00-a.JMJE00)/decode(a.XMSL00,0,1,a.XMSL00)),4) as XMDJ00, a.XMSL00 as XMSL00, decode(a.JMBZ00,'4',(a.HJJE00+a.JMJE00),(a.HJJE00-a.JMJE00)) as HJJE00, a.ZFBL00 as ZFBL00, SF_ZY_YBJKFSCZRQ('0',D.ZYID00,D.DJH000,D.CXDJH0,D.JZDH00,D.CZRQ00,LS_FSYBYPFYSFRQHZ) as CZRQ00,--操作日期 C.JSXM00 as JSXM01, e.YSZJHM as YSZJHM, 0 as YPTS00,--用药天数 '' as PCMC00,--频次名称 1 as CSL000, --剂量 c.DW0000 as JLDW00, --剂量单位 nvl(A.ZFFSBZ,'N') as ZFFSBZ, C.SFXMID as SFXMID, --收费项目ID trim(C.GJBM00) as GJBM00, --国家编码 null as K2J000,--库存单位转化率 null as M2J000,--门诊发药单位转化率 null as Z2J000,--住院发药单位转化率 null as YBDW00,--医保单位 null as YB2J00, --医保转换率 e.YGBH00 as YSYGBH, --员工编码 B.BH0000 as YNFPBH,--院内发票编码 D.DJH000 as DJH000,--单据号 nvl(D.CXDJH0,0) as CXDJH0,--冲销单据号 C.SFXMID as bke181, --bke181:HIS院内项目编码 substrb(c.XMMC00,1,100) as bke182,--bke182:His内部名称 null as bkc507,--bkc507:药师国家编码 null as bkc506 --bkc506:药师姓名 from ZY_FYMX00 A,BM_FPXM00 B,BM_YYSFXM C,ZY_BRFY00 D,BM_YGBM00 E where 1=1 and a.XMBH00=C.SFXMID and C.ZYFPID=B.FPXMID and D.DJH000=a.DJH000 and a.KDYS00=e.YGBH00 and B.SFYLXM='Y' and a.JMBZ00<>'2' and a.XMBH00<9999999900 and d.ZYID00=ad_ZYID00 and (decode(nvl(d.yexm00,'0'),'0','母亲',d.yexm00)=ad_YEXM00 or ad_YEXM00='全部') --跨年分开结算 and ((LS_FKJSQY in ('8','9') and exists (select 1 from ZY_JSBCMX FF where FF.DJH000=D.DJH000 and FF.ZYID00=ad_ZYID00 and FF.CZBZ00=LS_CZBZ00 and FF.FZDDH0=LS_FKLSH0)) or (LS_FKJSQY not in ('8','9') and d.djh000>=nvl(ad_QSDJH0,1) and d.djh000<=nvl(ad_ZZDJH0,9999999999) ) ) and ( ( as_FLAG00 in ('0','1') and d.jzdh00 in (select k.jzdh00 from ZY_JZB000 k where k.BRID00=ls_brid00 start with k.jzdh00=ad_JZDH00 connect by prior k.cxjzdh=k.jzdh00) or d.jzdh00+0=0) or ( as_FLAG00 in ('2') and d.ybfsdh='0' and d.czrq00>=as_qsrq00 and d.czrq00<=as_zzrq00 and d.jzdh00+0=0) or ( as_FLAG00 in ('3') and d.ybfsdh='0' and d.jzdh00+0=0 and not exists (select 1 from BM_RQDFS0 where ZYID00 = D.ZYID00 and QDRQ00=D.CZRQ00) ) or ( as_FLAG00 in ('4') and d.jzdh00+0=0) ) union all --不按天汇总 select '1' as FLAG00, max(a.CFID00) as MXID00, sum(round(a.LSDJ00*a.YPZSL0*100)/100) as ZFJE00, substrb(e.YPMC00,1,50) as XMMC00, max(decode(ls_ZYQDSFNSBL,'Y',DECODE(TRIM(E.YPGG00),'100g/袋','散','250g/袋','散',nvl(e.YPGG00,'无')),nvl(e.YPGG00,'无'))) as YPGG00, max(nvl(trim(a.CFDW00),'无')) as DW0000, a.YPNM00 as YPNM00, max(c.YSXM00) as ZWXM00, decode(ls_ZYQDSFNSBL,'Y',1/decode(E.NSBL00,0,1,E.NSBL00),1)*a.LSDJ00 as XMDJ00, sum(decode(ls_ZYQDSFNSBL,'Y',decode(E.NSBL00,0,1,E.NSBL00),1)*a.YPZSL0) as XMSL00, sum(round(a.LSDJ00*a.YPZSL0*100)/100) as HJJE00, max(a.ZFBL00) as ZFBL00, max(d.CZRQ00) as CZRQ00, '0' as JSXM00, max((Select ee.YSZJHM from BM_YGBM00 ee where ee.YGBH00=c.YSGZH0 and rownum=1)) as YSZJHM, max(nvl(a.YYSJ00,1)) as YPTS00,--用药天数 max(a.PCMC00) as PCMC00,--频次名称 max(nvl(round(a.CSL000/a.ZHL000,2),a.YPZSL0)) as CSL000, --剂量 max(a.JLDW00) as JLDW00,--剂量单位 nvl(a.ZFFSBZ,'N') as ZFFSBZ, e.YPNM00 as SFXMID, --收费项目ID null as GJBM00, --国家编码 e.K2J000 as K2J000,--库存单位转化率 e.M2J000 as M2J000,--门诊发药单位转化率 e.Z2J000 as Z2J000,--住院发药单位转化率 e.YBDW00 as YBDW00,--医保单位 e.YB2J00 as YB2J00,--医保转换率 max(c.YSGZH0) as YSYGBH, --员工编码 max(decode(e.LBBH00,'0','01','1','02','2','03','01')) as YNFPBH, --院内发票编码 max(D.DJH000) as DJH000 ,--单据号 max(nvl(D.CXDJH0,0)) CXDJH0,--冲销单据号 max(a.YPNM00) as bke181, --bke181:HIS院内项目编码 max(substrb(e.YPMC00,1,100)) as bke182,--bke182:His内部名称 null as bkc507,--bkc507:药师国家编码 null as bkc506 --bkc506:药师姓名 from YF_ZYCFMX A,YF_ZYCF00 c,ZY_BRFY00 d,BM_YD0000 e where 1=1 and a.CFLSH0=c.CFLSH0 and c.DJH000=d.DJH000 and a.YPNM00=e.YPNM00 and a.SFZBY0='N'--是否自备药 and d.ZYID00=ad_ZYID00 and nvl(LS_FSYBYPFYSFRQHZ,'0') not in ('1','2') and (decode(nvl(d.yexm00,'0'),'0','母亲',d.yexm00)=ad_YEXM00 or ad_YEXM00='全部') --跨年分开结算 and ((LS_FKJSQY in ('8','9') and exists (select 1 from ZY_JSBCMX FF where FF.DJH000=D.DJH000 and FF.ZYID00=ad_ZYID00 and FF.CZBZ00=LS_CZBZ00 and FF.FZDDH0=LS_FKLSH0)) or (LS_FKJSQY not in ('8','9') and d.DJH000>=nvl(ad_QSDJH0,1) and d.DJH000<=nvl(ad_ZZDJH0,9999999999)) ) and ( (as_FLAG00 in ('0','1') and (d.jzdh00 in (select k.jzdh00 from ZY_JZB000 k where k.BRID00=ls_brid00 start with k.jzdh00=ad_JZDH00 connect by prior k.cxjzdh=k.jzdh00) or d.jzdh00+0=0) ) or (as_FLAG00 in ('2') and d.ybfsdh='0' and d.jzdh00+0=0 and d.czrq00>=as_qsrq00 and d.czrq00<=as_zzrq00) or (as_FLAG00 in ('3') and d.ybfsdh='0' and d.jzdh00+0=0 and not exists (select 1 from BM_RQDFS0 where ZYID00 = D.ZYID00 and QDRQ00=D.CZRQ00) ) or (as_FLAG00 in ('4') and d.jzdh00+0=0 ) ) group by e.YPMC00,a.YPNM00,decode(ls_ZYQDSFNSBL,'Y',1/decode(E.NSBL00,0,1,E.NSBL00),1)*a.LSDJ00,e.YPNM00,e.K2J000,e.M2J000,e.Z2J000,e.YBDW00,e.YB2J00,nvl(a.ZFFSBZ,'N') union all --按天汇总 select '1' as FLAG00, --max(a.CFID00) as MXID00, decode(nvl(a.CXCFID,0),0,a.CFID00,a.CXCFID) as MXID00, sum(round(a.LSDJ00*a.YPZSL0*100)/100) as ZFJE00, substrb(e.YPMC00,1,50) as XMMC00, max(decode(ls_ZYQDSFNSBL,'Y',DECODE(TRIM(E.YPGG00),'100g/袋','散','250g/袋','散',nvl(e.YPGG00,'无')),nvl(e.YPGG00,'无'))) as YPGG00, max(nvl(trim(a.CFDW00),'无')) as DW0000, a.YPNM00 as YPNM00, max(c.YSXM00) as ZWXM00, decode(ls_ZYQDSFNSBL,'Y',1/decode(E.NSBL00,0,1,E.NSBL00),1)*a.LSDJ00 as XMDJ00, sum(decode(ls_ZYQDSFNSBL,'Y',decode(E.NSBL00,0,1,E.NSBL00),1)*a.YPZSL0) as XMSL00, sum(round(a.LSDJ00*a.YPZSL0*100)/100) as HJJE00, max(a.ZFBL00) as ZFBL00, --SF_ZY_YBJKFSCZRQ('1',D.ZYID00,D.DJH000,D.CXDJH0,D.JZDH00,D.CZRQ00,LS_FSYBYPFYSFRQHZ) as CZRQ00, max(d.CZRQ00) as CZRQ00, '0' as JSXM00, max((Select ee.YSZJHM from BM_YGBM00 ee where ee.YGBH00=c.YSGZH0 and rownum=1)) as YSZJHM, max(nvl(a.YYSJ00,1)) as YPTS00,--用药天数 max(a.PCMC00) as PCMC00,--频次名称 max(nvl(round(a.CSL000/a.ZHL000,2),a.YPZSL0)) as CSL000, --剂量 max(a.JLDW00) as JLDW00,--剂量单位 nvl(a.ZFFSBZ,'N') as ZFFSBZ, e.YPNM00 as SFXMID, --收费项目ID null as GJBM00, --国家编码 e.K2J000 as K2J000,--库存单位转化率 e.M2J000 as M2J000,--门诊发药单位转化率 e.Z2J000 as Z2J000,--住院发药单位转化率 e.YBDW00 as YBDW00,--医保单位 e.YB2J00 as YB2J00,--医保转换率 max(c.YSGZH0) as YSYGBH, --员工编码 max(decode(e.LBBH00,'0','01','1','02','2','03','01')) as YNFPBH, --院内发票编码 max(D.DJH000) as DJH000 ,--单据号 max(nvl(D.CXDJH0,0)) CXDJH0,--冲销单据号 max(a.YPNM00) as bke181, --bke181:HIS院内项目编码 max(substrb(e.YPMC00,1,100)) as bke182,--bke182:His内部名称 null as bkc507,--bkc507:药师国家编码 null as bkc506 --bkc506:药师姓名 from YF_ZYCFMX A,YF_ZYCF00 c,ZY_BRFY00 d,BM_YD0000 e where 1=1 and a.CFLSH0=c.CFLSH0 and c.DJH000=d.DJH000 and a.YPNM00=e.YPNM00 and a.SFZBY0='N'--是否自备药 and d.ZYID00=ad_ZYID00 and nvl(LS_FSYBYPFYSFRQHZ,'0') in ('1','2') and (decode(nvl(d.yexm00,'0'),'0','母亲',d.yexm00)=ad_YEXM00 or ad_YEXM00='全部') --跨年分开结算 and ((LS_FKJSQY in ('8','9') and exists (select 1 from ZY_JSBCMX FF where FF.DJH000=D.DJH000 and FF.ZYID00=ad_ZYID00 and FF.CZBZ00=LS_CZBZ00 and FF.FZDDH0=LS_FKLSH0)) or (LS_FKJSQY not in ('8','9') and d.DJH000>=nvl(ad_QSDJH0,1) and d.DJH000<=nvl(ad_ZZDJH0,9999999999)) ) and ( (as_FLAG00 in ('0','1') and (d.jzdh00 in (select k.jzdh00 from ZY_JZB000 k where k.BRID00=ls_brid00 start with k.jzdh00=ad_JZDH00 connect by prior k.cxjzdh=k.jzdh00) or d.jzdh00+0=0) ) or (as_FLAG00 in ('2') and d.ybfsdh='0' and d.jzdh00+0=0 and d.czrq00>=as_qsrq00 and d.czrq00<=as_zzrq00) or (as_FLAG00 in ('3') and d.ybfsdh='0' and d.jzdh00+0=0 and not exists (select 1 from BM_RQDFS0 where ZYID00 = D.ZYID00 and QDRQ00=D.CZRQ00) ) or (as_FLAG00 in ('4') and d.jzdh00+0=0 ) ) group by e.YPMC00,a.YPNM00,decode(ls_ZYQDSFNSBL,'Y',1/decode(E.NSBL00,0,1,E.NSBL00),1)*a.LSDJ00, e.YPNM00,e.K2J000,e.M2J000,e.Z2J000,e.YBDW00,e.YB2J00,nvl(a.ZFFSBZ,'N'), decode(nvl(a.CXCFID,0),0,a.CFID00,a.CXCFID) --SF_ZY_YBJKFSCZRQ('1',D.ZYID00,D.DJH000,D.CXDJH0,D.JZDH00,D.CZRQ00,LS_FSYBYPFYSFRQHZ) union all --不按天汇总 select '2' as FLAG00, max(a.YPQLPC) as YPQLPC, sum(round(a.LSDJ00*a.YPZSL0*100)/100) as ZFJE00, substrb(d.YPMC00,1,50) as YPMC00, max(decode(ls_ZYQDSFNSBL,'Y',DECODE(TRIM(d.YPGG00),'100g/袋','散','250g/袋','散',nvl(d.YPGG00,'无')),nvl(d.YPGG00,'无'))) as YPGG00, max(nvl(trim(a.QLDW00),'无')) CFDW00, a.YPNM00 as YPNM00, max(e.ZWXM00) as YSXM00, decode(ls_ZYQDSFNSBL,'Y',1/decode(d.NSBL00,0,1,d.NSBL00),1)*a.LSDJ00 as XMDJ00, sum(decode(ls_ZYQDSFNSBL,'Y',decode(d.NSBL00,0,1,d.NSBL00),1)*a.YPZSL0) as XMSL00, SUM(round(a.LSDJ00*a.YPZSL0*100)/100) AS YPHJJE, MAX(a.ZFBL00) as ZFBL00, max(b.CZRQ00) as CZRQ00, '0' as JSXM00, max(e.YSZJHM) as YSZJHM, 1 as YPTS00,--用药天数 max(a.PCMC00) as PCMC00,--频次名称 max(nvl(round(a.CSL000/a.ZHL000,2),a.YPZSL0)) as CSL000, --剂量 max(a.JLDW00) as JLDW00,--剂量单位 nvl(a.ZFFSBZ,'N') as ZFFSBZ, d.YPNM00 as SFXMID, --收费项目ID null as GJBM00, --国家编码 d.K2J000 as K2J000,--库存单位转化率 d.M2J000 as M2J000,--门诊发药单位转化率 d.Z2J000 as Z2J000,--住院发药单位转化率 d.YBDW00 as YBDW00,--医保单位 d.YB2J00 as YB2J00,--医保转换率 max(e.YGBH00) as YSYGBH, --员工编码 max(decode(D.LBBH00,'0','01','1','02','2','03','01')) as YNFPBH, --院内发票编码 max(B.DJH000) as DJH000 ,--单据号 max(nvl(B.CXDJH0,0)) as CXDJH0,--冲销单据号 max(a.YPNM00) as bke181, --bke181:HIS院内项目编码 max(substrb(d.YPMC00,1,100)) as bke182,--bke182:His内部名称 null as bkc507,--bkc507:药师国家编码 null as bkc506 --bkc506:药师姓名 from YF_YZYPSQ A,ZY_BRFY00 b,BM_YD0000 d,BM_YGBM00 E where 1=1 and a.DJH000=b.DJH000 and a.YPNM00=d.YPNM00 and a.YSGZH0=e.YGBH00 and a.ZYID00=ad_ZYID00 and (decode(nvl(b.yexm00,'0'),'0','母亲',b.yexm00)=ad_YEXM00 or ad_YEXM00='全部') and nvl(LS_FSYBYPFYSFRQHZ,'0') not in ('1','2') --跨年分开结算 and ((LS_FKJSQY in ('8','9') and exists (select 1 from ZY_JSBCMX FF where FF.DJH000=B.DJH000 and FF.ZYID00=ad_ZYID00 and FF.CZBZ00=LS_CZBZ00 and FF.FZDDH0=LS_FKLSH0)) or (LS_FKJSQY not in ('8','9') and a.DJH000>= nvl(ad_QSDJH0,1) and a.DJH000<= nvl(ad_ZZDJH0,9999999999)) ) and ( (as_FLAG00 in ('0','1') and b.jzdh00 in (select k.jzdh00 from ZY_JZB000 k where k.BRID00=ls_brid00 start with k.jzdh00=ad_JZDH00 connect by prior k.cxjzdh=k.jzdh00) or b.jzdh00+0=0 ) or (as_FLAG00 in ('2') and b.ybfsdh='0' and b.jzdh00+0=0 and b.czrq00>=as_qsrq00 and b.czrq00<=as_zzrq00) or (as_FLAG00 in ('3') and b.ybfsdh='0' and b.jzdh00+0=0 and not exists ( select 1 from BM_RQDFS0 where ZYID00 = b.ZYID00 and QDRQ00 = b.CZRQ00) ) or (as_FLAG00 in ('4') and b.jzdh00+0=0 ) ) group by d.YPMC00,a.YPNM00,decode(ls_ZYQDSFNSBL,'Y',1/decode(d.NSBL00,0,1,d.NSBL00),1)*a.LSDJ00,d.YPNM00, d.K2J000,d.M2J000,d.Z2J000,d.YBDW00,d.YB2J00,nvl(a.ZFFSBZ,'N') union all --按天汇总 select '2' as FLAG00, --max(a.YPQLPC) as YPQLPC, decode(nvl(a.CXPCID,0),0,a.YPQLPC,a.CXPCID) as YPQLPC, sum(round(a.LSDJ00*a.YPZSL0*100)/100) as ZFJE00, substrb(d.YPMC00,1,50) as YPMC00, max(decode(ls_ZYQDSFNSBL,'Y',DECODE(TRIM(d.YPGG00),'100g/袋','散','250g/袋','散',nvl(d.YPGG00,'无')),nvl(d.YPGG00,'无'))) as YPGG00, max(nvl(trim(a.QLDW00),'无')) CFDW00, a.YPNM00 as YPNM00, max(e.ZWXM00) as YSXM00, decode(ls_ZYQDSFNSBL,'Y',1/decode(d.NSBL00,0,1,d.NSBL00),1)*a.LSDJ00 as XMDJ00, sum(decode(ls_ZYQDSFNSBL,'Y',decode(d.NSBL00,0,1,d.NSBL00),1)*a.YPZSL0) as XMSL00, SUM(round(a.LSDJ00*a.YPZSL0*100)/100) AS YPHJJE, MAX(a.ZFBL00) as ZFBL00, --SF_ZY_YBJKFSCZRQ('2',b.ZYID00,b.DJH000,b.CXDJH0,b.JZDH00,b.CZRQ00,LS_FSYBYPFYSFRQHZ) as CZRQ00, max(B.CZRQ00) as CZRQ00, '0' as JSXM00, max(e.YSZJHM) as YSZJHM, 1 as YPTS00,--用药天数 max(a.PCMC00) as PCMC00,--频次名称 max(nvl(round(a.CSL000/a.ZHL000,2),a.YPZSL0)) as CSL000, --剂量 max(a.JLDW00) as JLDW00,--剂量单位 nvl(a.ZFFSBZ,'N') as ZFFSBZ, d.YPNM00 as SFXMID, --收费项目ID null as GJBM00, --国家编码 d.K2J000 as K2J000,--库存单位转化率 d.M2J000 as M2J000,--门诊发药单位转化率 d.Z2J000 as Z2J000,--住院发药单位转化率 d.YBDW00 as YBDW00,--医保单位 d.YB2J00 as YB2J00,--医保转换率 max(e.YGBH00) as YSYGBH, --员工编码 max(decode(D.LBBH00,'0','01','1','02','2','03','01')) as YNFPBH, --院内发票编码 max(B.DJH000) as DJH000 ,--单据号 max(nvl(B.CXDJH0,0)) as CXDJH0,--冲销单据号 max(a.YPNM00) as bke181, --bke181:HIS院内项目编码 max(substrb(d.YPMC00,1,100)) as bke182,--bke182:His内部名称 null as bkc507,--bkc507:药师国家编码 null as bkc506 --bkc506:药师姓名 from YF_YZYPSQ A,ZY_BRFY00 b,BM_YD0000 d,BM_YGBM00 E where 1=1 and a.DJH000=b.DJH000 and a.YPNM00=d.YPNM00 and a.YSGZH0=e.YGBH00 and a.ZYID00=ad_ZYID00 and (decode(nvl(b.yexm00,'0'),'0','母亲',b.yexm00)=ad_YEXM00 or ad_YEXM00='全部') and nvl(LS_FSYBYPFYSFRQHZ,'0') in ('1','2') --跨年分开结算 and ((LS_FKJSQY in ('8','9') and exists (select 1 from ZY_JSBCMX FF where FF.DJH000=B.DJH000 and FF.ZYID00=ad_ZYID00 and FF.CZBZ00=LS_CZBZ00 and FF.FZDDH0=LS_FKLSH0)) or (LS_FKJSQY not in ('8','9') and a.DJH000>= nvl(ad_QSDJH0,1) and a.DJH000<= nvl(ad_ZZDJH0,9999999999)) ) and ( (as_FLAG00 in ('0','1') and b.jzdh00 in (select k.jzdh00 from ZY_JZB000 k where k.BRID00=ls_brid00 start with k.jzdh00=ad_JZDH00 connect by prior k.cxjzdh=k.jzdh00) or b.jzdh00+0=0 ) or (as_FLAG00 in ('2') and b.ybfsdh='0' and b.jzdh00+0=0 and b.czrq00>=as_qsrq00 and b.czrq00<=as_zzrq00) or (as_FLAG00 in ('3') and b.ybfsdh='0' and b.jzdh00+0=0 and not exists ( select 1 from BM_RQDFS0 where ZYID00 = b.ZYID00 and QDRQ00 = b.CZRQ00) ) or (as_FLAG00 in ('4') and b.jzdh00+0=0 ) ) group by d.YPMC00,a.YPNM00,decode(ls_ZYQDSFNSBL,'Y',1/decode(d.NSBL00,0,1,d.NSBL00),1)*a.LSDJ00,d.YPNM00, d.K2J000,d.M2J000,d.Z2J000,d.YBDW00,d.YB2J00,nvl(a.ZFFSBZ,'N') , decode(nvl(a.CXPCID,0),0,a.YPQLPC,a.CXPCID) --SF_ZY_YBJKFSCZRQ('2',b.ZYID00,b.DJH000,b.CXDJH0,b.JZDH00,b.CZRQ00,LS_FSYBYPFYSFRQHZ) ; --单病种游标 cursor CUR_ZY_FYMX00_DBZ000 is select A.FLAG00,a.MXID00, nvl(a.ZFJE00,0)ZFJE00,substrb(a.XMMC00,1,50) XMMC00, substrb(nvl(A.XMGG00,'无'),1,10) GG0000,nvl(A.XMDW00,'无') DW0000,a.XMBH00,e.ZWXM00, A.XMDJ00,a.XMSL00,A.HJJE00,a.ZFBL00,A.CZRQ00,a.JSXM00,e.YSZJHM, nvl(YPTS00,0) as YPTS00,--用药天数 PCMC00 as PCMC00,--频次名称 CSL000 as CSL000, --剂量 JLDW00 as JLDW00,--剂量单位 nvl(a.ZFFSBZ,'N') ZFFSBZ, nvl(SFXMID,0)SFXMID, null as GJBM00, --国家编码 null as K2J000,--库存单位转化率 null as M2J000,--门诊发药单位转化率 null as Z2J000,--住院发药单位转化率 null as YBDW00,--医保单位 null as YB2J00, --医保转换率 e.YGBH00 as YSYGBH, --员工编码 substrb(nvl(a.FPXMBH,'13'),1,2) as YNFPBH ,--院内发票编码 nvl(A.DJH000,0) ,--单据号 0 as CXDJH0,--冲销单据号 nvl(SFXMID,0) as bke181, --bke181:HIS院内项目编码 substrb(a.XMMC00,1,100) as bke182,--bke182:His内部名称 null as bkc507,--bkc507:药师国家编码 null as bkc506 --bkc506:药师姓名 from ZY_FYMX00_DBZ000 A,BM_YGBM00 E where a.KDYS00=e.YGBH00 and a.djh000>=ad_QSDJH0 and a.djh000<=ad_ZZDJH0 and a.ZYID00=ad_ZYID00 and a.BRID00=ls_BRID00 --and ((as_FLAG00='5' and A.DBZBM0 is not null) or (as_FLAG00='6' and A.DBZBM0 is null)) --and (decode(nvl(A.yexm00,'0'),'0','母亲',A.yexm00)=ad_YEXM00 or ad_YEXM00='全部') ; cursor CUR_BM_ZYCFMX_TEMP00 is select * from BM_ZYCFMX_TEMP00 where ID0000=ad_ID0000 and SFYB00='Y' order by XMJE00; cursor CUR_BM_ZYCFMX_TEMP00_XNH is select * from BM_ZYCFMX_TEMP00 where ID0000=LS_ID0000 and XMSL00<0; cursor CUR_YBZGXJ is select * from BM_ZYCFMX_TEMP00 where ID0000=ad_ID0000 and FLAG00 in ('1','2') order by SFXMID; --主项打包业务处理 cursor CUR_ZXSFXM is select * from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0' --and B.FLAG00='0' and nvl(B.DBSFXM,0)>0 and nvl(B.DBSFSL,0)>0 and nvl(B.XMSL00,0)-nvl(B.DBSFSL,0)>0 order by B.SFXMID; --耗材打包 cursor CUR_HCDB is select * from BM_ZYCFMX_TEMP00 B where 1=1 and B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0' order by B.GZHCID,B.SFXMID; BEGIN /* 医保接口说明: 未对应为项目或超标项目的的处理办法:如果一个收费项目或药品未对应医保项目,那么有两种处理办法 一、如果BM_YBFPXM表有定义该医保发票项目的未对应或超标的项目医保接口使用的医保项目编号,那么医保接口使用此项目编号 二‘ 否则沿用以前的办法 采用'990000000000'+医保发票编号方式,前缀由表BM_YBBRLB定义,如果没有定义默认前缀为990000000000 IC_YBBRLB.FYBQZ0可以强制改变非医保项目的发送规则。 接口是否按医保目录的项目名称发送由参数XT_YBJK_SFAYBXMMCFS控制, 但有特例,铁路医保要求发院内项目名称,对应指定特殊医保项目的,也要发院内名称 接口文件是否使用医保发票编号,还是使用医保发票名称来传送 由参数ZY_YBFPBH控制 收费项目的金额超过上限是否进行拆分,由参数ZY_SFXMCGSXSFCF控制 医保住院是否按上限结算 由参数ZY_SFASXJS控制 所有医保接口都调用本过程,注意南平医保日清单发送接口 更正以前当SFYBXM为N就按未对应医保项目处理的办法 */ ls_ZYZFSX:=0; ls_ZYZFSX_TEMP:=0; ls_YBSXCE:=0; LS_GZHCID:=0; LS_SFFSHC:='1'; LS_HCDBXM:='0'; LS_BZCBBH:=null; --单病种超标医保发票项目编号 LS_BZCBMC:=null; --单病种超标发票项目名称 LS_BZCBCW:=0; --单病种超标床位费 LS_BZLSHC:=0; --单病种另收耗材费 LS_BZGJBM:=null; --单病种允许另收耗材的国家编码前缀组合,用逗号分隔 LS_SFBZHCDB:='N';--是否单病种耗材打包 Y:是 N:否 lv_CZRQ00:=to_char(sysdate,'YYYYMMDD'); lv_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_ZGXJCF:='N';--医保药品最高限价拆分 Y:拆分 N:不拆分 LS_ZGXJCS:='0';--医保药品最高限价参数 LS_ZGXJID:=0; --医保药品最高限价拆分项目ID LS_XJCEDJ:=0; LS_ZGXJDJ:=0; LS_CLYBSX:=0;--医保上限金额(材料) LS_CLCBBH:=null;--超标项目编号(材料) LS_CLCBMC:=null;--超标项目名称(材料) LS_SFCFXM:='N';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 LS_YYID00:=SF_SF_GETYYID00(); LS_DBZCF0:='Y';--普通和单病种病人是否都拆分超标床位费 LS_ZXDBBZ:='Y';--耗材包设置主项打包标志 Y:打包 N:不打包(兼容旧接口,未维护全部打包) LS_CFSL00:=0;--拆分数量_原 LS_CFDJ00:=0;--拆分单价_原 LS_CFJE00:=0;--拆分金额_原 LS_CFSL01:=0;--拆分数量_新 LS_CFDJ01:=0;--拆分单价_新 LS_CFJE01:=0;--拆分金额_新 LS_DDLSH0:=substrb(ad_DDLSH0,1,30);--订单流水号 LS_FKJSLX:=substrb(as_FKJSLX,1,20);--分开结算类型 空值正常结算 FYCF_ZF:拆分_自费 FYCF_YB:拆分_医保 FYCF_YE:拆分_婴儿 FYCF_MQ:拆分_母亲 FYCF_SND:拆分_上年度 FYCF_BND:拆分_本年度 LS_FKLSH0:=substrb(as_FKLSH0,1,30);--分开结算流水号 LS_FKJZDH:=nvl(ad_FKJZDH,0);--分开结算单号 LS_FKJZJE:=nvl(ad_FKJZJE,0);--分开结算金额 LS_INTXML:=substrb(as_INTXML,1,1000);--备用参数xml LS_FKJSQY:='0';--分开结算启用 0:否 8:跨年结算分开结算 LS_CZBZ00:='0';--操作标志 0:正常结算 1:中途结算 2:年度结算 3:逃跑结算 01:跨年上年度 02:跨年本年度 if LS_FKJSLX='FYCF_SND' and as_FKLSH0 is not null then --FYCF_SND:拆分_上年度 LS_FKJSQY:='8'; LS_CZBZ00:='01'; end if; if LS_FKJSLX='FYCF_BND' and as_FKLSH0 is not null then --FYCF_BND:拆分_本年度 LS_FKJSQY:='9'; LS_CZBZ00:='02'; end if; LS_YPXJCFBZ:='0';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) LS_BKEH83:=null;--国家标准对应编码 LS_BKEH05:=null;--医保备用1 LS_BKEH06:=null;--医保备用2 LS_BAKXML:=null;--HIS备用字段(xml格式)后续扩展 LS_HCDBZXRec:=0;-- 耗材打包主项明细记录数 LS_HCDBZXNum:=0;-- 耗材打包主项明细临时变量 LS_CWFCFZDBH:=null;--单病种超标床位费拆分规则编码(BD、YD、YDKS) LS_CWFCFZDCS:=null;--单病种超标床位费拆分规则参数 LS_BZCWFCFBZ:=null;--单病种超标床位费拆分规则标志:[单病种床位费拆分[0:原有模式 1:不根据收费上限拆分按原金额发送 2:根据收费上限拆分(收费上限:BM_YBSFDY.SFSX00)] ZY_HCDBZXTYPE:='0';--出院结算根据耗材打包主项表(BM_HCDBZX)判断,本次收费是否在主项表中,存在打包否则不打包(0:否 1:非病种 2:病种 3:非病种+病种)默认:0 LS_SFPDHCDBZX:='0';--是否判断耗材打包主项表(BM_HCDBZX) 0:否 1:是 LS_DBZXGZHCID:=0;--主项BM_HCDBZX对应的GZHCID LS_YYSFXM_BKEH83:=null;--医院收费项目:医保国家标准编码 LS_YBSFDY_BKEH83:=null;--医院收费对应:医保国家标准编码 LS_YBSFXM_BKEH83:=null;--医保收费项目:医保国家标准编码 LS_Change_bkeh83_bke045:='00';--bkeh83(国家编码C码)是否转化为bke045(医保结算编码) LS_Change_bke182_bke046:='00';--bke182(院内项目名称)是否转化为bke046(医保项目名称) ZY_WGJYSBMSFGYZGYS:=null;--新医保接口明细上传bkc007医师编码是否改用主管医生(参考格式:是否开启|员工性质多个用,隔开) 0:否 1:取ZZYS00 2:取ZRYS00 3:取SXYS00, 默认0| LS_WGJYSBMSFGYZGYS_OPNE:=null; LS_WGJYSBMSFGYZGYS_YGXZ:=null; LS_SFHCDB_Num:=0;--是否耗材打包(数量)=HCDBSX:耗材打包属性=9:不打包 --是否启用DRG分组结算ZY_CDRGJKQY begin select nvl(max(upper(trim(value0))),'0') into ZY_CDRGJKQY from xt_xtcs00 where name00='ZY_CDRGJKQY'; exception when others then ZY_CDRGJKQY:='0'; end; if as_FLAG00='0' then--只传入结帐单号 select max(BRID00),max(ZYID00),min(DJH000),max(DJH000) into ls_BRID00,ad_ZYID00,ad_QSDJH0,ad_ZZDJH0 from ZY_BRFY00 where JZDH00 = ad_JZDH00; elsif as_FLAG00='1'then select BRID00,ZYID00 into ls_BRID00,ad_ZYID00 from ZY_BRFY00 where DJH000=ad_QSDJH0; elsif as_FLAG00 in ('2','3','4','5','6') then--有传入ZYID00 select BRID00 into ls_BRID00 from ZY_BRXXB0 where ZYID00=ad_ZYID00; end if; --新医保明细上传项目是否按原编码上传,Y:是,N:否 (70或90开头),默认N begin select trim(VALUE0) into ZY_MXCSFSYBMSC from XT_XTCS00 where NAME00 = 'ZY_MXCSFSYBMSC'; exception when others then ZY_MXCSFSYBMSC:='N'; end; --LS_CDRGJK varchar2(10);--CDRG接口 Y:启用 N:不启用 begin select SF_ZY_XTCS00(LS_BRID00,'ZY_CDRGJKQY') into LS_CDRGJK from dual; exception when others then LS_CDRGJK:='N'; end; --ZY_FSYBYPFYSFRQHZ:住院医保数据整理(SP_ZY_YBJK00_FJ0000)药品费用是否按操作日期汇总[0:否 1:药品和项目 2:药品]默认:0 select substrb(trim(nvl(max(VALUE0),'0')),1,10) into LS_FSYBYPFYSFRQHZ from XT_XTCS00 where NAME00='ZY_FSYBYPFYSFRQHZ'; LS_FSYBYPFYSFRQHZ:=nvl(LS_FSYBYPFYSFRQHZ,'0'); select Trim(nvl(max(value0),'N')) into ls_DBZJK0 from xt_xtcs00 where name00='ZY_YBDBZJSJK'; select SF_ZY_XTCS00(ls_BRID00,'ZY_GZHCYBFS') into LS_HCJKQY from dual; if (ad_DBZBM0 is not null) then select count(1) into LS_COUNT0 from BM_GZHCFL B where B.SFDBZ0='1' and trim(B.XXZLXM) is not null and instrb(','||trim(B.XXZLXM)||',',','||trim(ad_DBZBM0)||',')>0; if LS_COUNT0>0 then LS_SFBZHCDB:='Y';--是否单病种耗材打包 Y:是 N:否 else select count(1) into LS_COUNT0 from BM_GZHCMX A, BM_GZHCFL B where A.GZHCID=B.GZHCID and B.SFDBZ0='1' and B.GZHCID in (select aa.GZHCID from BM_GZHCBZ aa where aa.DBZBM0=ad_DBZBM0); if LS_COUNT0>0 then LS_SFBZHCDB:='Y';--是否单病种耗材打包 Y:是 N:否 end if; end if; end if; if LS_SFBZHCDB='Y' then LS_HCJKQY:='N'; end if; begin select a.YBBRLB,a.FBBH00,a.YBLB00,b.YBID00,a.YBKH00,a.ZZYS00,a.ZRYS00,a.SXYS00, a.DBZBM0,A.DBZMC0,a.SFJZFP,a.BZBMLB,substrb(trim(a.YBZYH0),1,30)YBZYH0 ,nvl(A.DRG_STATUS,'-1') into ls_YBBRLB,ls_FBBH00,ls_yblb00,ls_YBID00,ls_YBKH00,LS_ZZYS00,LS_ZRYS00,LS_SXYS00, LS_DBZBM0,LS_DBZMC0,LS_SFJZFP,LS_BZBMLB,LS_YBZYH0 ,LS_DRG_STATUS from ZY_BRXXB0 A,BM_BRXXB0 B where A.BRID00=B.BRID00 and A.ZYID00 = AD_ZYID00; exception when no_data_found then as_YHMSG0:='获取住院病人信息表异常!'; as_SYSMSG:=as_YHMSG0; rollback; return; end; --if ZY_CDRGJKQY='6' and LS_DRG_STATUS in('0','1','2','5','-1') then --2021.12.13 XMGL-20211213-001 if ZY_CDRGJKQY='6' and LS_DRG_STATUS in('3','4','-1') and LS_FBBH00=3 and LS_DBZBM0<>null then as_YHMSG0:='系统DRG分组状态异常不能结算!'; as_SYSMSG:='STATUS='||LS_DRG_STATUS; rollback; return; end if; --取医保中心类别 begin select YBZXLB,FYBQZ0,SFXNH0 into ls_YBZXLB,ls_FYBQZ0,ls_SFXNH0 from IC_YBBRLB where (FBBH00,YBLB00)=(select FBBH00,YBLB00 from ZY_BRXXB0 where ZYID00=AD_ZYID00); exception when no_data_found then as_YHMSG0:='系统字典数据不完整,病人的医保中心名称不存在,请与系统管理员联系!'; as_SYSMSG:=SQLERRM||'select * from ic_ybbrlb where ybmc00='||nvl(as_YBMC00,'空的'); rollback; return; end; --2021.07.16 住院单病种超标床位费拆分字典--判断---begin-- if LS_DBZBM0 is not null and LS_YBZYH0 is not null and LS_YBZYH0 not in ('0') then if substrb(LS_YBZYH0,1,4)='YDKS' then LS_CWFCFZDBH:='YDKS';--单病种超标床位费拆分规则编码(BD、YD、YDKS) elsif substrb(LS_YBZYH0,1,2)='YD' then LS_CWFCFZDBH:='YD';--单病种超标床位费拆分规则编码(BD、YD、YDKS) else LS_CWFCFZDBH:='BD';--单病种超标床位费拆分规则编码(BD、YD、YDKS) end if; --获取对应的参数设置:[0:不处理按现有规则 1:不拆分由医保判断 2:院内拆分根据(BM_YBSFDY.SFSX00)] LS_CWFCFZDCS:=nvl(substrb(SF_SF_TYZD00('住院单病种超标床位费拆分字典',LS_CWFCFZDBH),1,20),'0'); end if; --2021.07.16 住院单病种超标床位费拆分字典--判断---end-- --农合病人是否实时结算 begin select upper(trim(VALUE0)) into ls_XNHCSLX from XT_XTCS00 where NAME00 = 'ZY_XNHCSLX'; exception when others then ls_xnhcslx:='N'; end; ---医生姓名是否改为医生证件号 by ZYSF-20120410-001----begin---- begin select trim(value0) into ls_MZSFYSZJHM FROM xt_xtcs00 where name00='SF_MZSFYSZJHM'; exception when OTHERS then ls_MZSFYSZJHM:='N'; end; if ls_MZSFYSZJHM='Y' then select SF_ZY_GetYYKSBM(ad_ZYID00,1) YSZJHM into ls_YSZJHM from dual; --0:医院科室编码 1:医生证件号 end if; --全成分浓缩比处理 begin select upper(trim(VALUE0)) into ls_ZYQDSFNSBL from XT_XTCS00 where NAME00 = 'ZY_ZYQDSFANSBL'; EXCEPTION when OTHERS then ls_ZYQDSFNSBL:='N'; end; ---医生姓名是否改为医生证件号 by ZYSF-20120410-001----end---- ls_XNHSFRQ := 'N'; if ls_XNHCSLX = 'YN' then select substrb(upper(trim(nvl(max(value0),'Y'))),1,1) into ls_XNHSFRQ from XT_XTCS00 where NAME00 = 'ZY_XNHCSLX_SFRQ'; end if; --医保单价*数量与金额是否要求严格相等,泉州医保接口要求单价*数量必须等于金额 BEGIN select VALUE0 into ls_DJSYXJ from XT_XTCS00 where NAME00 = 'SF_YBDJSLJE'; EXCEPTION WHEN OTHERS THEN ls_DJSYXJ:='N'; END; --收费项目的金额超过上限是否进行拆分 BEGIN select upper(trim(VALUE0)) into ls_CGSXSFCF from XT_XTCS00 where NAME00 = 'ZY_SFXMCGSXSFCF'; EXCEPTION WHEN OTHERS THEN ls_CGSXSFCF:='Y'; END; --接口文件是否使用医保发票编号,还是使用医保发票名称来传送 BEGIN select upper(substrb(value0,1,1)) into ls_SYFPBH from XT_XTCS00 where NAME00 = 'ZY_YBFPBH'; EXCEPTION WHEN OTHERS THEN ls_SYFPBH:='N'; END; --接口是否按医保目录的项目名称发送 BEGIN select upper(substrb(value0,1,1)) into ls_ybmcfs from xt_xtcs00 where name00='XT_YBJK_SFAYBXMMCFS'; EXCEPTION when others then ls_ybmcfs:='N'; END; --接口项目名称是否按新格式发送(医保项目名称(院内项目名称)) begin select upper(trim(VALUE0)) into ls_XMFSGS from xt_xtcs00 where name00='SF_YBFSXMMCGS'; exception when others then ls_XMFSGS:='N'; end; --医保住院是否按上限结算 begin select trim(VALUE0) into ZY_SFASXJS from XT_XTCS00 where NAME00 = 'ZY_SFASXJS'; exception when others then ZY_SFASXJS:='N'; end; --是否项目的备注作为规格传送给医保 begin select trim(VALUE0) into ls_SFBZZWGG from XT_XTCS00 where NAME00='ZY_BYXMBZSFZWGGCSYB'; exception when others then ls_SFBZZWGG:='N'; end; select nvl(max(trim(VALUE0)),'N') into XT_YBMLSPSFZJYYBZX from XT_XTCS00 where NAME00='XT_YBMLSPSFZJYYBZX' and VALUE0='Y'; if XT_YBMLSPSFZJYYBZX='Y' then LS_BZDYBH:=to_char(ls_FBBH00)||'-'||ls_YBZXLB||'%'; else LS_BZDYBH:=to_char(ls_FBBH00)||'-'||ls_YBZXLB||'-'||ls_YBBRLB||'%'; end if; select count(*) into XT_ZDYBYPMLXYSPBR from BM_TYZD00 where ZDMC00='指定费别审批的药品目录' and YXBZ00='1' and BZDYBH like LS_BZDYBH; --and BZDYBH=to_char(ls_FBBH00)||'-'||ls_YBZXLB||'-'||ls_YBBRLB; ----一次性材料项目格式是否改为 医保对应项目+(医院收费项目) begin select trim(value0) into ls_YCXCLXMXGS FROM xt_xtcs00 where name00='ZY_YCXCLXMXGS'; exception WHEN OTHERS THEN ls_YCXCLXMXGS:='N'; end; --是否厦门医保接口 厦门医保接口ZY_YCXCLXMXGS='Y'时材料发送格式医保对应项目+(医院收费项目)其它地区格式:医保对应项目(医院收费项目) begin select trim(value0) into ls_SFXMYBJK FROM xt_xtcs00 where name00='ZY_SFXMYBJK'; exception WHEN OTHERS THEN ls_SFXMYBJK:='N'; end; --取需要审批的材料单价 BEGIN select upper(trim(VALUE0)) into ls_XMDJSX from XT_XTCS00 where NAME00 = 'ZY_CLXMSPDJSX'; EXCEPTION WHEN OTHERS THEN ls_XMDJSX:='0'; END; --医保对应目录发生错误时,是否发送医保中心 BEGIN select upper(trim(VALUE0)) into ls_SFYBMLDYCWFSYBZX from XT_XTCS00 where NAME00='ZY_SFYBMLDYCWFSYBZX'; EXCEPTION WHEN OTHERS THEN ls_SFYBMLDYCWFSYBZX:='N'; END; --单病种结算超额是否分开结算 Y:农合和医保都分开结算 M:医保分开结算(农合除外) P:农合分开结算(医保除外) N:都不分开结算 默认值N:不分开结算(ZY_YBDBZJSJK=M有效) begin select trim(VALUE0) into ZY_DBZCEFKJS from XT_XTCS00 where NAME00='ZY_DBZCEFKJS'; exception when others then ZY_DBZCEFKJS:='N'; end; --SF_SFQYYBXJJK 门诊或住院系统是否启用医保限价接口 Y:启用 N:不启用 默认值N:不启用 begin select SF_SF_YBXJQY(LS_BRID00,ad_ZYID00,'1') into LS_YBXJQY from dual;--返回值 Y:启用 N:不启用 exception when others then LS_YBXJQY:='N'; end; --ZY_YBYPZGXJCF 住院收费医保药品超过医保最高限价是否拆分参数格式:(类别,收费项目ID) 类别:0:都不拆分 1:都拆分 2:医保拆分(农合除外) 3:农合拆分(医保除外) 默认值:0,0都不拆分 begin select trim(VALUE0) into ZY_YBYPZGXJCF from XT_XTCS00 where NAME00 = 'ZY_YBYPZGXJCF'; exception when others then ZY_YBYPZGXJCF:='0,0'; end; --ZY_YPCWZHFS:住院药品最高限价转化方式:Y:单价不变改数量 N:数量不变改单价 M:数量和单价不变根据参数ZY_YBYPZGXJCF拆分,F:数量不变,单价=限价超过按原项目非医保 默认:N begin select trim(VALUE0) into ZY_YPCWZHFS from XT_XTCS00 where NAME00 = 'ZY_YPCWZHFS'; exception when others then ZY_YPCWZHFS:='N'; end; --ZY_SFBQCFS住院日清单发送时,是否发送负数数据:Y发送N不发送 默认N begin select trim(VALUE0) into ZY_SFBQCFS from XT_XTCS00 where NAME00 = 'ZY_SFBQCFS'; exception when others then ZY_SFBQCFS:='N'; end; --ZY_HCDBZXTYPE 出院结算根据耗材打包主项表(BM_HCDBZX)判断,本次收费是否在主项表中,存在打包否则不打包(0:否 1:非病种 2:病种 3:非病种+病种)默认:0 begin select substrb(trim(VALUE0),1,10) into ZY_HCDBZXTYPE from XT_XTCS00 where name00 = 'ZY_HCDBZXTYPE'; exception when others then ZY_HCDBZXTYPE:='0'; end; --GetType_bkeh83:新医保接口bkeh83(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) LS_GetType_bkeh83:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','GetType_bkeh83'),1,10),'1'); --YBZXLB_MXCSFSYBMSC 新医保医保项目70开头项目编码(系统参数:SF_MXCSFSYBMSC、ZY_MXCSFSYBMSC=Y)不转成原码医保中心类别(IC_YBBRLB.YBZXLB)多个用|隔开 默认值:空值 LS_YBZXLB_MXCSFSYBMSC:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','YBZXLB_MXCSFSYBMSC'),1,100)); if LS_YBZXLB_MXCSFSYBMSC is not null and instrb('|'||LS_YBZXLB_MXCSFSYBMSC||'|','|'||trim(LS_YBZXLB)||'|')>0 then ZY_MXCSFSYBMSC:='N';--新医保明细上传项目是否按原编码上传,Y:是,N:否 (70或90开头),默认N end if; if as_SFXYB0='0' then--是否新医保 0:否 1:是 ZY_MXCSFSYBMSC:='N';--新医保明细上传项目是否按原编码上传,Y:是,N:否 (70或90开头),默认N end if; --住院收费医保单病种耗材打包原明细项处理方式 Y:单价和金额为0 N:数量和金额为0,Y:单价和金额为0,Q:单价、数量、金额都不变 默认值:Y begin select upper(trim(VALUE0)) into ZY_GZHMMXCLFS from XT_XTCS00 where NAME00 = 'ZY_GZHMMXCLFS'; exception when others then ZY_GZHMMXCLFS:='Y'; end; ZY_GZHMMXCLFS:=nvl(trim(ZY_GZHMMXCLFS),'Y'); begin LS_ZGXJCS:=to_number(substrb(trim(ZY_YBYPZGXJCF),1,1)); --医保药品最高限价参数 LS_ZGXJID:=to_number(substrb(trim(ZY_YBYPZGXJCF),3,10)); --医保药品最高限价拆分项目ID exception when others then LS_ZGXJCF:='N';--医保药品最高限价拆分 Y:拆分 N:不拆分 LS_ZGXJCS:='0';--医保药品最高限价参数 LS_ZGXJID:=0; --医保药品最高限价拆分项目ID end; if (LS_FBBH00=3) and (LS_YBXJQY='Y') then if (LS_ZGXJCS in ('1')) then LS_ZGXJCF:='Y'; end if; if (LS_ZGXJCS in ('2')) and (LS_SFXNH0 not in ('1')) then LS_ZGXJCF:='Y'; end if; --2:医保启用(农合除外) if (LS_ZGXJCS in ('3')) and (LS_SFXNH0 in ('1')) then LS_ZGXJCF:='Y'; end if; --3:农合启用(医保除外) end if; -- 医保收费对应未找到是否直接按自费结算 Y:是 N:否-提示错误 默认:N LS_WDYZF0:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','YBSFDYWZDSFZJAZFJS'),1,10),'N'); --医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0 LS_ZJHMLY:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','YSZJHMLY'),1,10),'0'); --新医保接口明细上传bkc007节点是否开启发送医师国家编码(=BM_YGBM00.YBYGDM),=0原来模式[0:否,1:门诊,2:住院,3:门诊住院] 默认0 LS_BKC007_FSYSGJBM:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','BKC007_FSYSGJBM'),1,10),'0'); --新医保接口bkeh83(国家编码C码)是否转化为bke045(医保结算编码)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 LS_Change_bkeh83_bke045:= nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','Change_bkeh83_bke045'),1,10),'00'); --新医保接口bke182(院内项目名称)是否转化为bke046(医保项目名称)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 LS_Change_bke182_bke046:= nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','Change_bke182_bke046'),1,10),'00'); --ZY_WGJYSBMSFGYZGYS:新医保接口明细上传bkc007医师编码是否改用主管医生(参考格式:是否开启|员工性质多个用,隔开) 0:否1:是, 默认0|0 ZY_WGJYSBMSFGYZGYS:= nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','ZY_WGJYSBMSFGYZGYS'),1,100),'0|0'); if ZY_WGJYSBMSFGYZGYS is not null then LS_WGJYSBMSFGYZGYS_OPNE:=trim(substrb(SF_SF_RETURNINDEXEH(ZY_WGJYSBMSFGYZGYS,'|', 1),1,10)); LS_WGJYSBMSFGYZGYS_YGXZ:=trim(substrb(SF_SF_RETURNINDEXEH(ZY_WGJYSBMSFGYZGYS,'|', 2),1,100)); end if; --查找最高限价对应的项目编码和名称 --ZY_YPCWZHFS=M:数量和单价不变根据参数ZY_YBYPZGXJCF拆分=M不变单价--begin-- if ZY_YPCWZHFS='M' and LS_ZGXJCF='Y' and LS_ZGXJID>0 then begin select a.BH0000 as YPXJFPBH,a.XMMC00 as YPXJFPMC,decode(nvl(C.MZZYBZ,'2'),'0','N',C.SFYBXM) as YPXJSFYB,decode(nvl(C.MZZYBZ,'2'),'0',null,C.YBXMBH) as YPXJYBBH,D.XMMC00 as YPXJYBMC,D.XMDW00 as YPXJYBDW into LS_YPXJFPBH,LS_YPXJFPMC,LS_YPXJSFYB,LS_YPXJYBBH,LS_YPXJYBMC,LS_YPXJYBDW from BM_YBFPXM A,VW_BM_YBSFDY C,BM_YBSFXM D where 1=1 and a.BH0000 = C.YBZYFP and a.YBZXLB = C.YBZXLB and C.FBBH00 = a.FBBH00(+) and C.YBBRLB = LS_YBBRLB and C.SFXMID = LS_ZGXJID and C.YBZXLB = D.YBZXLB(+) and C.YBXMBH = D.XMBH00(+) and C.SFYP00 = decode('0','0','N','Y') and a.YBZXLB = LS_YBZXLB and a.SYBZ00 <> '1' --非门诊 --and (LS_WDYZF0='Y' or nvl(C.MZZYBZ,'2') in ('1','2')) ; if trim(LS_YPXJYBBH) is not null and trim(LS_YPXJYBMC) is not null then LS_YPXJCFBZ:='1';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) end if; exception when others then LS_YPXJCFBZ:='0';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) end; --医保项目编号为空设置为不拆分 if trim(LS_YPXJYBBH) is null or trim(LS_YPXJYBMC) is null then LS_YPXJCFBZ:='0';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) end if; end if; --ZY_YPCWZHFS=M:数量和单价不变根据参数ZY_YBYPZGXJCF拆分=M不变单价--end-- if ZY_YPCWZHFS='F' then --F:数量不变,单价=限价超过按原项目非医保 LS_ZGXJCF:='Y';--医保药品最高限价拆分 Y:拆分 N:不拆分 LS_ZGXJCS:='0';--医保药品最高限价参数 LS_ZGXJID:=0; --医保药品最高限价拆分项目ID LS_YPXJCFBZ:='2';--药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) end if; --医保编号前缀编码,是否目录限制 begin select FBMGZ0,SFMLXZ,ZYZFSX into ls_YBBHQZ,ls_SFMLXZ,ls_ZYZFSX from bm_ybbrlb where YBZXLB = ls_YBZXLB and YBBRLB = ls_YBBRLB; exception when no_data_found then ls_YBBHQZ:='990000000000'; --非医保项目的编码前缀 end; --2021.07.23 根据参数ZY_HCDBZXTYPE开启判断(出院结算根据耗材打包主项表(BM_HCDBZX)判断,本次收费是否在主项表中,存在打包否则不打包(0:否 1:非病种 2:病种 3:非病种+病种)默认:0)--begin--- if ZY_HCDBZXTYPE='0' then LS_SFPDHCDBZX:='0';--是否判断耗材打包主项表(BM_HCDBZX) 0:否 1:是 elsif ZY_HCDBZXTYPE='3' then LS_SFPDHCDBZX:='1';--是否判断耗材打包主项表(BM_HCDBZX) 0:否 1:是 else if ZY_HCDBZXTYPE='1' and LS_DBZBM0 is null then LS_SFPDHCDBZX:='1';--是否判断耗材打包主项表(BM_HCDBZX) 0:否 1:是 elsif ZY_HCDBZXTYPE='2' and LS_DBZBM0 is not null then LS_SFPDHCDBZX:='1';--是否判断耗材打包主项表(BM_HCDBZX) 0:否 1:是 end if; end if; if LS_SFPDHCDBZX='1' then --判断本次收费项目是否包含在表BM_HCDBZX, begin select max(aa.GZHCID),count(1) into LS_DBZXGZHCID,LS_HCDBZXNum from BM_HCDBZX aa where aa.YXBZ00='1' and aa.SFXMID in ( select a.XMBH00 from ZY_FYMX00 A,BM_FPXM00 B,BM_YYSFXM C,ZY_BRFY00 D,BM_YGBM00 E where 1=1 and a.XMBH00=C.SFXMID and C.ZYFPID=B.FPXMID and D.DJH000=a.DJH000 and a.KDYS00=e.YGBH00 and B.SFYLXM='Y' and a.XMBH00<9999999900 and d.ZYID00=ad_ZYID00 and a.JMBZ00<>'2' and ( (as_FLAG00 in ('0','1') and (d.jzdh00 in (select k.jzdh00 from ZY_JZB000 k where k.BRID00=ls_brid00 start with k.jzdh00=ad_JZDH00 connect by prior k.cxjzdh=k.jzdh00) or d.jzdh00+0=0) ) or (as_FLAG00 in ('2') and d.jzdh00+0=0 and d.ybfsdh='0' and d.czrq00>=as_qsrq00 and d.czrq00<=as_zzrq00) or (as_FLAG00 in ('3') and d.jzdh00+0=0 and d.ybfsdh='0' and not exists (select 1 from BM_RQDFS0 where ZYID00 = D.ZYID00 and QDRQ00=D.CZRQ00)) or (as_FLAG00 in ('4') and d.jzdh00+0=0 and 1=1 ) or (as_FLAG00 not in ('0','1','2','3','4') and 1=0 ) and (decode(nvl(d.yexm00,'0'),'0','母亲',d.yexm00)=ad_YEXM00 or ad_YEXM00='全部') --跨年分开结算 and ((LS_FKJSQY in ('8','9') and exists (select 1 from ZY_JSBCMX FF where FF.DJH000=D.DJH000 and FF.ZYID00=ad_ZYID00 and FF.CZBZ00=LS_CZBZ00 and FF.FZDDH0=LS_FKLSH0)) or (LS_FKJSQY not in ('8','9') and d.djh000>=nvl(ad_QSDJH0,1) and d.djh000<=nvl(ad_ZZDJH0,9999999999)) ) ) ); exception when others then LS_HCDBZXNum:=0;--耗材打包主项明细临时变量 LS_DBZXGZHCID:=0;--主项BM_HCDBZX对应的GZHCID end; if nvl(LS_HCDBZXNum,0)<=0 then --未维护主项 把单病种打包、耗材打包标志、耗材包设置主项打包标志 全部改为N LS_SFBZHCDB:='N';--是否单病种耗材打包 Y:是 N:否 LS_HCJKQY:='N'; --高值耗材接口启用 Y:是 N:否 LS_ZXDBBZ:='N';--耗材包设置主项打包标志 Y:打包 N:不打包 LS_DBZXGZHCID:=0;--主项BM_HCDBZX对应的GZHCID end if; end if; --2021.07.23 根据参数ZY_HCDBZXTYPE开启判断(出院结算根据耗材打包主项表(BM_HCDBZX)判断,本次收费是否在主项表中,存在打包否则不打包(0:否 1:非病种 2:病种 3:非病种+病种)默认:0)--end--- select SQ_ZY_TEMP00_ID0000.nextval into LS_ID0000 from dual; select SQ_ZY_TEMP00_ID0000.nextval into ad_ID0000 from dual; if LS_YPXJCFBZ in ('1','2') then --药品最高限价拆分标识 0:不拆分 1:拆分(数量不变,单价=最高限价 超过独立生成一条) 2:拆分(数量不变,单价=最高限价 超过原药品项目非医保) select SQ_ZY_TEMP00_ID0000.nextval into LS_YPXJID00 from dual; end if; if as_FLAG00 in ('5','6') then open CUR_ZY_FYMX00_DBZ000; else open CUR_FYMX_DATA; end if; LOOP begin if as_FLAG00 in ('5','6') then fetch CUR_ZY_FYMX00_DBZ000 into ls_FLAG00,ls_MXID00,ls_ZFJE00,ls_XMMC00,ls_GG0000,ls_DW0000, ls_XMBH00,ls_ZWXM00,ls_XMDJ00,ls_XMSL00,ls_HJJE00,ls_ZFBL00, ls_CZRQ00,ls_JSXM01,lv_YSZJHM,ls_YPTS00,ls_PCMC00,ls_CSL000, ls_JLDW00,ls_ZFFSBZ,LS_SFXMID,LS_GJBM00, LS_K2J000,--库存单位转化率 LS_M2J000,--门诊发药单位转化率 LS_Z2J000,--住院发药单位转化率 LS_YBDW00,--医保单位 LS_YB2J00,--医保转换率 LS_YSYGBH,--医生员工编码=BM_YGBM00.YGBH00 LS_YNFPBH,--院内发票编号 LS_DJH000,--单据号 LS_CXDJH0, --冲销单据号 LS_bke181, --bke181:HIS院内项目编码 LS_bke182,--bke182:His内部名称 LS_bkc507,--bkc507:药师国家编码 LS_bkc506 --bkc506:药师姓名 ; EXIT WHEN CUR_ZY_FYMX00_DBZ000%notfound; else fetch CUR_FYMX_DATA into ls_FLAG00,ls_MXID00,ls_ZFJE00,ls_XMMC00,ls_GG0000,ls_DW0000, ls_XMBH00,ls_ZWXM00,ls_XMDJ00,ls_XMSL00,ls_HJJE00,ls_ZFBL00, ls_CZRQ00,ls_JSXM01,lv_YSZJHM,ls_YPTS00,ls_PCMC00,ls_CSL000, ls_JLDW00,ls_ZFFSBZ,LS_SFXMID,LS_GJBM00, LS_K2J000,--库存单位转化率 LS_M2J000,--门诊发药单位转化率 LS_Z2J000,--住院发药单位转化率 LS_YBDW00,--医保单位 LS_YB2J00, --医保转换率 LS_YSYGBH,--医生员工编码=BM_YGBM00.YGBH00 LS_YNFPBH, --院内发票编号 LS_DJH000,--单据号 LS_CXDJH0, --冲销单据号 LS_bke181, --bke181:HIS院内项目编码 LS_bke182,--bke182:His内部名称 LS_bkc507,--bkc507:药师国家编码 LS_bkc506 --bkc506:药师姓名 ; EXIT WHEN CUR_FYMX_DATA%notfound; end if; LS_CFHAO0:=substrb(ls_MXID00,1,20); --2021.10.15 根据参数设置,把某些员工编码转化掉--begin-- begin select YGXZ00 into LS_YGXZ00 from BM_YGBM00 where YGBH00=LS_YSYGBH; exception when others then LS_YGXZ00:=null; end; --新医保接口明细上传bkc007医师编码是否改用主管医生(参考格式:是否开启|员工性质多个用,隔开) 0:否 1:取ZZYS00 2:取ZRYS00 3:取SXYS00, 默认0| if LS_WGJYSBMSFGYZGYS_YGXZ is not null and trim(LS_YGXZ00) is not null and instrb(','||trim(LS_WGJYSBMSFGYZGYS_YGXZ)||',',','||trim(LS_YGXZ00)||',')>0 then if LS_WGJYSBMSFGYZGYS_OPNE='1' and LS_ZZYS00 is not null and LS_ZZYS00 not in (0) then LS_YSYGBH:=LS_ZZYS00; end if; if LS_WGJYSBMSFGYZGYS_OPNE='2' and LS_ZRYS00 is not null and LS_ZRYS00 not in (0) then LS_YSYGBH:=LS_ZRYS00; end if; if LS_WGJYSBMSFGYZGYS_OPNE='3' and LS_SXYS00 is not null and LS_SXYS00 not in (0) then LS_YSYGBH:=LS_SXYS00; end if; end if; --2021.10.15 根据参数设置,把某些员工编码转化掉--end-- --2018.04.10 if ls_MZSFYSZJHM not in ('Y') then ls_ZWXM00:=LS_YSYGBH; end if; --取高值耗材项目ID LS_TMPNUM:=0; LS_GZHCID:=0; LS_SFFSHC:='1'; LS_HCDBXM:=''; LS_CWNUM0:=0; LS_CWZHBZ:='N';--普通床位费转为超标标志 Y:婴儿床位转化 P:普通床位转化 N:不转化 LS_HCDBSX:='0';--耗材打包属性 0:按套打包 1:按个打包 9:不打包 LS_DBSFXM:=0; --打包收费项目ID=BM_YYSFXM.SFXMID LS_DBSFSL:=0;--打包数量 LS_CWHCFY:=0;--除外耗材金额 LS_CBCWF0:=0;--超标床位金额 LS_HCDBBZ:='0'; --耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 LS_HCDBBM:='';--耗材打包编码 LS_HCDBMC:='';--耗材打包名称 LS_YPXJXMDJ:=0;--药品最高限价项目单价 LS_YPXJXMSL:=0;--药品最高限价项目数量 LS_YPXJXMJE:=0;--药品最高限价费用合计金额 LS_HJJETEMP:=0;--项目金额临时变量 LS_BKEH83:=null;--国家标准对应编码 LS_BKEH05:=null;--医保备用1 LS_BKEH06:=null;--医保备用2 LS_BAKXML:=null;--HIS备用字段(xml格式)后续扩展 LS_BZCWFCFBZ:=null;--单病种超标床位费拆分规则标志:[单病种床位费拆分[0:原有模式 1:不根据收费上限拆分按原金额发送 2:根据收费上限拆分(收费上限:BM_YBSFDY.SFSX00)] LS_BCXMHJJE:=LS_HJJE00; --本次项目合计金额 --耗材打包获取 --if LS_FLAG00='0' then --LS_FLAG00='0' begin if LS_FLAG00='0' then LS_YPBZ00:='0'; elsif LS_FLAG00 in('1','2') then LS_YPBZ00:='1'; end if; if LS_SFBZHCDB='Y' then--是否单病种打包 select SF_ZY_DBZGZHCID(ad_ZYID00,ad_DBZBM0,LS_XMBH00,LS_GJBM00,LS_YPBZ00,LS_DBZXGZHCID) into LS_GZHCID from dual; LS_SFFSHC:='1'; select trim(B.HCDBBM)HCDBBM,trim(HCDBMC)HCDBMC into LS_HCDBBM,LS_HCDBMC from BM_GZHCFL B where B.GZHCID=LS_GZHCID; end if; if LS_HCJKQY='Y' then select nvl(A.GZHCID,0),nvl(A.SFFSYB,'1'),B.HCDBBM,trim(B.HCDBMC)HCDBMC into LS_GZHCID,LS_SFFSHC,LS_HCDBBM,LS_HCDBMC from BM_GZHCMX A,BM_GZHCFL B where A.GZHCID=B.GZHCID and A.SFXMID=LS_XMBH00 and nvl(B.SFDBZ0,'0')='0' and nvl(SFYP00,'0')='0' --2021.07.23 如果有主项ID按主项ID查询条件 and ((LS_DBZXGZHCID=0 and 1=1) or (LS_DBZXGZHCID<>0 and B.GZHCID=LS_DBZXGZHCID)) and rownum=1; end if; exception when others then LS_GZHCID:=0; LS_SFFSHC:='1'; LS_HCDBBM:=''; --耗材打包编码 LS_HCDBMC:='';--耗材打包名称 LS_HCDBSX:='0'; --耗材打包属性 0:按套打包 1:按个打包 9:不打包 LS_DBSFXM:=0; --打包收费项目ID=BM_YYSFXM.SFXMID end; LS_GZHCID:=Nvl(LS_GZHCID,0); LS_SFFSHC:=Nvl(LS_SFFSHC,1); if LS_HCDBBM is null then LS_GZHCID:=0; LS_SFFSHC:='1'; end if; --2020.08.06 获取耗材包打包其它信息 if nvl(LS_GZHCID,0)>0 then begin --打包属性 耗材打包属性 0:按套打包 1:按个打包 9:不打包 select nvl(B.HCDBSX,'0')HCDBSX,nvl(B.DBSFXM,0) into LS_HCDBSX,LS_DBSFXM from BM_GZHCFL B where B.GZHCID=LS_GZHCID; --打包最高数量 select substrb(max(nvl(SL0000,0)),1,5),count(1) into LS_DBSFSL,LS_TMPNUM from BM_GZHCMX B where B.GZHCID=LS_GZHCID and SFXMID=LS_SFXMID; if nvl(LS_TMPNUM,0)>0 then LS_HCDBBZ:='1'; --耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 else LS_HCDBBZ:='0'; --耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 end if; exception when others then LS_HCDBSX:='0';--耗材打包属性 0:按套打包 1:按个打包 9:不打包 LS_DBSFXM:=0; --打包收费项目ID=BM_YYSFXM.SFXMID LS_DBSFSL:=0;--打包数量 end; end if; --end if; --LS_FLAG00='0' if (XT_ZDYBYPMLXYSPBR>0) and ((ls_FLAG00='2') or (ls_FLAG00='1') ) then ls_SFTHML:=SF_XT_GETFYBMLBH('1',ls_brid00,ls_XMBH00,ad_ZYID00);--返回0不替换 1替换 else ls_SFTHML:=0; end if; --as_SYSMSG:='MXID00='||to_char(ls_MXID00); --医保对应目录发生错误时, if ls_SFYBMLDYCWFSYBZX='Y' then select count(1) into ls_YBDYML_count from VW_BM_YBSFDY where YBZXLB = ls_YBZXLB and SFXMID = ls_XMBH00 and YBBRLB = ls_YBBRLB and SFYP00 = decode(ls_FLAG00,'0','N','Y') and YBXMBH is not null --and (LS_WDYZF0='Y' or nvl(MZZYBZ,'2') in ('1','2')) ; if ls_YBDYML_count=0 then as_YHMSG0:='查找不到对应的医保发票项目,请与系统管理员联系!'; as_SYSMSG:=SQLERRM||as_SYSMSG; ROLLBACK; return; end if; end if; LS_BZCBBH:=null; --单病种超标医保发票项目编号 LS_BZCBMC:=null; --单病种超标发票项目名称 LS_CLYBSX:=0;--医保上限金额(材料) LS_CLCBBH:=null;--超标项目编号(材料) LS_CLCBMC:=null;--超标项目名称(材料) LS_SFCFXM:='N';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 LS_YYSFXM_BKEH83:=null;--医院收费项目:医保国家标准编码 LS_YBSFDY_BKEH83:=null;--医院收费对应:医保国家标准编码 LS_YBSFXM_BKEH83:=null;--医保收费项目:医保国家标准编码 LS_YBSFDY_BKEA96:='Y';--限制范围类别: Y-范围内 N-范围外 select a.XMMC00 as FPXMMC,a.BH0000 as FPXMBH,C.SFYBXM,nvl(C.SFSX00,0) as YBXMSX,D.XMMC00 as YBXMMC, C.YBXMBH,a.CBXMBH,C.ZFBL00,c.YBLB00,A.BZCBBH, A.BZCBMC,D.XMDW00,D.XMDW01,D.YBJSDJ,D.YBZGDJ, D.YBJSDJ1,D.YBZGDJ1,C.BKEH83 as YBSFDY_BKEH83,D.BKEH83 as YBSFXM_BKEH83,nvl(C.MZZYBZ,'2')MZZYBZ, upper(substrb(nvl(C.BKEA96,'Y'),1,1)) as BKEA96 into LS_FPXMMC,LS_FPXMBH,ls_SFYBXM,ls_YBXMSX,ls_YBXMMC, ls_YBXMBH,ls_CBXMBH,ls_YBZFBL,ls_YBXMLB,LS_BZCBBH, LS_BZCBMC,LS_YBDDW0,LS_YBXDW0,LS_YBJSDJ,LS_YBZGDJ, LS_YBJSDJ1,LS_YBZGDJ1,LS_YBSFDY_BKEH83,LS_YBSFXM_BKEH83,LS_YBSFDY_MZZYBZ,LS_YBSFDY_BKEA96 from BM_YBFPXM A,VW_BM_YBSFDY C,BM_YBSFXM D where a.BH0000 = C.YBZYFP and a.YBZXLB = C.YBZXLB and C.FBBH00 = a.FBBH00(+) and C.YBBRLB = ls_YBBRLB and C.SFXMID = ls_XMBH00 and C.YBZXLB = D.YBZXLB(+) and C.YBXMBH = D.XMBH00(+) and C.SFYP00 = decode(ls_FLAG00,'0','N','Y')--是否药品,'0'费用,'1'零散处方,'2'医嘱处方 and a.YBZXLB = ls_YBZXLB and a.SYBZ00 <> '1' --非门诊 --and (LS_WDYZF0='Y' or nvl(C.MZZYBZ,'2') in ('1','2')) ; --2021.08.07 SFYBXM改为取BM_YBSFDY.BKEA96 if as_SFXYB0='0' then--是否新医保 0:否 1:是 LS_SFYBXM:=LS_SFYBXM; --旧医保根据SFYB00控制 elsif as_SFXYB0='1' then--是否新医保 0:否 1:是 if LS_YBZXLB_MXCSFSYBMSC is not null then if instrb('|'||LS_YBZXLB_MXCSFSYBMSC||'|','|'||trim(LS_YBZXLB)||'|')>0 then LS_SFYBXM:=LS_SFYBXM; --某些费别,比如两费保健等等,取BM_YBSFDY.SFYBXM else LS_SFYBXM:=LS_YBSFDY_BKEA96; end if; else LS_SFYBXM:=LS_YBSFDY_BKEA96; end if; end if; LS_BKEH83:=LS_YBSFDY_BKEH83; if LS_FLAG00='0' then begin select BKEH83 into LS_YYSFXM_BKEH83 from BM_YYSFXM B where B.SFXMID=LS_XMBH00 and b.TZRQ00 is null; exception when others then LS_YYSFXM_BKEH83:=null; end; --GetType_bkeh83:新医保接口bkeh83(国家标准对应编码)取值方式 1:优先取BM_YBSFDY(为空取BM_YYSFXM),0:优先取BM_YYSFXM(为空取BM_YBSFDY) if LS_GetType_bkeh83='0' then LS_BKEH83:=nvl(nvl(LS_YYSFXM_BKEH83,LS_YBSFXM_BKEH83),LS_YBSFDY_BKEH83); --0:优先取BM_YYSFXM(为空取BM_YBSFDY) else LS_BKEH83:=nvl(LS_YBSFDY_BKEH83,nvl(LS_YYSFXM_BKEH83,LS_YBSFXM_BKEH83)); --1:优先取BM_YBSFDY(为空取BM_YYSFXM) end if; end if; if LS_YBSFDY_MZZYBZ in ('0') then --门诊住院标志 0门诊,1住院,2门诊住院都可用 LS_SFTHML:=1; --0 不替换 1替换 LS_SFYBXM:='N'; LS_YBZFBL:=1; end if; --2017.03.15 zhangyc 单病种超标床位费 if LS_DBZBM0 is null and LS_CDRGJK not in ('Y') then LS_BZCBBH:=null; LS_BZCBMC:=null; end if; --2019.12.20 精准扶贫病人病种分类1:精准扶贫编码 耗材不打包以及不拆分床位费 if (LS_SFJZFP='Y' or LS_SFJZFP='1') and (LS_BZBMLB='1') then LS_BZCBBH:=null; LS_BZCBMC:=null; LS_HCJKQY:='N'; --高值耗材接口启用 Y:是 N:否 LS_SFBZHCDB:='N';--是否单病种打包 Y:是 N:否 end if; --ZYSF-20210219-002 if LS_WDYZF0='Y' and ls_YBXMBH is null then ls_SFTHML:=1; end if; --2021.07.16 住院单病种超标床位费拆分字典--判断---begin-- --LS_BZCWFCFBZ 单病种超标床位费拆分规则标志:[单病种床位费拆分[0:原有模式 1:不根据收费上限拆分按原金额发送 2:根据收费上限拆分(收费上限:BM_YBSFDY.SFSX00)] if LS_DBZBM0 is not null and LS_FLAG00 in ('0') and LS_FPXMBH in ('05') and nvl(LS_YBXMSX,0)>0 then if LS_CWFCFZDCS='1' then LS_BZCWFCFBZ:='1';--单病种超标床位费拆分规则标志:[单病种床位费拆分[0:原有模式 1:不根据收费上限拆分按原金额发送 2:根据收费上限拆分(收费上限:BM_YBSFDY.SFSX00)] LS_YBXMSX:=0; --医保收费上限 LS_BZCBBH:=null; --单病种超标医保发票项目编号 LS_BZCBMC:=null; --单病种超标发票项目名称 elsif LS_CWFCFZDCS='2' then LS_BZCWFCFBZ:='2';--单病种超标床位费拆分规则标志:[单病种床位费拆分[0:原有模式 1:不根据收费上限拆分按原金额发送 2:根据收费上限拆分(收费上限:BM_YBSFDY.SFSX00)] LS_YBXMSX:=nvl(LS_YBXMSX,0); --医保收费上限 end if; end if; --2021.07.16 住院单病种超标床位费拆分字典--判断---end-- --CDRG获取材料医保上限 LS_CLYBSX:医保上限金额(材料) LS_CLCBBH:超标项目编号(材料)LS_CLCBMC:超标项目名称(材料) if LS_CDRGJK='Y' and LS_FLAG00 in ('0') and LS_FPXMBH not in ('05') then begin select max(nvl(YBSXJE,0))YBSXJE,max(CBXMBH)CBXMBH,max(CBXMMC)CBXMMC into LS_CLYBSX,LS_CLCBBH,LS_CLCBMC from BM_YBCBDY where YBZXLB=LS_YBZXLB and FBBH00=LS_FBBH00 and SFXMID=LS_XMBH00; exception when others then LS_CLYBSX:=0;--医保上限金额(材料) LS_CLCBBH:=null;--超标项目编号(材料) LS_CLCBMC:=null;--超标项目名称(材料) end; if LS_FLAG00 in ('0') and LS_CLCBBH is not null and nvl(LS_YBXMSX,0)=0 and nvl(LS_CLYBSX,0)>0 then --如果医保对应表没有维护上限,超标表有维护上限,重新赋值 LS_YBXMSX:=nvl(LS_CLYBSX,0); end if; if nvl(ls_XMDJ00,0)>nvl(LS_YBXMSX,0) then LS_SFCFXM:='Y';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 else LS_SFCFXM:='N';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 end if; if LS_SFCFXM='Y' then LS_BZCBBH:=substrb(LS_CLCBBH,1,50); LS_BZCBMC:=substrb(LS_CLCBMC,1,100); end if; --如果不超额有维护编码处理 if LS_FLAG00 in ('0') and LS_CLCBBH is not null and ((nvl(LS_XMDJ00,0)<=nvl(LS_YBXMSX,0) or nvl(LS_YBXMSX,0)=0) or (nvl(LS_XMDJ00,0)<=nvl(LS_CLYBSX,0) or nvl(LS_CLYBSX,0)=0)) then LS_SFCFXM:='Q';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 end if; end if; --CDRG超标床位费处理 if LS_CDRGJK='Y' and LS_FLAG00 in ('0') then if LS_FPXMBH in ('05') then if LS_BZCBBH is not null and nvl(ls_XMDJ00,0)>nvl(LS_YBXMSX,0) then --如果医保对应表没有维护上限,超标表有维护上限,重新赋值 LS_SFCFXM:='M';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 else LS_SFCFXM:='N';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 end if; end if; begin select CDRGFS into LS_CDRGFS from ZY_BASYXX where ZYID00=ad_ZYID00; exception when others then LS_CDRGFS:=null; end; if nvl(LS_CDRGFS,'0') in ('0') then LS_SFCFXM:='N';--是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 LS_YBXMSX:=0; LS_BZCBBH:=null; LS_BZCBMC:=null; end if; end if; --2020.11.04 药品 数量*单价<>合计金额 重新算单价保留4位--begin-- if LS_FLAG00 not in ('0') and round(ls_XMDJ00*ls_XMSL00,2)<>round(ls_HJJE00,2) and nvl(ls_HJJE00,0)<>0 and nvl(ls_XMSL00,0)<>0 then ls_XMDJ00:=round(ls_HJJE00/ls_XMSL00,4); end if; --2020.11.04 药品 数量*单价<>合计金额 重新算单价保留4位--end-- --药品医保项目单位转化--begin--- if (LS_YBXJQY='Y') and (LS_FLAG00 in ('1','2')) and (nvl(LS_XMSL00,0)<>0) then if (trim(LS_DW0000)=trim(LS_YBDDW0)) or (trim(LS_DW0000)=trim(LS_YBXDW0)) then --发药=医保大单位或小单位 LS_DW0000:=LS_DW0000; else if (trim(LS_YBDW00) is not null) and (nvl(LS_YB2J00,0)>0) and (nvl(LS_Z2J000,0)>0) then if trim(LS_DW0000)=trim(LS_YBDW00) then LS_DW0000:=LS_YBDW00; else --转成计量单位 LS_DW0000:=LS_YBDW00; LS_HJJE00:=LS_HJJE00; if nvl(LS_Z2J000,0) <> nvl(LS_YB2J00,0) then LS_XMDJ00 := round((LS_XMDJ00/nvl(LS_Z2J000,1))*nvl(LS_YB2J00,1),4); LS_XMSL00 := round(LS_HJJE00/LS_XMDJ00,2); --2020.09.27 数量保留两位小数位(进位) by ZYSF-20200927-003 LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00:= round(LS_HJJE00/LS_XMSL00,4); end if; end if; end if; end if; end if; if LS_YPXJCFBZ in ('1','2') and trim(LS_DW0000)=trim(LS_YBDDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ,0) and nvl(LS_YBZGDJ,0)>0 then --医保大单位最高限额判断 LS_DW0000:=trim(LS_YBDDW0); LS_HJJE00:=LS_HJJE00; --项目金额 LS_XMDJ00:=LS_YBZGDJ; --项目单价=大单位最高限价 LS_XMSL00:=LS_XMSL00; --项目数量 LS_HJJETEMP:=nvl(round(LS_HJJE00,2)-round(LS_XMDJ00*LS_XMSL00,2),0); --项目金额临时变量=项目金额-(最新单价*数量) if LS_HJJETEMP>0 then --原合计金额-最新合计金额 LS_HJJE00:=round(LS_XMDJ00*LS_XMSL00,2); --重新算项目金额(保留两位)=最新单价*数量 if LS_YPXJCFBZ='1' then LS_HCDBBZ:='A'; --耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 LS_YPXJXMSL:=1; --药品最高限价项目数量 LS_YPXJXMDJ:=LS_HJJETEMP; --药品最高限价项目单价 LS_YPXJXMJE:=LS_HJJETEMP; --药品最高限价费用合计金额 elsif LS_YPXJCFBZ='2' then LS_HCDBBZ:='F'; --药品超过最高限价拆分原单(数量不变 单价=最高限价 超过按原药品非医保项目) if LS_HJJETEMP>LS_XMDJ00 then --拆分后总额>最高限价 LS_YPXJXMDJ:=LS_XMDJ00; --超过项目的药品单价=最高限价 LS_YPXJXMJE:=LS_HJJETEMP; --超过项目的药品金额 --LS_YPXJXMSL:=round(LS_YPXJXMJE/LS_YPXJXMDJ,2); --超过项目的药品数量(金额/单价) --2022.01.04-->原单单价:156 原数量:2 原总额:312 最高:71,超额:单价:71.1297 数量:2.39 金额:170 未超额:单价:71 数量:2 金额:142 ,修正后超额:单价:70.8333 数量:2.4 金额:170 LS_YPXJXMSL:=round(ceil((LS_YPXJXMJE/LS_YPXJXMDJ)*100)/100,2); --超过项目的药品数量(金额/单价)保留小数点2位(进位) --如果拆分后金额<>超过总额 ,数量进位后重新算单价 if nvl(LS_YPXJXMDJ*LS_YPXJXMSL,2)<> nvl(LS_YPXJXMJE,0) then LS_YPXJXMSL:=ceil(LS_YPXJXMSL*100)/100; --保留小数点2位(进位) LS_YPXJXMDJ:= round(LS_YPXJXMJE/LS_YPXJXMSL,4); end if; else --拆分后总额<最高限价(数量=1 ,单价和金额=超额) LS_YPXJXMDJ:=LS_HJJETEMP; --超过项目的药品单价=最高限价 LS_YPXJXMJE:=LS_HJJETEMP; --超过项目的药品金额 LS_YPXJXMSL:=1; --超过项目的药品数量(金额/单价) end if; end if; end if; elsif LS_YPXJCFBZ in ('1','2') and trim(LS_DW0000)=trim(LS_YBXDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ1,0) and nvl(LS_YBZGDJ1,0)>0 then --医保小单位最高限额判断 LS_DW0000:=trim(LS_YBXDW0); LS_HJJE00:=LS_HJJE00; --项目金额 LS_XMDJ00:=LS_YBZGDJ1;--项目单价=小单位最高限价 LS_XMSL00:=LS_XMSL00; --项目数量 LS_HJJETEMP:=nvl(round(LS_HJJE00,2)-round(LS_XMDJ00*LS_XMSL00,2),0); --项目金额临时变量=项目金额-(最新单价*数量) if LS_HJJETEMP>0 then --原合计金额-最新合计金额 LS_HJJE00:=round(LS_XMDJ00*LS_XMSL00,2); --重新算项目金额(保留两位)=最新单价*数量 if LS_YPXJCFBZ='1' then LS_HCDBBZ:='A'; --耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 LS_YPXJXMSL:=1; --药品最高限价项目数量 LS_YPXJXMDJ:=LS_HJJETEMP; --药品最高限价项目单价 LS_YPXJXMJE:=LS_HJJETEMP; --药品最高限价费用合计金额 elsif LS_YPXJCFBZ='2' then LS_HCDBBZ:='F'; --药品超过最高限价拆分原单(数量不变 单价=最高限价 超过按原药品非医保项目) if LS_HJJETEMP>LS_XMDJ00 then --拆分后总额>最高限价 LS_YPXJXMDJ:=LS_XMDJ00; --超过项目的药品单价=最高限价 LS_YPXJXMJE:=LS_HJJETEMP; --超过项目的药品金额 --LS_YPXJXMSL:=round(LS_YPXJXMJE/LS_YPXJXMDJ,2); --超过项目的药品数量(金额/单价) 保留小数点2位(进位) --2022.01.04-->原单单价:156 原数量:2 原总额:312 最高:71,超额:单价:71.1297 数量:2.39 金额:170 未超额:单价:71 数量:2 金额:142 ,修正后超额:单价:70.8333 数量:2.4 金额:170 LS_YPXJXMSL:=round(ceil((LS_YPXJXMJE/LS_YPXJXMDJ)*100)/100,2); --超过项目的药品数量(金额/单价)保留小数点2位(进位) --如果拆分后金额<>超过总额 ,数量进位后重新算单价 if nvl(LS_YPXJXMDJ*LS_YPXJXMSL,2)<> nvl(LS_YPXJXMJE,0) then LS_YPXJXMSL:=ceil(LS_YPXJXMSL*100)/100; --保留小数点2位(进位) LS_YPXJXMDJ:= round(LS_YPXJXMJE/LS_YPXJXMSL,4); end if; else --拆分后总额<最高限价(数量=1 ,单价和金额=超额) LS_YPXJXMDJ:=LS_HJJETEMP; --超过项目的药品单价=最高限价 LS_YPXJXMJE:=LS_HJJETEMP; --超过项目的药品金额 LS_YPXJXMSL:=1; --超过项目的药品数量(金额/单价) end if; end if; end if; else ---原来处理事件--- --2018.12.27 by zhangyc 增加院内单价和最高限价比较---begin-- if trim(LS_DW0000)=trim(LS_YBDDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ,0) and nvl(LS_YBZGDJ,0)>0 then LS_DW0000:=trim(LS_YBDDW0); LS_HJJE00:=LS_HJJE00; LS_XMDJ00:=nvl(LS_YBZGDJ,0); LS_XMSL00:=round(LS_HJJE00/LS_XMDJ00,2); --2020.01.16 数量保留两位小数位(进位) LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; if trim(LS_DW0000)=trim(LS_YBXDW0) and nvl(LS_XMDJ00,0)>nvl(LS_YBZGDJ1,0) and nvl(LS_YBZGDJ1,0)>0 then LS_DW0000:=trim(LS_YBXDW0); LS_HJJE00:=LS_HJJE00; LS_XMDJ00:=nvl(LS_YBZGDJ1,0); LS_XMSL00:=round(LS_HJJE00/LS_XMDJ00,2); --2020.01.16 数量保留两位小数位(进位) LS_XMSL00:=ceil(LS_XMSL00*100)/100; --保留小数点2位(进位) if round(LS_XMSL00*LS_XMDJ00,2)<>round(LS_HJJE00,2) then --进位后数量*单价<>合计金额重新算单价 LS_XMDJ00 := round(LS_HJJE00/LS_XMSL00,4); end if; end if; --2018.12.27 by zhangyc 增加院内单价和最高限价比较---end-- end if; end if; --药品医保项目单位转化--end--- -- by ZYSF-20130708-002 上限超额金额 if nvl(LS_YBXMSX,0)>0 then begin ls_YBSXCE:=round(ls_XMDJ00*ls_XMSL00,2)-nvl(ls_YBXMSX,0); exception when others then ls_YBSXCE:=0; end; else ls_YBSXCE:=0; --上限超额金额 end if; if ls_YBSXCE<0 then ls_YBSXCE:=0; end if; --by ZYSF-20130703-001 单病种参数开启后 ls_YBXMSX=0 VW_BM_YBSFDY.SFSX00 无效 --if LS_DBZJK0='M' then LS_YBXMSX:=0; end if; /* -- by ZYSF-20170206-001 if (LS_DBZJK0='M') and (ad_DBZBM0 is not null) and (ZY_DBZCEFKJS not in ('N')) then LS_YBXMSX:=0; end if; */ --2017.04.12 增加单病种结算病人并且ZY_DBZCEFKJS=N非床位设置上限不拆分 if (LS_DBZJK0='M') and (ad_DBZBM0 is not null) and (ZY_DBZCEFKJS in ('N')) and (trim(LS_FPXMMC) not in ('床位费')) and (trim(LS_FPXMBH) not in ('05')) then LS_YBXMSX:=0; end if; if ls_FLAG00 in ('1','2') then begin select YBPCBM into ls_YPPL00 from BM_PC0000 aa where aa.PCMC00=ls_PCMC00 and rownum=1; exception when others then ls_YPPL00:='9999'; end; else ls_YPPL00:='9999'; end if; ls_YPYL00:=to_char(nvl(ls_CSL000,1),'9999990.00'); if length(ls_YPYL00)>5 then --长度超过5位 只截取后5位 ls_YPYL00:=substrb(ls_YPYL00, -5, length(ls_YPYL00)); end if; ls_YPTS00:=nvl(ls_YPTS00,0); if ls_YPPL00 is null then ls_YPPL00:='9999'; end if; if ls_YPYL00 is null then ls_YPYL00:='1'; end if; --2010.06.10 zhr 如果该医保中心只支持非医保项目99打头格式,那么就不能用70打头项目 if ls_FYBQZ0='99' then if substrb(ls_CBXMBH,1,2)='70' then ls_CBXMBH:=null; end if; if substrb(ls_YBXMBH,1,2)='70' then ls_YBXMBH:=null; end if; elsif ls_FYBQZ0='70' then if substrb(ls_YBXMBH,1,2)='99' then ls_YBXMBH:=null; end if; end if; --如果没有对应,查找BM_YBSFXM本发票记录有没有定义未对应或超标的项目医保接口使用的医保项目编号 -- 如果有定义,使用此定义的医保项目来生成接口文件,如果没有定义,使用'990000000000+医保发票编号方式 if ls_CBXMBH is not null then begin select a.XMMC00,a.ZYFPXM,b.XMMC00 into ls_CBXMMC,ls_CBFPBH,ls_CBFPMC from BM_YBSFXM a,BM_YBFPXM b where a.YBZXLB=ls_YBZXLB and a.XMBH00=ls_CBXMBH and a.ZYFPXM=b.BH0000 and b.YBZXLB=ls_YBZXLB and a.FBBH00=B.FBBH00(+); EXCEPTION when others then ls_CBXMMC:=ls_XMMC00; ls_CBXMBH:=substrb(trim(ls_YBBHQZ)||ls_FPXMBH,1,40); ls_CBFPBH:=ls_FPXMBH; ls_CBFPMC:=ls_FPXMMC; end; else ls_CBXMMC:=ls_XMMC00; ls_CBXMBH:=substrb(trim(ls_YBBHQZ)||ls_FPXMBH,1,40); ls_CBFPBH:=ls_FPXMBH; ls_CBFPMC:=ls_FPXMMC; end if; --ZY_MXCSFSYBMSC控制新医保明细上传项目是否按原编码上传 Y:原编码 N:原来模式 if (LS_ZFFSBZ='Y' or LS_SFTHML=1) and ZY_MXCSFSYBMSC in ('Y') then ls_YBXMMC:=trim(ls_YBXMMC); ls_YBXMBH:=trim(ls_YBXMBH); ls_FPXMMC:=trim(ls_FPXMMC); ls_FPXMBH:=trim(ls_FPXMBH); else if ( ls_YBXMBH is null) or (LS_SFTHML=1) or (ls_ZFFSBZ='Y') then --for BQ-20131018-001 ls_YBXMMC:=trim(ls_CBXMMC); ls_YBXMBH:=trim(ls_CBXMBH); ls_FPXMMC:=trim(ls_CBFPMC); ls_FPXMBH:=trim(ls_CBFPBH); end if; end if; if ls_SFTHML=1 or ls_ZFFSBZ='Y' then -- ls_ZFFSBZ='Yfor BQ-20131018-001 ls_SFYBXM:='N'; ls_YBZFBL:=1; end if; ls_SFXYSHEBZ:='0'; if ls_JSXM01='2' and to_number(ls_XMDJSX)>0 and ls_XMDJ00>to_number(ls_XMDJSX) and SF_ZY_SFXYYBSP(ad_ZYID00)>0 then --超过1000的材料需要审批 ls_spje00:=0; ls_SFXYSHEBZ:='1'; begin select nvl(SPJE00,0) into ls_spje00 from YK_YBMLSP where ZYID00=ad_ZYID00 and SFXMID=ls_XMBH00 and to_char(sysdate+1,'YYYYMMDD')ls_spje00 then ls_YBXMSX:=ls_spje00; end if; end if; --特殊处理,如果对应的是以下几个医保项目,需要传递院内项目名称 if ls_YBXMBH in ('01670000000001','01670000000002','01670000000005','01670000000006','01670000000007','01670000000008') then ls_YBXMMC:=ls_XMMC00; end if; if ls_FLAG00='0' then select count(*) into ls_COUNT1 from BM_TYZD00 where ZDMC00='药事服务费' and BH0000=ls_SFXMID; --沙县如果是药事服务费,名称要送本院名称 if ls_COUNT1>0 then ls_YBXMMC:=ls_XMMC00; end if; end if; update BM_ZYCF00_TEMP00 set VALUE0 = NVL(VALUE0,0) + ls_HJJE00 where ID0000 = ls_ID0000 and NAME00 = ls_FPXMMC and BZ0000 = ls_SFYBXM; if SQL%NOTFOUND then insert into BM_ZYCF00_TEMP00(ID0000,NAME00,VALUE0,BZ0000) values(ls_ID0000,ls_FPXMMC,ls_HJJE00,ls_SFYBXM); end if; --如果原来的自付比例错误,要进行修改,保证清单的正确 zhr 2005.02.21 if ls_ZFBL00<>ls_YBZFBL then if ls_FLAG00='0' then Update ZY_FYMX00 set ZFBL00=ls_YBZFBL where MXID00=ls_MXID00; elsif ls_FLAG00='0' then Update YF_ZYCFMX set ZFBL00=ls_YBZFBL,YBLB00=ls_YBXMLB where CFID00=ls_MXID00; else Update YF_YZYPSQ set ZFBL00=ls_YBZFBL where YPQLPC=ls_MXID00; end if; end if; --一次性材料项目格式是否改为 医保对应项目+(医院收费项目)---厦门同安医院=Y if (ls_YCXCLXMXGS='Y') and (ls_FLAG00='0') then select nvl(JSXM00,'0') into ls_JSXM00 FROM BM_YYSFXM where sfxmid=ls_XMBH00; if ls_JSXM00='2' then if ls_SFXMYBJK='Y' then --厦门医保接口 ls_YBXMMC:=substrb(ls_YBXMMC||'+('||ls_XMMC00||')',1,100); else ls_YBXMMC:=substrb(ls_YBXMMC||'('||ls_XMMC00||')',1,100); end if; end if; end if; --2018.12.05 增加判断通用字典参数设置 if LS_DBZBM0 is not null and LS_BZCBBH is not null and (instrb(trim(LS_FPXMMC),'床位费')>0 or LS_YNFPBH in ('05')) and LS_FLAG00='0' then --是否普通床位费转为超标 Y:是 N:否 select count(1) into LS_CWNUM0 from BM_TYZD00 where ZDMC00='住院单病种普通床位转超标' and YXBZ00='1' and BH0000=to_char(LS_XMBH00); if LS_CWNUM0>0 then ---字典有维护普通床位转超标 LS_CWZHBZ:='P';--普通床位费转为超标标志 Y:婴儿床位转化 P:普通床位转化 N:不转化 end if; end if; if LS_DBZBM0 is null then --是否只对单病种病人进行拆分超标床位费 if LS_CGSXSFCF = 'N' then LS_DBZCF0:='N'; end if; end if; LS_BAKXML:=substrb(LS_BAKXML||''||LS_BZCWFCFBZ||'',1,500); --HCDBBZ 耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 --插入药品超过最高限价到中间表--begin-- if LS_YPXJCFBZ='2' then --原药品的对照编码和名称(2:拆分(数量不变,单价=最高限价 超过原药品项目非医保)) LS_YPXJXMDJ:=LS_YPXJXMDJ; --药品最高限价项目单价 LS_YPXJXMSL:=LS_YPXJXMSL; --药品最高限价项目数量 LS_YPXJXMJE:=LS_YPXJXMJE; --药品最高限价费用合计金额 LS_YPXJYBDW:=trim(nvl(ls_DW0000,'无')); --药品最高限价医保项目单位 LS_YPXJSFYB:='N'; --药品最高限价是否医保项目 --ZY_MXCSFSYBMSC控制新医保明细上传项目是否按原编码上传 Y:原编码 N:原来模式 if ZY_MXCSFSYBMSC='Y' then LS_YPXJFPBH:=substrb(trim(LS_FPXMBH),1,2); --药品最高限价医保发票编号 LS_YPXJFPMC:=substrb(trim(ls_FPXMMC),1,40); --药品最高限价医保发票名称 LS_YPXJYBBH:=substrb(trim(LS_YBXMBH),1,50); --药品最高限价医保项目编号 LS_YPXJYBMC:=substrb(trim(LS_YBXMMC),1,100); --药品最高限价医保项目名称 else LS_YPXJFPBH:=substrb(nvl(trim(LS_CBFPBH),trim(LS_FPXMBH)),1,2); --药品最高限价医保发票编号 LS_YPXJFPMC:=substrb(nvl(trim(LS_CBFPMC),trim(ls_FPXMMC)),1,40); --药品最高限价医保发票名称 LS_YPXJYBBH:=substrb(nvl(trim(LS_CBXMBH),trim(LS_YBXMBH)),1,50); --药品最高限价医保项目编号 LS_YPXJYBMC:=substrb(nvl(trim(LS_CBXMMC),trim(LS_YBXMMC)),1,100); --药品最高限价医保项目名称 end if; end if; if nvl(LS_YPXJXMJE,0)<>0 then insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,CZRQ00,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0,MXID00, HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) values( LS_YPXJID00,LS_YPXJYBBH,LS_YPXJSFYB,LS_YPXJFPMC,LS_YPXJYBMC,'无',nvl(LS_YPXJYBDW,'无'),LS_YPXJXMDJ,LS_YPXJXMSL,LS_YPXJXMJE, LS_ZWXM00,LS_YPXJYBBH,LS_CZRQ00,1,'9999',1,0,'0',0,'1', nvl(LS_SFXMID,0),'2',LS_YPXJFPBH,LS_YSYGBH,'0',0,0,0,0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval, null,null,'B',LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML, LS_BKE181,LS_BKE182,LS_BKC507,LS_BKC506,LS_CFHAO0 ); end if; --插入药品超过最高限价到中间表--begin-- if LS_CWZHBZ in ('Y','P') then --插入通用字典维护对应的普通床位转成超标床位 LS_CBCWF0:=round(ls_XMDJ00*ls_XMSL00,2);--超标床位金额 LS_BKEH83:=null; insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,CZRQ00,YPTS00,YPPL00, YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,FPXMBH,YSYGBH,HCDBSX, DBSFXM,DBSFSL,CWHCFY,CBCWF0,MXID00, HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) values( LS_ID0000,nvl(LS_BZCBBH,LS_CBXMBH),decode(LS_BZCBBH,null,'N','N'),decode(LS_SYFPBH,'Y',decode(LS_BZCBBH,null,LS_CBFPBH,LS_FPXMBH),decode(LS_BZCBBH,null,LS_CBFPMC,LS_FPXMMC)),nvl(LS_BZCBMC,LS_CBXMMC), LS_GG0000,nvl(ls_DW0000,'无'), LS_XMDJ00, LS_XMSL00, round(ls_XMDJ00*ls_XMSL00,2), LS_ZWXM00,substrb(nvl(LS_BZCBBH,LS_CBXMBH),1,60),LS_CZRQ00,LS_YPTS00,LS_YPPL00, LS_YPYL00,0,LS_FLAG00,LS_GZHCID,LS_SFFSHC, nvl(LS_SFXMID,0),'2',LS_FPXMBH,LS_YSYGBH,LS_HCDBSX, LS_DBSFXM,LS_DBSFSL,LS_CWHCFY,LS_CBCWF0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval, LS_HCDBBM,LS_HCDBMC,LS_HCDBBZ,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML, LS_BKE181,LS_BKE182,LS_BKC507,LS_BKC506,LS_CFHAO0 ); --判断实际单价是否超过医保上线,如果是要拆分成两条记录 elsif ( ((LS_XMDJ00>LS_YBXMSX) and (LS_YBXMSX>0) and ((LS_SFYBXM='Y') or (LS_DBZBM0 is not null and LS_SFYBXM='N')) and (ls_YBXMBH is not null) and (LS_DBZCF0='Y')) --超过上线 拆分成两条记录 or ( (LS_XMDJ00>LS_YBXMSX) and (LS_YBXMSX>0) and ((LS_SFYBXM='Y') or (LS_DBZBM0 is not null and LS_SFYBXM='N')) and (LS_CDRGJK='Y') and (LS_BZCBBH is not null) and (LS_SFCFXM in ('Y','M'))) --CDRG:设置超标床位费 ) then if LS_SFCFXM in ('Y','M') then LS_CFDJ00:=LS_XMDJ00;--拆分单价_原 else LS_CFDJ00:=LS_YBXMSX;--拆分单价_原 end if; LS_CFSL00:=LS_XMSL00;--拆分数量_原 LS_CFJE00:=round(LS_CFDJ00*LS_CFSL00,2);--拆分金额_原 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00, XMDJ00,XMSL00,XMJE00,YSXM00,ZFXMBH,CZRQ00,YSZJHM, YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL, CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) values( LS_ID0000,LS_YBXMBH,DECODE(LS_SFMLXZ,0,'Y',ls_SFYBXM), decode(LS_SYFPBH,'Y',ls_FPXMBH,ls_FPXMMC), decode(trim(ls_yblb00),'Z',ls_XMMC00, decode(ls_ybmcfs,'Y', decode(trim(ls_XMFSGS),'N',ls_YBXMMC,substrb(ls_YBXMMC||'('||ls_XMMC00||')',1,50)),ls_XMMC00)), LS_GG0000,nvl(ls_DW0000,'无'), --decode(LS_SFCFXM,'Y',LS_XMDJ00,'M',LS_XMDJ00,LS_YBXMSX), --是否拆分项目 Y:材料 M:床位费 N:否 --LS_XMSL00, --decode(LS_SFCFXM,'Y',round(LS_XMDJ00*LS_XMSL00,2),'M',round(LS_XMDJ00*LS_XMSL00,2),round(ls_YBXMSX*LS_XMSL00,2)), --是否拆分项目 Y:材料 M:床位费 N:否 LS_CFDJ00,--拆分单价_原 LS_CFSL00,--拆分数量_原 LS_CFJE00,--拆分金额_原 LS_ZWXM00,substrb(ls_CBXMBH,1,60),ls_CZRQ00,LV_YSZJHM, LS_YPTS00,LS_YPPL00,LS_YPYL00,round((LS_XMDJ00-LS_YBXMSX)*LS_XMSL00,2),LS_FLAG00,LS_GZHCID,LS_SFFSHC, nvl(LS_SFXMID,0),decode(LS_SFCFXM,'Y','3','M','4','Q','5','0'), LS_FPXMBH,LS_YSYGBH,LS_HCDBSX,LS_DBSFXM,LS_DBSFSL, LS_CWHCFY,LS_CBCWF0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval,LS_HCDBBM,LS_HCDBMC,LS_HCDBBZ,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML, LS_BKE181,LS_BKE182,LS_BKC507,LS_BKC506,LS_CFHAO0 ); --拆分项目 if LS_SFCFXM in ('M') or LS_FPXMBH in ('05') then --是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 LS_CBCWF0:=round((LS_XMDJ00-LS_YBXMSX)*LS_XMSL00,2);--超标床位金额 LS_HCDBBZ:='3';--耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 LS_BKEH83:=null; end if; /* if LS_SFCFXM in ('Y') then LS_CFDJ01:=LS_XMDJ00;--拆分单价_新 else LS_CFDJ01:=LS_XMDJ00-LS_YBXMSX;--拆分单价_新 end if; */ LS_CFDJ01:=round(LS_XMDJ00-LS_CFDJ00,4); LS_CFSL01:=LS_XMSL00;--拆分数量_新 LS_CFJE01:=round(LS_CFDJ01*LS_CFSL01,2);--拆分金额_新 if round(LS_HJJE00-LS_CFJE00,2)<>round(LS_CFJE01,2) and nvl(LS_CFSL01,0)>0 then --拆分金额_新=总金额-拆分金额_原<>拆分单价_新*拆分数量_新(重新算单价) LS_CFJE01:=round(LS_HJJE00-LS_CFJE00,2); LS_CFDJ01:=round(LS_CFJE01/LS_CFSL01,4); end if; select nvl(LS_BZCBBH,LS_CBXMBH) into LS_XMBH00_SXCF from dual; --上限拆分项目编码 select nvl(LS_BZCBMC,LS_CBXMMC) into LS_XMMC00_SXCF from dual; --上限拆分项目名称 LS_FPXMBH_SXCF:=LS_FPXMBH; --上限拆分发票编码 select decode(LS_SYFPBH,'Y',decode(LS_BZCBBH,null,LS_CBFPBH,LS_FPXMBH),decode(LS_BZCBBH,null,LS_CBFPMC,LS_FPXMMC)) into LS_FPXMMC_SXCF from dual; --上限拆分发票名称 select decode(LS_BZCBBH,null,'N','N') into LS_SFYB00_SXCF from dual;--上限拆分是否医保 --ZY_MXCSFSYBMSC控制新医保明细上传项目是否按原编码上传 Y:原编码 N:原来模式 if ZY_MXCSFSYBMSC='Y' and LS_XMBH00_SXCF in ('700000000001','700000000002','700000000003','700000000004') then LS_XMBH00_SXCF:=nvl(LS_BZCBBH,LS_YBXMBH);--医保项目编码-原码 LS_XMMC00_SXCF:=nvl(LS_BZCBMC,ls_YBXMMC);--医保项目名称-原码 LS_FPXMMC_SXCF:=nvl(LS_CBFPMC,LS_FPXMMC);--医保发票名称-原码 end if; insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,CZRQ00,YPTS00,YPPL00, YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,FPXMBH,YSYGBH,HCDBSX, DBSFXM,DBSFSL,CWHCFY,CBCWF0,MXID00, HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) values(LS_ID0000,LS_XMBH00_SXCF,LS_SFYB00_SXCF,LS_FPXMMC_SXCF,LS_XMMC00_SXCF, LS_GG0000,nvl(ls_DW0000,'无'), --decode(LS_SFCFXM,'Y',LS_XMDJ00,(LS_XMDJ00-LS_YBXMSX)), --是否拆分项目 Y:材料 M:床位费 N:否 --LS_XMSL00, --decode(LS_SFCFXM,'Y',round(LS_XMDJ00*LS_XMSL00,2),round((LS_XMDJ00-LS_YBXMSX)*LS_XMSL00,2)), --是否拆分项目 Y:材料 M:床位费 N:否 LS_CFDJ01,--拆分单价_新 LS_CFSL01,--拆分数量_新 LS_CFJE01,--拆分金额_新 LS_ZWXM00,substrb(nvl(LS_BZCBBH,LS_CBXMBH),1,60),LS_CZRQ00,LS_YPTS00,LS_YPPL00, LS_YPYL00,0,LS_FLAG00,LS_GZHCID,LS_SFFSHC, nvl(LS_SFXMID,0),decode(LS_SFCFXM,'Y','6','M','7','Q','8','2'), LS_FPXMBH_SXCF,LS_YSYGBH,LS_HCDBSX, LS_DBSFXM,LS_DBSFSL,LS_CWHCFY,LS_CBCWF0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval, LS_HCDBBM,LS_HCDBMC,LS_HCDBBZ,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML, LS_BKE181,LS_BKE182,LS_BKC507,LS_BKC506,LS_CFHAO0 ); /* --2017.03.15 zhangyc 单病种超标床位费 if (LS_BZCBBH is not null) and ((trim(LS_FPXMMC)='床位费') or(trim(LS_FPXMBH)='05')) then LS_BZCBCW := LS_BZCBCW + round((LS_XMDJ00-LS_YBXMSX)*LS_XMSL00,2); end if; */ elsif ls_SFXYSHEBZ='1' and LS_SPJE00=0 then insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,ZFXMBH,CZRQ00,YSZJHM, YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC,SFXMID,HCDBXM,FPXMBH, YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ, BKEH83,BKEH05,BKEH06,BAKXML,BKE181,BKE182,BKC507,BKC506,CFHAO0) values(ls_ID0000,ls_CBXMBH,'N',DECODE(ls_SYFPBH,'Y',ls_CBFPBH,ls_CBFPMC),ls_CBXMMC, ls_GG0000,ls_DW0000,ls_XMDJ00,ls_XMSL00,round(ls_XMDJ00*ls_XMSL00,2),ls_ZWXM00,substrb(ls_CBXMBH,1,60),ls_CZRQ00,LV_YSZJHM, ls_YPTS00,ls_YPPL00,ls_YPYL00,ls_YBSXCE,LS_FLAG00,LS_GZHCID,LS_SFFSHC,nvl(LS_SFXMID,0),decode(LS_SFCFXM,'Q','A','0'), LS_FPXMBH,LS_YSYGBH,LS_HCDBSX,LS_DBSFXM,LS_DBSFSL,LS_CWHCFY,LS_CBCWF0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval,LS_HCDBBM,LS_HCDBMC,LS_HCDBBZ, LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML,LS_BKE181,LS_BKE182,LS_BKC507,LS_BKC506,LS_CFHAO0 ); else if as_FLAG00 in ('5','6') then --单病种拆分的 ls_XMDJ01:=round(ls_HJJE00/nvl(ls_XMSL00,1),2); ls_XMSL01:=ls_XMSL00; ls_XMJE01:=ls_HJJE00; else ls_XMDJ01:=ls_XMDJ00; ls_XMSL01:=ls_XMSL00; --ls_XMJE01:=round(ls_XMDJ00*ls_XMSL00,2); --游标合计 21.14 单价*数量(1.511*14=21.15) 如果重新算合计金额会存在多发一分钱情况 ls_XMJE01:=LS_HJJE00;--2020.03.30 直接取游标的合计金额 end if; insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,ZFXMBH,CZRQ00,YSZJHM, YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC,SFXMID,HCDBXM,FPXMBH, YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ, BKEH83,BKEH05,BKEH06,BAKXML,BKE181,BKE182,BKC507,BKC506,CFHAO0) values(ls_ID0000,ls_YBXMBH,DECODE(ls_SFMLXZ,0,'Y',ls_SFYBXM),DECODE(ls_SYFPBH,'Y',ls_FPXMBH,ls_FPXMMC), nvl(decode(trim(ls_yblb00),'Z',ls_XMMC00, decode(ls_ybmcfs,'Y', decode(trim(ls_XMFSGS),'N',ls_YBXMMC,substrb(ls_YBXMMC||'('||LS_XMMC00||')',1,50)),ls_XMMC00)),ls_XMMC00), ls_GG0000,nvl(ls_DW0000,'无'),nvl(ls_XMDJ01,0),nvl(ls_XMSL01,0),nvl(ls_XMJE01,0),ls_ZWXM00,substrb(ls_CBXMBH,1,60),ls_CZRQ00,LV_YSZJHM, ls_YPTS00,ls_YPPL00,ls_YPYL00,ls_YBSXCE,LS_FLAG00,LS_GZHCID,LS_SFFSHC,nvl(LS_SFXMID,0),decode(LS_SFCFXM,'Q','A','0'), LS_FPXMBH,LS_YSYGBH,LS_HCDBSX,LS_DBSFXM,LS_DBSFSL,LS_CWHCFY,LS_CBCWF0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval,LS_HCDBBM,LS_HCDBMC,LS_HCDBBZ, LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML,LS_BKE181,LS_BKE182,LS_BKC507,LS_BKC506,LS_CFHAO0); end if; --CDRG材料非超标处理 在插入(HCDBXM=4) if LS_CDRGJK='Y' and LS_FLAG00 in ('0') and LS_SFCFXM='Q' and LS_CLCBBH is not null then --是否拆分项目 Y:材料超额拆分 M:床位费 Q:材料不超额 N:否 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,CZRQ00,YPTS00,YPPL00, YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,FPXMBH,YSYGBH,HCDBSX, DBSFXM,DBSFSL,CWHCFY,CBCWF0,MXID00, HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) values(LS_ID0000,nvl(LS_CLCBBH,LS_CBXMBH),decode(LS_CLCBBH,null,'N','N'),decode(LS_SYFPBH,'Y',decode(LS_CLCBBH,null,LS_CBFPBH,LS_FPXMBH),decode(LS_CLCBBH,null,LS_CBFPMC,LS_FPXMMC)),nvl(LS_CLCBMC,LS_CBXMMC), LS_GG0000,nvl(LS_DW0000,'无'),LS_XMDJ00,LS_XMSL00,round(LS_XMDJ00*LS_XMSL00,2), LS_ZWXM00,substrb(nvl(LS_CLCBBH,LS_CBXMBH),1,60),LS_CZRQ00,LS_YPTS00,LS_YPPL00, LS_YPYL00,round(LS_XMDJ00*LS_XMSL00,2),LS_FLAG00,LS_GZHCID,LS_SFFSHC, nvl(LS_SFXMID,0),decode(LS_SFCFXM,'Q','B','0'), LS_FPXMBH,LS_YSYGBH,LS_HCDBSX, LS_DBSFXM,LS_DBSFSL,LS_CWHCFY,LS_CBCWF0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval, LS_HCDBBM,LS_HCDBMC,LS_HCDBBZ,LS_BKEH83,LS_BKEH05,LS_BKEH06,LS_BAKXML, LS_BKE181,LS_BKE182,LS_BKC507,LS_BKC506,LS_CFHAO0 ); end if; EXCEPTION WHEN NO_DATA_FOUND THEN as_YHMSG0:='查找不到医保对应记录,请与系统管理员联系!'; if ls_FLAG00='0' then as_SYSMSG:='SFXMID='||to_char(ls_XMBH00)||',XMMC00='||ls_XMMC00||',MXID00='||to_char(ls_MXID00)||',YBBRLB='||LS_YBBRLB||',YBZXLB='||ls_YBZXLB||',查找不到医保对应记录!'||SQLERRM; elsif ls_FLAG00='1' then as_SYSMSG:='YPNM00='||to_char(ls_XMBH00)||',XMMC00='||ls_XMMC00||',CFID00='||to_char(ls_MXID00)||',YBBRLB='||LS_YBBRLB||',YBZXLB='||ls_YBZXLB||',查找不到医保对应记录!'||SQLERRM; elsif ls_FLAG00='2' then as_SYSMSG:='YPNM00='||to_char(ls_XMBH00)||',XMMC00='||ls_XMMC00||',YPQLPC='||to_char(ls_MXID00)||',YBBRLB='||LS_YBBRLB||',YBZXLB='||ls_YBZXLB||',查找不到医保对应记录!'||SQLERRM; end if; ROLLBACK; RETURN; WHEN OTHERS THEN --说明是药品,注意有多条记录 as_YHMSG0:='医疗收费项目生成错误,请速与系统管理员联系!'; if ls_FLAG00='0' then as_SYSMSG:='SFXMID='||to_char(ls_XMBH00)||',XMMC00='||ls_XMMC00||',MXID00='||to_char(ls_MXID00)||',YBBRLB='||LS_YBBRLB||',YBZXLB='||ls_YBZXLB||',查找不到医保对应记录!'||SQLERRM; elsif ls_FLAG00='1' then as_SYSMSG:='YPNM00='||to_char(ls_XMBH00)||',XMMC00='||ls_XMMC00||',CFID00='||to_char(ls_MXID00)||',YBBRLB='||LS_YBBRLB||',YBZXLB='||ls_YBZXLB||',查找不到医保对应记录!'||SQLERRM; elsif ls_FLAG00='2' then as_SYSMSG:='YPNM00='||to_char(ls_XMBH00)||',XMMC00='||ls_XMMC00||',YPQLPC='||to_char(ls_MXID00)||',YBBRLB='||LS_YBBRLB||',YBZXLB='||ls_YBZXLB||',查找不到医保对应记录!'||SQLERRM; end if; ROLLBACK; RETURN; END; END LOOP; if as_FLAG00 in ('5','6') then Close CUR_ZY_FYMX00_DBZ000; else Close CUR_FYMX_DATA; end if; --2021.05.13 把数量和金额为0 数据删除,避免某些药品合计金额为0,单位不转后,在下面汇总时MAX(XMDW00)取值错误 delete BM_ZYCFMX_TEMP00 where ID0000=LS_ID0000 and XMSL00=0 and XMJE00=0; --进行汇总 --住院医保数据整理(SP_ZY_YBJK00_FJ0000)药品费用是否按操作日期汇总[0:否 1:药品和项目 2:药品]默认:0 if nvl(LS_FSYBYPFYSFRQHZ,'0') in ('1') then --按天汇总【药品和项目】 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,XMBH00,SFYB00,FPXMMC,TRIM(XMMC00),XMGG00,MAX(XMDW00),XMDJ00,nvl(sum(XMSL00),0),NVL(sum(XMJE00),0), max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00),max(YPPL00),max(YPYL00),NVL(sum(YBSXCE),0),max(FLAG00),max(GZHCID),max(SFFSHC), SFXMID,max(HCDBXM),CZRQ00,FPXMBH,max(YSYGBH),max(HCDBSX),max(DBSFXM),max(DBSFSL),sum(nvl(CWHCFY,0)),sum(nvl(CBCWF0,0)), max(MXID00),max(HCDBBM),max(HCDBMC),max(HCDBBZ),max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML), max(BKE181),max(BKE182),max(BKC507),max(BKC506),CFHAO0 from BM_ZYCFMX_TEMP00 where ID0000 = ls_ID0000 group by XMBH00,SFYB00,FPXMMC,XMGG00,XMDJ00,TRIM(XMMC00),SFXMID,CZRQ00,FPXMBH,CFHAO0; elsif nvl(LS_FSYBYPFYSFRQHZ,'0') in ('2') then --按天汇总【2:药品】 --药品按天汇总 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,XMBH00,SFYB00,FPXMMC,TRIM(XMMC00),XMGG00,MAX(XMDW00),XMDJ00,nvl(sum(XMSL00),0),NVL(sum(XMJE00),0), max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00),max(YPPL00),max(YPYL00),NVL(sum(YBSXCE),0),max(FLAG00),max(GZHCID),max(SFFSHC), SFXMID,max(HCDBXM),CZRQ00,FPXMBH,max(YSYGBH),max(HCDBSX),max(DBSFXM),max(DBSFSL),sum(nvl(CWHCFY,0)),sum(nvl(CBCWF0,0)), max(MXID00),max(HCDBBM),max(HCDBMC),max(HCDBBZ),max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML), max(BKE181),max(BKE182),max(BKC507),max(BKC506),CFHAO0 from BM_ZYCFMX_TEMP00 where ID0000 = ls_ID0000 and nvl(FLAG00,'0') not in ('0') group by XMBH00,SFYB00,FPXMMC,XMGG00,XMDJ00,TRIM(XMMC00),SFXMID,CZRQ00,FPXMBH,CFHAO0; --项目不按天汇总 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,XMBH00,SFYB00,FPXMMC,TRIM(XMMC00),XMGG00,MAX(XMDW00),XMDJ00,nvl(sum(XMSL00),0),NVL(sum(XMJE00),0), max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00),max(YPPL00),max(YPYL00),NVL(sum(YBSXCE),0),max(FLAG00),max(GZHCID),max(SFFSHC), SFXMID,max(HCDBXM),max(CZRQ00),FPXMBH,max(YSYGBH),max(HCDBSX),max(DBSFXM),max(DBSFSL),sum(nvl(CWHCFY,0)),sum(nvl(CBCWF0,0)), max(MXID00),max(HCDBBM),max(HCDBMC),max(HCDBBZ),max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML), max(BKE181),max(BKE182),max(BKC507),max(BKC506),max(CFHAO0) from BM_ZYCFMX_TEMP00 where ID0000 = ls_ID0000 and nvl(FLAG00,'0') in ('0') group by XMBH00,SFYB00,FPXMMC,XMGG00,XMDJ00,trim(XMMC00),SFXMID,FPXMBH; else --项目和药品都不按天汇总 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,XMBH00,SFYB00,FPXMMC,TRIM(XMMC00),XMGG00,MAX(XMDW00),XMDJ00,nvl(sum(XMSL00),0),NVL(sum(XMJE00),0), max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00),max(YPPL00),max(YPYL00),NVL(sum(YBSXCE),0),max(FLAG00),max(GZHCID),max(SFFSHC), SFXMID,max(HCDBXM),max(CZRQ00),FPXMBH,max(YSYGBH),max(HCDBSX),max(DBSFXM),max(DBSFSL),sum(nvl(CWHCFY,0)),sum(nvl(CBCWF0,0)), max(MXID00),max(HCDBBM),max(HCDBMC),max(HCDBBZ),max(BKEH83),max(BKEH05),max(BKEH06),max(BAKXML), max(BKE181),max(BKE182),max(BKC507),max(BKC506),max(CFHAO0) from BM_ZYCFMX_TEMP00 where ID0000 = ls_ID0000 group by XMBH00,SFYB00,FPXMMC,XMGG00,XMDJ00,TRIM(XMMC00),SFXMID,FPXMBH; end if; ---汇总插入药品超过限额的数据--begin--- if ZY_YPCWZHFS='F' then --F:数量不变,单价=限价超过按原项目非医保 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,XMBH00,SFYB00 as SFYB00,FPXMMC,XMMC00,max(XMGG00)XMGG00,max(XMDW00)XMDW00,XMDJ00 as XMDJ00,sum(XMSL00) as XMSL00,sum(XMJE00) XMJE00, max(YSXM00)YSXM00,max(ZFXMBH)ZFXMBH,max(YSZJHM)YSZJHM,max(YPTS00)YPTS00,max(YPPL00)YPPL00,max(YPYL00)YPYL00,sum(YBSXCE)YBSXCE,max(FLAG00)FLAG00,max(GZHCID)GZHCID,max(SFFSHC)SFFSHC, SFXMID as SFXMID,max(HCDBXM)HCDBXM,max(CZRQ00)CZRQ00,FPXMBH,max(YSYGBH)YSYGBH,max(HCDBSX)HCDBSX,max(DBSFXM)DBSFXM,max(DBSFSL)DBSFSL,sum(CWHCFY)CWHCFY,sum(CBCWF0)CBCWF0, max(MXID00)MXID00,max(HCDBBM)HCDBBM,max(HCDBMC)HCDBMC,max(HCDBBZ)HCDBBZ,max(BKEH83)BKEH83,max(BKEH05)BKEH05,max(BKEH06)BKEH06,max(BAKXML)BAKXML, max(BKE181),max(BKE182),max(BKC507),max(BKC506),max(CFHAO0) from BM_ZYCFMX_TEMP00 where ID0000 = LS_YPXJID00 group by XMBH00,XMMC00,FPXMBH,FPXMMC,XMDJ00,SFYB00,SFXMID; else --(数量=1 单价=合计金额) insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,XMBH00,max(SFYB00)SFYB00,FPXMMC,XMMC00,max(XMGG00)XMGG00,max(XMDW00)XMDW00,sum(XMJE00) as XMDJ00,1 as XMSL00,sum(XMJE00) XMJE00, max(YSXM00)YSXM00,max(ZFXMBH)ZFXMBH,max(YSZJHM)YSZJHM,max(YPTS00)YPTS00,max(YPPL00)YPPL00,max(YPYL00)YPYL00,sum(YBSXCE)YBSXCE,max(FLAG00)FLAG00,max(GZHCID)GZHCID,max(SFFSHC)SFFSHC, max(SFXMID)SFXMID,max(HCDBXM)HCDBXM,max(CZRQ00)CZRQ00,FPXMBH,max(YSYGBH)YSYGBH,max(HCDBSX)HCDBSX,max(DBSFXM)DBSFXM,max(DBSFSL)DBSFSL,sum(CWHCFY)CWHCFY,sum(CBCWF0)CBCWF0, max(MXID00)MXID00,max(HCDBBM)HCDBBM,max(HCDBMC)HCDBMC,max(HCDBBZ)HCDBBZ,max(BKEH83)BKEH83,max(BKEH05)BKEH05,max(BKEH06)BKEH06,max(BAKXML)BAKXML, max(BKE181),max(BKE182),max(BKC507),max(BKC506),max(CFHAO0) from BM_ZYCFMX_TEMP00 where ID0000 = LS_YPXJID00 group by XMBH00,XMMC00,FPXMBH,FPXMMC; end if; ---汇总插入药品超过限额的数据--end--- insert into BM_ZYCF00_TEMP00(ID0000,NAME00,BZ0000,VALUE0) select ad_ID0000,NAME00,BZ0000,NVL(sum(VALUE0),0) from BM_ZYCF00_TEMP00 where ID0000 = ls_ID0000 group by NAME00,BZ0000; --delete from bm_zycfmx_temp00 where id0000= ad_id0000 and (nvl(xmje00,0)=0; delete from bm_zycfmx_temp00 where id0000= ad_id0000 and (nvl(xmje00,0)=0 or nvl(xmsl00,0)=0); --2015.05.29 by ZYSF-20150227-001 判断是否有没有负数的记录--begin select count(1) into ls_COUNT0 from BM_ZYCFMX_TEMP00 where id0000=ad_id0000 and nvl(xmje00,0)<0; if (ls_COUNT0>=1) then select SQ_ZY_TEMP00_ID0000.nextval into LS_NewID0 from dual; --插入非负数项目编码 --2022.02.21 LS_FSYBYPFYSFRQHZ=1,2 group by增加CFHAO0 if nvl(LS_FSYBYPFYSFRQHZ,'0') in ('1','2') then --按天汇总【药品和项目】 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00, XMDJ00,XMSL00,XMJE00,YSXM00,ZFXMBH,YSZJHM,YPTS00, YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC,SFXMID, HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL, CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ, BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select LS_NewID0,XMBH00,SFYB00,FPXMMC,TRIM(XMMC00),XMGG00,MAX(XMDW00), XMDJ00,nvl(sum(XMSL00),0),NVL(sum(XMJE00),0),max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00), max(YPPL00),max(YPYL00),NVL(sum(YBSXCE),0),max(FLAG00),max(GZHCID),max(SFFSHC),max(SFXMID), max(HCDBXM),max(CZRQ00),FPXMBH,max(YSYGBH),max(HCDBSX),max(DBSFXM),max(DBSFSL), sum(nvl(CWHCFY,0)),sum(nvl(CBCWF0,0)),max(MXID00),max(HCDBBM),max(HCDBMC),max(HCDBBZ), max(BKEH83)BKEH83,max(BKEH05)BKEH05,max(BKEH06)BKEH06,max(BAKXML)BAKXML, max(BKE181),max(BKE182),max(BKC507),max(BKC506),CFHAO0 from BM_ZYCFMX_TEMP00 where ID0000 = ad_id0000 and (XMBH00,FPXMMC,XMMC00) not in (select XMBH00,FPXMMC,XMMC00 from BM_ZYCFMX_TEMP00 where id0000=ad_id0000 and nvl(xmje00,0)<0) group by XMBH00,SFYB00,FPXMMC,XMGG00,XMDJ00,trim(XMMC00),FPXMBH,CFHAO0; else insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00, XMDJ00,XMSL00,XMJE00,YSXM00,ZFXMBH,YSZJHM,YPTS00, YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC,SFXMID, HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL, CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ, BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select LS_NewID0,XMBH00,SFYB00,FPXMMC,TRIM(XMMC00),XMGG00,MAX(XMDW00), XMDJ00,nvl(sum(XMSL00),0),NVL(sum(XMJE00),0),max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00), max(YPPL00),max(YPYL00),NVL(sum(YBSXCE),0),max(FLAG00),max(GZHCID),max(SFFSHC),max(SFXMID), max(HCDBXM),max(CZRQ00),FPXMBH,max(YSYGBH),max(HCDBSX),max(DBSFXM),max(DBSFSL), sum(nvl(CWHCFY,0)),sum(nvl(CBCWF0,0)),max(MXID00),max(HCDBBM),max(HCDBMC),max(HCDBBZ), max(BKEH83)BKEH83,max(BKEH05)BKEH05,max(BKEH06)BKEH06,max(BAKXML)BAKXML, max(BKE181),max(BKE182),max(BKC507),max(BKC506),max(CFHAO0) from BM_ZYCFMX_TEMP00 where ID0000 = ad_id0000 and (XMBH00,FPXMMC,XMMC00) not in (select XMBH00,FPXMMC,XMMC00 from BM_ZYCFMX_TEMP00 where id0000=ad_id0000 and nvl(xmje00,0)<0) group by XMBH00,SFYB00,FPXMMC,XMGG00,XMDJ00,trim(XMMC00),FPXMBH; end if; --插入负数项目编码一致合并金额后重新算单价 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00, XMDJ00,XMSL00,XMJE00,YSXM00,ZFXMBH,YSZJHM,YPTS00, YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC,SFXMID, HCDBXM,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL, CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ, BKEH83,BKEH05,BKEH06,BAKXML,BKE181,BKE182,BKC507,BKC506,CFHAO0) select LS_NewID0,XMBH00,max(SFYB00),FPXMMC,trim(XMMC00),max(XMGG00),max(XMDW00), round(decode(nvl(sum(XMSL00),0),0,0,NVL(sum(XMJE00),0)/nvl(sum(XMSL00),0)),4)XMDJ00, nvl(sum(XMSL00),0),NVL(sum(XMJE00),0),max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00), max(YPPL00),max(YPYL00),NVL(sum(YBSXCE),0),max(FLAG00),max(GZHCID),max(SFFSHC),max(SFXMID),max(HCDBXM), max(CZRQ00),FPXMBH,max(YSYGBH),max(HCDBSX),max(DBSFXM),max(DBSFSL),sum(nvl(CWHCFY,0)),sum(nvl(CBCWF0,0)), max(MXID00),max(HCDBBM),max(HCDBMC),max(HCDBBZ), max(BKEH83)BKEH83,max(BKEH05)BKEH05,max(BKEH06)BKEH06,max(BAKXML)BAKXML, max(BKE181),max(BKE182),max(BKC507),max(BKC506),max(CFHAO0) from BM_ZYCFMX_TEMP00 where ID0000 = ad_id0000 and (XMBH00,FPXMMC,XMMC00) in (select XMBH00,FPXMMC,XMMC00 from BM_ZYCFMX_TEMP00 where id0000=ad_id0000 and nvl(xmje00,0)<0) group by XMBH00,FPXMMC,trim(XMMC00),FPXMBH; delete from BM_ZYCFMX_TEMP00 where id0000=LS_NewID0 and (nvl(xmje00,0)=0 or nvl(xmsl00,0)=0); --插入主表数据 if trim(ls_SYFPBH)='Y' then insert into BM_ZYCF00_TEMP00(ID0000,NAME00,BZ0000,VALUE0) select LS_NewID0,B.XMMC00,A.SFYB00,NVL(sum(A.XMJE00),0) from BM_ZYCFMX_TEMP00 a,bm_ybfpxm b where ID0000 = LS_NewID0 AND trim(A.FPXMMC)=trim(B.BH0000) group by B.XMMC00,A.SFYB00; else insert into BM_ZYCF00_TEMP00(ID0000,NAME00,BZ0000,VALUE0) select LS_NewID0,FPXMMC,SFYB00,NVL(sum(XMJE00),0) from BM_ZYCFMX_TEMP00 where ID0000 = LS_NewID0 group by FPXMMC,SFYB00; end if; --删除旧数据 delete from BM_ZYCF00_TEMP00 where id0000=ad_ID0000; delete from BM_ZYCFMX_TEMP00 where id0000=ad_ID0000; ad_id0000:=LS_NewID0; end if; --2015.05.29 by ZYSF-20150227-001 判断是否有没有负数的记录--end-- if as_FLAG00 in ('2','3') then if ZY_SFBQCFS = 'Y' then select trim(max(XMMC00)) into ls_XMMC00 from BM_ZYCFMX_TEMP00 where ID0000 = ad_ID0000 and ((nvl(xmje00,0)<=0) or (nvl(XMSL00,0)<=0)); if ls_XMMC00 is not null then as_YHMSG0:='项目“'||ls_XMMC00||'”数量为负数,请先冲销之前的日清单记录!'; as_SYSMSG:=substr(SQLERRM||'执行存储过程错误:SP_ZY_YBJK00_FJ0000('||to_char(ad_QSDJH0)||','||to_char(ad_ZZDJH0)||','||as_YBMC00||',ad_ID0000,as_YHMSG0,as_SYSMSG)',1,150); end if; ROLLBACK; RETURN; else delete from BM_ZYCFMX_TEMP00 where id0000=ad_id0000 and ((nvl(xmje00,0)<=0) or (nvl(XMSL00,0)<=0)); end if; end if; if ZY_SFASXJS='Y' and as_FLAG00 in ('0','1') then FOR MX IN CUR_BM_ZYCFMX_TEMP00 LOOP ls_ZYZFSX_TEMP:=ls_ZYZFSX_TEMP+MX.XMJE00; if ls_ZYZFSX_TEMP>ls_ZYZFSX then UPDATE BM_ZYCFMX_TEMP00 SET XMBH00=ZFXMBH,SFYB00='N' WHERE XMBH00=MX.XMBH00 AND SFYB00=MX.SFYB00 AND FPXMMC=MX.FPXMMC AND XMGG00=MX.XMGG00 AND XMDJ00=MX.XMDJ00 AND ID0000=MX.ID0000; end if; END LOOP; Delete from BM_ZYCF00_TEMP00 where ID0000 = ad_ID0000; if trim(ls_SYFPBH)='Y' then insert into BM_ZYCF00_TEMP00(ID0000,NAME00,BZ0000,VALUE0) select ad_ID0000,B.XMMC00,A.SFYB00,NVL(sum(A.XMJE00),0) from BM_ZYCFMX_TEMP00 a,bm_ybfpxm b where ID0000 = AD_ID0000 AND trim(A.FPXMMC)=trim(B.BH0000) group by B.XMMC00,A.SFYB00; else insert into BM_ZYCF00_TEMP00(ID0000,NAME00,BZ0000,VALUE0) select ad_ID0000,FPXMMC,SFYB00,NVL(sum(XMJE00),0) from BM_ZYCFMX_TEMP00 where ID0000 = AD_ID0000 group by FPXMMC,SFYB00; end if; end if; ---ls_MZSFYSZJHM=Y 费用明细中传送医生的证件号于标题头中的医生证件号一致 BY ZYSF-20120410-001 if (ls_MZSFYSZJHM='Y') and (trim(ls_YSZJHM) is not null) then Update BM_ZYCFMX_TEMP00 Set YSXM00=ls_YSZJHM where ID0000=ls_ID0000; Update BM_ZYCFMX_TEMP00 Set YSXM00=ls_YSZJHM where ID0000=ad_ID0000; end if; Select max(YSZJHM) into lv_MAXYSZJH from BM_ZYCFMX_TEMP00 where ID0000=ls_ID0000 and YSZJHM is not null; if lv_MAXYSZJH is null then lv_MAXYSZJH:='无'; end if; update BM_ZYCFMX_TEMP00 set YSZJHM=lv_MAXYSZJH where ID0000=LS_ID0000 and nvl(trim(YSZJHM),'0') in ('0'); update BM_ZYCFMX_TEMP00 set YPPL00='9999' where ID0000= ls_ID0000 and nvl(YPPL00,'0') in ('0'); update BM_ZYCFMX_TEMP00 set YPYL00='1' where ID0000= ls_ID0000 and nvl(YPYL00,'0') in ('0'); Select max(YSZJHM) into lv_MAXYSZJH from BM_ZYCFMX_TEMP00 where ID0000=ad_ID0000 and nvl(YSZJHM,'0') not in ('0'); if lv_MAXYSZJH is null then lv_MAXYSZJH:='无'; end if; update BM_ZYCFMX_TEMP00 set YSZJHM=lv_MAXYSZJH where ID0000=ad_ID0000 and nvl(trim(YSZJHM),'0') in ('0'); update BM_ZYCFMX_TEMP00 set YPPL00='9999' where ID0000= ad_ID0000 and nvl(YPPL00,'0') in ('0'); update BM_ZYCFMX_TEMP00 set YPYL00='1' where ID0000= ad_ID0000 and nvl(YPYL00,'0') in ('0'); Delete from BM_ZYCFMX_TEMP00 where ID0000 = LS_ID0000; Delete from BM_ZYCF00_TEMP00 where ID0000 = LS_ID0000; select trim(max(XMMC00)) into ls_XMMC00 from BM_ZYCFMX_TEMP00 where ID0000 = ad_ID0000 and XMSL00<0; if ls_XMMC00 is not null then as_YHMSG0:='项目“'||ls_XMMC00||'”数量为负数,请与系统管理员联系!'; as_SYSMSG:=substr(SQLERRM||'执行存储过程错误:SP_ZY_YBJK00_FJ0000('||to_char(ad_QSDJH0)||','||to_char(ad_ZZDJH0)||','||as_YBMC00||',ad_ID0000,as_YHMSG0,as_SYSMSG)',1,150); ROLLBACK; RETURN; end if; --2020.08.06 判断是否有维护主项 LS_ZXDBBZ:='Y';--耗材包设置主项打包标志 Y:打包 N:不打包(兼容旧接口,未维护全部打包) if LS_SFBZHCDB='Y' then /* --修改耗材id对应的收费项目编码 update BM_ZYCFMX_TEMP00 A set (A.DBSFXM) =(select B.DBSFXM from BM_GZHCFL B where B.GZHCID=A.GZHCID and rownum=1) Where ID0000 = ad_ID0000 and A.GZHCID>0 and nvl(A.SFFSHC,'1')='1' and nvl(A.HCDBXM,'0')='0'; */ --查找主项收费项目 select count(1) into LS_COUNT0 from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0' and nvl(B.DBSFXM,0)>0; --2021.07.23 注释掉根据BM_HCDBZX判断 /* --2021.04.24 查找表BM_HCDBZX是否有记录 select count(1) into LS_HCDBZXRec from BM_HCDBZX aa where aa.YXBZ00='1' and (AA.GZHCID) in (select b.GZHCID from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0'); */ --判断本次收费项目是否包含主项(不包含,不打包) if nvl(LS_COUNT0,0)>0 then select count(1) into LS_COUNT1 from BM_ZYCFMX_TEMP00 A where A.ID0000=ad_ID0000 and A.GZHCID>0 and nvl(A.SFFSHC,'1')='1' and nvl(A.HCDBXM,'0')='0' and nvl(A.SFXMID,0)>0 and A.SFXMID in (select B.DBSFXM from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0' and nvl(B.DBSFXM,0)>0); if nvl(LS_COUNT1,0)<=0 then LS_ZXDBBZ:='N';--耗材包设置主项打包标志 Y:打包 N:不打包 --修改中间GZHCID改成0 update BM_ZYCFMX_TEMP00 B set B.GZHCID=0,B.DBSFXM=0,B.SFFSHC='0' where ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0'; else --开始循环执行--begin-- for CUR in CUR_ZXSFXM loop if nvl(CUR.XMSL00,0)-nvl(CUR.DBSFSL,0)>0 then LS_CFSL00:=nvl(CUR.DBSFSL,0);--拆分数量_原 LS_CFDJ00:=nvl(CUR.XMDJ00,0);--拆分单价_原 LS_CFJE00:=round(LS_CFSL00*LS_CFDJ00,2);--拆分金额=拆分数量*拆分单价_原 --修改原单的数量、单价、金额 update BM_ZYCFMX_TEMP00 set XMSL00=LS_CFSL00, XMDJ00=LS_CFDJ00, XMJE00=LS_CFJE00, SFYB00='Y' --是否医保 Y:是 ,N:否 (原单=Y) where ID0000=ad_ID0000 and MXID00=CUR.MXID00 and SFXMID=CUR.SFXMID; --拆分后 LS_CFSL01:=nvl(CUR.XMSL00,0)-nvl(CUR.DBSFSL,0);--拆分数量_新 LS_CFJE01:=round(CUR.XMJE00-LS_CFJE00,2);--拆分金额_新 LS_CFDJ01:=nvl(LS_CFJE01/LS_CFSL01,0);--拆分单价_新=金额/数量 --2021.10.28 零售单价:2.5626 最高限价:2.564 数量:2 金额:5.13 新单价:5.13/2=2.565 超过最高限价:2.564 if round(LS_CFDJ00*LS_CFSL01,2)=round(LS_CFJE01,2) then LS_CFDJ01:=LS_CFDJ00;--如果原单价*拆分后数量=拆分后金额 单价用原单价 end if; --插入拆分后记录 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,CZRQ00,YPTS00,YPPL00, YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, SFXMID,HCDBXM,FPXMBH,YSYGBH,HCDBSX, DBSFXM,DBSFSL,CWHCFY,CBCWF0,MXID00, HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) values(ad_ID0000,CUR.XMBH00, --CUR.SFYB00, --拆分后 是否医保 Y:是 ,N:否 (原单=N) 'N', CUR.FPXMMC,CUR.XMMC00, CUR.XMGG00,CUR.XMDW00,LS_CFDJ01,LS_CFSL01,LS_CFJE01, CUR.YSXM00,CUR.ZFXMBH,CUR.CZRQ00,CUR.YPTS00,CUR.YPPL00, CUR.YPYL00,CUR.YBSXCE,CUR.FLAG00,0,'0', CUR.SFXMID,'0',CUR.FPXMBH,CUR.YSYGBH,CUR.HCDBSX, CUR.DBSFXM,CUR.DBSFSL,0,0,SQ_BM_ZYCFMX_TEMP00_MXID00.nextval, '','','0',null,null,null,null, CUR.BKE181,CUR.BKE182,CUR.BKC507,CUR.BKC506,CUR.CFHAO0 ); end if; end loop; --开始循环执行--end-- end if; --2021.07.23 注释掉根据BM_HCDBZX判断 /* elsif nvl(LS_HCDBZXRec,0)>0 then --2021.04.24 BM_HCDBZX本次收费项目在该表中存在打包,不存在不打包 select count(1) into LS_HCDBZXNum from BM_HCDBZX aa where aa.YXBZ00='1' and AA.SFXMID in (select SFXMID from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.FLAG00='0'); --select count(1) into LS_HCDBZXNum from BM_HCDBZX aa where aa.YXBZ00='1' and (AA.GZHCID,AA.SFXMID) in --(select b.GZHCID,SFXMID from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0'); if nvl(LS_HCDBZXNum,0)<=0 then LS_ZXDBBZ:='N';--BM_HCDBZX本次收费项目在该表中存在打包,不存在不打包 --修改中间GZHCID改成0 update BM_ZYCFMX_TEMP00 B set B.GZHCID=0,B.DBSFXM=0,B.SFFSHC='0' where ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0'; end if; */ end if; end if; --2021.04.26 如果是非单病种病人耗材打包,并且ZY_GZHMMXCLFS=Q:单价、数量、金额都不变 时,参数设置成Y:单价和金额为0 if LS_HCJKQY='Y' and trim(ZY_GZHMMXCLFS)='Q' then ZY_GZHMMXCLFS:='Y'; end if; --高值耗材打包或单病种耗材打包--begin-- --LS_SFBZHCDB:是否单病种打包 Y:是 N:否 LS_HCJKQY:高值耗材接口启用 Y:是 N:否 if ((LS_HCJKQY='Y') or (LS_SFBZHCDB='Y')) and (LS_ZXDBBZ='Y') then --获取BM_YBFPXM 其它费 begin select BH0000,XMMC00 into LS_YBFPBH,LS_YBFPMC from BM_YBFPXM where YBZXLB = LS_YBZXLB and BH0000 in ('13'); exception when others then LS_YBFPBH:='13'; LS_HCFPBH:='13'; LS_YBFPMC:='其它费'; end; if LS_SYFPBH='Y' then LS_HCFPMC:=nvl(LS_YBFPBH,'13');--耗材打包发票项目编码和发票名称 else LS_HCFPMC:=nvl(LS_YBFPMC,'其它费');--耗材打包发票项目编码和发票名称 end if; --2021.07.23 注释掉根据BM_HCDBZX主项维护 /* if LS_HCJKQY='Y' then --非单病种耗材打包 --2021.04.24 查找表BM_HCDBZX是否有记录 select count(1) into LS_HCDBZXRec from BM_HCDBZX aa where aa.YXBZ00='1' and (AA.GZHCID) in (select b.GZHCID from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0'); if nvl(LS_HCDBZXRec,0)>0 then --2021.04.24 BM_HCDBZX本次收费项目在该表中存在打包,不存在不打包 select count(1) into LS_HCDBZXNum from BM_HCDBZX aa where aa.YXBZ00='1' and AA.SFXMID in (select SFXMID from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.FLAG00='0'); --select count(1) into LS_HCDBZXNum from BM_HCDBZX aa where aa.YXBZ00='1' and (AA.GZHCID,AA.SFXMID) in --(select b.GZHCID,SFXMID from BM_ZYCFMX_TEMP00 B where B.ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0'); if nvl(LS_HCDBZXNum,0)<=0 then --修改中间GZHCID改成0 update BM_ZYCFMX_TEMP00 B set B.GZHCID=0,B.DBSFXM=0,B.SFFSHC='0' where ID0000=ad_ID0000 and B.GZHCID>0 and nvl(B.SFFSHC,'1')='1' and nvl(B.HCDBXM,'0')='0'; end if; end if; end if; */ --查找是否有打包项目 select count(1)into LS_COUNT0 from BM_ZYCFMX_TEMP00 where ID0000=ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0'; --插入耗材打包项目 if nvl(LS_COUNT0,0)>0 then --查找是否有按个打包项目 --HCDBSX:耗材打包属性 0:按套打包 1:按个打包 9:不打包 select count(1)into LS_TMPNUM from BM_ZYCFMX_TEMP00 where ID0000=ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0' and nvl(HCDBSX,'0')='1'; --LS_SFHCDB_Num 是否耗材打包(数量)=HCDBSX:耗材打包属性=9:不打包 select count(1)into LS_SFHCDB_Num from BM_ZYCFMX_TEMP00 where ID0000=ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0' and nvl(HCDBSX,'0')='9'; if nvl(LS_SFHCDB_Num,0)>0 then ZY_GZHMMXCLFS:='R';--R:单价、数量、金额都不变(不打包) 默认值:Y end if; if nvl(LS_TMPNUM,0)>0 then --耗材打包--个--end-- for CUR in CUR_HCDB loop if nvl(CUR.HCDBSX,'0')='1' then --0:按套打包 1:按个打包 9:不打包 if trim(ZY_GZHMMXCLFS) not in ('R') then --R:单价、数量、金额都不变(不打包) select SQ_BM_ZYCFMX_TEMP00_MXID00.nextval into LS_MXID00 from dual; LS_SFYBXM:='Y'; --是否医保 Y:是 ,N:否 2021.08.30 改为Y LS_GG0000:='个';--项目规格 LS_DW0000:='个'; --项目单位 --插入中间表 insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, HCDBXM,SFXMID,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,CUR.HCDBBM,LS_SFYBXM,LS_HCFPMC,CUR.HCDBMC,LS_GG0000,LS_DW0000,CUR.XMDJ00,CUR.XMSL00,CUR.XMJE00, CUR.YSXM00,CUR.ZFXMBH,CUR.YSZJHM,CUR.YPTS00,CUR.YPPL00,CUR.YPYL00,CUR.YBSXCE,3,CUR.GZHCID,'1', '1',CUR.SFXMID,CUR.CZRQ00,LS_YBFPBH,CUR.YSYGBH,CUR.HCDBSX,CUR.DBSFXM,0,CUR.XMJE00,0, LS_MXID00, CUR.HCDBBM, CUR.HCDBMC, '2',--耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 null,null,null,null, CUR.BKE181,CUR.BKE182,CUR.BKC507,CUR.BKC506,CUR.CFHAO0 from dual; end if; --修改原单据金额、数量 --ZY_GZHMMXCLFS 住院收费医保单病种耗材打包原明细项处理方式 Y:单价和金额为0 N:数量和金额为0,Y:单价和金额为0,Q:单价、数量、金额都不变 默认值:Y if trim(ZY_GZHMMXCLFS) in ('R') then --R:单价、数量、金额都不变(不打包) update BM_ZYCFMX_TEMP00 set HCDBBZ='R' where ID0000 =CUR.ID0000 and SFXMID=CUR.SFXMID and MXID00=CUR.MXID00; elsif trim(ZY_GZHMMXCLFS)='Q' then --B:单价、数量、金额都不变(BM_ZYCFMX_TEMP00.HCDBBZ:耗材打包标识改Q) --耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 Q:原明细单价、数量、金额不变 update BM_ZYCFMX_TEMP00 set HCDBBZ='Q' where ID0000 =CUR.ID0000 and SFXMID=CUR.SFXMID and MXID00=CUR.MXID00; elsif trim(ZY_GZHMMXCLFS)='N' then --221956:福州市闽清县医院 or LS_YYID00 in ('221956') update BM_ZYCFMX_TEMP00 set XMSL00=0,XMJE00=0 where ID0000 =CUR.ID0000 and SFXMID=CUR.SFXMID and MXID00=CUR.MXID00; else update BM_ZYCFMX_TEMP00 set XMDJ00=0,XMJE00=0 where ID0000 =CUR.ID0000 and SFXMID=CUR.SFXMID and MXID00=CUR.MXID00; end if; end if; end loop; --耗材打包--个--end-- else --耗材打包--套--begin-- if trim(ZY_GZHMMXCLFS) not in ('R') then --R:单价、数量、金额都不变(不打包) select SQ_BM_ZYCFMX_TEMP00_MXID00.nextval into LS_MXID00 from dual; insert into BM_ZYCFMX_TEMP00(ID0000,XMBH00,SFYB00,FPXMMC,XMMC00,XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00, YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00,YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC, HCDBXM,SFXMID,CZRQ00,FPXMBH,YSYGBH,HCDBSX,DBSFXM,DBSFSL,CWHCFY,CBCWF0, MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKC507,BKC506,CFHAO0) select ad_ID0000,HCDBBM, max(SFYB00) SFYB00, max(FPXMMC),HCDBMC,max(XMGG00),MAX(XMDW00),sum(XMJE00),1,sum(XMJE00), max(YSXM00),max(ZFXMBH),max(YSZJHM),max(YPTS00),max(YPPL00),max(YPYL00),sum(YBSXCE),3,GZHCID,'1', '1',max(SFXMID),max(CZRQ00),max(FPXMBH),max(YSYGBH),max(HCDBSX),max(DBSFXM),0,sum(nvl(XMJE00,0)),0, --max(MXID00), LS_MXID00, HCDBBM, HCDBMC, '2',--耗材打包标识 0:未打包 1:打包项目 2:耗材打包主项 3:除外耗材打包 A:药品超过最高限价拆分原单 B:药品超过最高限价拆分后 null,null,null,null, max(BKE181),max(BKE182),max(BKC507),max(BKC506),max(CFHAO0) from BM_ZYCFMX_TEMP00 where ID0000 = ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0' group by GZHCID,HCDBBM,HCDBMC; --修改打包项目的编码 --医保发票项目直接使用"其他费" update BM_ZYCFMX_TEMP00 A set (A.XMBH00,A.XMDW00,A.XMMC00,A.FPXMMC,A.FPXMBH,A.SFYB00,BKE182) =(select B.HCDBBM,nvl(B.DW0000,'无'),B.HCDBMC,LS_HCFPMC,LS_HCFPBH, --'N' 2021.08.30 改为Y 'Y', B.HCDBMC from BM_GZHCFL B where B.GZHCID=A.GZHCID and rownum=1) Where ID0000 = ad_ID0000 and A.GZHCID>0 and nvl(A.SFFSHC,'1')='1' and nvl(A.HCDBXM,'0')='1'; end if; --ZY_GZHMMXCLFS:住院收费医保单病种耗材打包原明细项处理方式 Y:单价和金额为0 N:数量和金额为0,Y:单价和金额为0,Q:单价、数量、金额都不变(打包),R:单价、数量、金额都不变(不打包) 默认值:Y if trim(ZY_GZHMMXCLFS) in ('R') then update BM_ZYCFMX_TEMP00 set HCDBBZ='R' where ID0000 = ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0'; elsif trim(ZY_GZHMMXCLFS)='Q' then --B:单价、数量、金额都不变BM_ZYCFMX_TEMP00.HCDBBZ:耗材打包标识改Q) update BM_ZYCFMX_TEMP00 set HCDBBZ='Q' where ID0000 = ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0'; elsif trim(ZY_GZHMMXCLFS)='N' then --221956:福州市闽清县医院 or LS_YYID00 in ('221956') update BM_ZYCFMX_TEMP00 set XMSL00=0,XMJE00=0 where ID0000 = ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0'; else update BM_ZYCFMX_TEMP00 set XMDJ00=0,XMJE00=0 where ID0000 = ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='0'; end if; --耗材打包--套--end-- end if; end if; --select sum(XMJE00) into LS_BZLSHC from BM_ZYCFMX_TEMP00 where ID0000 = ad_ID0000 and GZHCID>0 and nvl(SFFSHC,'1')='1' and nvl(HCDBXM,'0')='1'; end if; --高值耗材打包或单病种耗材打包--end-- --把收费项目名称加(院外)只修改项目 update BM_ZYCFMX_TEMP00 set XMMC00=substrb(trim(XMMC00)||SF_SF_YWJZMC(SFXMID),1,100) where ID0000=ad_ID0000 and FLAG00='0'; --标志 '0'费用,'1'零散处方,'2'医嘱处方; update BM_ZYCFMX_TEMP00 set YPYL00=substr(trim(YPYL00),1,6) where ID0000=ad_ID0000; --修改发送操作日期 by ZYSF-20171227-003 update BM_ZYCFMX_TEMP00 set CZRQ00=to_char(sysdate,'YYYYMMDD') where ID0000 = ad_ID0000 and CZRQ00 is null; --2018.04.09 修改医生姓名对应的医生证件编码 if ls_MZSFYSZJHM not in ('Y') then update BM_ZYCFMX_TEMP00 a set a.YSZJHM=SF_ZY_YSZJBH(a.YSXM00,null,a.YSZJHM,0) where a.ID0000 = ad_ID0000; update BM_ZYCFMX_TEMP00 a set a.YSXM00=SF_ZY_YSZJBH(a.YSXM00,null,a.YSZJHM,1) where a.ID0000 = ad_ID0000; end if; --XMDW00/aka067 单位 varchar2(20) XMGG00/aka074 规格型号 varchar2(50) --修改项目规格、项目单位、发票项目编码 update BM_ZYCFMX_TEMP00 set XMGG00=substrb(nvl(trim(XMGG00),'无'),1,50),XMDW00=substrb(nvl(trim(XMDW00),'无'),1,20),FPXMBH=nvl(FPXMBH,'13') where ID0000=ad_ID0000; --2020.01.19 项目数量取2位小数点 update BM_ZYCFMX_TEMP00 set XMSL00 = round(XMJE00/XMDJ00,2) where round(XMJE00,2) <> round((XMDJ00 * XMSL00),2) and ID0000 = ad_ID0000 and XMDJ00<>0; --linbin 2021.04.20 修正中间表 BM_ZYCFMX_TEMP00 update BM_ZYCFMX_TEMP00 set YSZJHM=(select decode(LS_ZJHMLY,'1',A.SFZBH0,A.YSZJHM) from BM_YGBM00 A where A.YGBH00=YSYGBH and rownum=1) where ID0000 = ad_ID0000 and YSYGBH is not null ; --新医保接口明细上传bkc007节点是否开启发送医师国家编码(=BM_YGBM00.YBYGDM),=0原来模式[0:否,1:门诊,2:住院,3:门诊住院] 默认0 if as_SFXYB0='1' and LS_BKC007_FSYSGJBM in ('2','3') then--是否新医保 0:否 1:是 update BM_ZYCFMX_TEMP00 set (YSXM00,YSZJHM)=(select substrb(A.ZWXM00,1,30),nvl(substrb(A.YBYGDM,1,30),A.SFZBH0) from BM_YGBM00 A where A.YGBH00=YSYGBH and rownum=1) where ID0000 = ad_ID0000 and YSYGBH is not null ; end if; update BM_ZYCFMX_TEMP00 set BKEA96=SFYB00 where ID0000 = ad_ID0000; --新医保接口bkeh83(国家编码C码)是否转化为bke045(医保结算编码)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 if as_SFXYB0='1' and substrb(LS_Change_bkeh83_bke045,1,1) in ('2','3') then --新医保接口处理 if substrb(LS_Change_bkeh83_bke045,2,1) in ('1') then --1:项目2:药品3:项目和药品 update BM_ZYCFMX_TEMP00 aa set aa.XMBH00=substrb(nvl(trim(aa.BKEH83),trim(aa.XMBH00)),1,50) where aa.ID0000 = ad_ID0000 and aa.FLAG00 in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bkeh83_bke045,2,1) in ('2') then --1:项目2:药品3:项目和药品 update BM_ZYCFMX_TEMP00 aa set aa.XMBH00=substrb(nvl(trim(aa.BKEH83),trim(aa.XMBH00)),1,50) where aa.ID0000 = ad_ID0000 and aa.FLAG00 not in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bkeh83_bke045,2,1) in ('3') then --1:项目2:药品3:项目和药品 update BM_ZYCFMX_TEMP00 aa set aa.XMBH00=substrb(nvl(trim(aa.BKEH83),trim(aa.XMBH00)),1,50) where aa.ID0000 = ad_ID0000 and aa.FLAG00 is not null; end if; end if; --新医保接口bke182(院内项目名称)是否转化为bke046(医保项目名称)第一位:0:不开启 1:门诊2:住院3:门诊和住院,第二位(1:项目2:药品3:项目和药品)默认值:00 if as_SFXYB0='1' and substrb(LS_Change_bke182_bke046,1,1) in ('2','3') then --新医保接口处理 if substrb(LS_Change_bke182_bke046,2,1) in ('1') then --1:项目2:药品3:项目和药品 update BM_ZYCFMX_TEMP00 aa set aa.XMMC00=substrb(nvl(trim(aa.bke182),trim(aa.XMMC00)),1,100) where aa.ID0000 = ad_ID0000 and aa.FLAG00 in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bke182_bke046,2,1) in ('2') then --1:项目2:药品3:项目和药品 update BM_ZYCFMX_TEMP00 aa set aa.XMMC00=substrb(nvl(trim(aa.bke182),trim(aa.XMMC00)),1,100) where aa.ID0000 = ad_ID0000 and aa.FLAG00 not in ('0') and aa.FLAG00 is not null; elsif substrb(LS_Change_bke182_bke046,2,1) in ('3') then --1:项目2:药品3:项目和药品 update BM_ZYCFMX_TEMP00 aa set aa.XMMC00=substrb(nvl(trim(aa.bke182),trim(aa.XMMC00)),1,100) where aa.ID0000 = ad_ID0000 and aa.FLAG00 is not null; end if; end if; --插入住院医保发送明细表ZY_YBFSMX insert into ZY_YBFSMX( ID0000,CZRQ00,CZSJ00,ZYID00,JZDH00,FPXMMC,SFYB00,SFXMID,XMBH00,XMMC00, XMGG00,XMDW00,XMDJ00,XMSL00,XMJE00,YSXM00,ZFXMBH,YSZJHM,YPTS00,YPPL00, YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC,HCDBXM,FPXMBH,YSYGBH,HCDBSX,DBSFXM, DBSFSL,CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKEA96,BKC507,BKC506,CFHAO0 ) select ID0000,lv_CZRQ00,lv_CZSJ00,ad_ZYID00,0,trim(FPXMMC)FPXMMC,SFYB00,SFXMID,trim(XMBH00)XMBH00,trim(XMMC00)XMMC00, trim(XMGG00)XMGG00,trim(XMDW00)XMDW00,XMDJ00,XMSL00,XMJE00,trim(YSXM00)YSXM00,trim(ZFXMBH)ZFXMBH,trim(YSZJHM)YSZJHM,YPTS00,YPPL00, YPYL00,YBSXCE,FLAG00,GZHCID,SFFSHC,HCDBXM,FPXMBH,YSYGBH,HCDBSX,DBSFXM, DBSFSL,CWHCFY,CBCWF0,MXID00,HCDBBM,HCDBMC,HCDBBZ,BKEH83,BKEH05,BKEH06,BAKXML, BKE181,BKE182,BKEA96,BKC507,BKC506,CFHAO0 from BM_ZYCFMX_TEMP00 where ID0000=ad_ID0000; --2017.03.15 单病种修改 by ZYSF-20170206-001 if LS_DBZBM0 is not null then select SF_ZY_DBZCBFY(ad_ZYID00,LS_BRID00,LS_DBZBM0,ad_ID0000,0) into LS_BZCBCW from dual;--超标床位费 select SF_ZY_DBZCBFY(ad_ZYID00,LS_BRID00,LS_DBZBM0,ad_ID0000,1) into LS_BZLSHC from dual;--除外耗材费 end if; update ZY_BRZHXX set DBZCWF=nvl(LS_BZCBCW,0),DBZHCF=nvl(LS_BZLSHC,0) where BRID00=LS_BRID00 and JFLBID = 2; exception when no_data_found then as_YHMSG0:='查找不到对应的医保发票项目,请与系统管理员联系!'; as_SYSMSG:=SQLERRM||as_SYSMSG; rollback; when others then as_YHMSG0:='出错原因未知!请记录此信息并和系统管理员联系!'; as_SYSMSG:=substr(SQLERRM||'执行存储过程错误:SP_ZY_YBJK00_FJ0000('||to_char(ad_QSDJH0)||','||to_char(ad_ZZDJH0)||','||as_YBMC00||',ad_ID0000,as_YHMSG0,as_SYSMSG)',1,150); rollback; end; / show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%