prompt 门诊院内扣费记账以及结算 create or replace procedure SP_SF_FYXX00_JS0000 ( PID0000 in number, --ID0000 PBRID00 in number, --病人ID PCZY000 in number , --操作员 PFPXH00 in varchar2, --发票序号 PTSBZBH in varchar default '', --特殊病种编号 PSFDYFP in varchar2 default 'Y,N', --打印发票标志(第一位:Y打印N不打印,第二位:N打印发票 Y打印结算单 M不打印发票和结算单 PJZDH00 out number, --结账单号 pYHMSG0 out varchar2, --存储过程提示的错误信息 PSYSMSG out varchar2, --系统提示的错误信息 PYBJKID in varchar2 default '' ,--医保接口id PYBTYPE in varchar2 default '' ,--医保接口标志 -1:自费 0:福建版本 1:国家基线版 PBKE284 in varchar2 default '' ,--身份认证类型 01:读卡 02:融合码 06 医保码 20 医疗证 PINTXML in varchar2 default '' ,--备用xml PFKLSH0 in varchar2 default '' ,--分开结算流水号 PFKJSLX in varchar2 default '' ,--分开结算类型 FYCF_ZF:自费处方 FYCF_ZC:正常处方 PFKJZDH in number default 0 ,--分开结算单号 PFKJZJE in number default 0 ,--分开结算金额 PSFDZPJ in varchar2 default '0' --是否电子票据 0:否 1:是 ) -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2015.04.28 create by MZSF-20150428-001 --zhangyc 2015.05.14 自费结算不判断 金额是否一致 by MZSF-20150514-001 --zhangyc 2015.05.21 增加获取批次价格 by MZSF-20150521-001 --zhangyc 2015.07.13 修改公费病人提示补交金额错误 by MZSF-20150610-005 --zhangyc 2015.07.22 增加健康通(民生通)支付功能 by MZSF-20150722-001 --zhangyc 2015.07.30 修改账户信息表SF_BRZHXX.TCJE00 by MZSF-20150708-002 --zhangyc 2015.08.13 健康通改造 by MZSF-20150811-001 --zhangyc 2015.09.08 修正血透析减免优惠功能 by MZSF-20150907-005 --zhangyc 2015.09.08 修正打印结算单时 发票序号跳号问题 by MZSF-20150907-006 --zhangyc 2015.12.28 增加ZFFS00=10,11,14 时用YBBHSB=14判断 by MZSF-20151228-002 --zhangyc 2016.01.19 单病种修改 by MZSF-20160115-001 --zhangyc 2016.07.15 vRow.BCBXF0-->LS_HJJE00 by MZSF-20160716-002 --zhangyc 2017.06.22 SP_SF_YFCF00增加执行SP_YF_ZYDZFY、SP_YS_DJPSFZX by MZSF-20170609-002 --zhuyr 2018.05.04 增加未添加的医保预留/说明字段 by MZSF-20180427-002 --yanghq 2018.05.08 增加调用过程SP_JK_INSJKB0 for MZSF-20180509-003 --zhuyr 2018.05.17 增加插入新增发医保预留/说明字段,从YBYL51-YBYL69,YBSM17-YBSM29 by MZSF-20180507-001 --zhuyr 2018.08.06 处理结算新流程中,血透减免计算有误的问题 by MZSF-20180801-004 -- dsm 2019.08.17 调用接口过程增加异常处理 for MZSF-20190817-001 --zhangyc 2019.12.03 新医保接口调用过程SP_SF_NEWYBJK_JKFHJX解析(补助明细、医保发票费用开始) by MZSF-20191203-004 --zhangyc 2019.12.23 新医保接口统筹总额(bkc102:基金支付总额)、医保账户(bkc041:个人账户支付金额)、个人自付(bkc040:个人现金支付金额(实付现金)) 按医保返回为准 by MZSF-20191221-001 --zhangyc 2020.12.10 SF_JZB000保存一些新的字段(FKJSLX,FKLSH0,FKJZDH,FKJZJE,YBBXZE,DLTCJJ,DLZHZF,YBQTZE,DLSYBX,DLJZFP,DLQTJJ,DLQYBC,MZBZJE,DLSBJE,GWBZJE,DLDBJJ,CJBTCE ) by MZSF-20201210-003 --zhangyc 2021.01.14 参数LS_TCJJQZFS=D时bkc062(其中:精准扶贫医疗叠加)、ake173(其中:其他基金支付)ake026(其中:企业补充)根据函数SF_SF_YBFHJE判断累加到统筹基金中 by MZSF-20201229-002 --zhangyc 2021.03.09 修正结账SF_JZB000.TCJJZF=vRow.TCJJZF改为ld_TCJJZF,GRZHZF=vRow.Zhzfe0改为ld_GRZHZF by MZSF-20210309-003 --zhangyc 2021.03.10 修改SF_YBBRFSJE参数开启后,新医保结算时,自费金额未加上未发送的金额SF_FYXX00_TEMP00.FYBJE0,LS_ZFJE00需加上该值 by MZSF-20210310-003 --zhangyc 2021.07.13 新医保接口 SF_JZB000.BKE284(身份认证类型(01:读卡02:融合码06:医保码20:医疗证) 写入对应的值 by MZSF-20210713-002 --zhangyc 2022.02.18 增加入参数PYBJKID、PYBTYPE、PBKE284、PINTXML by MZSF-20220221-001 --zhangyc 2022.05.09 国家医保接口LS_bkc052,YB_YBYL58 =hifmi_pay:居民大病保险资金支出+hifob_pay:职工大病保险资金支出 by MZSF-20220509-003 --zhangyc 2022.07.08 结账表增加写入cvl_acct_pay、cvl_acct_balc、pur_acct_pay by MZSF-20220708-001 --zhangyc 2023.01.30 SF_JZB000写入dise_codg:病种编码、dise_name:病种名称 by MZSF-20230130-002 --zhangyc 2023.04.19 参考过程SP_SF_YBJSDJ中代码修改表XT_YBTSBZ.jzdh00 by MZSF-20230419-003 --zhangyc 2023.07.03 增加入参数PFKLSH0、PFKJSLX、PFKJZDH、PFKJZJE by MZSF-20230707-002 --zhangyc 2023.07.07 增加参数控制不同医技单据号或处方号生成不同的收费单据号(系统参数:SF_SplitFBillNo) by MZSF-20230710-002 --zhangyc 2024.01.24 增加根据参数ExpensesCheck校验差额 by MZSF-20240118-002 --zhangyc 2024.09.27 解析setl_time: 结算时间保存中间表YBJZRQ:医保结算日期,YBJZSJ:医保结算时间 by MZSF-20240927-001 --zhangyc 2024.11.08 修正SF_FYXX00_TEMP00.YBGHH0='0'或SF_JZB000.YBGHH0='0' by MZSF-20241108-004 --zhangyc 2025.01.15 调用过程SP_SF_INSERT_JZQDMX生成SF_YBSFMX by MZSF-20250115-002 --zhangyc 2025.03.21 修正结账表SF_JZB000.bke284未写入 by MZSF-20250321-002 --linztao 2025.05.20 增加调用追溯码销售退货处理过程(SP_SF_YPZSM0_XSTHCL) MZSF-20250519-004 --zhangyc 2025.07.18 优化查询cvl_acct_pay、cvl_acct_balc、hl_acct_pay、hl_acct_balc、acct_mulaid_pay、fm_acct_balc、pur_acct_pay慢,优先取日志表expcontent by MZSF-20250722-001 --zhangyc 2025.08.22 参考SP_SF_BRFY00_JS0000调用过程SP_SF_YJYWZX ---------- ------------ ------------------------------------------ as LV_GHID00 SF_FYXX00_TEMP00.GHID00%type; LV_GHH000 SF_FYXX00_TEMP00.GHH000%type; Lv_DJH000 SF_BRFY00.DJH000%TYPE; Lv_DJH001 SF_BRFY00.DJH000%TYPE; lv_KDKS00 SF_BRXXB0.JZKS00%TYPE; lv_KDYS00 SF_BRXXB0.JZYS00%TYPE; lv_ZXKS00 SF_BRXXB0.JZKS00%TYPE; lv_ZXYS00 SF_BRXXB0.JZYS00%TYPE; lv_YSKS00 SF_BRXXB0.JZKS00%TYPE; LS_ZXKS00 YJ_YW0000.YJKSBH%type; --执行科室 LS_YJZXYS YJ_YW0000.KDYS00%type; --开单医生 Lv_CZRQ00 char(8); Lv_CZSJ00 char(8); LS_COUNT0 number(5); LS_SFSCDJ varchar2(1); -- LS_FPXH00 varchar2(30); vRow SF_FYXX00_TEMP00%rowtype; LS_JFDJH0 SF_BRJFB0.DJH000%TYPE; LS_JZDH00 SF_JZB000.JZDH00%TYPE; --结算单号 LS_PJH000 SF_PJSYQK.PJH000%TYPE; --票据流水号 LS_JZY000 BM_YGBM00.YGBH00%TYPE; --操作员编码 LS_JZYXM0 BM_YGBM00.ZWXM00%TYPE; --操作员姓名 LS_CZYKS0 BM_YGBM00.BMBH00%TYPE; --操作员科室 LS_JFJE00 number(12,4); LS_YBBHSB IC_YBBRLB.YBBHSB%TYPE; ls_YBMC00 IC_YBBRLB.YBMC00%TYPE; ls_BRXB00 bm_brxxb0.BRXB00%TYPE; LS_BRXM00 bm_brxxb0.BRXM00%TYPE; LS_HJJE00 number(12,4); LS_ZFJE00 number(12,4); LS_JZJE00 number(12,4); LS_GFJE00 number(12,4); LS_BRZJE0 number(12,4); LS_HJJE01 number(12,4); LS_ZFJE01 number(12,4); LS_XJYE00 SF_BRZHXX.XJYE00%TYPE; LS_ZYE000 SF_BRZHXX.ZYE000%TYPE; LS_TYJE00 SF_BRZHXX.TYJE00%TYPE; LS_ZZYE00 SF_BRZHXX.ZZYE00%TYPE; LS_SFDY00 Varchar2(1); LS_DYLX00 Varchar2(1); V_ZYDJFJFBM BM_YYSFXM.SFXMID%TYPE;--中药煎药费附加费收费代码 V_JYSFDM BM_YYSFXM.SFXMID%TYPE; --中药煎药费收费代码 V_JYSFDM_SC BM_YYSFXM.SFXMID%TYPE; --中药煎药费收费代码(每日三次) V_JYSFDM_FIRST BM_YYSFXM.SFXMID%TYPE; --中药煎药费收费代码 (第一帖的收费标准) LS_JZBJE0 number(12,4); --结账表金额 LS_FYBJE0 number(12,4); --结账表金额(选择结算非医保金额) LS_TEMPJE number(12,4); --临时表数据 LS_SFJM00 varchar2(10); --是否减免 LS_JMJE00 number(12,4); --血透析减免金额 LS_JMDJH0 number(10); V_MsgStr varchar2(100); V_ZYDJDH number(10); --返回中药代煎单号 V_ZYDZDH number(10); --返回中药袋子费用单号 V_ZYPSDH number(10); --返回配送费用单号 V_MZCF00 YF_MZCF00%rowtype; V_YJYW00 YJ_YW0000%rowtype; LS_FSWBJKSJ varchar2(30); LS_ZXZT00 number(10);--输出:执行状态 0:失败 1:成功 LS_ERRMSG varchar2(400);--输出:错误信息 LS_YBJKID varchar2(20);--医保接口ID LS_akc227 number(12,2);--akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_bkc102 number(12,2);--bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_bkc040 number(12,2);--bkc040 个人现金支付金额(实付现金) LS_bkc041 number(12,2);--bkc041 个人账户支付金额 LS_bkc045 number(12,2);--bkc045 其中:统筹基金支付 LS_bkc059 number(12,2);--bkc059 其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_bkc052 number(12,2);--bkc052 其中:商保基金支付(大额补充) LS_bkc062 number(12,2);--bkc062 其中:精准扶贫医疗叠加 LS_bkc060 number(12,2);--bkc060 其中:医疗救助基金 LS_ake173 number(12,2);--ake173 其中:其他基金支付 LS_ake026 number(12,2);--ake026 其中:企业补充 LS_bkc011 number(12,2);--bkc011 个人自费(非医保费用) LS_akc087 number(12,2);--akc087 个人账户余额 LS_aka151 number(12,2);--aka151 统筹支付医保费用起付标准 LS_aka150 number(12,2);--aka150 本年度住院次数 LS_bkc612 number(12,2);--bkc612 补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_bkc064 number(12,2);--产前检查费(医保返回) LS_FYJSCE number(12,2);--费用结算差额 LS_YBGHH0 varchar2(30);--医保挂号号 LS_YBDJH0 varchar2(30);--医保单据号 LS_BRID00 BM_BRXXB0.BRID00%type; --病人ID LS_FBBH00 BM_BRXXB0.FBBH00%type; --费别编码 BM_bkc001_mc BM_BRXXB0.bkc001_mc%type;--人员待遇类别名称(城乡居民、普通在职人员等等) BM_aae140 BM_BRXXB0.aae140%type;--险种类型编码:310 城镇职工基本医疗保险 320:公务员医疗补助 380:新型农村合作医疗 390:城乡居民基本医疗保险 410:工伤保险 510:生育保险 520:机关生育 BM_aae140_mc BM_BRXXB0.aae140_mc%type;--险种类型名称:城乡居民基本医疗保险、城镇职工基本医疗保险等等 LS_bkc001_mc SF_JZB000.bkc001_mc%type;--人员待遇类别名称(城乡居民、普通在职人员等等) LS_aae140 SF_JZB000.aae140%type;--险种类型编码:310 城镇职工基本医疗保险 320:公务员医疗补助 380:新型农村合作医疗 390:城乡居民基本医疗保险 410:工伤保险 510:生育保险 520:机关生育 LS_aae140_mc SF_JZB000.aae140_mc%type;--险种类型名称:城乡居民基本医疗保险、城镇职工基本医疗保险等等 LS_bke174 SF_JZB000.bke174%type;--异地就医类型编码:1 省内 2 省外 3 市内 4 市外 LS_bke174_mc SF_JZB000.bke174_mc%type;--异地就医类型名称:(省内、省外、市内、市外) LS_JSQYE0 SF_JZB000.JSQYE0%type;--结算前账户余额 LS_JSHYE0 SF_JZB000.JSQYE0%type;--结算后账户余额 ld_TCJJZF number(12,2);--统筹基金 ld_GRZHZF number(12,2);--医保账户支付 ld_SBTJJE number(12,2);--商保统筹基金支付金额 ld_SBZHJE number(12,2);--商保帐户支付金额 ld_JJZFE0 number(12,2);--保健基金支付金额 ld_SYBXZF number(12,2);--商业保险支付金额 ld_SBZFE0 number(12,2);--商保基金支付(省属三家市属九家医疗机构) ld_BJZFE0 number(12,2);--保健基金支付(省属三家市属九家医疗机构) ld_GWYBZ0 number(12,2);--公务员补助 LS_FKJSLX SF_JZB000.FKJSLX%type;--分开结算类型FYCF_ZF:自费处方 FYCF_ZC:正常处方 ZFJS:自费结算 YBJS:医保结算 LS_FKLSH0 SF_JZB000.FKLSH0%type;--分开结算流水号 LS_FKJZDH SF_JZB000.FKJZDH%type;--分开结算单号 LS_FKJZJE SF_JZB000.FKJZJE%type;--分开结算金额 LS_YBBXZE SF_JZB000.YBBXZE%type;--医保报销总额(DLTCJJ+DLZHZF+YBQTZE+DLSYBX+DLJZFP+DLQTJJ+DLQYBC+MZBZJE+DLSBJE+GWBZJE+DLDBJJ) LS_DLTCJJ SF_JZB000.DLTCJJ%type;--实际医保统筹基金 LS_DLZHZF SF_JZB000.DLZHZF%type;--实际医保账户支付 LS_YBQTZE SF_JZB000.YBQTZE%type;--医保其它总额 LS_DLSYBX SF_JZB000.DLSYBX%type;--商业保险支付(独立于统筹基金金额) LS_DLJZFP SF_JZB000.DLJZFP%type;--精准扶贫医疗(独立于统筹基金金额) LS_DLQTJJ SF_JZB000.DLQTJJ%type;--其他基金支付(独立于统筹基金金额) LS_DLQYBC SF_JZB000.DLQYBC%type;--企业补充(独立于统筹基金金额) LS_DLMZBZ SF_JZB000.MZBZJE%type;--民政补助金额(独立于统筹基金金额) LS_DLSBJE SF_JZB000.DLSBJE%type;--商保支付金额(独立于统筹基金金额) LS_GWBZJE SF_JZB000.GWBZJE%type;--公务员补助金额(独立于统筹基金金额) LS_DLDBJJ SF_JZB000.DLDBJJ%type;--大病基金支付金额(独立于统筹基金金额) LS_CJBTCE SF_JZB000.CJBTCE%type;--产检检查费(bkc064)超出个人自付金额后需补退的差额 LS_TCJJQZFS varchar2(10);--新医保接口统筹基金取值方式 Y:取基金总额:bkc102,N:取其中基金支付:bkc045和补偿总额bkc612合并到bkc102 D:bkc045,bkc059,bkc052,bkc060独立写入 默认:Y LS_SFXMYBJK varchar2(10);--是否厦门医保接口 Y:是 N:否 LD_MZBZJE SF_JZB000.YBYL18%type;--民政补助金额 LS_YBYL23 SF_JZB000.YBYL23%type; --医保结算金额误差(院内总额-医保总额) LS_XZJSXML varchar2(50);--是否选择结算xml(是否选择结算 1:是 0:否)非医保金额) LS_bke284 SF_JZB000.BKE284%type;--身份认证类型(01:读卡02:融合码06:医保码20:医疗证) LS_jsqdbz SF_JZB000.jsqdbz%type;--医保结算单上传标志(1:已上传 2:已修改) LS_ybtype SF_JZB000.ybtype%type;--医保接口类型[-1:自费 0:福建版本 1:国家基线版] LS_med_type SF_JZB000.med_type%type;--[国家医保]医疗类别(aka130) LS_psn_type SF_JZB000.psn_type%type;--[国家医保]人员类别(bkc001) LS_medins_setl_id SF_JZB000.medins_setl_id%type;--[国家医保]医药机构结算ID LS_clr_optins SF_JZB000.clr_optins%type;--[国家医保]清算经办机构 LS_clr_way SF_JZB000.clr_way%type;--[国家医保]清算方式 LS_clr_type SF_JZB000.clr_type%type;--[国家医保]清算类别 LS_fulamt_ownpay_amt SF_JZB000.fulamt_ownpay_amt%type;--[国家医保]全自费金额 LS_overlmt_selfpay SF_JZB000.overlmt_selfpay%type;--[国家医保]超限价自费费用 LS_preselfpay_amt SF_JZB000.preselfpay_amt%type;--[国家医保]先行自付金额 LS_inscp_scp_amt SF_JZB000.inscp_scp_amt%type;--[国家医保]符合政策范围金额 LS_hifmi_pay SF_JZB000.hifmi_pay%type;--[国家医保]居民大病保险资金支出 LS_hifob_pay SF_JZB000.hifob_pay%type;--[国家医保]职工大额医疗费用补助基金支出 LS_acct_mulaid_pay SF_JZB000.acct_mulaid_pay%type;--[国家医保]个人账户共济支付金额 LS_pool_prop_selfpay SF_JZB000.pool_prop_selfpay%type;--[国家医保]基本医疗保险统筹基金支付比例 LS_hifdm_pay SF_JZB000.hifdm_pay%type;--[国家医保]伤残人员医疗保障基金支出 LS_hosp_part_amt SF_JZB000.hosp_part_amt%type;--[国家医保]医院负担金额 LS_akc190 SF_YBJKRZ.akc190%type;--akc190 医保挂号或医保住院号 LS_aae072 SF_YBJKRZ.aae072%type;--aae072:医保收费流水号 LS_mdtrt_id SF_YBJKRZ.mdtrt_id%type;--[国家医保]mdtrt_id: 就诊ID=akc190:医保挂号号 LS_setl_id SF_YBJKRZ.setl_id%type; --[国家医保]setl_id: 结算ID=aae072:医保收费流水号 LS_insutype SF_YBJKRZ.insutype%type;--[国家医保]险种类型=aae140 LS_psn_part_amt SF_JZB000.psn_part_amt%type;--[国家医保]个人负担总金额 YB_SBGRZH SF_JZB000.SBGRZH%type;--商保个人帐户金额 YB_SBTCJJ SF_JZB000.SBTCJJ%type;--商保统筹基金 YB_SYBXZF SF_JZB000.SYBXZF%type;--商业保险支付 YB_YBYL52 SF_JZB000.YBYL52%type;--akc227:医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 YB_YBYL53 SF_JZB000.YBYL53%type;--bkc102:基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 YB_YBYL54 SF_JZB000.YBYL54%type;--bkc040:个人现金支付金额(实付现金) YB_YBYL55 SF_JZB000.YBYL55%type;--bkc041:个人账户支付金额 YB_YBYL56 SF_JZB000.YBYL56%type;--bkc045:其中:统筹基金支付 YB_YBYL57 SF_JZB000.YBYL57%type;--bkc059:其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) YB_YBYL58 SF_JZB000.YBYL58%type;--bkc052:其中:商保基金支付(大额补充) YB_YBYL59 SF_JZB000.YBYL59%type;--bkc062:其中:精准扶贫医疗叠加 YB_YBYL60 SF_JZB000.YBYL60%type;--bkc060:其中:医疗救助基金 YB_YBYL61 SF_JZB000.YBYL61%type;--ake173:其中:其他基金支付 YB_YBYL62 SF_JZB000.YBYL62%type;--ake026:其中:企业补充 YB_YBYL63 SF_JZB000.YBYL63%type;--bkc011:个人自费(非医保费用) YB_YBYL64 SF_JZB000.YBYL64%type;--akc087:个人账户余额 YB_YBYL65 SF_JZB000.YBYL65%type;--aka151:统筹支付医保费用起付标准 YB_YBYL66 SF_JZB000.YBYL66%type;--aka150:本年度住院次数 YB_YBYL67 SF_JZB000.YBYL67%type;--bkc612:补助基金支B付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 YB_YBYL68 SF_JZB000.YBYL68%type;--bkc064:产前检查费(医保返回) YB_cvl_acct_pay number(12,2);--cvl_acct_pay 公务员账户支付 YB_cvl_acct_balc number(12,2);--cvl_acct_balc 公务员余额 YB_hl_acct_pay number(12,2);--hl_acct_pay 健康账户支付=YBYL11 YB_hl_acct_balc number(12,2);--hl_acct_balc 健康账户余额=YBYL12 YB_acct_mulaid_pay number(12,2);--acct_mulaid_pay 共济账户支付=YBYL13 YB_fm_acct_balc number(12,2);--fm_acct_balc 共济账户余额=YBYL14 YB_pur_acct_pay number(12,2);--pur_acct_pay 医疗账户支付 YB_insuplc_admdvs varchar2(10);--insuplc_admdvs 参保地行政区划 YB_mdtrtarea_admvs varchar2(10);--mdtrtarea_admvs 就医地医保区划 YB_psn_no varchar2(30);--psn_no 人员编号 LS_dise_codg SF_JZB000.dise_codg%type;--病种编码 LS_dise_name SF_JZB000.dise_name%type;--病种名称 LS_setl_time SF_YBJKRZ.setl_time%type;--setl_time:结算时间 ls_expcontent SF_YBJKRZ.expcontent%type;--其它信息 LS_YBJZRQ SF_JZB000.YBJZRQ%type;--医保结算日期 LS_YBJZSJ SF_JZB000.YBJZSJ%type;--医保结算时间 LS_PHLYXZ SF_PJSYQK.PHLYXZ%type;--票据领用限制 N:不限制 LS_TPCDJH SF_BRFY00.TPCDJH%type;--同批次收费单据号 LS_ZFCFBZ SF_BRFY00.ZFCFBZ%type;--自费处方标志:0或空:正常处方,1:自费处方 LS_CFLSH0 SF_FYXX00_DJH000.CFLSH0%type;--处方流水号 LS_YJDJH0 SF_FYXX00_DJH000.YJDJH0%type;--医技单据号 LS_XMFL00 SF_FYXX00_DJH000.XMFL00%type;--项目分类 0:处方 1:医技 2:费用 3:收费代入费用 LS_FYSFDJH number(10); --费用收费单据号 LS_SplitNo varchar2(10);--是否拆分收费单据号 1:拆分 0:不拆分 LS_OPEN_ZFCFBZ varchar2(10);--开启自费处方标志分开结算(0:不启用 1:启用) SF_SplitFBillNo varchar2(10);--门诊收费系统费用处理登记未扣费是否独立生成收费单号(不同的医技单或处方流水号收费单据号分开) 0:不分开 1:分开 默认值:0 Pro_Out_HJJE00 number(12,4);--总金额,提供给医保使用 Pro_Out_ZFJE00 number(12,4);--自费金额 Pro_Out_JZJE00 number(12,4);--记账金额 Pro_Out_GFJE00 number(12,4);--公费金额 Pro_Out_YHMSG0 varchar2(400);--存储过程提示的错误信息 Pro_Out_SYSMSG varchar2(400);--系统提示的错误信息 Pro_Out_ZXZT00 varchar2(10);--[出参]:执行状态 0:失败 1:成功 Pro_Out_OUTXML varchar2(2000);--[出参]:出参xml LS_ExpensesCheck varchar2(100);--新医保接口费用结算差额是否写入缴费表以及允许最大误差参数,格式:(0:不写 1:写入|允许最大误差金额) 默认:0|0.00 LS_XMCEXZCX varchar2(10);--0:不写 1:写入 LS_XMCEMAX number(12,2);--项目差额最大值 ls_OUTXML varchar2(2000); ls_ZXCGBZ number(10); ls_TSXX00 varchar2(240); ls_XXXX00 varchar2(240); CURSOR CUR_WJZXM0 IS select distinct CFLSH0,YJDJH0,XMFL00 From SF_FYXX00_DJH000 where ID0000=PID0000 and BRID00=PBRID00 and KFZT00='0' and JZDH00=0 and ((XMFL00='0' and CFID00>0) or (XMFL00='1' and YJDJH0>0)) order by XMFL00, CFLSH0,YJDJH0; begin LS_SFDY00:=substrb(PSFDYFP,1,1); --是否打印 Y打印 N 不打印 LS_DYLX00:=substrb(PSFDYFP,3,1); --打印类型 N打印发票 Y打印结算单 M不打印发票和结算单 PJZDH00:=0; LS_JMJE00:=0; Lv_CZRQ00:=to_char(sysdate,'YYYYMMDD'); Lv_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_FPXH00:=PFPXH00; ld_TCJJZF:=0;--统筹基金 ld_GRZHZF:=0;--医保账户支付 ld_SBTJJE:=0;--商保统筹基金支付金额 ld_SBZHJE:=0;--商保帐户支付金额 ld_JJZFE0:=0;--保健基金支付金额 ld_SYBXZF:=0;--商业保险支付金额 ld_SBZFE0:=0;--商保基金支付(省属三家市属九家医疗机构) ld_BJZFE0:=0;--保健基金支付(省属三家市属九家医疗机构) ld_GWYBZ0:=0;--公务员补助 LS_FKJSLX:=nvl(PFKJSLX,'ZFJS');--分开结算类型 FYCF_ZF:自费处方 FYCF_ZC:正常处方 ZFJS:自费结算 LS_FKLSH0:=PFKLSH0;--分开结算流水号 LS_FKJZDH:=PFKJZDH;--分开结算单号 LS_FKJZJE:=PFKJZJE;--分开结算金额 LS_YBBXZE:=0;--医保报销总额(DLTCJJ+DLZHZF+YBQTZE+DLSYBX+DLJZFP+DLQTJJ+DLQYBC+MZBZJE+DLSBJE+GWBZJE+DLDBJJ) LS_DLTCJJ:=0;--实际医保统筹基金 LS_DLZHZF:=0;--实际医保账户支付 LS_YBQTZE:=0;--医保其它总额 LS_DLSYBX:=0;--商业保险支付(独立于统筹基金金额) LS_DLJZFP:=0;--精准扶贫医疗(独立于统筹基金金额) LS_DLQTJJ:=0;--其他基金支付(独立于统筹基金金额) LS_DLQYBC:=0;--企业补充(独立于统筹基金金额) LS_DLMZBZ:=0;--民政补助金额(独立于统筹基金金额) LS_DLSBJE:=0;--商保支付金额(独立于统筹基金金额) LS_GWBZJE:=0;--公务员补助金额(独立于统筹基金金额) LS_DLDBJJ:=0;--大病基金支付金额(独立于统筹基金金额) LS_CJBTCE:=0;--产检检查费(bkc064)超出个人自付金额后需补退的差额 LS_YBYL23:=0;--医保结算金额误差(院内总额-医保总额) LS_bke284:=null;--身份认证类型(01:读卡02:融合码06:医保码20:医疗证) LS_dise_codg:=null;--病种编码 LS_dise_name:=null;--病种名称 LS_PHLYXZ :=null;--票据领用限制 N:不限制 LS_TPCDJH :=null;--同批次收费单据号 LS_ZFCFBZ :=null;--自费处方标志:0或空:正常处方,1:自费处方 LS_SplitNo :='0';--是否拆分收费单据号 1:拆分 0:不拆分 LS_OPEN_ZFCFBZ :='0';--开启自费处方标志分开结算(0:不启用 1:启用) SF_SplitFBillNo :='0';--门诊收费系统费用处理登记未扣费是否独立生成收费单号(不同的医技单或处方流水号收费单据号分开) 0:不分开 1:分开 默认值:0 LS_ExpensesCheck:=null;--新医保接口费用结算差额是否写入缴费表以及允许最大误差参数,格式:(0:不写 1:写入|允许最大误差金额) 默认:0|0.00 LS_XMCEXZCX:=null;--0:不写 1:写入 LS_XMCEMAX:=0;--项目差额最大值 if PSFDZPJ='1' then --是否电子票据 0:否 1:是 LS_PHLYXZ :='N';--票据领用限制 N:不限制 end if; --查找员工信息 begin Select YGBH00,ZWXM00,BMBH00 into LS_JZY000,LS_JZYXM0,LS_CZYKS0 from BM_YGBM00 where YGBH00=PCZY000; exception when others then PYHMSG0:='未找到有效的员工信息!YGBH00='||PCZY000; PSYSMSG:=PYHMSG0; return; end; --查找病人信息 begin Select A.BRID00,A.BRXB00,A.BRXM00,A.BKC001_MC,A.AAE140, A.AAE140_MC,A.FBBH00,B.YBBHSB,B.YBMC00 into LS_BRID00,ls_BRXB00,ls_BRXM00,BM_BKC001_MC,BM_AAE140,BM_AAE140_MC,LS_FBBH00,LS_YBBHSB,LS_YBMC00 from bm_brxxb0 A,IC_YBBRLB B where A.FBBH00=B.FBBH00 and A.YBLB00=B.YBLB00 and A.BRID00=PBRID00; exception when others then PYHMSG0:='未找到有效的基本信息!BRID00='||PBRID00; PSYSMSG:=PYHMSG0; return; end; select count(1) into LS_COUNT0 from SF_FYXX00_DJH000 where BRID00=LS_BRID00 and ID0000=PID0000 and JZDH00=0; if LS_COUNT0=0 then PYHMSG0:='中间表SF_FYXX00_DJH000未找到有效的数据!ID0000='||PID0000; PSYSMSG:=PYHMSG0; return; end if; --获取结算后账户总余额 (参数:0:门诊 1:住院 参数2:BRID00 参数3:1:门诊 2:住院 参数4:0:可用余额 1:总余额 2:现金余额 3:停用金额) if LS_FBBH00=3 then LS_JSQYE0:=SF_SF_GETBRZHYE(0,LS_BRID00,1,1); else LS_JSQYE0:=SF_SF_GETBRZHYE(0,LS_BRID00,1,0); end if; --是否厦门医保接口 Y:是 N:否 begin select substrb(trim(value0),1,10) into LS_SFXMYBJK from XT_XTCS00 where name00='SF_SFXMYBJK'; exception when others then LS_SFXMYBJK:='N'; end; begin select substr(trim(VALUE0),1,1) into SF_SplitFBillNo from XT_XTCS00 where name00 = 'SF_SplitFBillNo'; exception when others then SF_SplitFBillNo:='0'; end; LS_TCJJQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','TCJJQZFS'),1,10),'Y'); LS_FSWBJKSJ:=substrb(SF_SF_TYZD00('发送外部接口数据','Open'),1,10); LS_OPEN_ZFCFBZ:=substrb(SF_SF_OPEN_ZFCFBZ(LS_BRID00,LS_FBBH00),1,1);--开启自费处方标志分开结算(0:不启用 1:启用) if PFKLSH0 is not null or LS_OPEN_ZFCFBZ='1' or SF_SplitFBillNo='1' then --分开结算流水号 LS_SplitNo :='1';--是否拆分收费单据号 1:拆分 0:不拆分 end if; --新医保接口费用结算差额是否写入缴费表以及允许最大误差参数,格式:(0:不写 1:写入|允许最大误差金额) 默认:0|0.02 LS_ExpensesCheck:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','ExpensesCheck'),1,100),'0|0.02'); begin LS_XMCEXZCX:=substrb(SF_SF_RETURNINDEXEH(trim(LS_ExpensesCheck),'|', 1),1,10);--0:不写 1:写入 LS_XMCEMAX:=abs(SF_SF_STRTONUM(substrb(SF_SF_RETURNINDEXEH(trim(LS_ExpensesCheck),'|', 2),1,10)));--项目差额最大值 exception when others then LS_XMCEXZCX:='0';--0:不写 1:写入 LS_XMCEMAX:=0;--项目差额最大值 end; LS_XMCEXZCX:=nvl(LS_XMCEXZCX,'0');--0:不写 1:写入 LS_XMCEMAX:=nvl(LS_XMCEMAX,0);--项目差额最大值 --获取单据号 begin select * into vRow from SF_FYXX00_TEMP00 where BRID00=LS_BRID00 and ID0000=PID0000; exception when others then PYHMSG0:='中间表SF_FYXX00_TEMP00未找到有效数据!ID0000='||PID0000; PSYSMSG:=PYHMSG0; return; end; LV_GHID00:=vRow.GHID00; LV_GHH000:=vRow.GHH000; YB_SBGRZH:= nvl(vRow.SBGRZH,0);--商保个人帐户金额 YB_SBTCJJ:= nvl(vRow.SBTCJJ,0);--商保统筹基金 YB_SYBXZF:= nvl(vRow.SYBXZF,0);--商业保险支付 YB_YBYL52:= nvl(vRow.YBYL52,0);--akc227:医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 YB_YBYL53:= nvl(vRow.YBYL53,0);--bkc102:基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 YB_YBYL54:= nvl(vRow.YBYL54,0);--bkc040:个人现金支付金额(实付现金) YB_YBYL55:= nvl(vRow.YBYL55,0);--bkc041:个人账户支付金额 YB_YBYL56:= nvl(vRow.YBYL56,0);--bkc045:其中:统筹基金支付 YB_YBYL57:= nvl(vRow.YBYL57,0);--bkc059:其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) YB_YBYL58:= nvl(vRow.YBYL58,0);--bkc052:其中:商保基金支付(大额补充) YB_YBYL59:= nvl(vRow.YBYL59,0);--bkc062:其中:精准扶贫医疗叠加 YB_YBYL60:= nvl(vRow.YBYL60,0);--bkc060:其中:医疗救助基金 YB_YBYL61:= nvl(vRow.YBYL61,0);--ake173:其中:其他基金支付 YB_YBYL62:= nvl(vRow.YBYL62,0);--ake026:其中:企业补充 YB_YBYL63:= nvl(vRow.YBYL63,0);--bkc011:个人自费(非医保费用) YB_YBYL64:= nvl(vRow.YBYL64,0);--akc087:个人账户余额 YB_YBYL65:= nvl(vRow.YBYL65,0);--aka151:统筹支付医保费用起付标准 YB_YBYL66:= nvl(vRow.YBYL66,0);--aka150:本年度住院次数 YB_YBYL67:= nvl(vRow.YBYL67,0);--bkc612:补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 YB_YBYL68:= nvl(vRow.YBYL68,0);--bkc064:产前检查费(医保返回) LS_YBJKID:=substrb(nvl(vRow.YBJKID,vRow.YBSM19),1,20);--医保接口ID LS_YBGHH0:=substrb(trim(vRow.YBGHH0),1,30);--医保挂号号 if LS_YBGHH0='0' then LS_YBGHH0:='0'; end if; LS_YBDJH0:=substrb(trim(vRow.YBDJH0),1,30);--医保单据号 if LS_YBDJH0='0' then LS_YBDJH0:='0'; end if; LS_akc227:=nvl(vRow.YBYL52,0);--akc227:医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_bkc102:=nvl(vRow.YBYL53,0);--bkc102:基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_bkc040:=nvl(vRow.YBYL54,0);--bkc040:个人现金支付金额(实付现金) LS_bkc041:=nvl(vRow.YBYL55,0);--bkc041:个人账户支付金额 LS_bkc045:=nvl(vRow.YBYL56,0);--bkc045:其中:统筹基金支付 LS_bkc059:=nvl(vRow.YBYL57,0);--bkc059:其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_bkc052:=nvl(vRow.YBYL58,0);--bkc052:其中:商保基金支付(大额补充) LS_bkc062:=nvl(vRow.YBYL59,0);--bkc062:其中:精准扶贫医疗叠加 LS_bkc060:=nvl(vRow.YBYL60,0);--bkc060:其中:医疗救助基金 LS_ake173:=nvl(vRow.YBYL61,0);--ake173:其中:其他基金支付 LS_ake026:=nvl(vRow.YBYL62,0);--ake026:其中:企业补充 LS_bkc011:=nvl(vRow.YBYL63,0);--bkc011:个人自费(非医保费用) LS_akc087:=nvl(vRow.YBYL64,0);--akc087:个人账户余额 LS_aka151:=nvl(vRow.YBYL65,0);--aka151:统筹支付医保费用起付标准 LS_aka150:=nvl(vRow.YBYL66,0);--aka150:本年度住院次数 LS_bkc612:=nvl(vRow.YBYL67,0);--bkc612:补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_bkc064:=nvl(vRow.YBYL68,0);--bkc064:产前检查费(医保返回) LS_FYJSCE:=0;--费用结算差额 LS_ybtype:=nvl(PYBTYPE,'0');--医保接口类型[-1:自费 0:福建版本 1:国家基线版] LS_med_type:=vRow.med_type;--[国家医保]医疗类别(aka130) LS_psn_type:=vRow.psn_type;--[国家医保]人员类别(bkc001) LS_medins_setl_id:=vRow.medins_setl_id;--[国家医保]医药机构结算ID LS_clr_optins:=vRow.clr_optins;--[国家医保]清算经办机构 LS_clr_way:=vRow.clr_way;--[国家医保]清算方式 LS_clr_type:=vRow.clr_type;--[国家医保]清算类别 LS_fulamt_ownpay_amt:=nvl(vRow.fulamt_ownpay_amt,0);--[国家医保]全自费金额 LS_overlmt_selfpay:=nvl(vRow.overlmt_selfpay,0);--[国家医保]超限价自费费用 LS_preselfpay_amt:=nvl(vRow.preselfpay_amt,0);--[国家医保]先行自付金额 LS_inscp_scp_amt:=nvl(vRow.inscp_scp_amt,0);--[国家医保]符合政策范围金额 LS_hifmi_pay:=nvl(vRow.hifmi_pay,0);--[国家医保]居民大病保险资金支出 LS_hifob_pay:=nvl(vRow.hifob_pay,0);--[国家医保]职工大额医疗费用补助基金支出 LS_acct_mulaid_pay:=nvl(vRow.acct_mulaid_pay,0);--[国家医保]个人账户共济支付金额 LS_pool_prop_selfpay:=nvl(vRow.pool_prop_selfpay,0);--[国家医保]基本医疗保险统筹基金支付比例 LS_hifdm_pay:=nvl(vRow.hifdm_pay,0);--[国家医保]伤残人员医疗保障基金支出 LS_hosp_part_amt:=nvl(vRow.hosp_part_amt,0);--[国家医保]医院负担金额 --国家基线版本--begin-- if LS_YBTYPE='1' then --医保接口标志 -1:自费 0:福建版本 1:国家基线版 --2022.05.07 大病保险基金支付(商保支付或商业保险)=hifmi_pay:居民大病保险资金支出+hifob_pay:职工大额医疗费用补助基金支出 YB_YBYL58:=nvl(LS_hifmi_pay,0)+nvl(LS_hifob_pay,0); LS_bkc052:=nvl(YB_YBYL58,0);--其中:商保基金支付(大额补充); if LS_SFXMYBJK='Y' then --厦门医保bkc052=sybxzf YB_SBTCJJ:= 0;--商保统筹基金 YB_SYBXZF:= nvl(YB_YBYL58,0);--商业保险支付 else YB_SBTCJJ:= nvl(YB_YBYL58,0);--商保统筹基金 YB_SYBXZF:= 0;--商业保险支付 end if; end if; --国家基线版本--end-- --非医保金额=结算新页面,选择自费发送金额 if nvl(vRow.FYBJE0,0)>0 then LS_XZJSXML:=substrb(''||'1'||''||nvl(vRow.FYBJE0,0)||'',1,50);--是否选择结算xml(是否选择结算 1:是 0:否非医保金额) else LS_XZJSXML:=substrb(''||'0'||''||'0'||'',1,50); end if; Select JZKS00,JZYS00 into lv_KDKS00,lv_KDYS00 from SF_BRXXB0 where BRID00=LS_BRID00 and GHID00=LV_GHID00; lv_ZXKS00:=lv_KDKS00; lv_ZXYS00:=lv_KDYS00; lv_YSKS00:=lv_KDKS00; select SQ_SF_JZB000_JZDH00.nextval into LS_JZDH00 from dual; select SQ_SF_PJSYQK_PJH000.nextval into LS_PJH000 from dual; pJZDH00:=LS_JZDH00; V_MsgStr:='插入缴费表数据'; if vRow.YBJKLX not in ('-1') then --结算方式 -1:自费 0医保 1生育 2:工伤 3:保健 LS_FKJSLX:=nvl(PFKJSLX,'YBJS');--分开结算类型 FYCF_ZF:自费处方 FYCF_ZC:正常处方 ZFJS:自费结算 YBJS:医保结算 if LS_YBJKID is not null and LS_YBJKID not in ('0') then --新接口--begin-- begin select a.akc190,a.aae072,a.mdtrt_id,a.setl_id,a.insutype, substrb(a.insuplc_admdvs,1,10)insuplc_admdvs,substrb(a.mdtrtarea_admvs,1,10)mdtrtarea_admvs,substrb(a.psn_no,1,30) psn_no, substrb(trim(a.dise_codg),1,30) as dise_codg,substrb(trim(a.dise_name),1,200) as dise_name, a.setl_time, --结算时间 格式:"YYYY-MM-DD HH24:MI:SS" nvl(a.psn_part_amt,0) as psn_part_amt, --psn_part_amt:[国家医保]个人负担总金额 a.bke284, --身份认证类型(01:读卡02:融合码06:医保码20:医疗证) bkc001_mc,--人员待遇类别名称(城乡居民、普通在职人员等等) aae140, --险种类型编码 aae140_mc, --险种类型名称 nvl(acct_mulaid_pay,0) as acct_mulaid_pay ,--个人账户共济支付金额 A.expcontent into LS_akc190,LS_aae072,LS_mdtrt_id,LS_setl_id,LS_insutype, YB_insuplc_admdvs,YB_mdtrtarea_admvs,YB_psn_no, LS_dise_codg,LS_dise_name, LS_setl_time, LS_psn_part_amt, LS_bke284, LS_bkc001_mc, LS_aae140, LS_aae140_mc, LS_acct_mulaid_pay, LS_expcontent from SF_YBJKRZ a where BRID00=LS_BRID00 and YBJKID=LS_YBJKID; exception when others then LS_akc190 :=null;--akc190 医保挂号或医保住院号 LS_aae072 :=null;--aae072:医保收费流水号 LS_mdtrt_id :=null;--[国家医保]mdtrt_id: 就诊ID=akc190:医保挂号号 LS_setl_id :=null;--[国家医保]setl_id: 结算ID=aae072:医保收费流水号 LS_insutype :=null;--[国家医保]险种类型=aae140 YB_insuplc_admdvs:=null;--insuplc_admdvs 参保地行政区划 YB_mdtrtarea_admvs:=null;--mdtrtarea_admvs 就医地医保区划 YB_psn_no:=null;--psn_no 人员编号 LS_dise_codg:=null;--病种编码 LS_dise_name:=null;--病种名称 LS_setl_time:=null; LS_expcontent:=null; end; if LS_akc190='0' then LS_akc190:=null; end if;--akc190 医保挂号或医保住院号 if LS_aae072='0' then LS_aae072:=null; end if;--aae072:医保收费流水号 if LS_mdtrt_id='0' then LS_mdtrt_id:=null; end if;--mdtrt_id: 就诊ID=akc190:医保挂号号 if LS_setl_id='0' then LS_setl_id:=null; end if;--setl_id: 结算ID=aae072:医保收费流水号 if LS_mdtrt_id is null then LS_mdtrt_id:=substrb(trim(SF_SF_GETYBJKMX(LS_YBJKID,'mdtrt_id','1','setlinfo')),1,30); end if; if LS_setl_id is null then LS_setl_id:=substrb(trim(SF_SF_GETYBJKMX(LS_YBJKID,'setl_id','1','setlinfo')),1,30); end if; if LS_setl_id is null then LS_setl_time :=substrb(SF_SF_GETYBJKMX(LS_YBJKID,'setl_time','1','setlinfo'),1,20) ;--setl_time:结算时间 end if; if LS_setl_time is not null then --setl_time: 结算时间 格式:"YYYY-MM-DD HH24:MI:SS" LS_YBJZRQ:=substrb(trim(replace(substrb(LS_setl_time,1,10),'-','')),1,8);--医保结算日期 格式:YYYYMMDD LS_YBJZSJ:=substrb(trim(substrb(LS_setl_time,12,8)),1,8); --医保结算时间 格式: HH24:MI:SS end if; LS_psn_part_amt:=nvl(LS_psn_part_amt,0);--psn_part_amt:[国家医保]个人负担总金额 if LS_expcontent is not null then YB_cvl_acct_pay :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('cvl_acct_pay',LS_expcontent),1,10));--cvl_acct_pay 公务员账户支付= YB_cvl_acct_balc :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('cvl_acct_balc',LS_expcontent),1,10));--cvl_acct_balc 公务员余额=sf_ybjkrz.bkc160 YB_hl_acct_pay :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('hl_acct_pay',LS_expcontent),1,10));--hl_acct_pay 健康账户支付=YBYL11 YB_hl_acct_balc :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('hl_acct_balc',LS_expcontent),1,10));--hl_acct_balc 健康账户余额=YBYL12 YB_acct_mulaid_pay :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('acct_mulaid_pay',LS_expcontent),1,10));--acct_mulaid_pay 共济账户支付=YBYL13 YB_fm_acct_balc :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('fm_acct_balc',LS_expcontent),1,10));--fm_acct_balc 共济账户余额=YBYL14 YB_pur_acct_pay :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('pur_acct_pay',LS_expcontent),1,10));--pur_acct_pay 医疗账户支付 else if LS_SFXMYBJK='Y' then YB_cvl_acct_pay :=SF_SF_GETYBJKMX_NUM(LS_YBJKID,'cvl_acct_pay','1','exp_content');--cvl_acct_pay 公务员账户支付= YB_cvl_acct_balc :=SF_SF_GETYBJKMX_NUM(LS_YBJKID,'cvl_acct_balc','1','exp_content');--cvl_acct_balc 公务员余额=sf_ybjkrz.bkc160 YB_hl_acct_pay :=SF_SF_GETYBJKMX_NUM(LS_YBJKID,'hl_acct_pay','1','exp_content');--hl_acct_pay 健康账户支付=YBYL11 YB_hl_acct_balc :=SF_SF_GETYBJKMX_NUM(LS_YBJKID,'hl_acct_balc','1','exp_content');--hl_acct_balc 健康账户余额=YBYL12 YB_acct_mulaid_pay :=SF_SF_GETYBJKMX_NUM(LS_YBJKID,'acct_mulaid_pay','1','exp_content');--acct_mulaid_pay 共济账户支付=YBYL13 YB_fm_acct_balc :=SF_SF_GETYBJKMX_NUM(LS_YBJKID,'fm_acct_balc','1','exp_content');--fm_acct_balc 共济账户余额=YBYL14 YB_pur_acct_pay :=SF_SF_GETYBJKMX_NUM(LS_YBJKID,'pur_acct_pay','1','exp_content');--pur_acct_pay 医疗账户支付 end if; end if; ld_TCJJZF:=nvl(LS_bkc102,0);--统筹基金 ld_GRZHZF:=nvl(LS_bkc041,0);--医保账户支付 ld_SBTJJE:=0;--商保统筹基金支付金额 ld_SBZHJE:=0;--商保帐户支付金额 ld_JJZFE0:=0;--保健基金支付金额 ld_SYBXZF:=0;--商业保险支付金额 ld_SBZFE0:=0;--商保基金支付(省属三家市属九家医疗机构) ld_BJZFE0:=0;--保健基金支付(省属三家市属九家医疗机构) ld_GWYBZ0:=0;--公务员补助 if LS_TCJJQZFS in ('D') then --统筹基金、公务员补助、商业保险支付、医疗救助基金 各个项目独立生成 ld_TCJJZF:=nvl(LS_bkc045,0); --YBYL56 统筹基金(bkc045,jjzfe0) --(ake173:其中:其他基金支付 +ake026:其中:企业补充+bkc062:其中:精准扶贫医疗叠加 没有独立支付方式直接累加到统筹中) ld_TCJJZF:=nvl(ld_TCJJZF,0) +SF_SF_YBFHJE(LS_BRID00,'','YBYL61',nvl(LS_ake173,0)) --YBYL61=ake173其中:其他基金支付 +SF_SF_YBFHJE(LS_BRID00,'','YBYL62',nvl(LS_ake026,0)) --YBYL62=ake026其中:企业补充 +SF_SF_YBFHJE(LS_BRID00,'','YBYL59',nvl(LS_bkc062,0)) --YBYL59=其中:精准扶贫医疗叠加 ; ld_GRZHZF:=nvl(LS_bkc041,0); --YBYL55 医保账户支付bkc041(个人账户支付总额)=bkc077(帐户支付)+bkc076(本人健康帐户支付)+bkc075(家庭共济帐户支付) ld_GWYBZ0:=SF_SF_YBFHJE(LS_BRID00,'','YBYL57',nvl(LS_bkc059,0)); --YBYL57 公务员补助(bkc059,gwybz0) if LS_SFXMYBJK='Y' then --厦门医保bkc052=sybxzf ld_SYBXZF:=SF_SF_YBFHJE(LS_BRID00,'','YBYL58',nvl(LS_bkc052,0)); --YBYL58 商业保险支付bkc052,sybxzf(大病保险基金支付) else ld_SBTJJE:=SF_SF_YBFHJE(LS_BRID00,'','YBYL58',nvl(LS_bkc052,0)); --YBYL58 其中:商保基金支付(大额补充)bkc052 end if; LD_MZBZJE:=SF_SF_YBFHJE(LS_BRID00,'','YBYL60',nvl(LS_bkc060,0)); --YBYL60 医疗救助基金(bkc060、mzbzje) end if; if LS_bkc001_mc is null then LS_bkc001_mc:=substrb(SF_SF_GETYBJKMX(LS_YBJKID,'bkc001_mc','1'),1,50);--bkc001_mc:人员待遇类别名称(城乡居民、普通在职人员等等) end if; if LS_aae140 is null then LS_aae140:=substrb(SF_SF_GETYBJKMX(LS_YBJKID,'aae140','1'),1,10); --aae140:险种类型编码:310 城镇职工基本医疗保险 320:公务员医疗补助 380:新型农村合作医疗 390:城乡居民基本医疗保险 410:工伤保险 510:生育保险 520:机关生育 end if; if LS_aae140_mc is null then LS_aae140_mc:=substrb(SF_SF_GETYBJKMX(LS_YBJKID,'aae140_mc','1'),1,50);--aae140_mc:险种类型名称:城乡居民基本医疗保险、城镇职工基本医疗保险等等 end if; if LS_YBTYPE='0' then --医保接口标志 -1:自费 0:福建版本 1:国家基线版 LS_BKE174:=substrb(SF_SF_GETYBJKMX(LS_YBJKID,'bke174','1'),1,10); --bke174:异地就医类型编码:1 省内 2 省外 3 市内 4 市外 LS_BKE174_MC:=substrb(SF_SF_GETYBJKMX(LS_YBJKID,'bke174_mc','1'),1,50);--bke174_mc:异地就医类型名称:(省内、省外、市内、市外) end if; --获取医保身份类型 身份认证类型(01:读卡02:融合码06:医保码20:医疗证) if LS_bke284 is null then LS_bke284:=substrb(nvl(SF_SF_GETYBJKMX(LS_YBJKID,'bke284','0'),Pbke284),1,10); end if; else ld_TCJJZF:=nvl(vRow.TCJJZF,0);--统筹基金 ld_GRZHZF:=nvl(vRow.GRZHZF,0);--医保账户支付 ld_SBTJJE:=nvl(vRow.SBTCJJ,0);--商保统筹基金支付金额 ld_SBZHJE:=nvl(vRow.SBGRZH,0);--商保帐户支付金额 ld_JJZFE0:=nvl(vRow.jjzfe0,0);--保健基金支付金额 ld_SYBXZF:=nvl(vRow.SYBXZF,0);--商业保险支付金额 ld_SBZFE0:=nvl(vRow.SBZFE0,0);--商保基金支付(省属三家市属九家医疗机构) ld_BJZFE0:=nvl(vRow.BJZFE0,0);--保健基金支付(省属三家市属九家医疗机构) ld_GWYBZ0:=nvl(vRow.GWYBZ0,0);--公务员补助 end if; V_MsgStr:='插入缴费表数据医保个人账户=zhzfe0'; select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) values(LS_JFDJH0,LS_BRID00,1,ld_GRZHZF,3,'医保个人账户','',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,LS_JZYXM0,0,'0',0,LS_JZDH00,1,ld_GRZHZF,LS_CZYKS0,PBKE284); V_MsgStr:='插入缴费表数据医保统筹基金=jjzfe0'; select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) values(LS_JFDJH0,LS_BRID00,1,ld_TCJJZF,4,'医保统筹基金','',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_TCJJZF,LS_CZYKS0,PBKE284); /* V_MsgStr:='插入缴费表数据商保账户支付=dbzhzf'; select decode(sign(Instrb(','||trim(LS_YBBHSB)||',',',14,')),1,0,ld_SBZHJE) into ld_SBZHJE from dual; if ld_SBZHJE>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0) select LS_JFDJH0,LS_BRID00,1,ld_SBZHJE,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_SBZHJE,LS_CZYKS0 from BM_BRZFFS where ZFFSBH=10; end if; */ V_MsgStr:='插入缴费表数据商保统筹金额=dbjjzf'; select decode(sign(Instrb(','||trim(LS_YBBHSB)||',',',14,')),1,0,ld_SBTJJE) into ld_SBTJJE from dual; if ld_SBTJJE>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,ld_SBTJJE,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_SBTJJE,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=11; end if; V_MsgStr:='插入缴费表数据保健基金支付'; if ld_JJZFE0>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,ld_JJZFE0,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_JJZFE0,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=6; end if; V_MsgStr:='插入缴费表数据商业保险支付=sybxzf'; if ld_SYBXZF>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,ld_SYBXZF,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_SYBXZF,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=13; end if; V_MsgStr:='插入缴费表数据商保支付=sbzfe0'; select decode(sign(Instrb(','||trim(LS_YBBHSB)||',',',14,')),1,0,ld_SBZFE0) into ld_SBZFE0 from dual; if ld_SBZFE0>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,ld_SBZFE0,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_SBZFE0,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=14; end if; V_MsgStr:='插入缴费表数据保健支付'; if ld_BJZFE0>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,ld_BJZFE0,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_BJZFE0,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=15; end if; V_MsgStr:='插入缴费表数据公务员补助'; select decode(sign(Instrb(','||trim(LS_YBBHSB)||',',',15,')),1,0,ld_GWYBZ0) into ld_GWYBZ0 from dual; if ld_GWYBZ0>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,ld_GWYBZ0,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,ld_GWYBZ0,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=16; end if; V_MsgStr:='插入医院支付'; LS_JFJE00:=nvl(vRow.YBYL05,0); if LS_JFJE00>0 then select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,LS_JFJE00,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,LS_JFJE00,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=20; end if; LS_DLTCJJ:=nvl(ld_TCJJZF,0);--实际医保统筹基金 LS_DLZHZF:=nvl(ld_GRZHZF,0);--实际医保账户支付 LS_YBQTZE:=0;--医保其它总额 LS_DLSYBX:=nvl(ld_SYBXZF,0);--商业保险支付(独立于统筹基金金额) LS_DLJZFP:=0;--精准扶贫医疗(独立于统筹基金金额) LS_DLQTJJ:=nvl(ld_JJZFE0,0)+nvl(ld_BJZFE0,0)+nvl(ld_SBZFE0,0);--其他基金支付(独立于统筹基金金额) LS_DLQYBC:=0;--企业补充(独立于统筹基金金额) LS_DLMZBZ:=0;--民政补助金额(独立于统筹基金金额) LS_DLSBJE:=nvl(ld_SBTJJE,0);--商保支付金额(独立于统筹基金金额) LS_GWBZJE:=nvl(ld_GWYBZ0,0);--公务员补助金额(独立于统筹基金金额) LS_DLDBJJ:=0;--大病基金支付金额(独立于统筹基金金额) LS_CJBTCE:=0;--产检检查费(bkc064)超出个人自付金额后需补退的差额 --医保报销总额(DLTCJJ+DLZHZF+YBQTZE+DLSYBX+DLJZFP+DLQTJJ+DLQYBC+MZBZJE+DLSBJE+GWBZJE+DLDBJJ) LS_YBBXZE:=nvl(LS_DLTCJJ,0)+nvl(LS_DLZHZF,0)+nvl(LS_YBQTZE,0)+nvl(LS_DLSYBX,0)+nvl(LS_DLJZFP,0)+nvl(LS_DLQTJJ,0)+nvl(LS_DLQYBC,0)+nvl(LS_DLMZBZ,0)+nvl(LS_DLSBJE,0)+nvl(LS_GWBZJE,0)+nvl(LS_DLDBJJ,0); end if; --医保挂号号 LS_YBGHH0:=substrb(nvl(LS_mdtrt_id,LS_akc190),1,30); LS_YBGHH0:=substrb(nvl(LS_YBGHH0,vRow.YBGHH0),1,30); --医保单据号 LS_YBDJH0:=substrb(nvl(LS_setl_id,LS_aae072),1,30);--医保单据号 LS_YBDJH0:=substrb(nvl(LS_YBDJH0,vRow.YBDJH0),1,30);--医保单据号 V_MsgStr:='执行处方记账或医技记账'; LS_SFSCDJ := '1'; for R_WJZ in CUR_WJZXM0 loop LS_CFLSH0 :=R_WJZ.CFLSH0;--处方流水号 LS_YJDJH0 :=R_WJZ.YJDJH0;--医技单据号 LS_XMFL00 :=R_WJZ.XMFL00;--项目分类 0:处方 1:医技 2:费用 3:收费代入费用 Pro_Out_HJJE00 :=0;--总金额,提供给医保使用 Pro_Out_ZFJE00 :=0;--自费金额 Pro_Out_JZJE00 :=0;--记账金额 Pro_Out_GFJE00 :=0;--公费金额 Pro_Out_YHMSG0 :='';--存储过程提示的错误信息 Pro_Out_SYSMSG :='';--系统提示的错误信息 LS_ZFCFBZ:=null;--自费处方标志:0或空:正常处方,1:自费处方 LS_FYSFDJH:=null; --费用收费单据号 if (LS_SFSCDJ= '1') and nvl(LS_SplitNo,'0')='0' then LS_SFSCDJ := '0'; select SQ_SF_BRJFB0_DJH000.nextval into Lv_DJH000 from dual; end if; if (LS_XMFL00='0') then --处方扣费记账 V_MsgStr:='执行处方扣费记账'; if nvl(LS_SplitNo,'0')='1' then --1:不同处方流水号,生成不同收费单据号 select SQ_SF_BRJFB0_DJH000.nextval into LS_FYSFDJH from dual; LS_TPCDJH:=nvl(LS_TPCDJH,LS_FYSFDJH);--同批次收费单据号 end if; begin select substrb(SF_SF_GET_ZFCFBZ(0,A.BRID00,A.GHID00,A.DJH000,A.CFLSH0,A.BCCFH0,A.ZFCFBZ,A.FJFDJH,null),1,1) as ZFCFBZ into LS_ZFCFBZ from YF_MZCF00 A where A.BRID00=LS_BRID00 and A.CFLSH0=LS_CFLSH0; SP_SF_YFCF00(LS_CFLSH0,nvl(LS_FYSFDJH,Lv_DJH000),0,0,0,'N',PYHMSG0,PSYSMSG,LS_JZY000,'N'); if trim(PSYSMSG) is not null then PYHMSG0:=substrb('处方费用明细生成失败!错误原因:'||PYHMSG0,1,200); PSYSMSG:=PSYSMSG; return; end if; update SF_FYXX00_DJH000 set KFZT00='1',DJH000=nvl(LS_FYSFDJH,Lv_DJH000) where BRID00=LS_BRID00 and ID0000=PID0000 and CFLSH0=LS_CFLSH0; exception when others then PYHMSG0:=substrb('处方费用明细生成异常!错误原因:'||sqlerrm,1,200); PSYSMSG:=PYHMSG0; return; end; if nvl(LS_SplitNo,'0')='1' then --1:不同处方流水号,生成不同收费单据号 begin SP_SF_BRFY00_REG000(nvl(LS_YBDJH0,'0'),LV_GHH000,LV_GHID00,'门诊预交金', LS_BRID00,LS_BRXM00,LS_FBBH00,LS_JZY000,LS_JZYXM0,LS_CZYKS0, nvl(LS_FYSFDJH,Lv_DJH000), Pro_Out_HJJE00,Pro_Out_ZFJE00,Pro_Out_JZJE00,Pro_Out_GFJE00,Pro_Out_YHMSG0,Pro_Out_SYSMSG, LS_ZFCFBZ,LS_TPCDJH); if trim(Pro_Out_SYSMSG) is not null then PYHMSG0:=substrb('处方费用表生成失败!错误原因:'||Pro_Out_YHMSG0,1,200); PSYSMSG:=Pro_Out_SYSMSG; return; end if; exception when others then PYHMSG0:=substrb('处方费用表生成异常!错误原因:'||sqlerrm,1,200); PSYSMSG:=PYHMSG0; return; end; end if; --暂时不执行以下代码,因为中间表SF_FYXX00_TEMPMX 已经有数据了 --/* --执行SP_YF_ZYDZFY、SP_YS_DJPSFZX by MZSF-20170609-002 (备注:单独执行,不在过程SP_SF_YFCF00中执行) V_MsgStr:='执行处方中药代煎和附加费'; SP_SF_ZYDJFY(LS_CFLSH0,LS_JZY000,V_ZYDJDH,PYHMSG0,PSYSMSG); if trim(PSYSMSG) is not null then PYHMSG0:=substrb('中药代煎扣费失败!错误原因:'||PYHMSG0,1,200); PSYSMSG:=PSYSMSG; return; end if; --把单号插入到临时表 insert into SF_FYXX00_DJH000 (ID0000,BRID00,GHID00,GHH000,DJH000,XMFL00,KFZT00,YPNM00,SFXMID )values (PID0000,LS_BRID00,LV_GHID00,LV_GHH000,V_ZYDJDH,'3','1',0,0 ); V_MsgStr:='执行处方中药袋子费用'; SP_YF_ZYDZFY(LS_CFLSH0,LS_JZY000,V_ZYDZDH,PYHMSG0,PSYSMSG);--中药袋子费用 if trim(PSYSMSG) is not null then PYHMSG0:=substrb('中药袋子扣费失败!错误原因:'||PYHMSG0,1,200); PSYSMSG:=PSYSMSG; return; end if; --把单号插入到临时表 insert into SF_FYXX00_DJH000 (ID0000,BRID00,GHID00,GHH000,DJH000,XMFL00,KFZT00,YPNM00,SFXMID )values (PID0000,LS_BRID00,LV_GHID00,LV_GHH000,V_ZYDZDH,'3','1',0,0 ); V_MsgStr:='执行处方配送费收取'; SP_YS_DJPSFZX(LS_CFLSH0,LS_JZY000,V_ZYPSDH,PYHMSG0,PSYSMSG);--配送费收取 if trim(PSYSMSG) is not null then PYHMSG0:=substrb('中药配送费扣费失败!错误原因:'||PYHMSG0,1,200); PSYSMSG:=PSYSMSG; return; end if; --把单号插入到临时表 insert into SF_FYXX00_DJH000 (ID0000,BRID00,GHID00,GHH000,DJH000,XMFL00,KFZT00,YPNM00,SFXMID )values (PID0000,LS_BRID00,LV_GHID00,LV_GHH000,V_ZYPSDH,'3','1',0,0 ); --*/ --修改中药代煎单据号 if nvl(V_ZYDJDH,0)>0 then update YF_MZCF00 set FJFDJH=V_ZYDJDH where BRID00=LS_BRID00 and GHID00=LV_GHID00 and CFLSH0=LS_CFLSH0 and ZYDJS0>0; end if; end if; if (LS_XMFL00= '1') then --医技表 V_MsgStr:='执行医技记账'; if nvl(LS_SplitNo,'0')='1' then --1:不同处方流水号,生成不同收费单据号 select SQ_SF_BRJFB0_DJH000.nextval into LS_FYSFDJH from dual; LS_TPCDJH:=nvl(LS_TPCDJH,LS_FYSFDJH);--同批次收费单据号 end if; begin select A.YJKSBH,A.KDYS00,substrb(SF_SF_GET_ZFCFBZ(1,A.BRID00,A.ZYGHID,A.SFDJH0,A.YJDJH0,A.CXDJH0,A.ZFCFBZ,A.ZLDCCF,null),1,1) as ZFCFBZ into LS_ZXKS00,LS_YJZXYS,LS_ZFCFBZ from yj_yw0000 A where A.YJDJH0 =LS_YJDJH0 and A.BRID00=LS_BRID00; SP_SF_YJDJ00(LS_YJDJH0,nvl(LS_FYSFDJH,Lv_DJH000),ls_ZXKS00,ls_YJZXYS,PYHMSG0,PSYSMSG); if trim(PSYSMSG) is not null then PYHMSG0:=substrb('医技费用明细生成失败!错误原因:'||PYHMSG0,1,200); PSYSMSG:=PSYSMSG; return; end if; update SF_FYXX00_DJH000 set KFZT00='1',DJH000=nvl(LS_FYSFDJH,Lv_DJH000) where BRID00=LS_BRID00 and ID0000=PID0000 and YJDJH0=LS_YJDJH0 ; exception when others then PYHMSG0:=substrb('医技费用明细生成异常!错误原因:'||sqlerrm,1,200); PSYSMSG:=PYHMSG0; return; end; if nvl(LS_SplitNo,'0')='1' then --1:不同处方流水号,生成不同收费单据号 begin SP_SF_BRFY00_REG000(nvl(LS_YBDJH0,'0'),LV_GHH000,LV_GHID00,'门诊预交金', LS_BRID00,LS_BRXM00,LS_FBBH00,LS_JZY000,LS_JZYXM0,LS_CZYKS0, nvl(LS_FYSFDJH,Lv_DJH000), Pro_Out_HJJE00,Pro_Out_ZFJE00,Pro_Out_JZJE00,Pro_Out_GFJE00,Pro_Out_YHMSG0,Pro_Out_SYSMSG, LS_ZFCFBZ,LS_TPCDJH); if trim(Pro_Out_SYSMSG) is not null then PYHMSG0:='医技费用表生成失败!错误原因:'||Pro_Out_YHMSG0; PSYSMSG:=Pro_Out_SYSMSG; return; end if; exception when others then PYHMSG0:=substrb('医技费用表生成异常!错误原因:'||sqlerrm,1,200); PSYSMSG:=PYHMSG0; return; end; end if; end if; if LS_FSWBJKSJ='Y' then if LS_XMFL00='0' then select * into V_MZCF00 from YF_MZCF00 where BRID00=LS_BRID00 and CFLSH0=LS_CFLSH0; --SP_JK_INSJKB0('0',V_MZCF00.GHID00,V_MZCF00.BRID00,V_MZCF00.CFLSH0,V_MZCF00.CFZT00,V_MZCF00.DJH000,null,'0',null,LS_JZY000,V_MZCF00.YFBMBH,null,V_MZCF00.BCCFH0,'1'); begin execute immediate 'begin SP_JK_INSJKB0(''0'','||V_MZCF00.GHID00||','||V_MZCF00.BRID00||','''||V_MZCF00.CFLSH0||''','||V_MZCF00.CFZT00||','||V_MZCF00.DJH000||',null,''0'',null,'||nvl(LS_JZY000,'0')||','||V_MZCF00.YFBMBH||',null,'''||V_MZCF00.BCCFH0||''',''1''); end; '; exception when others then LS_COUNT0:=0; end; elsif LS_XMFL00='1' then select * into V_YJYW00 from YJ_YW0000 where BRID00=LS_BRID00 and YJDJH0=LS_YJDJH0; --SP_JK_INSJKB0('0',null,V_YJYW00.BRID00,null,null,V_YJYW00.SFDJH0,V_YJYW00.YJDJH0,'1',V_YJYW00.XMZT00,LS_JZY000,V_YJYW00.YJKSBH,0,null); begin execute immediate 'begin SP_JK_INSJKB0('||'0'||','||V_YJYW00.ZYGHID||','||V_YJYW00.BRID00||',null,null,'||V_YJYW00.SFDJH0||','||V_YJYW00.YJDJH0||',''1'','||V_YJYW00.XMZT00||','||nvl(LS_JZY000,'0')||','||V_YJYW00.YJKSBH||',0,null); end; '; exception when others then LS_COUNT0:=0; end; end if; end if; end loop; V_MsgStr:='执行过程SP_SF_BRFY00_REG000开始'; if (LS_SFSCDJ='0') and nvl(LS_SplitNo,'0')='0' then begin SP_SF_BRFY00_REG000( as_YBDJH0=>nvl(LS_YBDJH0,'0'), as_MZH000=>LV_GHH000, ad_MZID00=>LV_GHID00, as_JFLBMC=>'门诊预交金', ad_BRID00=>LS_BRID00, as_XM0000=>LS_BRXM00, ad_BRFB00=>LS_FBBH00, ad_CZY000=>LS_JZY000, as_CZYXM0=>LS_JZYXM0, ad_CZYKS0=>LS_CZYKS0, ad_DJH000=>LV_DJH000, ad_HJJE00=>LS_HJJE00, ad_ZFJE00=>LS_ZFJE00, ad_JZJE00=>LS_JZJE00, ad_GFJE00=>LS_GFJE00, as_YHMSG0=>PYHMSG0, as_SYSMSG=>PSYSMSG, as_ZFCFBZ=>'',--自费处方标志:0或空:正常处方,1:自费处方 as_TPCDJH=>nvl(LS_TPCDJH,LV_DJH000) --同批次收费单据号 ); if trim(PSYSMSG) is not null then PYHMSG0:='费用登记失败!错误原因:'||PYHMSG0; PSYSMSG:=PSYSMSG; return; end if; exception when others then PYHMSG0:=substrb('费用登记异常!错误原因:'||sqlerrm,1,200); PSYSMSG:=PYHMSG0; return; end; end if; V_MsgStr:='把单号插入到临时表SF_FYXX00_DJH000'; if nvl(Lv_DJH000,0)>0 then insert into SF_FYXX00_DJH000 (ID0000,BRID00,GHID00,GHH000,DJH000,XMFL00,KFZT00,YPNM00,SFXMID )values (PID0000,LS_BRID00,LV_GHID00,LV_GHH000,LV_DJH000,'3','1',0,0 ); end if; --/* V_MsgStr:='执行血透析减免--begin---'; select SF_SF_TSBZJM(PID0000,LS_BRID00,vRow.TSBZBH,LV_GHH000,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'YYYYMMDD')) into LS_SFJM00 from dual; if LS_SFJM00='Y' then SP_SF_FYXX00_TSBZJM ( p_ID0000=>PID0000, P_BRID00=>LS_BRID00,--病人id P_CZY000=>LS_JZY000,--操作员 P_JZDH00=>0, P_GHH000=>LV_GHH000, --挂号号 P_KSRQ00=>to_char(sysdate-7,'YYYYMMDD'),--开始日期 P_JSRQ00=>to_char(sysdate,'YYYYMMDD'),--结束日期 P_HJJE00=>vRow.HJJE00, --可减免总金额 P_JMBZ00=>'5', --1:减免 2:优惠 3: 4:事前减免 5:病种减免 P_TSBZBH=>vRow.TSBZBH, P_JMJE00=>LS_JMJE00, P_YHMSG0=>PYHMSG0, --存储过程提示的错误信息 P_SYSMSG=>PSYSMSG, P_ZFJE00=>LS_ZFJE00 ); if trim(PSYSMSG) is not null then PYHMSG0:='执行SF_SF_TSBZJM错误:'||PYHMSG0; PSYSMSG:=PSYSMSG; return; else if nvl(LS_JMJE00,0)>0 then --医院支付 select SQ_SF_BRJFB0_DJH000.nextval into LS_JFDJH0 from dual ; Insert into SF_BRJFB0(DJH000,BRID00,JFLBID,JFJE00,ZFFS00,ZFFSMC,ZPZH00,PJH000, JFRQ00,JFSJ00,JFCZY0,CZYXM0,BRYE00,JFBZ00,JKBID0,JZDH00,WBHLID,WBHLJE,CZYKS0,BKE284) select LS_JFDJH0,LS_BRID00,1,LS_JMJE00,ZFFSBH,ZFFSMC,'',LS_PJH000, Lv_CZRQ00,Lv_CZSJ00,LS_JZY000,ls_JZYXM0,0,'0',0,LS_JZDH00,1,LS_JMJE00,LS_CZYKS0,PBKE284 from BM_BRZFFS where ZFFSBH=20; vRow.YBYL05 := LS_JMJE00; --通过计算有减免金额时,更新vRow.YBYL05 end if; end if; end if; V_MsgStr:='执行血透析减免--end---'; V_MsgStr:='插入挂号和诊查费在医技业务表中导致没有记录到单据号'; insert into SF_FYXX00_DJH000 (ID0000,BRID00,GHID00,GHH000,DJH000,XMFL00,KFZT00,YPNM00,SFXMID) select PID0000,LS_BRID00,LV_GHID00,LV_GHH000,SFDJH0,'1','1',0,0 from YJ_YW0000 where BRID00=LS_BRID00 and ZYGHID=LV_GHID00 and SFDJH0>0 and FJDJBZ in ('3','4'); V_MsgStr:='修改费用表的结账单号'; Update SF_BRFY00 D set YBDJH0 =nvl(LS_YBDJH0,'0'), --医保的单据流水号 JZDH00 = LS_JZDH00 --结算单号 where D.JZDH00+0= 0 --未结算的病人 and d.MZID00=LV_GHID00 and d.MZH000=LV_GHH000 and d.DJH000 in (select DJH000 from SF_FYXX00_DJH000 where BRID00 = LS_BRID00 and ID0000=PID0000 and DJH000<>0) and D.JFLBID = 1 --有门诊预交金账户的病人 and D.BRID00 = LS_BRID00; select nvl(sum(hjje00),0),nvl(sum(zfje00),0),nvl(sum(gfje00),0),nvl(sum(jzje00),0) into ls_HJJE00,LS_ZFJE00,LS_GFJE00,LS_JZJE00 from SF_BRFY00 D where D.JZDH00=LS_JZDH00 and D.BRID00 = LS_BRID00; select SF_SF_YBFYJS( LS_HJJE00, --费用总额 --by MZSF-20160716-002 --vRow.BCBXF0, vRow.TCJJZF, --统筹基金 vRow.GRZHZF, --医保账户支付 vRow.SBGRZH, --担保账户支付 vRow.SBTCJJ, --担保基金 vRow.JJZFE0, --保健 vRow.GWYBZ0, --公务员补助 0, vRow.grzfe0, --个人支付金额 vRow.BRID00, --病人ID vRow.YBYL01, --bcyljz 民政救助 vRow.YBYL02, --jsjzze 计生救助 vRow.YBYL03, --cljzze 残联救助 vRow.YBYL04, --dbzxebz 单病种限额 vRow.YBYL05, --医院支付(医保无返回) vRow.YBYL06, --ybjjzf低保基金支付 vRow.YBYL07, --ybzlfbcje一般诊疗费补偿金额 vRow.YBYL08, --ybzlfgrzfje一般诊疗费费个人支付金额 vRow.YBYL09, --tmqflj-特殊门诊起付线累计 vRow.YBYL10, --tmjjlj特殊门诊基金累计 vRow.YBYL11, --Jkzhzf健康账户支付 vRow.YBYL12, --Jkzhye健康账户余额 vRow.YBYL13, --GJZHZF共济账户支付 vRow.SYBXZF, --目前就厦门使用 '1',--标志 1返回自付金额 2是医保支付总额 '1', --是否预结算标志 0预结算 1结算 vRow.YBYL14, --Gjzhye共济账户余额 vRow.YBYL15, --Jkzfyb健康账户支付医保费用 vRow.YBYL16, --Jkzffyb健康账户支付非医保费用 vRow.YBYL17, --医保减免金额 vRow.YBYL18, --民政(医疗救助基金)补助金额 vRow.YBYL19, --超医保上限金额(非医保返回) vRow.YBYL20, --个人账户支付自付 vRow.YBYL21, --个人现金支付自付 vRow.YBYL22, --血费报销金额(血费系统) vRow.YBYL23, --医保结算金额误差(总费用-定额) vRow.YBYL24, --大额医疗费用报销金额 vRow.YBYL25, --单病种补偿金额(定额-总费用) vRow.YBYL26, --大病补充补偿金额 vRow.YBYL27, --保健医保统筹支付(已包含在统筹中) vRow.YBYL28, --择日住院门诊总费用 vRow.YBYL29, --择日住院门诊范围内费用 vRow.YBYL30, --择日住院门诊统筹(医保未返回) nvl(LS_HJJE00,0), --费用总额 nvl(vRow.mxzje0,0), nvl(vRow.YBYL31,0), nvl(vRow.YBYL32,0), nvl(vRow.YBYL33,0), nvl(vRow.YBYL34,0), nvl(vRow.YBYL35,0), nvl(vRow.YBYL36,0), nvl(vRow.YBYL37,0), nvl(vRow.YBYL38,0), nvl(vRow.YBYL39,0), nvl(vRow.YBYL40,0), nvl(vRow.YBYL41,0), nvl(vRow.YBYL42,0), nvl(vRow.YBYL43,0), nvl(vRow.YBYL44,0), nvl(vRow.YBYL45,0), nvl(vRow.YBYL46,0), nvl(vRow.YBYL47,0), nvl(vRow.YBYL48,0), nvl(vRow.YBYL49,0), vRow.TSBZBH, LS_YBJKID ) into LS_ZFJE00 from dual; --2021.03.10 由于新医保调用SF_SF_YBFYJS 是自费金额直接返回bkc040顾在此自费金额需加上未发送给医保的金额SF_FYXX00_TEMP00.FYBJE0 if LS_YBJKID is not null and LS_YBJKID not in ('0') then --新接口--begin-- LS_ZFJE00:=nvl(LS_ZFJE00,0)+nvl(vRow.FYBJE0,0);--新医保自费金额=自费金额+未发送费用金额 end if; LS_BRZJE0:=ls_HJJE00; LS_HJJE01:=ls_HJJE00; LS_ZFJE01:=LS_ZFJE00; if LS_FBBH00 not in (1,3,99) then --公费病人 by MZSF-20150610-005 LS_HJJE01:=0; LS_ZFJE01:=0; end if; V_MsgStr:='插入结账表数据SF_JZB000'; --获取结算后账户总余额 (参数:0:门诊 1:住院 参数2:BRID00 参数3:1:门诊 2:住院 参数4:0:可用余额 1:总余额 2:现金余额 3:停用金额) if LS_FBBH00=3 then LS_JSHYE0:=SF_SF_GETBRZHYE(0,LS_BRID00,1,1); else LS_JSHYE0:=SF_SF_GETBRZHYE(0,LS_BRID00,1,0); end if; Insert into SF_JZB000( JZDH00,BRID00,MZID00,BRZJE0,JZJE00,GFJE00,HJJE00,BCKBCS, TSBZBH,JMJE00,GRZHZF,TCJJZF,ZFJE00,PJH000,JZRQ00,JZSJ00, JZY000,GWYBZ0,FYBJE0,YLZFJE,YBZHYE,SBTCJJ,SBGRZH,jjzfe0, SBZFE0, BJZFE0,SYBXZF,XJFKJE,ZZFKJE,YBDJH0,YBJZRQ,YBJZSJ, YBYL01,YBYL02,YBYL03,YBYL04,YBYL05,YBYL06,YBYL07,YBYL08, YBYL09,YBYL10,YBYL11,YBYL12,YBYL13,YBYL14,YBYL15,YBYL16, YBYL17,YBYL18,YBYL19,YBYL20,YBYL21,YBYL22,YBYL23,YBYL24, YBYL25,YBYL26,YBYL27,YBYL28,YBYL29,YBYL30, YBSM01,YBSM02,YBSM03,YBSM04,YBSM05,YBSM06,YBSM07,YBSM08, MSTID0,MSTZF0,MSTYE0, mxzje0,YBYL31,YBYL32,YBYL33,YBYL34,YBYL35,YBYL36,YBYL37,YBYL38,YBYL39, YBYL40,YBYL41,YBYL42,YBYL43,YBYL44,YBYL45,YBYL46,YBYL47,YBYL48,YBYL49, YBYL50,YBSM09,YBSM10,YBSM11,YBSM12,YBSM13,YBSM14,YBSM15,YBSM16,YBYL51, YBYL52,YBYL53,YBYL54,YBYL55,YBYL56,YBYL57,YBYL58,YBYL59,YBYL60,YBYL61, YBYL62,YBYL63,YBYL64,YBYL65,YBYL66,YBYL67,YBYL68,YBYL69,YBSM17,YBSM18, YBSM19,YBSM20,YBSM21,YBSM22,YBSM23,YBSM24,YBSM25,YBSM26,YBSM27,YBSM28, YBSM29,YBJKID,YBGHH0,MXLSH0,BKC001_MC,AAE140,AAE140_MC,BKE174,BKE174_MC,JSQYE0,JSHYE0, FKJSLX,--分开结算类型 空值正常结算 FYCF_ZF:拆分_自费 FYCF_YB:拆分_医保 FYCF_YE:拆分_婴儿 FYCF_MQ:拆分_母亲 FKLSH0,--分开结算流水号 FKJZDH,--分开结算单号 FKJZJE,--分开结算金额 YBBXZE,--医保报销总额(DLTCJJ+DLZHZF+YBQTZE+DLSYBX+DLJZFP+DLQTJJ+DLQYBC+MZBZJE+DLSBJE+GWBZJE+DLDBJJ) DLTCJJ,--实际医保统筹基金 DLZHZF,--实际医保账户支付 YBQTZE,--医保其它总额 DLSYBX,--商业保险支付(独立于统筹基金金额) DLJZFP,--精准扶贫医疗(独立于统筹基金金额) DLQTJJ,--其他基金支付(独立于统筹基金金额) DLQYBC,--企业补充(独立于统筹基金金额) MZBZJE,--民政补助金额(独立于统筹基金金额) DLSBJE,--商保支付金额(独立于统筹基金金额) GWBZJE,--公务员补助金额(独立于统筹基金金额) DLDBJJ,--大病基金支付金额(独立于统筹基金金额) CJBTCE, --产检检查费(bkc064)超出个人自付金额后需补退的差额 bke284 --身份认证类型(01:读卡02:融合码06:医保码20:医疗证) ) values(LS_JZDH00,LS_BRID00,vRow.GHID00,LS_BRZJE0,ls_JZJE00,ls_GFJE00,LS_HJJE01,vRow.BCKBCS, vRow.TSBZBH,vRow.JMJE00,ld_GRZHZF,ld_TCJJZF,LS_ZFJE01,ls_PJH000,lV_CZRQ00,lV_CZSJ00, LS_JZY000,vRow.Gwybz0,vRow.FYBJE0,vRow.Ylzfje,0,YB_SBTCJJ,YB_SBGRZH,vRow.jjzfe0, vRow.SBZFE0,vRow.BJZFE0,YB_SYBXZF,LS_ZFJE01,vRow.ZZFKJE,vRow.YBDJH0,decode(vRow.YBJKLX,'-1','',lV_CZRQ00),decode(vRow.YBJKLX,'-1','',lV_CZSJ00), vRow.YBYL01,vRow.YBYL02,vRow.YBYL03,vRow.YBYL04,vRow.YBYL05,vRow.YBYL06,vRow.YBYL07,vRow.YBYL08, vRow.YBYL09,vRow.YBYL10,vRow.YBYL11,vRow.YBYL12,vRow.YBYL13,vRow.YBYL14,vRow.YBYL15,vRow.YBYL16, vRow.YBYL17,vRow.YBYL18,vRow.YBYL19,vRow.YBYL20,vRow.YBYL21,vRow.YBYL22,vRow.YBYL23,vRow.YBYL24, vRow.YBYL25,vRow.YBYL26,vRow.YBYL27,vRow.YBYL28,vRow.YBYL29,vRow.YBYL30, vRow.YBSM01,vRow.YBSM02,vRow.YBSM03,vRow.YBSM04,vRow.YBSM05,vRow.YBSM06,vRow.YBSM07,vRow.YBSM08, vRow.MSTID0,vRow.MSTZF0,vRow.MSTYE0, vRow.mxzje0,vRow.YBYL31,vRow.YBYL32,vRow.YBYL33,vRow.YBYL34,vRow.YBYL35,vRow.YBYL36,vRow.YBYL37,vRow.YBYL38,vRow.YBYL39, vRow.YBYL40,vRow.YBYL41,vRow.YBYL42,vRow.YBYL43,vRow.YBYL44,vRow.YBYL45,vRow.YBYL46,vRow.YBYL47,vRow.YBYL48,vRow.YBYL49, vRow.YBYL50,vRow.YBSM09,vRow.YBSM10,vRow.YBSM11,vRow.YBSM12,vRow.YBSM13,vRow.YBSM14,vRow.YBSM15,vRow.YBSM16,vRow.YBYL51, YB_YBYL52,YB_YBYL53,YB_YBYL54,YB_YBYL55,YB_YBYL56,YB_YBYL57,YB_YBYL58,YB_YBYL59,YB_YBYL60,YB_YBYL61, YB_YBYL62,YB_YBYL63,YB_YBYL64,YB_YBYL65,YB_YBYL66,YB_YBYL67,YB_YBYL68,vRow.YBYL69,vRow.YBSM17,vRow.YBSM18, vRow.YBSM19,vRow.YBSM20,vRow.YBSM21,vRow.YBSM22,vRow.YBSM23,vRow.YBSM24,vRow.YBSM25,vRow.YBSM26,vRow.YBSM27,vRow.YBSM28, vRow.YBSM29,vRow.YBJKID,nvl(LS_YBGHH0,'0'),vRow.MXLSH0,nvl(LS_BKC001_MC,BM_BKC001_MC),nvl(LS_AAE140,BM_AAE140),nvl(LS_AAE140_MC,BM_AAE140_MC),LS_BKE174,LS_BKE174_MC,LS_JSQYE0,LS_JSHYE0, LS_FKJSLX,--分开结算类型 FYCF_ZF:自费处方 FYCF_ZC:正常处方 ZFJS:自费结算 YBJS:医保结算 LS_FKLSH0,--分开结算流水号 LS_FKJZDH,--分开结算单号 LS_FKJZJE,--分开结算金额 LS_YBBXZE,--医保报销总额(DLTCJJ+DLZHZF+YBQTZE+DLSYBX+DLJZFP+DLQTJJ+DLQYBC+MZBZJE+DLSBJE+GWBZJE+DLDBJJ) LS_DLTCJJ,--实际医保统筹基金 LS_DLZHZF,--实际医保账户支付 LS_YBQTZE,--医保其它总额 LS_DLSYBX,--商业保险支付(独立于统筹基金金额) LS_DLJZFP,--精准扶贫医疗(独立于统筹基金金额) LS_DLQTJJ,--其他基金支付(独立于统筹基金金额) LS_DLQYBC,--企业补充(独立于统筹基金金额) LS_DLMZBZ,--民政补助金额(独立于统筹基金金额) LS_DLSBJE,--商保支付金额(独立于统筹基金金额) LS_GWBZJE,--公务员补助金额(独立于统筹基金金额) LS_DLDBJJ,--大病基金支付金额(独立于统筹基金金额) LS_CJBTCE,--产检检查费(bkc064)超出个人自付金额后需补退的差额 LS_bke284 --身份认证类型(01:读卡02:融合码06:医保码20:医疗证) ); V_MsgStr:='插入结账明细表数据SF_JZMX00'; Insert into SF_JZMX00(JZDH00,XMBH00,XMMC00,XMJE00,JMJE00,JMSHR0,JMYY00,ZFBL00,QZFJE0) select LS_JZDH00,B.FPXMID,B.XMMC00,sum(A.HJJE00),sum(a.JMJE00),null,null,1,sum(a.QZFJE0) from SF_FYMX00 A,BM_FPXM00 B,BM_YYSFXM C,SF_BRFY00 D where A.XMBH00 = C.SFXMID and C.MZFPID = B.FPXMID and A.DJH000 = D.DJH000 and D.JZDH00 = LS_JZDH00 and D.JFLBID = 1 --JFLBID=1是门诊预交金账户 and D.BRID00 = LS_BRID00 group by B.FPXMID,B.XMMC00; ----打印类型 N打印发票 Y打印结算单 M不打印发票和结算单 if (LS_DYLX00='Y') and (LS_SFDY00='Y') then Insert into SF_PJSYQK(PJH000,PLBH00,PLMC00,PJXH00,XJJE00,ZZJE00,CZY000,CZYXM0, DYRQ00,DYSJ00,SFDY00,PJZT00,XM0000,XB0000,BRID00,CZYKS0, FZPJH0,PHLYXZ) select SQ_SF_PJSYQK_PJH000.nextval,PLBH00,PLMC00,0,0,0,LS_JZY000,ls_JZYXM0, Lv_CZRQ00,Lv_CZSj00,LS_SFDY00,'0',LS_BRXM00,ls_BRXB00,LS_BRID00,LS_CZYKS0, ls_PJH000,LS_PHLYXZ from BM_PJLXB0 where PLBH00 = 11;--PLBH00=11是门诊结算单 end if; if (LS_DYLX00='Y') or (LS_DYLX00='M') then --打印结算单 LS_FPXH00:=0; LS_SFDY00:='N'; end if; V_MsgStr:='插入票据表数据SF_PJSYQK'; Insert into SF_PJSYQK(PJH000,PLBH00,PLMC00,PJXH00,XJJE00,ZZJE00,CZY000,CZYXM0, DYRQ00,DYSJ00,SFDY00,PJZT00,XM0000,XB0000,BRID00,CZYKS0, FZPJH0,PHLYXZ) select ls_PJH000,PLBH00,PLMC00,LS_FPXH00,ls_HJJE00,0,LS_JZY000,ls_JZYXM0, Lv_CZRQ00,Lv_CZSj00,LS_SFDY00,'0',ls_BRXM00,ls_BRXB00,LS_BRID00,LS_CZYKS0, ls_PJH000,LS_PHLYXZ from BM_PJLXB0 where PLBH00 = 1;--PLBH00=1是门诊发票 V_MsgStr:='更新临时表SF_FYXX00_TEMP00'; --update SF_FYXX00_TEMP00 set HJJE00=ls_HJJE00,GFJE00=ls_GFJE00,JZJE00=ls_JZJE00 where BRID00=LS_BRID00 and ID0000=PID0000; update SF_FYXX00_TEMP00 set JZDH00=LS_JZDH00 Where brid00=LS_BRID00 and ID0000=PID0000; update SF_FYXX00_TEMPMX set JZDH00=LS_JZDH00 Where brid00=LS_BRID00 and ID0000=PID0000; update SF_FYXX00_DJH000 set JZDH00=LS_JZDH00 Where brid00=LS_BRID00 and ID0000=PID0000; update SF_BRZHXX Set TCJE00=nvl(TCJE00,0)+nvl(ld_TCJJZF,0) Where brid00=LS_BRID00; if nvl(LS_JMJE00,0)>0 then update SF_JZB000 set JMJE00=0 where BRID00=LS_BRID00 and JZDH00=LS_JZDH00; end if; V_MsgStr:='修改民生通支付表中的结账单号'; if vRow.MSTID0 is not null then update SF_YKTKFB set JZDH00=LS_JZDH00 where brid00=LS_BRID00 and ID0000=vRow.MSTID0; end if; --结算后更新健康通预扣表的信息DJH000=挂号ID update SF_YKTKFB set DJH000=0,YKTYE0=0,JYJE00=0 where BRID00=LS_BRID00 and MKDM00='0'; V_MsgStr:='取病人的账户总额'; select nvl(sum(XJYE00),0),nvl(sum(ZZYE00),0),nvl(sum(ZYE000),0),nvl(sum(TYJE00),0) into ls_XJYE00,ls_ZZYE00,ls_ZYE000,ls_TYJE00 from sf_brzhxx where brid00=LS_BRID00; if LS_FBBH00=3 then LS_ZYE000:=SF_SF_GETBRZHYE(0,LS_BRID00,1,1); else LS_ZYE000:=SF_SF_GETBRZHYE(0,LS_BRID00,1,0); end if; if LS_ZYE000<0 then PYHMSG0:='执行结算过程SP_SF_FYXX00_JS0000错误:账户余额不足,无法正常结算!'; PSYSMSG:='病人账户余额不足,至少需要补交:'||trim(to_char(abs(LS_ZYE000),'999999990.99'))||'元 '; end if; select nvl(sum(HJJE00),0) into LS_TEMPJE from SF_FYXX00_TEMP00 where BRID00=LS_BRID00 and ID0000=PID0000; select nvl(sum(BRZJE0),0) into LS_JZBJE0 from SF_JZB000 Where JZDH00=LS_JZDH00 and BRID00=LS_BRID00; select nvl(sum(HJJE00),0) into LS_FYBJE0 from SF_BRFY00 Where JZDH00=LS_JZDH00 and BRID00=LS_BRID00; if LS_HJJE00<=0 then PYHMSG0:='费用结算错误:写入结账表数据异常'; PSYSMSG:='执行结算过程SP_SF_FYXX00_JS0000错误'; return; end if; if vRow.YBJKLX not in ('-1') then LS_FYJSCE:=nvl(ls_HJJE00,0)-nvl(vRow.HJJE00,0);--费用结算差额 LS_YBYL23:=nvl(LS_FYJSCE,0);--医保结算金额误差(院内总额-医保总额) end if; V_MsgStr:='判断本次结算和临时表中的总额是否相等'; --if (ls_HJJE00<>vRow.HJJE00)and (vRow.YBJKLX not in ('-1')) then if abs(nvl(LS_FYJSCE,0))>abs(nvl(LS_XMCEMAX,0)) and abs(nvl(LS_FYJSCE,0))>0 and vRow.YBJKLX not in ('-1') then PYHMSG0:='费用结算错误:结算金额和扣费金额不一致!'||'扣费金额:'||to_char(ls_HJJE00)||' 结算金额:'||to_char(vRow.HJJE00); PSYSMSG:='本次结算金额和扣费金额不一致!'||'扣费金额:'||to_char(ls_HJJE00)||' 结算金额:'||to_char(vRow.HJJE00); return; end if; V_MsgStr:='判断本次结算费用表数据和结账表的数据是否一致'; if (LS_JZBJE0-LS_FYBJE0)<>0 then PYHMSG0:='费用结算错误:结算表金额和费用表金额不一致!'||'结算表金额:'||to_char(LS_JZBJE0)||' 费用表金额:'||to_char(LS_FYBJE0); PSYSMSG:='本次结算表金额和费用表金额不一致!'||'结算表金额:'||to_char(LS_JZBJE0)||' 费用表金额:'||to_char(LS_FYBJE0); return; end if; if LS_YBJKID is not null and LS_YBJKID not in ('0') then update SF_JZB000 set jsqdbz=LS_jsqdbz ,--医保结算单上传标志(1:已上传 2:已修改) ybtype=LS_ybtype ,--医保接口类型[-1:自费 0:福建版本 1:国家基线版] med_type=LS_med_type ,--[国家医保]医疗类别(aka130) psn_type=LS_psn_type ,--[国家医保]人员类别(bkc001) medins_setl_id=LS_medins_setl_id ,--[国家医保]医药机构结算ID clr_optins=LS_clr_optins ,--[国家医保]清算经办机构 clr_way=LS_clr_way ,--[国家医保]清算方式 clr_type=LS_clr_type ,--[国家医保]清算类别 fulamt_ownpay_amt=LS_fulamt_ownpay_amt ,--[国家医保]全自费金额 overlmt_selfpay=LS_overlmt_selfpay ,--[国家医保]超限价自费费用 preselfpay_amt=LS_preselfpay_amt ,--[国家医保]先行自付金额 inscp_scp_amt=LS_inscp_scp_amt ,--[国家医保]符合政策范围金额 hifmi_pay=LS_hifmi_pay ,--[国家医保]居民大病保险资金支出 hifob_pay=LS_hifob_pay ,--[国家医保]职工大额医疗费用补助基金支出 acct_mulaid_pay=LS_acct_mulaid_pay ,--[国家医保]个人账户共济支付金额 pool_prop_selfpay=LS_pool_prop_selfpay ,--[国家医保]基本医疗保险统筹基金支付比例 hifdm_pay=LS_hifdm_pay ,--[国家医保]伤残人员医疗保障基金支出 hosp_part_amt=LS_hosp_part_amt ,--[国家医保]医院负担金额 psn_part_amt=LS_psn_part_amt ,--[国家医保]个人负担总金额 YBYL11 =nvl(YB_hl_acct_pay,0) ,--健康账户支付 YBYL12 =nvl(YB_hl_acct_balc,0) ,--健康账户余额 YBYL13 =nvl(YB_acct_mulaid_pay,0) ,--共济账户支付 YBYL14 =nvl(YB_fm_acct_balc,0) ,--共济账户余额 cvl_acct_pay=nvl(YB_cvl_acct_pay,0) ,--公务员账户支付 cvl_acct_balc=nvl(YB_cvl_acct_balc,0) , --公务员余额 pur_acct_pay=nvl(YB_pur_acct_pay,0) ,--医疗账户支付 insuplc_admdvs=substrb(YB_insuplc_admdvs,1,10) ,--参保地行政区划 mdtrtarea_admvs=substrb(YB_mdtrtarea_admvs,1,10) ,--就医地医保区划 psn_no =substrb(YB_psn_no,1,30) ,--人员编号 dise_codg=LS_dise_codg ,--病种编码 dise_name=LS_dise_name ,--病种名称 YBYL23=nvl(LS_YBYL23,0) ,--医保结算金额误差(院内总额-医保总额) YBJZRQ = nvl(LS_YBJZRQ,YBJZRQ) ,--医保结算日期 YBJZSJ = nvl(LS_YBJZSJ,YBJZSJ) --医保结算时间 where JZDH00 = PJZDH00 and BRID00=LS_BRID00; end if; --新医保接口结算调用SP_SF_NEWYBJK_JKFHJX解析(补助明细、医保发票费用开始) --ad_YBSM19 医保接口id if LS_YBJKID is not null and LS_YBJKID not in ('0') and LS_FBBH00 in (3) then --修改SF_YBJKRZ.JZDH00 update SF_YBJKRZ set JZDH00=PJZDH00 where BRID00=LS_BRID00 and YBJKID=LS_YBJKID; --SF_ybdata.JZDH00 update SF_YBDATA set JZDH00=PJZDH00 where BRID00=LS_BRID00 and YBJKID=LS_YBJKID; if LS_YBTYPE='1' then --医保接口标志 -1:自费 0:福建版本 1:国家基线版 SP_SF_nation_JKFHJX( LS_BRID00,--PBRID00 in number ,--输入:病人ID PJZDH00,--PJZDH00 in number ,--输入:结账单号 LS_YBJKID,--PYBJKID in varchar2 ,--输入:医保接口ID '0',--PMZZYBZ in varchar2 ,--输入:门诊住院标识 0:门诊 1:住院 '99',--PJXLX00 in varchar2 ,--输入:解析类型:(99:费用结算 ) 'N',--PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 LS_ZXZT00,--PZXZT00 out number ,--输出:执行状态 0:失败 1:成功 LS_ERRMSG--PERRMSG out varchar2 --输出:错误信息 ); else SP_SF_NEWYBJK_JKFHJX( LS_BRID00,--PBRID00 in number ,--输入:病人ID PJZDH00,--PJZDH00 in number ,--输入:结账单号 LS_YBJKID,--PYBJKID in varchar2 ,--输入:医保接口ID '0',--PMZZYBZ in varchar2 ,--输入:门诊住院标识 0:门诊 1:住院 '1,2',--PJXLX00 in varchar2 ,--输入:解析类型(同时解析传1,2) 1:fplist 2:mzlist 'N',--PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 LS_ZXZT00,--PZXZT00 out number ,--输出:执行状态 0:失败 1:成功 LS_ERRMSG--PERRMSG out varchar2 --输出:错误信息 ); end if; if LS_ZXZT00=0 then PYHMSG0:=LS_ERRMSG; PSYSMSG:=LS_ERRMSG; end if; end if; --修改表XT_YBTSBZ.JZDH00 update XT_YBTSBZ set JZDH00=PJZDH00 where brid00=LS_BRID00 and CZRQ00=to_char(sysdate,'YYYYMMDD') and JZDH00 is null; --SF_YBSFMX信息 SP_SF_INSERT_JZQDMX ( LS_JZY000,--PCZY000 in number ,--[入参]:操作员编码 LS_JZYXM0,--PCZYXM0 in varchar2 ,--[入参]:操作员姓名 LS_CZYKS0,--PCZYKS0 in number ,--[入参][入参]:操作员科室 '0',--PTYPE00 in varchar2 ,--[入参]:类型 0:结算后调用 1:重新结算后调用 5204:医保费用明细查询 LS_BRID00,--PBRID00 in number ,--[入参]:BRID00 LV_GHID00,--PGHID00 in number ,--[入参]:挂号ID PJZDH00,--PJZDH00 in number ,--[入参]:结账单号 0,--PCXJZDH in number ,--[入参]:冲销结账单号 '',--PXTGZH0 in varchar2 ,--[入参]:系统跟踪号 PINTXML,--PINTXML in varchar2 ,--[入参]:备用参数xml 'N',--PCOMMIT in varchar2 ,--[入参]:是否提交事务 Y:是 N:否 Pro_Out_ZXZT00,--PZXZT00 out varchar2 ,--[出参]:执行状态 0:失败 1:成功 Pro_Out_SYSMSG,--PERRMSG out varchar2 ,--[出参]:错误信息 Pro_Out_OUTXML--POUTXML out varchar2 --[出参]:出参xml ); if nvl(trim(SF_SF_TYZD00('医保追溯码配置','YBZSMSFQY')),'0') = '1' then begin SP_SF_YPZSM0_XSTHCL( Pywlx00=>2, --业务类型, 1退货2销售 Pjzdh00=>PJZDH00, --结算单号 Pczy000=>PCZY000, --操作员 Pczyxm0=>LS_JZYXM0, --操作员姓名 Pczyks0=>LS_CZYKS0, --操作员科室 Pinxml0=>null, --xml入参 Pcommit=>'N', --是否提交 Poutxml=>ls_OUTXML, --xml出参 Pzxcgbz=>ls_ZXCGBZ, --执行成功标志 1成功 0失败 Ptsxx00=>ls_TSXX00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00=>ls_XXXX00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); exception when others then ls_ZXCGBZ := 0; ls_TSXX00 := '执行药品追溯码销售退货处理过程(SP_SF_YPZSM0_XSTHCL)失败!'; ls_XXXX00 := ls_TSXX00; end; end if; --2025.08.22 SP_SF_YJYWZX(LS_BRID00, PJZDH00); exception when no_data_found then PYHMSG0:='错误信息:['||V_MsgStr||']请记录此信息并和系统管理员联系!'; PSYSMSG:=SQLERRM||'执行存储过程SP_SF_FYXX00_JS0000错误'; rollback; when OTHERS then PYHMSG0:='错误信息:['||V_MsgStr||']请记录此信息并和系统管理员联系!'; PSYSMSG:=SQLERRM||'执行存储过程SP_SF_FYXX00_JS0000错误'; rollback; end; / show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%