prompt 门诊新医保接口确认 SP_SF_NEWYBJK_YBJKQR create or replace procedure SP_SF_NEWYBJK_YBJKQR( PYBJKID in varchar2 ,--输入:医保接口ID PJKCJBM in varchar2 ,--输入(不可空):接口场景编码 PBRID00 in number ,--输入(无值传0):BRID00 PGHID00 in number ,--输入(无值传0):门诊(GHID000)流水号 PGHH000 in varchar2 ,--输入(无值传0):门诊(GHH000)号 PCZY000 in number ,--输入(不可空):操作员编码 PCZYXM0 in varchar2 ,--输入(不可空):病人姓名 PCZYKS0 in number ,--输入(不可空):操作员科室 PQQCSID in varchar2 default '' ,--输入(可空):参数中间ID(HIS前台请求参数保存到中间表BM_ZFPTCS.JKQQCS) PINCS00 in varchar2 default '' ,--输入(可空):请求参数 POTHER0 in varchar2 default '' ,--输入(可空):备用参数 PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 PZXZT00 out number ,--输出:执行状态 0:失败 1:成功 PERRMSG out varchar2 --输出:错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2019.10.23 created by MZSF-20191023-001 --zhangyc 2019.10.24 增加解析list by MZSF-20191024-002 --zhangyc 2019.10.25 费用结算解析补助明细 by MZSF-20191025-001 --zhangyc 2019.10.26 门诊挂号成功后修改SF_BRXXB0.YBGHH0 by MZSF-20191027-001 --zhangyc 2019.10.28 修改获取医院科室编码 by MZSF-20191028-002 --zhangyc 2019.10.29 修改收费list取值 by MZSF-20191029-001 --zhangyc 2019.10.30 增加交易对账功能 by MZSF-20191030-001 --zhangyc 2019.10.30 修改YBDZZT 医保对账状态 1:对账成功 0:对账失败 null未对账 by MZSF-20191030-002 --zhangyc 2019.11.11 修改费用冲销报错 by MZSF-20191112-002 --zhangyc 2019.12.04 资格信息查询,精准扶贫重新取值 by MZSF-20191203-004 --zhangyc 2019.12.19 修改初诊建档职退情况,取参保险种BKC001_MC by MZSF-20191219-002 --zhangyc 2019.12.19 门诊挂号登记取bkc001_mc、aae140、aae140_mc 更新基础表 by MZSF-20191219-003 --zhangyc 2019.12.19 修改退款以及性别编码返回为空取值 by MZSF-20191219-003 --zhangyc 2020.01.03 资格信息查询增加写入表SF_YBBRXX by MZSF-20200106-001 --zhangyc 2020.03.16 修改厦门医保调用yb04.10.01.16医保分中心名称aab034_mc没有返回到主节点 -- --------- ---------- ------- LS_COUNT0 number(5); LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_VALUE0 SF_YBJKMX.VALUE0%type; LS_YNDZBM SF_YBJKMX.YNDZBM%type; LS_YBBM00 varchar2(50); LS_YBMC00 varchar2(50); LS_YBFHZ0 varchar2(50); LS_JZDH00 SF_YBJKRZ.JZDH00%type;--结账单号 LS_JKZT00 SF_YBJKRZ.JKZT00%type;--接口状态 0:HIS请求成功 1:接口交互成功 2:HIS院内更新成功 LS_AAZ500 SF_YBJKRZ.AAZ500%type;--社会保障卡号 LS_AAZ501 SF_YBJKRZ.AAZ501%type;--卡识别码 LS_BKZ543 SF_YBJKRZ.BKZ543%type;--二维码 LS_AAB301 SF_YBJKRZ.AAB301%type;--参保地行政区划 LS_AAB301_MC SF_YBJKRZ.AAB301_MC%type;--参保地行政区划名称 LS_AAB004 SF_YBJKRZ.AAB004%type;--单位名称 LS_AAC058 SF_YBJKRZ.AAC058%type;--证件类型 LS_AAC058_MC SF_YBJKRZ.AAC058_MC%type;--证件类型名称 LS_AAC002 SF_YBJKRZ.AAC002%type;--证件号码(社会保障号) LS_AAC999 SF_YBJKRZ.AAC999%type;--个人管理码 LS_AAC003 SF_YBJKRZ.AAC003%type;--姓名 LS_AAC004 SF_YBJKRZ.AAC004%type;--性别编码 LS_AAC004_MC SF_YBJKRZ.AAC004_MC%type;--性别名称 LS_AAC006 SF_YBJKRZ.AAC006%type;--出生日期 LS_AKA078 SF_YBJKRZ.AKA078%type;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_AKA130 SF_YBJKRZ.AKA130%type;--医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 LS_AKC190 SF_YBJKRZ.AKC190%type;--医保挂号流水号 LS_BKE298 SF_YBJKRZ.BKE298%type;--his收费单据流水号 LS_AAE072 SF_YBJKRZ.AAE072%type;--医保收费流水号 LS_AAZ149 SF_YBJKRZ.AAZ149%type;--病种编码 LS_BKE286 SF_YBJKRZ.BKE286%type;--结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 LS_AKC227 SF_YBJKRZ.AKC227%type;--医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_BKC102 SF_YBJKRZ.BKC102%type;--医保基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_BKC041 SF_YBJKRZ.BKC041%type;--个人账户支付金额 LS_BKC040 SF_YBJKRZ.BKC040%type;--个人现金支付金额(实付现金) LS_AKA151 SF_YBJKRZ.AKA151%type;--统筹支付医保费用起付标准 LS_BKC045 SF_YBJKRZ.BKC045%type;--其中:统筹基金支付 LS_BKC052 SF_YBJKRZ.BKC052%type;--其中:商保基金支付(大额补充) LS_BKC059 SF_YBJKRZ.BKC059%type;--其中:公务员医疗补助 LS_BKC062 SF_YBJKRZ.BKC062%type;--其中:精准扶贫医疗叠加 LS_BKC060 SF_YBJKRZ.BKC060%type;--其中:医疗救助基金 LS_AKE173 SF_YBJKRZ.AKE173%type;--其中:其他基金支付 LS_AKE026 SF_YBJKRZ.AKE026%type;--其中:企业补充 LS_BKC075 SF_YBJKRZ.BKC075%type;--家庭共济账户支付 LS_BKC011 SF_YBJKRZ.BKC011%type;--个人自费(非医保费用) LS_AKC087 SF_YBJKRZ.AKC087%type;--个人账户余额 LS_BKC591 SF_YBJKRZ.BKC591%type;--家庭共济账户余额 LS_AKA150 SF_YBJKRZ.AKA150%type;--本年度住院次数 LS_BKC014 SF_YBJKRZ.BKC014%type;--实际就诊日期YYYYMMDD LS_BKC171 SF_YBJKRZ.BKC171%type;--实际就诊时间 LS_AKE007 SF_YBJKRZ.AKE007%type;--费用发生日期(结算日期) LS_BAE029 SF_YBJKRZ.BAE029%type;--费用发生时间(结算时间) LS_AKB041 SF_YBJKRZ.AKB041%type;--转出医疗服务机构编号 LS_AKB042 SF_YBJKRZ.AKB042%type;--转出医疗服务机构名称 LS_AAB050 SF_YBJKRZ.AAB050%type;--参保日期 LS_AAB001 SF_YBJKRZ.AAB001%type;--单位编号 LS_AAB034 SF_YBJKRZ.AAB034%type;--所属经办机构编码(分中心) LS_AAB034_MC SF_YBJKRZ.AAB034_MC%type;--所属经办机构编码名称 LS_BKA531 SF_YBJKRZ.BKA531%type;--是否精准扶贫对象 Y:是 N:否 LS_SFJDLK SF_YBJKRZ.SFJDLK%type;--是否贫困人员 1:是 0:否 LS_ICZTMC SF_YBJKRZ.ICZTMC%type;--IC卡状态名称 LS_GZZTMC SF_YBJKRZ.GZZTMC%type;--工作状态名称 LS_BKC001 SF_YBJKRZ.BKC001%type;--人员待遇类别 LS_BKC001_MC SF_YBJKRZ.BKC001_MC%type;--人员待遇类别名称 LS_BKC026 SF_YBJKRZ.BKC026%type;--医疗待遇状态 LS_BKC026_MC SF_YBJKRZ.BKC026_MC%type;--医疗待遇状态名称 LS_BKE174 SF_YBJKRZ.BKE174%type;--异地就医类型 LS_BKE174_MC SF_YBJKRZ.BKE174_MC%type;--异地就医类型名称 LS_FLAG00 SF_YBJKRZ.FLAG%type;--接口状态 1:成功 LS_YBDZZT SF_JZB000.YBDZZT%type;--医保对账状态 1:对账成功 0:对账失败 null未对账 LS_CBXZLIST SF_YBJKMX.VALUE0%type;--参保险种 LS_CBXZLIST_AAB034_BM varchar2(50);--参保险种所属经办机构编码编码 LS_CBXZLIST_AAB034_MC varchar2(100);--参保险种所属经办机构编码名称 LS_CBXZLIST_AAE140_BM varchar2(100);--参保险种险种类型编码 LS_CBXZLIST_AAE140_MC varchar2(100);--参保险种险种类型名称 LS_CBXZLIST_BKC001_MC varchar2(50);--参保险种人员待遇类别名称(职退情况) LS_CBXZLIST_BKC026_MC varchar2(50);--参保险种医保待遇状态名称 LS_AAE140 SF_YBJKRZ.AAE140%type;--aae140:险种类型:310 城镇职工基本医疗保险 320:公务员医疗补助 380:新型农村合作医疗 390:城乡居民基本医疗保险 410:工伤保险 510:生育保险 520:机关生育 LS_AAE140_MC SF_YBJKRZ.AAE140_MC%type;--aae140_mc:险种类型名称(城乡居民基本医疗保险、城镇职工基本医疗保险等等) LS_BKC166 SF_YBJKRZ.BKC166%type;--(其中)一般诊疗费补偿金额 LS_BKC167 SF_YBJKRZ.BKC167%type;--(其中)一般诊疗费个人支付金额 LS_BKC612 SF_YBJKRZ.BKC612%type;--补助基金支付 LS_BKC061 SF_YBJKRZ.BKC061%type;--其中:保健基金支付 LS_BKC076 SF_YBJKRZ.BKC076%type;--其中:健康账户支付 LS_BKZFE0 SF_YBJKRZ.BKZFE0%type;--三明离休b卡支付额 LS_BKZHYE SF_YBJKRZ.BKZHYE%type;--三明离休b卡账户余额 LS_BKC079 SF_YBJKRZ.BKC079%type;--健康账户余额 LS_HISCS0 SF_YBJKRZ.HISCS0%type;--HIS前台请求参数 LS_TKJZDH varchar2(50);--退款结账单号 LS_TKJKID varchar2(50);--退款医保接口ID --待遇累计dylist cursor CUR_DYLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='dylist' and VALUE0 is not null order by JKMXID; --身份标志sflist cursor CUR_SFLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='sflist' and VALUE0 is not null order by JKMXID; --参保险种cbxzlist cursor CUR_CBXZLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='cbxzlist' and VALUE0 is not null order by JKMXID; --补助明细 cursor CUR_MZLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='mzlist' and VALUE0 is not null order by JKMXID; begin PZXZT00:=0; --执行状态 0:失败 1:成功 LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_JKZT00:=2;--接口状态 0:HIS请求成功 1:接口交互成功 2:HIS院内更新成功 --LS_BKE286 结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 begin select BKE286,JZDH00,FLAG into LS_BKE286,LS_JZDH00,LS_FLAG00 from SF_YBJKRZ where YBJKID=PYBJKID; exception when others then LS_BKE286:=null; LS_JZDH00:=0; LS_HISCS0:=0; end; if PJKCJBM in ('YBJK_TYSF_0020','YBJK_TYSF_0020_1','YBJK_TYSF_0020_2','YBJK_MZDJ_0006', 'YBJK_YBDK_0000','YBJK_YBDK_0001','YBJK_YBDK_0002','YBJK_YBDK_0003','YBJK_YBDK_0004','YBJK_YBCX_0005') then --门诊收费、门诊挂号登记、基本信息查询 LS_AAC058:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac058','1'),1,10);--aac058 证件类型 varchar2(3) LS_AAC058_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac058_mc','1'),1,50);--aac058_mc 证件类型名称 varchar2(50) LS_AAC002:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac002','1'),1,30);--aac002 证件号码(社会保障号) varchar2(18) LS_AAZ500:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aaz500','1'),1,30);--aaz500 社会保障卡号 varchar2(20) LS_AAC999:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac999','1'),1,20);--aac999 个人管理码 varchar2(20) LS_AAC003:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac003','1'),1,50);--aac003 姓名 varchar2(50) LS_AAC006:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac006','1'),1,8); --aac006 出生日期 number(8) LS_AAC004:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac004','1'),1,10); --aac004 性别 varchar2(3) 1:男 2:女 9:未说明性别 LS_AAC004_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac004_mc','1'),1,10);--aac004_mc 性别名称 varchar2(10) 1:男 2:女 9:未说明性别 if LS_AAC004 is null then --如果医保返回的编码为空按姓名名称 if LS_AAC004_MC='男' then LS_AAC004:='1'; elsif LS_AAC004_MC='女' then LS_AAC004:='2'; else LS_AAC004:='9'; end if; end if; LS_AKB041:=substrb(SF_SF_GETYBJKMX(PYBJKID,'akb041','1'),1,10);--akb041 转出医疗服务机构编号 varchar2(10) LS_AKB042:=substrb(SF_SF_GETYBJKMX(PYBJKID,'akb042','1'),1,10);--akb042 转出医疗服务机构名称 varchar2(40) LS_AAB050:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aab050','1'),1,10);--aab050 参保日期 number(8) LS_AAB001:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aab001','1'),1,10);--aab001 单位编号 number(20) LS_AAB004:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aab004','1'),1,100);--aab004 单位名称 varchar2(100) LS_AAB034:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aab034','1'),1,10);--aab034 所属经办机构编码(分中心) varchar2(8) LS_AAB034_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aab034_mc','1'),1,50);--aab034_mc 所属经办机构编码名称 varchar2(50) LS_AAB301:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aab301','1'),1,6);--aab301 参保地行政区划 varchar2(6) LS_AAB301_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aab301_mc','1'),1,50);--aab301_mc 参保地行政区划名称 varchar2(50) LS_BKA531:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bka531','1'),1,10);--是否精准扶贫对象 Y:是 N:否 LS_AAE072:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aae072','1'),1,30);--医保收费流水号 LS_AKC190:=substrb(SF_SF_GETYBJKMX(PYBJKID,'akc190','1'),1,30);--医保挂号流水号 LS_BKC001:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bkc001','1'),1,10);--bkc001 人员待遇类别 (1) LS_BKC001_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bkc001_mc','1'),1,50);--bkc001_mc人员待遇类别名称 (在职普通公务员) LS_BKC026:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bkc026','1'),1,10);--bkc026 医疗待遇状态 (1:有效 3:冻结 4:统筹冻结 5:停保) LS_BKC026_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bkc026_mc','1'),1,50);--bkc026_mc 医疗待遇状态名称 (1:有效 3:冻结 4:统筹冻结 5:停保) LS_AAE140:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aae140','1'),1,10);--aae140:险种类型:310 城镇职工基本医疗保险 320:公务员医疗补助 380:新型农村合作医疗 390:城乡居民基本医疗保险 410:工伤保险 510:生育保险 520:机关生育 LS_AAE140_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aae140_mc','1'),1,50);--aae140_mc:险种类型名称(城乡居民基本医疗保险、城镇职工基本医疗保险等等) LS_BKE174 :=substrb(SF_SF_GETYBJKMX(PYBJKID,'bke174','1'),1,10);--bke174 异地就医类型 LS_BKE174_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bke174_mc','1'),1,50);--bke174_mc 异地就医类型名称 LS_AKC087:=SF_SF_GETYBJKMX_NUM(PYBJKID,'akc087','1');--akc087 个人账户余额 LS_BKZHYE:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkzhye','1');--bkzhye 三明离休b卡账户余额 LS_BKC079:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc079','1');--bkc079 健康账户余额 LS_BKC591:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc591','1');--bkc591 家庭共济账户余额 LS_AKA150:=SF_SF_GETYBJKMX_NUM(PYBJKID,'aka150','1');--aka150 本年度住院次数 LS_SFJDLK:='0';--是否贫困人员 1:是 0:否 if LS_BKC026_MC is not null then LS_ICZTMC:=LS_BKC026_MC; else LS_ICZTMC:='有效';--IC卡状态名称 end if; if LS_BKC001_MC is not null then LS_GZZTMC:=LS_BKC001_MC; else LS_GZZTMC:='在职人员';--工作状态名称 end if; end if; if PJKCJBM in ('YBJK_YBDZ_0000','YBJK_YBDZ_0001','YBJK_YBDZ_0002','YBJK_YBDZ_0003') then --交易对账 --LS_YBDZZT SF_JZB000.YBDZZT%type;--医保对账状态 1:对账成功 0:对账失败 null未对账 if LS_FLAG00='1' then LS_YBDZZT:='1'; else LS_YBDZZT:='0'; end if; if nvl(LS_JZDH00,0)>0 then update SF_JZB000 set YBDZZT=LS_YBDZZT where BRID00=PBRID00 and JZDH00=LS_JZDH00; end if; update SF_YBJKRZ set JKZT00=LS_JKZT00 where YBJKID=PYBJKID; elsif PJKCJBM in ('YBJK_TYSF_0020','YBJK_TYSF_0020_1','YBJK_TYSF_0020_2') then --门诊收费 PZXZT00:=1; --执行状态 0:失败 1:成功 --补助明细--begin-- --bkc059_1其中公务员医疗补助0 for C_LIST in CUR_MZLIST loop LS_VALUE0:=C_LIST.VALUE0; LS_YBFHZ0:=''; --解析xml值 begin select substrb(SF_SF_GETXMLNOTE('bka542',LS_VALUE0),1,50) into LS_YBBM00 from dual; select substrb(SF_SF_GETXMLNOTE('bka542_mc',LS_VALUE0),1,50) into LS_YBMC00 from dual; select substrb(SF_SF_GETXMLNOTE('bkeb34',LS_VALUE0),1,50) into LS_YBFHZ0 from dual; exception when others then LS_YBBM00:=''; LS_YBMC00:=''; LS_YBFHZ0:=''; end; --查找字典表 if LS_YBBM00 is not null then begin select YNDZBM into LS_YNDZBM from BM_YBSXZD where JKBM00=1 and SXBM00='bka542' and VALUE0=LS_YBBM00; exception when others then LS_YNDZBM:=''; end; end if; if LS_YNDZBM is null then LS_YNDZBM:=LS_YBBM00; end if; if LS_YBBM00 is not null and LS_YBFHZ0 is not null then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,ZDLX00,BZ0000,YNDZBM) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data','mzlist',LS_YNDZBM,LS_YBMC00,null,LS_YBFHZ0, '2','2','补助明细',LS_YBBM00 from dual; end if; end loop; --补助明细--end-- --医保报销金额 LS_AKC227:=SF_SF_GETYBJKMX_NUM(PYBJKID,'akc227','1');--akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_BKC102:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc102','1');--bkc102 医保基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_BKC041:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc041','1');--bkc041 个人账户支付金额 LS_BKC040:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc040','1');--bkc040 个人现金支付金额(实付现金) LS_AKA151:=SF_SF_GETYBJKMX_NUM(PYBJKID,'aka151','1');--aka151 统筹支付医保费用起付标准 LS_BKC045:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc045','1');--bkc045 其中:统筹基金支付 LS_BKC052:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc052','1');--bkc052 其中:商保基金支付(大额补充) LS_BKC059:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc059','1');--bkc059 其中:公务员医疗补助 LS_BKC062:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc062','1');--bkc062 其中:精准扶贫医疗叠加 LS_BKC060:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc060','1');--bkc060 其中:医疗救助基金 LS_AKE173:=SF_SF_GETYBJKMX_NUM(PYBJKID,'ake173','1');--ake173 其中:其他基金支付 LS_AKE026:=SF_SF_GETYBJKMX_NUM(PYBJKID,'ake026','1');--ake026 其中:企业补充 LS_BKC075:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc075','1');--bkc075 家庭共济账户支付 LS_BKC011:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc011','1');--bkc011 个人自费(非医保费用) LS_BKC166:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc166','1');--bkc166(其中)一般诊疗费补偿金额 LS_BKC167:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc167','1');--bkc167(其中)一般诊疗费个人支付金额 LS_BKC612:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc612','1');--bkc612 补助基金支付 LS_BKC061:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc061','1');--bkc061 其中:保健基金支付 LS_BKC076:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc076','1');--bkc076 其中:健康账户支付 LS_BKZFE0:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkzfe0','1');--bkzfe0 三明离休b卡支付额 LS_AKC087:=SF_SF_GETYBJKMX_NUM(PYBJKID,'akc087','1');--akc087 个人账户余额 LS_BKZHYE:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkzhye','1');--bkzhye 三明离休b卡账户余额 LS_BKC079:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc079','1');--bkc079 健康账户余额 LS_BKC591:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc591','1');--bkc591 家庭共济账户余额 LS_AKA150:=SF_SF_GETYBJKMX_NUM(PYBJKID,'aka150','1');--aka150 本年度住院次数 update SF_YBJKRZ set JKZT00=LS_JKZT00,BRXM00=LS_AAC003,AAC058=LS_AAC058,AAC058_MC=LS_AAC058_MC,AAC002=LS_AAC002,AAZ500=LS_AAZ500, AAC999=LS_AAC999,AAC003=LS_AAC003,AAC006=LS_AAC006,AAC004=LS_AAC004,AAC004_MC=LS_AAC004_MC, AKB041=LS_AKB041,AKB042=LS_AKB042,AAB050=LS_AAB050,AAB001=LS_AAB001,AAB004=LS_AAB004, AAB034=LS_AAB034,AAB034_MC=LS_AAB034_MC,AAB301=LS_AAB301,AAB301_MC=LS_AAB301_MC,BKA531=LS_BKA531, SFJDLK=LS_SFJDLK,ICZTMC=LS_ICZTMC,GZZTMC=LS_GZZTMC,AAE072=LS_AAE072,AKC190=LS_AKC190, BKC001=LS_BKC001,BKC001_MC=LS_BKC001_MC,BKC026=LS_BKC026,BKC026_MC=LS_BKC026_MC,BKE174=LS_BKE174,BKE174_MC=LS_BKE174_MC, AKC227=LS_AKC227,BKC102=LS_BKC102,BKC041=LS_BKC041,BKC040=LS_BKC040,AKA151=LS_AKA151,BKC045=LS_BKC045, BKC052=LS_BKC052,BKC059=LS_BKC059,BKC062=LS_BKC062,BKC060=LS_BKC060,AKE173=LS_AKE173,AKE026=LS_AKE026, BKC075=LS_BKC075,BKC011=LS_BKC011,AKC087=LS_AKC087,BKC591=LS_BKC591,AKA150=LS_AKA150, AAE140=LS_AAE140,AAE140_MC=LS_AAE140_MC,BKC166=LS_BKC166,BKC167=LS_BKC167, BKC612=LS_BKC076,BKC061=LS_BKC061,BKC076=LS_BKC076,BKZFE0=LS_BKZFE0,BKZHYE=LS_BKZHYE,BKC079=LS_BKC079 where YBJKID=PYBJKID; --LS_BKE286 结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 if LS_BKE286 in ('0') then --预结算成功后,修改账户基本信息 update SF_BRZHXX set YBYJS0=nvl(LS_BKC102,0)+nvl(LS_BKC041,0), YBZHYE=nvl(LS_AKC087,0) where BRID00=PBRID00; end if; elsif PJKCJBM in ('YBJK_TYTF_0023') then --门诊费用冲销 LS_AAE072:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aae072','1'),1,30);--医保收费流水号 LS_AKC190:=substrb(SF_SF_GETYBJKMX(PYBJKID,'akc190','1'),1,30);--医保挂号号 update SF_YBJKRZ set JKZT00=LS_JKZT00,AAE072=LS_AAE072 where YBJKID=PYBJKID; if nvl(LS_JZDH00,0)>0 and LS_AAE072 is not null then update SF_JZB000 set YBDJH0=LS_AAE072,YBSM19=PYBJKID,YBSM20=LS_AKC190,YBJKID=nvl(PYBJKID,YBJKID) where BRID00=PBRID00 and CXJZDH=LS_JZDH00; end if; PZXZT00:=1; --执行状态 0:失败 1:成功 elsif PJKCJBM in ('YBJK_MXSC_0026','YBJK_MXSC_0026_1','YBJK_MXSC_0026_2') then --门诊费用明细上传 update SF_YBJKRZ set JKZT00=LS_JKZT00,BKE297=substrb(SF_SF_GETYBJKMX(PYBJKID,'bke297','1'),1,30) where YBJKID=PYBJKID; PZXZT00:=1; --执行状态 0:失败 1:成功 elsif PJKCJBM in ('YBJK_MXZF_0029') then --门诊费用明细作废 update SF_YBJKRZ set JKZT00=LS_JKZT00,BKE297=substrb(SF_SF_GETYBJKMX(PYBJKID,'bke297','1'),1,30) where YBJKID=PYBJKID; PZXZT00:=1; --执行状态 0:失败 1:成功 elsif PJKCJBM in ('YBJK_MZDJ_0006') then --门诊挂号 --akc190 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号 if trim(LS_AKC190) is not null then update SF_BRXXB0 set YBGHH0=trim(LS_AKC190) where BRID00=PBRID00 and GHID00=PGHID00; end if; update SF_YBJKRZ set JKZT00=LS_JKZT00,BRXM00=LS_AAC003,AAC058=LS_AAC058,AAC058_MC=LS_AAC058_MC,AAC002=LS_AAC002,AAZ500=LS_AAZ500, AAC999=LS_AAC999,AAC003=LS_AAC003,AAC006=LS_AAC006,AAC004=LS_AAC004,AAC004_MC=LS_AAC004_MC, AKB041=LS_AKB041,AKB042=LS_AKB042,AAB050=LS_AAB050,AAB001=LS_AAB001,AAB004=LS_AAB004, AAB034=LS_AAB034,AAB034_MC=LS_AAB034_MC,AAB301=LS_AAB301,AAB301_MC=LS_AAB301_MC,BKA531=LS_BKA531, SFJDLK=LS_SFJDLK,ICZTMC=LS_ICZTMC,GZZTMC=LS_GZZTMC, BKC001=LS_BKC001,BKC001_MC=LS_BKC001_MC,BKC026=LS_BKC026,BKC026_MC=LS_BKC026_MC,BKE174=LS_BKE174,BKE174_MC=LS_BKE174_MC, AKC190=nvl(LS_AKC190,AKC190),AKC087=LS_AKC087,BKC591=LS_BKC591,BKC079=LS_BKC079,BKZHYE=LS_BKZHYE,AKA150=LS_AKA150, AAE140=LS_AAE140,AAE140_MC=LS_AAE140_MC where YBJKID=PYBJKID; --修改基本信息表:BM_BRXXB0:bkc001_mc、aae140、aae140_mc if PBRID00>0 then update BM_BRXXB0 set BKC001_MC=nvl(LS_BKC001_MC,BKC001_MC) ,--人员待遇类别名称(城乡居民、普通在职人员等等) AAE140=nvl(LS_AAE140,AAE140) ,--险种类型:310 城镇职工基本医疗保险 320:公务员医疗补助 380:新型农村合作医疗 390:城乡居民基本医疗保险 410:工伤保险 510:生育保险 520:机关生育 AAE140_MC=nvl(LS_AAE140_MC,AAE140_MC) ,--险种类型名称(城乡居民基本医疗保险、城镇职工基本医疗保险等等) BRZTQK=nvl(substrb(LS_BKC001_MC,1,40),BRZTQK) --病人职退情况 where BRID00=PBRID00; end if; --修改挂号表:SF_BRXXB0:bkc001_mc、aae140、aae140_mc if PBRID00>0 and PGHID00>0 then update SF_BRXXB0 set BKC001_MC=nvl(LS_BKC001_MC,BKC001_MC) ,--人员待遇类别名称(城乡居民、普通在职人员等等) AAE140=nvl(LS_AAE140,AAE140) ,--险种类型:310 城镇职工基本医疗保险 320:公务员医疗补助 380:新型农村合作医疗 390:城乡居民基本医疗保险 410:工伤保险 510:生育保险 520:机关生育 AAE140_MC=nvl(LS_AAE140_MC,AAE140_MC) --险种类型名称(城乡居民基本医疗保险、城镇职工基本医疗保险等等) where BRID00=PBRID00 and GHID00=PGHID00; end if; PZXZT00:=1; --执行状态 0:失败 1:成功 elsif PJKCJBM in ('YBJK_MZDJ_0008') then --门诊挂号冲销 update SF_BRXXB0 set YBGHH0='0' where BRID00=PBRID00 and GHID00=PGHID00; update SF_YBJKRZ set JKZT00=LS_JKZT00,AKC190=nvl(LS_AKC190,AKC190) where YBJKID=PYBJKID; PZXZT00:=1; --执行状态 0:失败 1:成功 --医保用户登录、医保身份认证、资格信息查询 直接返回成功 elsif PJKCJBM in ('YBJK_YBDK_0000','YBJK_YBDK_0001','YBJK_YBDK_0002','YBJK_YBDK_0003','YBJK_YBDK_0004','YBJK_YBCX_0005') then --解析待遇累计dylist--begin -- 城镇职工基本医疗保险0010年度最高支付限额207000.00 for C_LIST in CUR_DYLIST loop LS_VALUE0:=C_LIST.VALUE0; LS_YBFHZ0:=''; --解析xml值 begin select substrb(SF_SF_GETXMLNOTE('aka037',LS_VALUE0),1,50) into LS_YBBM00 from dual; select substrb(SF_SF_GETXMLNOTE('aka037_mc',LS_VALUE0),1,50) into LS_YBMC00 from dual; select substrb(SF_SF_GETXMLNOTE('ake053',LS_VALUE0),1,50) into LS_YBFHZ0 from dual; exception when others then LS_YBBM00:=''; LS_YBMC00:=''; LS_YBFHZ0:=''; end; --查找字典表 if LS_YBBM00 is not null then begin select YNDZBM into LS_YNDZBM from BM_YBSXZD where JKBM00=1 and SXBM00='aka037' and VALUE0=LS_YBBM00; exception when others then LS_YNDZBM:=''; end; end if; if LS_YNDZBM is null then LS_YNDZBM:=LS_YBBM00; end if; if LS_YBBM00 is not null and LS_YBFHZ0 is not null then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,ZDLX00,BZ0000,YNDZBM) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data','dylist',LS_YNDZBM,LS_YBMC00,null,LS_YBFHZ0, '2','2','待遇累计',LS_YBBM00 from dual; end if; end loop; --解析待遇累计dylist--end-- --身份标志sflist--begin-- --bka531是否扶贫对象N for C_LIST in CUR_SFLIST loop LS_VALUE0:=C_LIST.VALUE0; LS_YBFHZ0:=''; --解析xml值 begin select substrb(SF_SF_GETXMLNOTE('bka543',LS_VALUE0),1,50) into LS_YBBM00 from dual; select substrb(SF_SF_GETXMLNOTE('bka543_mc',LS_VALUE0),1,50) into LS_YBMC00 from dual; select substrb(SF_SF_GETXMLNOTE('bkeb35',LS_VALUE0),1,50) into LS_YBFHZ0 from dual; exception when others then LS_YBBM00:=''; LS_YBMC00:=''; LS_YBFHZ0:=''; end; --查找字典表 if LS_YBBM00 is not null then begin select YNDZBM into LS_YNDZBM from BM_YBSXZD where JKBM00=1 and SXBM00='aka037' and VALUE0=LS_YBBM00; exception when others then LS_YNDZBM:=''; end; end if; if LS_YNDZBM is null then LS_YNDZBM:=LS_YBBM00; end if; if LS_YBBM00 is not null and LS_YBFHZ0 is not null then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,ZDLX00,BZ0000,YNDZBM) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data','sflist',LS_YBBM00,LS_YBMC00,null,LS_YBFHZ0, '2','2','身份标志',LS_YNDZBM from dual; end if; end loop; --身份标志sflist--end-- LS_BKA531:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bka531','1'),1,10);--是否精准扶贫对象 Y:是 N:否 if trim(LS_BKC001_MC) is null or trim(LS_AAB034_MC) is null then --如果主项没有返回,取参保险种bkc001_mc --从参保list中获取bkc001_mc(职退情况)--begin--- --有效城乡居民基本医疗保险城乡居民东山管理部 --有效城镇职工基本医疗保险在职人员华安管理部 --同组1:有效城镇职工基本医疗保险普通在职人员 --同组2:有效机关生育普通在职人员 --如果资格查询返回多条记录.暂时取其中一条 begin select trim(VALUE0) into LS_CBXZLIST from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='cbxzlist' and rownum=1; exception when others then LS_CBXZLIST:=''; end; --参保险种bkc001_mc:人员待遇类别名称(职退情况) if trim(LS_CBXZLIST) is not null then --职退情况 LS_CBXZLIST_BKC001_MC:=trim(substrb(SF_SF_GETXMLNOTE('bkc001_mc',LS_CBXZLIST),1,50)); if LS_CBXZLIST_BKC001_MC is not null then LS_GZZTMC:=LS_CBXZLIST_BKC001_MC; end if; --医保返回分中心编码和名称 LS_CBXZLIST_AAB034_BM:=trim(substrb(SF_SF_GETXMLNOTE('aab034',LS_CBXZLIST),1,50));--参保险种所属经办机构编码编码 LS_CBXZLIST_AAB034_MC:=trim(substrb(SF_SF_GETXMLNOTE('aab034_mc',LS_CBXZLIST),1,100));--参保险种所属经办机构编码名称 if trim(LS_AAB034) is null and LS_CBXZLIST_AAB034_BM is not null then LS_AAB034:=LS_CBXZLIST_AAB034_BM; end if; if trim(LS_AAB034_MC) is null and LS_CBXZLIST_AAB034_MC is not null then LS_AAB034_MC:=LS_CBXZLIST_AAB034_MC; end if; end if; --从参保list中获取bkc001_mc(职退情况)--end--- end if; --修改中间表 update SF_YBJKRZ set JKZT00=LS_JKZT00,BRXM00=LS_AAC003,AAC058=LS_AAC058,AAC058_MC=LS_AAC058_MC,AAC002=LS_AAC002,AAZ500=LS_AAZ500, AAC999=LS_AAC999,AAC003=LS_AAC003,AAC006=LS_AAC006,AAC004=LS_AAC004,AAC004_MC=LS_AAC004_MC, AKB041=LS_AKB041,AKB042=LS_AKB042,AAB050=LS_AAB050,AAB001=LS_AAB001,AAB004=LS_AAB004, AAB034=LS_AAB034,AAB034_MC=LS_AAB034_MC,AAB301=LS_AAB301,AAB301_MC=LS_AAB301_MC,BKA531=LS_BKA531, SFJDLK=LS_SFJDLK,ICZTMC=LS_ICZTMC,GZZTMC=LS_GZZTMC, BKC001=LS_BKC001,BKC001_MC=LS_BKC001_MC,BKC026=LS_BKC026,BKC026_MC=LS_BKC026_MC,BKE174=LS_BKE174,BKE174_MC=LS_BKE174_MC, AKC190=nvl(LS_AKC190,AKC190),AKC087=LS_AKC087,BKC591=LS_BKC591,BKC079=LS_BKC079,BKZHYE=LS_BKZHYE,AKA150=LS_AKA150, AAE140=LS_AAE140,AAE140_MC=LS_AAE140_MC where YBJKID=PYBJKID; --资格信息查询:执行过程SP_SF_NEWYBJK_JKFHJX 插入表SF_YBBRXX SP_SF_NEWYBJK_JKFHJX ( PBRID00 ,--输入:病人ID 0 ,--输入:结账单号 PYBJKID ,--输入:医保接口ID '0' ,--输入:门诊住院标识 0:门诊 1:住院 'A' ,--输入:解析类型(同时解析传1,2) 1:fplist 2:mzlist A:参保资格信息解析 B:生成医保基本信息BM_YBBRXX PCOMMIT ,--输入:是否提交事务 Y:提交 N:不提交 PZXZT00 ,--输出:执行状态 0:失败 1:成功 PERRMSG --输出:错误信息 ); end if; if PCOMMIT='Y' then commit; end if; PZXZT00:=1;--输出:执行状态 0:失败 1:成功 exception when no_data_found then PZXZT00:=0; PERRMSG:=substrb('执行新医保接口交互日志失败!原因:'||sqlerrm,1,200); when others then PZXZT00:=0; PERRMSG:=substrb('执行新医保接口交互日志失败!原因:'||sqlerrm,1,200); end; / show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%