create or replace procedure SP_SF_BRXXB0_BRGH00 ( Pbrid00 in number , --ID号 Pghlb00 in number , --挂号类别 Pghks00 in number , --挂号科室 Pjzys00 in number , --就诊医生 Pghhbid in number , --挂号号表ID Psfyd00 in varchar2 , --是否优待 Phzlb00 in number , --候诊类别 Phzxh00 in number , --候诊序号 Psfzz00 in varchar2 , --是否转诊 Pghh000 in out varchar2 , --挂号号 Pczy000 in number , --操作员 Pczyks0 in number , --操作员科室 Pcommit in varchar2 default 'N' , --是否提交 Pzxcgbz out number , --执行成功标志 1成功 0失败 Ptsxx00 out varchar2 , --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 out varchar2 , --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Pghfje0 in number default 0 , --挂号费金额 Pzcfje0 in number default 0 , --诊察费金额 Pcwts00 in varchar2 default '0' , --错误提示 0报错提示 1不提示直接退出 Psflnyx in varchar2 default 'N' , --是否老年优先就诊(>=80岁) Pbxlb00 in varchar2 default '' , --保险类别 Pbz0000 in varchar2 default '' , --候诊病人预挂号备注 Psfxejs in varchar2 default 'N' , --是否小儿加收BM_GHXMDY.XEJSXM Psfcz00 in varchar2 default '0' , --初复诊 SF_BRXXB0.SFCZ00 Psfjzlb in varchar2 default '0' --是否急诊(预约挂号) ) -- MODIFICATION HISTORY -- Person Date Comments ---lintj 2012.08.03 create ---yangy 2012.08.14 增加插入挂号费和诊察费以及挂号总金额 --zhangwz 2012.08.18 去除对 '该挂号类别没有维护项目,请联系管理员!' 的限制,因为有免挂号以及预约号。 --zhanghr 2013.03.06 排队叫号部分重新做了整理 --zhangwz 2013.03.19 -99999 的预挂号在 Vxzhzxh='Y' 的情况下进行简单的算 SF_HZBR00.HZSJD0 -- qks 2013.04.01 院内保留明细号:Vhzlb00值要改为3 -- qks 2013.04.08 增加入参Pcwts00(自助机接口修改) -- qks 2013.04.22 增加入参Psflnyx:八十岁优先,改为从前台传入一起控制 -- zhanghr 2013.05.09 重要来人短信通知 -- zhangwz 2013.05.22 简单算 SF_HZBR00.HZSJD0 的时候如果是超出排班截止时间的话按参数 MZHS_HZSJDXRGZ 定义显示最后统一显示的时间,而不是现在的以排班截止时间进行统一显示。 -- qks 2013.10.14 增加字段SF_BRXXB0.YBLB00 -- qks 2014.02.24 修改Vbrxm00定义;12580的VIP预约类型:在专家特诊室自动判断不能挂50元的专诊特诊号,只允许挂主任号 -- zhangwz 2014.02.25 解决院内读卡预约(SF_YYBRB0.BRID00>0的记录)前台不能进行到场确认的问题. -- zhangwz 2014.04.01 现场排队操作的时候增加写入中间表数据 SF_YYZJB0 用于后续相关数据到前置机的功能。 -- qks 2014.05.15 VIP预约就诊病人,对应预约出诊的医生不允许给VIP预约就诊病人挂“专家”号; -- zhangwz 2014.05.27 挂号生成费用的时候增加判断是否厦门口腔医院模式 -- zhangwz 2014.06.16 排班表增加YSYGBH=0的科室排班数据,过程进行相应的修改(根据工号去医生或者是操作员姓名的时候使用异常处理) -- zhangwz 2014.07.11 判断有无预挂号的时候区分科室排班or个人排班进行获取 -- zhangwz 2014.07.24 候诊病人预挂号的时候增加入参Pbz0000用于标识预挂号备注 -- zhangwz 2014.08.28 增加参数控制如果预约病人过了预约时间做到场确认那么SF_HZBR00.DLXH00是否为已经排队的最后一个号码 -- zhaoxz 2015.09.19 增加SF_BRXXB0.BXLB00入参 -- qks 2016.02.26 增加参数MZHS_XCQHGZ控制:病人不允许在同个科室取2个排队号,老专家门诊除外 -- zhaoxz 2016.03.01 修改Pbz0000,Pbxlb00的入参顺序 MZYS9-20160301-001 -- qks 2016.03.03 需改SF_HZBR00.JZRQ00,JZSJ00两个字段值 by MZSF9-20160303-001 -- qks 2016.03.09 省人民医院:老专家门诊候诊队列科室跟就诊医生登录科室不一致 by MZHS9-20160310-001 -- qks 2016.05.30 已经停诊的不允许取现场号或预约号; by MZHS9-20160530-001 -- zhaoxz 2016.07.04 新增小儿加收项目判断 MZYS9-20160704-001 -- zhaoxz 2016.07.05 小儿加收项目新增6周岁限制 MZYS9-20160705-001 -- zhaoxz 2016.07.25 新增初复诊入参 MZYS9-20160725-001 -- jlg 2016.09.19 增加在候诊时挂非预约号的处理 MZHS9-20160824-001 -- qks 2016.12.29 增加参数MZHS_SFLNYX控制是否老年优先就诊 MZHS9-20161227-001 -- wusq 2017.01.12 增加参数V_value0 by MZHS9-20161214-001 -- qks 2017.02.03 解决预约号被门诊护士工作站现场取走问题; by MZHS9-20170203-001 -- qks 2017.03.16 增加参数MZHS_EKQHXZNL:儿科取号是否限制年龄; by MZHS9-20170311-002 -- qks 2017.03.17 增加参数MZHS_QHSFXZZHKYE:取号是否限制部分患者账户可用额; by MZHS9-20170311-001 -- linyj 2017.06.27 厦门莲花医院,优待病人0金额收费 增加Vydlsf0、Vsfydxm、Vyjzhje by MZYS9-20170524-001 -- linyj 2017.06.29 厦门莲花医院,小儿加收增加替换原有项目功能 MZYS9-20170629-001 -- qks 2017.09.08 院内保留号取号时无法选择优先,改为允许设置成优先; by MZHS9-20170831-001 2、 -- qks 2017.12.27 修正:优先号SF_HZBR00.DLXH00=-99问题;以及新增参数YS_ZSGHSFZJ控制正式挂号后是否直接诊结; for MZSF9-20171227-001 -- qks 2018.01.05 要求门诊过诊病人也可以重新取号; for MZHS9-20180105-001 -- liwm 2018.06.07 门诊收费存储过程统一添加调用参数日志 for MZSF9-20180604-003 -- qks 2018.11.14 三伏灸接口:当默认的医生当天有正常排班时,调用该接口会出错; for MZSF9-20181114-001 -- linshu 2020.05.25 增加入参Psfjzlb for MZHS9-20200518-004 -- linshu 2020.09.02 不允许已预约未确认病人同一个医生的现场号 by MZHS9-20200826-001 -- linshu 2020.05.07 门诊病人预约取消后可重新取号(吴伟钦转归档) by MZSF9-20210505-001 -- jlg 2021.07.22 加参数MZHS_YXWDYYSJDBRXCQH处理 不允许未到预约时间的病人取现场号的问题 lxy修改,jlg代归档 MZSF9-20210721-002 -- lingxy 2021.07.23 在此处增加控制,如果病人预约时间大于当前时间,不允许取同一个医生的现场号。反之,可以取; jlg代归档;MZSF9-20210723-001 -- lingxy 2021.07.26 原来的HH24:mm改为HH24:mi jlg代归档 MZSF9-20210726-001 as Vsfyd00 char(1); -- Vfjdjbz char(1); -- Vbrxm00 BM_BRXXB0.BRXM00%type; -- Vczyxm0 varchar2(20); -- Vjzysxm varchar2(20); -- Vybzxlb IC_YBBRLB.YBZXLB%type; -- Vybbrlb BM_BRXXB0.YBBRLB%type; -- Vfbbh00 BM_BRXXB0.FBBH00%type; -- Vbrblh0 BM_BRXXB0.BRBLH0%type; -- Vyxcfgh XT_XTCS00.VALUE0%type; --允许医生有效期内给病人重复挂号 Vxzzyjz XT_XTCS00.VALUE0%type; --住院病人是否限制门诊就诊,Y限制 N不限制 默认为Y Vghdjxz XT_XTCS00.VALUE0%type; --医生挂号等级限制 Vxzhzxh XT_XTCS00.VALUE0%type; --护士挂号时,是否指定候诊序号 Vghyxts XT_XTCS00.VALUE0%type; --挂号有效天数 Vsfxmkqyy XT_XTCS00.VALUE0%type; --是否厦门口腔医院模式 Vybghfs varchar2(10); --医保病人挂号室挂号费用收取方式0都收1只收挂号费2都不收 Vghzkbh SF_YSGHHB.GHZKBH%type; --专科名称编号 Vhzqsrq SF_HZBR00.HZQSRQ%type; --候诊开始日期 Vhzqssj SF_HZBR00.HZQSSJ%type; -- Vhzjzrq SF_HZBR00.HZJZRQ%type; --候诊结束日期 Vhzjzsj SF_HZBR00.HZJZSJ%type; -- Vghhzck SF_YSGHHB.GHHZCK%type; --挂号候诊窗口 Vzsxx00 SF_BRXXB0.ZSXX00%type; --诊室信息 Vyghh00 SF_BRXXB0.GHH000%type; --病人的预挂号的挂号号 Vhzsjd0 SF_BRXXB0.HZSJD0%type; --候诊时间段 Vghje00 SF_BRXXB0.GHJE00%type; --挂号金额 Vhzlbid SF_HZBR00.ID0000%type; -- Vdlxh00 SF_HZBR00.DLXH00%type; --队列序号 Vhzlb00 SF_HZBR00.HZLB00%type; --候诊类别 Vhzxh00 SF_HZBR00.HZXH00%type; --候诊序号 Vhzxhmc SF_HZBR00.HZXHMC%type; --候诊序号名称 Vyjdjh0 YJ_YW0000.YJDJH0%type; -- Vdjh000 SF_FYMX00.DJH000%type; -- Vzlxmid BM_ZLZD00.ZLXMID%type; -- Vxkh000 BM_YGBM00.XKH000%type; -- Vghhbid SF_YSGHHB.GHHBID%type; --挂号号表id Vpjzzsj SF_YSGHHB.PJZZSJ%type; --挂号号表平均诊治时间 Vynblmx SF_YSGHHB.YNBLMX%type; --院内保留明细号 Vsfkzxmyy XT_XTCS00.VALUE0%type; --是否开展厦门统一的预约模式 插入数据模式使用数据链路 Vdlxhscgz XT_XTCS00.VALUE0%type; --队列序号生成规则 Vxcqhgz XT_XTCS00.VALUE0%type; --现场取号规则 Vzsghzj XT_XTCS00.VALUE0%type; --正式挂号是否自动进行诊结:1是 0否,默认0 Vhzsjdxrgz number(5) ; -- Vczrq00 char(8); -- Vczsj00 char(8); -- Vnl0000 number; --年龄 Vcounter number; --计数器变量 Vcounter1 number; --计数器变量 Vcounter2 number; --计数器变量 Vsql000 varchar2(1000); -- Ecustom exception; -- ls_ghje00 sf_brxxb0.GHJE00%type; --挂号总金额 ls_ghfzje sf_brxxb0.ghfzje%type; --挂号费总金额 ls_zcfje0 sf_brxxb0.ZCFJE0%type; --诊查费总金额 ls_je0000 yj_yw0000.ZJE000%type; --单个项目的金额 Vtzbz00 SF_YSGHHB.TZBZ00%type; -- Vlnsfyx XT_XTCS00.VALUE0%type; --老年是否有效就诊 V_value0 XT_XTCS00.VALUE0%type; --预挂号是否直接用排班时候的挂号类别 Vekqhxz XT_XTCS00.VALUE0%type; --儿科取号是否限制年龄 Vqhxzye XT_XTCS00.VALUE0%type; --取号是否限制部分患者账户可用额 Vbrkyje SF_BRZHXX.ZYE000%type; --病人可用余额 Vydlsf0 XT_XTCS00.VALUE0%type; --优待项目是否0金额收费(系统参数) Vsfydxm char(1); --项目是否优待项目 Vyjzhje number; --医技折后金额=0不生效,=-99999999表示直接单价改为0 Vbrdh00 BM_BRXXB0.BRDH00%type; -- Vbrzjbh BM_BRXXB0.BRZJBH%type; -- Vyyjssj SF_YYBRB0.YYJSSJ%type; -- Vyxxcqh XT_XTCS00.VALUE0%type; --是否允许未到预约时间的病人取现场号,0不允许,1允许,默认1 type T_CUR_GHXMDY is ref cursor; CUR_GHXMDY T_CUR_GHXMDY; Vxxxlog varchar2(2000); begin Pzxcgbz := 0; Vczrq00 := to_char(sysdate,'yyyymmdd'); Vczsj00 := to_char(sysdate,'hh24:mi:ss'); Vxxxlog := substr('PBRID00:'||nvl(to_char(PBRID00), 'null')||','||'PGHLB00:'||nvl(to_char(PGHLB00), 'null')||','||'PGHKS00:'||nvl(to_char(PGHKS00), 'null')||','||'PJZYS00:'||nvl(to_char(PJZYS00), 'null')||','||'PGHHBID:'||nvl(to_char(PGHHBID), 'null')||','||'PSFYD00:'||nvl(to_char(PSFYD00), 'null')||','||'PHZLB00:'||nvl(to_char(PHZLB00), 'null')||','||'PHZXH00:'||nvl(to_char(PHZXH00), 'null')||','||'PSFZZ00:'||nvl(to_char(PSFZZ00), 'null')||','||'PGHH000:'||nvl(to_char(PGHH000), 'null')||','||'PCZY000:'||nvl(to_char(PCZY000), 'null')||','||'PCZYKS0:'||nvl(to_char(PCZYKS0), 'null')||','||'PCOMMIT:'||nvl(to_char(PCOMMIT), 'null')||','||'PGHFJE0:'||nvl(to_char(PGHFJE0), 'null')||','||'PZCFJE0:'||nvl(to_char(PZCFJE0), 'null')||','||'PCWTS00:'||nvl(to_char(PCWTS00), 'null')||','||'PSFLNYX:'||nvl(to_char(PSFLNYX), 'null')||','||'PBXLB00:'||nvl(to_char(PBXLB00), 'null')||','||'PBZ0000:'||nvl(to_char(PBZ0000), 'null')||','||'PSFXEJS:'||nvl(to_char(PSFXEJS), 'null')||','||'PSFCZ00:'||nvl(to_char(PSFCZ00), 'null'),1,2000); Pxxxx00 := ''; SP_TransLog(sysdate,'SP_SF_BRXXB0_BRGH00',Pczy000,Pczyks0,Vxxxlog); select nvl(trim(max(value0)),'Y') into Vyxcfgh from XT_XTCS00 where name00='YS_YXCFGH'; select nvl(max(trim(VALUE0)),'Y') into Vxzzyjz from XT_XTCS00 where NAME00='YS_ZYBRSFXZMZJZ'; select nvl(trim(max(value0)),'N') into Vghdjxz from XT_XTCS00 where name00='XT_GHDJXZ'; select nvl(trim(max(value0)),'N') into Vxzhzxh from XT_XTCS00 where name00='YS_HSGHXZHZXH'; select nvl(trim(max(value0)),1) into Vghyxts from XT_XTCS00 where name00='GHYXTS'; select nvl(trim(max(value0)),'0') into Vybghfs from XT_XTCS00 where name00='MZYS_YBBRGHFYSQFS'; select nvl(trim(max(value0)),'N') into Vsfxmkqyy from XT_XTCS00 where name00='YS_SFXMKQYY'; select nvl(trim(max(value0)),'0') into Vdlxhscgz from XT_XTCS00 where name00='MZHS_YYBRDCQRSHZDLXHSCGZ'; select nvl(trim(max(value0)),'0') into Vxcqhgz from XT_XTCS00 where name00='MZHS_XCQHGZ'; select nvl(trim(max(value0)),'Y') into Vlnsfyx from XT_XTCS00 where name00='MZHS_SFLNYX'; select nvl(trim(max(value0)),'N') into Vekqhxz from XT_XTCS00 where name00='MZHS_EKQHXZNL'; select nvl(trim(max(value0)),'N') into Vqhxzye from XT_XTCS00 where name00='MZHS_QHSFXZZHKYE'; select nvl(trim(max(value0)),'0') into Vzsghzj from XT_XTCS00 where name00='YS_ZSGHSFZJ'; --是否允许未到预约时间的病人取现场号,0不允许,1允许,默认1 select nvl(trim(max(value0)),'0') into Vyxxcqh from XT_XTCS00 where name00='MZHS_YXWDYYSJDBRXCQH'; begin select nvl(trim(VALUE0),'N') into Vsfkzxmyy from XT_XTCS00 where NAME00='YY_XMSYYYYQZJ'; exception when others then Vsfkzxmyy:='N'; end; begin select to_number(value0) into Vhzsjdxrgz from XT_XTCS00 where name00='MZHS_HZSJDXRGZ'; exception when others then Vhzsjdxrgz :=0; end; begin select nvl(max(trim(value0)),'N') into V_value0 from XT_XTCS00 where name00='MZHS_YGHZJYPBGHLB'; exception when others then V_value0:='N'; end; --Vghhbid := Pghhbid; --Vghhbid := nvl(to_char(PGHHBID), ''); --fix Vghhbid is null bug 修正 Vghhbid 原来为空值的问题 20210721 Vghhbid := nvl(Pghhbid,-1); --改为此种写法 jlg --省三 20210721 增加的病人电话 Vbrdh00 的取值 select A.BRXM00,B.YBZXLB,A.YBBRLB,A.FBBH00,A.BRBLH0,SF_YS_CSRQTONL(a.BRCSRQ),COALESCE(BRDH00,BRLXDH) into Vbrxm00,Vybzxlb,Vybbrlb,Vfbbh00,Vbrblh0,Vnl0000,Vbrdh00 from BM_BRXXB0 A,IC_YBBRLB B where A.BRID00=Pbrid00 and B.YBLB00=A.YBLB00 and B.FBBH00=a.FBBH00; if Vfbbh00<>3 then Vybghfs:='0'; end if; select count(*) into Vcounter from SF_BRXXB0 where BRBLH0 = Vbrblh0 and BRID00<>Pbrid00; if Vcounter > 0 then Ptsxx00 :='该病历号已被别的病人所使用!'; raise Ecustom; end if; /*if Pghlb00=-99999 then--杜绝乱自助取号 select count(*) into Vcounter from sf_brxxb0 where GHRQ00=Vczrq00 and BRID00=Pbrid00 and ((JZYS00=Pjzys00 and JZYS00>0) or (JZYS00=0 and GHKS00=Pghks00 and Pjzys00=0)) and THRQ00 is null and GHLB00=-99999; if Vcounter>0 then Ptsxx00 :='对不起,你已经在该医生取过排队号!'; raise Ecustom; end if; end if;*/ if Vyxcfgh='N' then--预交金挂号,要判定病人是否被重复挂号 select count(*) into Vcounter from VW_YS_YXGH00 where brid00=Pbrid00 and GHKS00=Pghks00 and JZYS00=Pjzys00 and ghlb00<>-99999; if Vcounter > 0 then Ptsxx00 :='该病人已经在该医生挂过号,不允许重复挂号!'; raise Ecustom; end if; end if; if Vxzzyjz='Y' then --判断病人能否挂号,若是住院病人就不能挂号 select count(*) into Vcounter from ZY_BRXXB0 where BRID00 = Pbrid00 and (CYRQ00 is null or CYRQ00='20991231'); --未出院的病人 if Vcounter > 0 then Ptsxx00 :='该病人正在住院,不能挂号,病人挂号登记失败!'; raise Ecustom; end if; end if; if Vghdjxz='Y' then--进行医生挂号等级限制 select count(*) into Vcounter from BM_GHLBB0 where LBBH00 = Pghlb00 and GHDJ00>(select GHDJ00 from BM_GHLBB0 where lbbh00=(select MRGHLB from BM_YGBM00 where YGBH00=Pjzys00 and Pczy000=Pjzys00)); if Vcounter>0 then Ptsxx00 :='不能挂级别高的号!*'; raise Ecustom; end if; end if; -- 不允许已预约未确认病人同一个医生的现场号 by MZHS9-20200826-001 select count(1) into Vcounter from sf_yybrb0 where yyRQ00=to_char(sysdate,'YYYYMMDD') and brid00=0 and yyzt00<>'2' and GHHBID=Vghhbid and ((Vbrzjbh=SFZH00 and brxm00=Vbrxm00) or ( brxm00=Vbrxm00 and brdh00=Vbrdh00) ) and decode(sign(to_number(substr(yyjssj,1,2))-12),-1,'上午','下午')= decode(sign(to_number(to_char(sysdate,'HH24'))-12),-1,'上午','下午') and to_char(sysdate,'HH24:mi') < yyjssj; --2021.7.23 lingxy 在此处增加控制,如果病人预约时间大于当前时间,不允许取同一个医生的现场号。反之,可以取; if Vcounter>=1 then Ptsxx00 :='-您今天有当前医生的预约号,请到自助机预约取号界面取号。'; raise Ecustom; end if; -- gerry modify 不允许未到预约时间的病人取现场号 省三人民医院 20210721 if Vyxxcqh = '0' then select count(1) into Vcounter from sf_yybrb0 where yyRQ00=to_char(sysdate,'YYYYMMDD') and brid00=0 and yyzt00='1' and GHHBID=Vghhbid and ((Vbrzjbh=SFZH00 and brxm00=Vbrxm00) or ( brxm00=Vbrxm00 and brdh00=Vbrdh00) ) and decode(sign(to_number(substr(yyjssj,1,2))-12),-1,'上午','下午')= decode(sign(to_number(to_char(sysdate,'HH24'))-12),-1,'上午','下午'); if Vcounter>=1 then select YYJSSJ into Vyyjssj from sf_yybrb0 where yyRQ00=to_char(sysdate,'YYYYMMDD') and brid00=0 and yyzt00='1' and GHHBID=Vghhbid and ((Vbrzjbh=SFZH00 and brxm00=Vbrxm00) or ( brxm00=Vbrxm00 and brdh00=Vbrdh00) ) and decode(sign(to_number(substr(yyjssj,1,2))-12),-1,'上午','下午')= decode(sign(to_number(to_char(sysdate,'HH24'))-12),-1,'上午','下午'); if (to_char(sysdate,'HH24:mi') < Vyyjssj) then Ptsxx00 :='-您今天已经预约当前医生,请耐心等待勿重复取号!'; raise Ecustom; end if; end if; end if; select count(*) into Vcounter from XT_XTCS00 where NAME00='SF_XZMZJZDFB' and instrb(','||trim(VALUE0)||',',','||to_char(Vfbbh00)||',')>0; if Vcounter>0 then Ptsxx00 :='该费别病人不允许在门诊就诊,请先到收费处处理!'; raise Ecustom; end if; --select count(*) into Vcounter from BM_GHXMDY where LBBH00 = Pghlb00 and SYBZ00 = '1'; --if Vcounter=0 then -- Ptsxx00 :='该挂号类别没有维护项目,请联系管理员!'; -- raise Ecustom; --end if; Vsfyd00 := Psfyd00; if Vsfyd00<>'Y' then --两费病人自动优待,免除挂号费 if SF_YF_JudgeSFLNYD(Pbrid00) = 1 then update BM_BRXXB0 set SFYD00='1' where BRID00=Pbrid00; Vsfyd00 :='Y'; end if; end if; begin select ZWXM00 into Vczyxm0 from BM_YGBM00 where YGBH00 = Pczy000; exception when others then Vczyxm0:='未定义'; end; begin select ZWXM00 into Vjzysxm from BM_YGBM00 where YGBH00 = Pjzys00; exception when others then Vjzysxm:='未定义'; end; Vhzlb00 := Phzlb00; Vhzxh00 := Phzxh00; if Vghhbid > 0 then begin select GHZKBH,GHMZSJ,GHQSSJ,GHMZSJ,GHJSSJ,GHHZCK,nvl(CKXXDZ,CKMC00),nvl(a.PJZZSJ,0),YNBLMX,a.TZBZ00 into Vghzkbh,Vhzqsrq,Vhzqssj,Vhzjzrq,Vhzjzsj,Vghhzck,Vzsxx00,Vpjzzsj,Vynblmx,Vtzbz00 from SF_YSGHHB a,BM_CKBM00 b where a.GHHZCK = b.CKBH00(+) and GHHBID = Vghhbid; exception when no_data_found then Ptsxx00 :='数据没有找到,请核对您所输入的医生挂号号表是否正确!'; raise Ecustom; end; SP_SF_XZGSKH(Vghhbid,0,0,'N',Pzxcgbz,Ptsxx00,Pxxxx00); else Vhzqsrq :=Vczrq00; Vhzqssj :=Vczsj00; Vhzjzrq :=Vczrq00; Vhzjzsj :=Vczsj00; Vghhzck :=0; end if; if (Vynblmx is not null) and (instr(','||Vynblmx||',',','||to_char(Vhzxh00)||',')>0) and Vhzlb00<>2 then Vhzlb00 := 3; end if; if Pghh000 is null then select SQ_SF_BRXXB0_GHID00.nextval into Pghh000 from dual; end if; select SQ_SF_BRJFB0_DJH000.nextval into Vdjh000 from dual; --SF_HZBR00的队列序号处理开始 if Vxzhzxh='Y' and Pghlb00=-99999 then --预挂号 if Vqhxzye<>'N' and instrb(','||substrb(Vqhxzye,1,instrb(Vqhxzye,'|')-1)||',',','||Vybzxlb||',')>0 then Vbrkyje := SF_SF_GETKYJE(Pbrid00); if Vbrkyje'N' and instrb(','||substrb(Vekqhxz,1,instrb(Vekqhxz,'|')-1)||',',','||Pghks00||',')>0 then if Vnl0000>to_number(substrb(Vekqhxz,instrb(Vekqhxz,'|')+1,3)) then Ptsxx00 :='年龄大于'||substrb(Vekqhxz,instrb(Vekqhxz,'|')+1,3)||'岁不能取儿科号'; raise Ecustom; end if; end if; --已经停诊的不允许取现场号或预约号 if Vtzbz00='1' then Ptsxx00 :='该医生已停诊,不能取号!'; raise Ecustom; end if; --if Vxcqhgz = '0' then --门诊病人预约取消后可重新取号 by MZSF9-20210505-001 select nvl(max(HZXH00),0) into Vcounter from SF_HZBR00 b where BRID00=Pbrid00 and YSPBID=Vghhbid and GHLB00=-99999 and HZZT00<>'3' and not exists (select 1 from sf_yybrb0 a where a.brid00=b.brid00 and a.ghhbid=b.yspbid and a.yyh000=b.hzxh00 and a.yyzt00='2') ; if Vcounter>0 then Ptsxx00 :='患者已经排'||to_char(Vcounter)||'号,不能重复取号!'; raise Ecustom; end if; --2016.02.26 if Vxcqhgz = '-1' or Vxcqhgz<>'0' and instrb(','||Vxcqhgz||',',','||Pghks00||',')<=0 then select nvl(max(GHYS00),0) into Vcounter2 from SF_HZBR00 where BRID00=Pbrid00 and GHLB00=-99999 and HZQSRQ=Vhzqsrq and HZQSSJ=Vhzqssj and GHKS00=Pghks00 and HZZT00<>'3'; if Vcounter2>0 then select max(zwxm00) into Ptsxx00 from bm_ygbm00 where ygbh00=Vcounter2; Ptsxx00 :='患者已经在本科室医生:'||Ptsxx00||' 取过号了,不能重复取号!'; raise Ecustom; end if; end if; --Update YS_HBHZXH set BRID00 = Pbrid00, BRXM00= Vbrxm00,GHH000=Pghh000 where GHHBID=Vghhbid AND HZXH00=Vhzxh00 and nvl(BRID00,0)=0; zhangwz 20140225 --Update YS_HBHZXH set BRID00 = Pbrid00, BRXM00= Vbrxm00,GHH000=Pghh000 where GHHBID=Vghhbid AND HZXH00=Vhzxh00 and --((nvl(BRID00,0)=0) or (BRID00=Pbrid00 and exists (select 1 from SF_YYBRB0 where YYID00=YS_HBHZXH.YYID00 and YYZT00='0'))); --2017.02.03 qks 解决预约号被门诊护士工作站现场取走问题 update YS_HBHZXH set BRID00 = Pbrid00, BRXM00= Vbrxm00,GHH000=Pghh000 where GHHBID=Vghhbid AND HZXH00=Vhzxh00 and (nvl(BRID00,0)=0 and nvl(BRXM00,' ')=' ' or ((BRID00=Pbrid00 or nvl(BRXM00,' ')<>' ') and exists (select 1 from SF_YYBRB0 where YYID00=YS_HBHZXH.YYID00 and BRXM00=Vbrxm00 and YYZT00 in ('0','1')))); if sql%notfound then Ptsxx00 :=to_char(Vhzxh00)||'已经被占用,请重试'; raise Ecustom; end if; if Vpjzzsj>0 then begin select to_char(to_date(Vhzqsrq||Vhzqssj,'YYYYMMDDHH24:MI:SS')+Vpjzzsj*(Vhzxh00-1)/1440,'YYYYMMDDHH24:MI:SS') into Vhzsjd0 from dual; exception when others then Vhzsjd0:=null; end; if Vhzsjd0>to_char(to_date(Vhzjzrq||Vhzjzsj,'YYYYMMDDHH24:MI:SS')-(Vhzsjdxrgz/(24*60)),'YYYYMMDDHH24:MI:SS') then Vhzsjd0:=to_char(to_date(Vhzjzrq||Vhzjzsj,'YYYYMMDDHH24:MI:SS')-(Vhzsjdxrgz/(24*60)),'YYYYMMDDHH24:MI:SS'); end if; else Vhzsjd0 := null; end if; Vdlxh00:=nvl(Vhzxh00,0)*50; if Vdlxhscgz='1' then begin select count(*) into Vcounter1 from YS_HBHZXH where GHHBID=Vghhbid AND HZXH00=Vhzxh00 and YYID00 is not null and HZQSSJ is not null and HZQSSJ0 then --预约到场确认时间大于预约就诊时间 select nvl(max(DLXH00),0)+1 into Vdlxh00 from SF_HZBR00 where YSPBID = Vghhbid; end if; end if; --八十岁优先 --if Vnl0000>=80 then --2017.12.27 增加条件and DLXH00>=0 if (Vnl0000>=79) and (Psflnyx = 'Y') and (Vlnsfyx='Y') then Vhzlb00:=2; select nvl(max(DLXH00),0)+1 into Vdlxh00 from SF_HZBR00 where YSPBID = Vghhbid and DLXH00<50 and DLXH00>=0; end if; if Vsfxmkqyy='Y' then begin select count(*) into Vcounter1 from bm_brxxb0 where brid00=Pbrid00 and brztqk in ('一级保健','二级保健','三级保健','A卡'); exception when others then Vcounter1 :=0; end; if Vcounter1>0 then --保健病人优先 Vhzlb00:=2; end if; end if; if Vhzlb00=1 then--普通病人 Vhzxhmc:=Lpad(to_char(Vhzxh00),4,'0'); elsif Vhzlb00=3 then Vhzxhmc:='Y'||Lpad(to_char(Vhzxh00),3,'0'); else --优待病人 Vhzxhmc:='L'||Lpad(to_char(Vhzxh00),3,'0'); --2017.12.27 增加条件and DLXH00>=0 select nvl(max(DLXH00),0)+1 into Vdlxh00 from SF_HZBR00 where YSPBID = Vghhbid and DLXH00<50 and DLXH00>=0; end if; select SQ_SF_HZBR00_ID0000.nextval into Vhzlbid from dual; Insert into SF_HZBR00(ID0000,BRID00,GHH000,GHKS00,JZKS00,GHYS00,GHLB00,HZLB00,HZXH00, DJRQ00,DJSJ00,HZQSRQ,HZQSSJ,HZJZRQ,HZJZSJ,HZZT00,CZY000,YSPBID, JZZS00,HZSJD0,JZKSMC,GHYSXM,HZLBMC,HZXHMC,DLXH00,BZ0000,SFJZLB) select Vhzlbid,Pbrid00,Pghh000,Pghks00,Pghks00,Pjzys00,Pghlb00,Vhzlb00, Vhzxh00,Vczrq00,Vczsj00,Vhzqsrq,Vhzqssj,Vhzjzrq,Vhzjzsj,'0',Pczy000,Vghhbid, Vghhzck,substr(Vhzsjd0,9,5),b.BMMC00,nvl((select a.ZWXM00 from BM_YGBM00 a where a.YGBH00=Pjzys00 and rownum=1),'未定义'), c.HZLBMC,Vhzxhmc,Vdlxh00,Pbz0000,Psfjzlb from BM_BMBM00 b,BM_HZLB00 c --BM_YGBM00 a, where b.BMBH00=Pghks00 and c.HZLB00=Vhzlb00; --a.YGBH00=Pjzys00 and if Vsfkzxmyy='Y' then select count(*) into Vcounter from YS_HBHZXH where GHHBID=Vghhbid AND HZXH00=Vhzxh00 and YYID00 is null; if Vcounter>0 then insert into SF_YYZJB0(ID0000,GHHBID,YYID00,HZID00,CZLX00,CZY000,CZYKS0,CZRQ00,CZSJ00) select SQ_SF_YYZJB0_ID0000.nextval,Vghhbid,null,Vhzlbid,'0',Pczy000,Pczyks0,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS') from dual; end if; end if; elsif Vxzhzxh='Y' and Pghlb00<>-99999 then Vdlxh00 := -100; --检查有没有预挂号,如果有,修改预挂号 /* select max(a.ID0000) into Vhzlbid from SF_HZBR00 a,SF_YSGHHB b where a.JZKS00=Pghks00 and ((a.GHYS00=Pjzys00 and b.PBLX00='0') or (a.GHYS00=0 and b.PBLX00='1')) and a.BRID00=Pbrid00 and a.DLXH00>0 and a.GHLB00=-99999 and a.YSPBID=b.GHHBID; */ --2016.03.09 select max(a.ID0000) into Vhzlbid from SF_HZBR00 a,SF_YSGHHB b where a.HZQSRQ=Vczrq00 and ((a.GHYS00=Pjzys00 and b.PBLX00='0') or (a.GHYS00=0 and b.PBLX00='1')) and a.BRID00=Pbrid00 and a.DLXH00>0 and a.GHLB00=-99999 and a.YSPBID=b.GHHBID; if Vhzlbid is null then--没有预挂号 select max(GHHBID) into Vghhbid from SF_YSGHHB where GHMZSJ=Vczrq00 and GHKSBH=Pghks00 and TZBZ00='0' and Vczsj00 between GHQSSJ and GHJSSJ and GHYSBH=Pjzys00 ; if Vghhbid>0 then --有号表,占用号, 无排班,不管 --有可能不允许直接挂号,有可能不占用号,有可能占用号 --占用号的处理 select GHZKBH,GHMZSJ,GHQSSJ,GHMZSJ,GHJSSJ,GHHZCK,nvl(CKXXDZ,CKMC00),YNBLMX into Vghzkbh,Vhzqsrq,Vhzqssj,Vhzjzrq,Vhzjzsj,Vghhzck,Vzsxx00,Vynblmx from SF_YSGHHB a,BM_CKBM00 b where a.GHHZCK = b.CKBH00(+) and GHHBID = Vghhbid; if nvl(Phzxh00,0)=0 then --取未用号 select min(HZXH00) into Vhzxh00 from YS_HBHZXH where GHHBID=Vghhbid and YYBZ00='1' and BRID00 is null and instrb(','||Vynblmx||',',','||to_char(HZXH00)||',')=0; end if; -- if Vhzxh00>0 then select SQ_SF_HZBR00_ID0000.nextval into Vhzlbid from dual; Vdlxh00:=nvl(Vhzxh00,0)*50; if Vhzlb00=1 then--普通病人 Vhzxhmc:=Lpad(to_char(Vhzxh00),4,'0'); elsif Vhzlb00=3 then Vhzxhmc:='Y'||Lpad(to_char(Vhzxh00),3,'0'); else --优待病人 Vhzxhmc:='L'||Lpad(to_char(Vhzxh00),3,'0'); end if; select SQ_SF_HZBR00_ID0000.nextval into Vhzlbid from dual; Insert into SF_HZBR00(ID0000,BRID00,GHH000,GHKS00,JZKS00,GHYS00,GHLB00,HZLB00,HZXH00, DJRQ00,DJSJ00,HZQSRQ,HZQSSJ,HZJZRQ,HZJZSJ,HZZT00,CZY000,YSPBID, JZZS00,HZSJD0,JZKSMC,GHYSXM,HZLBMC,HZXHMC,DLXH00,SFJZLB) select Vhzlbid,Pbrid00,Pghh000,Pghks00,Pghks00,Pjzys00,Pghlb00,Vhzlb00, Vhzxh00,Vczrq00,Vczsj00,Vhzqsrq,Vhzqssj,Vhzjzrq,Vhzjzsj,'0',Pczy000,Vghhbid, Vghhzck,substr(Vhzsjd0,9,5),b.BMMC00,a.ZWXM00,c.HZLBMC,Vhzxhmc,Vdlxh00,Psfjzlb from BM_YGBM00 a,BM_BMBM00 b,BM_HZLB00 c where a.YGBH00=Pjzys00 and b.BMBH00=Pghks00 and c.HZLB00=Vhzlb00; if V_value0<>'Y' then Update YS_HBHZXH set BRID00 = Pbrid00, BRXM00= Vbrxm00,GHH000=Pghh000 where GHHBID=Vghhbid AND HZXH00=Vhzxh00 and BRID00 is null; else Update YS_HBHZXH set BRID00 = Pbrid00, BRXM00= Vbrxm00,GHH000=Pghh000 where GHHBID=Vghhbid AND HZXH00=Vhzxh00 and ((nvl(BRID00,0)=0) or (BRID00=Pbrid00 and exists (select 1 from SF_YYBRB0 where YYID00=YS_HBHZXH.YYID00 and YYZT00='0'))); end if; if sql%notfound then Ptsxx00 :=to_char(Vhzxh00)||'已经被占用,请重试'; raise Ecustom; end if; end if; else --无号表 Vcounter:=Vcounter; end if; end if; --2017.12.27 if Vzsghzj='1' and Vhzlbid is not null then--有预挂号 --2018.11.14 select count(1) into Vcounter from SF_HZBR00 where ID0000=Vhzlbid; if Vcounter>0 then select YSPBID,GHH000,HZXH00,HZLB00 into Vghhbid,Vyghh00,Vhzxh00,Vhzlb00 from SF_HZBR00 where ID0000=Vhzlbid; --修改SF_HZBR00.GHH000,GHLB00,YS_HBHZXH.GHID00,SF_YYBRB0.GHID00,删除SF_BRXXB0 update SF_HZBR00 set GHH000=Pghh000,GHLB00=Pghlb00,HZZT00='3',GHYS00=decode(GHYS00,0,Pjzys00,GHYS00),GHYSXM=decode(GHYS00,0,Vjzysxm,GHYSXM), JZRQ00=Vczrq00,JZSJ00=Vczsj00 where ID0000 = Vhzlbid; update YS_HBHZXH set GHH000=Pghh000 where GHHBID=Vghhbid and HZXH00=Vhzxh00; update SF_YYBRB0 set GHID00=Pghh000 where YYRQ00=Vczrq00 and GHHBID=Vghhbid and GHID00=Vyghh00; delete SF_BRXXB0 where GHH000=Vyghh00; end if; end if; --2014.02.24 /* if Vghhbid>0 then select count(*) into Vcounter from BM_GHLBB0 where LBBH00 = Pghlb00 and lbmc00 like '%专家%'; if Vcounter>0 then select count(1) into Vcounter from SF_YYBRB0 where YYRQ00=Vczrq00 and GHHBID=Vghhbid and BRID00=Pbrid00 and VIP000='Y'; if Vcounter>0 then Ptsxx00 :='该病人为全球通VIP客户,在本院享有名医苑特诊转优的优惠,不允许挂专家号,请选择主任号!'; raise Ecustom; end if; end if; if Vhzlbid is null then Update SF_YYBRB0 set GHID00=Pghh000 where YYRQ00=Vczrq00 and GHHBID=Vghhbid and BRID00=Pbrid00 and VIP000='Y'; end if; end if; */ else--Vxzhzxh='N'排班时候不指定候诊序号,广州模式 begin Vhzsjd0 :=trim(SF_YS_HZSJ00(Vhzlbid, null)); --根据函数得到相关的时间段 exception when others then Ptsxx00 :='获得候诊时间出错误,请稍候再试!'; raise Ecustom; end; if Vhzsjd0 is not null then Vhzxh00 := nvl(substr(Vhzsjd0,35,5),'0'); Vdlxh00 := -100; if (Pghlb00<>-99999) then select to_char(nvl(max(HZXH00),to_number(Vhzxh00))), nvl(max(HZLB00),Vhzlb00), nvl(max(DLXH00),-100) into Vhzxh00, Vhzlb00, Vdlxh00 from VW_YS_HZBR00 where JZKS00=Pghks00 and JZYS00=Pjzys00 and BRID00=Pbrid00 and DLXH00>0 and GHLB00=-99999 and YSPBID=Vghhbid; end if; --zhr 2008.01.03 预约病人进行提前挂号,如果预约时间之前的候诊段有余号,会被自动转为普通病人。 select nvl(max(trim(HZLB00)),Vhzlb00) into Vhzlb00 from SF_HZBR00 where ID0000=Vhzlbid and HZLB00<>Vhzlb00; update SF_HZBR00 set HZQSRQ = nvl(substr(Vhzsjd0,1,8),Vczrq00), --候诊起始日期 HZQSSJ = nvl(substr(Vhzsjd0,9,8),Vczsj00), --候诊起始时间 HZJZRQ = nvl(substr(Vhzsjd0,18,8),Vczrq00), --候诊结束日期 HZJZSJ = nvl(substr(Vhzsjd0,26,8),Vczsj00), --候诊结束时间 HZXH00 = Vhzxh00 --候诊序号 where ID0000 = Vhzlbid; if (Vdlxh00<>-100) and (Vhzlb00=2) then update SF_HZBR00 set DLXH00=Vdlxh00 where ID0000 = Vhzlbid; end if; end if; end if; --SF_HZBR00的队列序号处理结束 if (Vghhbid > 0) then if (Pghlb00<>-99999) then update SF_YSGHHB SET GHYGHS=nvl(GHYGHS,0)+1 where GHHBID = Vghhbid; end if; if Vhzlb00='3' then update SF_YSGHHB SET GHYYHS=nvl(GHYYHS,0)+1 where GHHBID = Vghhbid; end if; end if; if Vghhbid is null then--没有预挂号 select max(GHHBID) into Vghhbid from SF_YSGHHB where GHMZSJ=Vczrq00 and GHKSBH=Pghks00 and TZBZ00='0' and Vczsj00 between GHQSSJ and GHJSSJ and GHYSBH=Pjzys00 ; end if; --VIP if Vxzhzxh='Y' and Pghlb00<>-99999 and Vghhbid>0 then select count(*) into Vcounter from BM_GHLBB0 where LBBH00 = Pghlb00 and lbmc00 like '%专家%'; if Vcounter>0 then select count(1) into Vcounter from SF_YYBRB0 where YYRQ00=Vczrq00 and GHHBID=Vghhbid and BRID00=Pbrid00 and VIP000='Y'; if Vcounter>0 then Ptsxx00 :='该病人为全球通VIP客户,在本院享有名医苑特诊转优的优惠,不允许挂专家号,请选择主任号!'; raise Ecustom; end if; end if; --if Vhzlbid is null then update SF_YYBRB0 set GHID00=Pghh000 where YYRQ00=Vczrq00 and GHHBID=Vghhbid and BRID00=Pbrid00 and VIP000='Y' and GHID00 is null; --end if; end if; insert into SF_BRXXB0(GHID00,BRBLH0,GHH000,YBGHH0,GHLB00,BRID00,SFCZ00,XM0000,XB0000,CSRQ00, FBBH00,YBZXLB,YBBRLB,LBBH00,GFZH00,GHRQ00,GHSJ00,GHY000,GHYXM0,GHKS00, JZRQ00,JZSJ00,JZKS00,JZYS00,JZYSXM,SFYY00,THBZ00,PJH000, GHYXTS,SFNLYD,HZLB00,HZSJD0,GHJE00,ZCFJE0,CZRQ00,CZSJ00,GHZKBH, GHSJD0,GHHBID,ZSXX00,HBQX00,GRSFEN,SFZZ00,YBLB00,BXLB00) select Pghh000,BRBLH0,Pghh000,'0',Pghlb00,BRID00,PSFCZ00,BRXM00,BRXB00,BRCSRQ, Vfbbh00,Vybzxlb,Vybbrlb,1,BRGFZH,nvl(trim(substr(Vhzsjd0,1,8)),Vczrq00),Vczsj00,Pczy000,Vczyxm0,Pghks00, nvl(trim(substr(Vhzsjd0,1,8)),Vczrq00),Vczsj00,Pghks00,Pjzys00,Vjzysxm,'N','1',0, Vghyxts,Vsfyd00,Vhzlb00,Vhzsjd0,nvl(Pghfje0,0),nvl(Pzcfje0,0),Vczrq00,Vczsj00,Vghzkbh, null,Vghhbid,Vzsxx00,'0',GRSFEN,Psfzz00,YBLB00,Pbxlb00 from BM_BRXXB0 where BRID00=Pbrid00; --重要来人短信通知 if ((Vybzxlb='L' and Vfbbh00=10) or (Vybzxlb='B' and Vfbbh00=8)) then SP_YJ_DXTZ00(Pbrid00,'来人提醒','挂号',Pczy000,Pczyks0,'N',Pzxcgbz,Ptsxx00,Pxxxx00); end if; --警惕患者短信通知 select instrb(','||nvl(max(VALUE0),',')||',',','||to_char(Pbrid00)||',') into Vcounter from XT_XTCS00 where NAME00='MZ_JTHZ_BRID'; if Vcounter>0 then SP_YJ_DXTZ00(Pbrid00,'警惕患者提醒','挂号',Pczy000,Pczyks0,'N',Pzxcgbz,Ptsxx00,Pxxxx00); end if; Vsql000 := 'select a.ZLXMID,decode(b.LBBH00,20,''3'',''4'') FJDJBZ,a.YDJM00 from BM_GHXMDY a,BM_ZLZD00 b where a.ZLXMID=b.ZLXMID and a.LBBH00 = '||to_char(Pghlb00)||' and a.SYBZ00 = ''1'''; select count(*) into Vcounter from YS_GHJMSZ where KS0000=Pghks00 and YS0000=Pjzys00 and exists(select 1 from BM_TYZD00 where ZDMC00='免挂号费医保中心' and BH0000=Vybzxlb); --优待病人0金额收费 select nvl(trim(max(value0)),'N') into Vydlsf0 from XT_XTCS00 where name00='YS_YDBRLJESF'; if Vydlsf0 <> 'Y' then if Vcounter > 0 or Vsfyd00='Y' then Vsql000:=Vsql000||' and b.LBBH00<>20'; end if; end if; --处理小儿加收 if Psfxejs = 'Y' then select trunc(sysdate)-trunc(to_date(brcsrq,'yyyyMMdd')) into Vcounter1 from bm_brxxb0 where brid00=Pbrid00; if Vcounter1 <= 2190 then --替换 Vsql000:=Vsql000||' and nvl(a.XECZBZ,0)<>''1'' union all select a.XEJSXM,decode(b.LBBH00,20,''3'',''4'') FJDJBZ,a.YDJM00 from BM_GHXMDY a,BM_ZLZD00 b where a.XEJSXM=b.ZLXMID and a.LBBH00 = '||to_char(Pghlb00)||' and a.SYBZ00 = ''1'' and nvl(a.XECZBZ,0)=''1'' '; --加收 Vsql000:=Vsql000||' union all select a.XEJSXM,decode(b.LBBH00,20,''3'',''4'') FJDJBZ,a.YDJM00 from BM_GHXMDY a,BM_ZLZD00 b where a.XEJSXM=b.ZLXMID and a.LBBH00 = '||to_char(Pghlb00)||' and a.SYBZ00 = ''1'' and nvl(a.XECZBZ,0)<>''1'' '; end if; end if; ls_ghje00 := 0; ls_ghfzje := 0; ls_zcfje0 := 0; if Vsfxmkqyy='Y' then --加金额为了能收费成功,因为能否挂号成功以及挂号需要的自费金额多少靠口腔医院的HIS进行判断,挂号成功会同步余额回来 update SF_BRZHXX set XJYE00=XJYE00+100,ZYE000=ZYE000+100,YKZYE0=YKZYE0+100 where BRID00=Pbrid00 and JFLBID=1; end if; open CUR_GHXMDY for Vsql000; loop fetch CUR_GHXMDY into Vzlxmid,Vfjdjbz,Vsfydxm; exit when CUR_GHXMDY%notfound; Vyjdjh0 := null; if Vsfydxm = 'Y' and Vsfyd00='Y' and Vydlsf0 = 'Y' then Vyjzhje := -99999999; else Vyjzhje := 0; end if; SP_YJ_YJSQWH( 2, --操作内容 1修改 2增加 3删除 Vyjdjh0, --操作的医技单据号 Pghh000, --挂号id '0', --门诊住院标志 Vzlxmid, --诊疗项目id null, --子项目id串,如果没有传入参数,表示使用所有明细项 null, --诊断id null, --诊断名称 null, --标本ID null, --特殊病种编号 'N', --医技录入标志 'N', --急诊标志 Pczy000, --开单医生 Pczyks0, --开单科室编号 null, --开单病区 Pczyks0, --医技科室编号 1, --数量 null, --备注 Vfjdjbz, --附加单据标志 Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 null, null, null, 1, null, null, null, null, null, null, null, null, 0, 1, Vyjzhje ); if Pzxcgbz = 0 then Ptsxx00 := '申请出错'; raise Ecustom; end if; select zje000 into ls_je0000 from yj_yw0000 where yjdjh0 = Vyjdjh0; ls_ghfzje:= ls_ghfzje + ls_je0000; if Vfjdjbz = '3' then ls_ghje00 := ls_ghje00 + ls_je0000; else ls_zcfje0 := ls_zcfje0 + ls_je0000; end if; if (Vybghfs='0') or (Vybghfs='1' and Vfjdjbz='3') then select XKH000 into Vxkh000 from BM_YGBM00 where YGBH00=Pczy000; SP_YJ_YWZX00( Vyjdjh0, Vzlxmid, 1, 2, Vxkh000, Pczyks0, 'N', 0 ); end if; end loop; close CUR_GHXMDY; --select nvl(sum(HJJE00),0) into Vghje00 from SF_FYMX00 where DJH000=Vdjh000; update SF_BRXXB0 set GHJE00 = ls_ghje00,ZCFJE0 = ls_zcfje0, GHFZJE = ls_ghfzje where GHH000 = Pghh000; --变更预约费信息 select nvl(max(value0),'0') into Vzlxmid from XT_XTCS00 where name00='MZSF_YYFWZLXMID'; if (Pghlb00>0) and (Vzlxmid>0) then update SF_BRFY00 set MZH000=Pghh000,MZID00=to_number(Pghh000) where BRID00=Pbrid00 and MZH000='-1'; update SF_FYMX00 set MZH000=Pghh000 where BRID00=Pbrid00 and MZH000='-1' and SFLB00='1'; update YJ_YW0000 set ZYHGHH=Pghh000,ZYGHID=to_number(Pghh000) where BRID00=Pbrid00 and ZLXMID=Vzlxmid and MZZYBZ='0' and ZYHGHH='-1'; end if; Pzxcgbz:=1; if pcommit='Y' then commit; end if; exception when no_data_found then raise_application_error(-20001,substrb('没有找到数据!*'||sqlerrm,1,240)); when Ecustom then if Pcwts00 = '0' then raise_application_error(-20010,substrb(Ptsxx00||'!*',1,240)); else return; end if; when others then raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240)); end; / --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ create or replace procedure SP_SF_BRZHXX_ICKF00 ( Popflag in number , --0售卡 1退卡 2换卡 3补新卡 4挂失 5取消挂失 6报废卡 7报废卡回收 8重置 9直接改为空白卡 10退卡押金(收费模式) Pbrid00 in number , --ID号 Pickh00 in varchar2 , --IC卡号 Pygbh00 in number , --员工编号 Pkl0000 in varchar2 , --账户口令,就诊卡的口令 Poldick in varchar2 , --旧IC卡号 当Popflag=2时 Pskbz00 in char , --售卡标志 1售病人卡 2售员工卡 Pczy000 in number , --操作员 Pczyks0 in number , --操作员科室 Pcommit in varchar2 default 'N' , --是否提交 Pzxcgbz out number , --执行成功标志 1成功 0失败 Ptsxx00 out varchar2 , --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 out varchar2 , --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Pyybr00 in char default 'N' , --预约病人,该参数现不用 Psfsqyj in char default 'Y' , --是否扣卡押金 Pmzzybz in char default '0' , --门诊住院标志 0门诊 1住院 Psfybhk in char default 'N' , --是否医保换卡(院内直接换卡) Pzffsbh in number default null --支付方式编号 ) -- MODIFICATION HISTORY -- Person Date Comments -- lintj 2012.12.29 加 Pmzzybz -- lintj 2012.08.01 create -- qks 2012.09.25 修改错误提示内容 -- zhanghr 2012.10.30 增加记录新卡号功能 -- qks 2012.10.31 换卡和退卡,如果有收取卡费,IC_YHXX00.SFSKYJ改为1 -- qks 2013.04.11 SF_YYZCBR.ZSDJR0=Pczy000 -- qks 2013.06.25 增加入参Psfybhk -- jlg 2016.03.28 增加一卡通平台接口的处理 MZSF9-20160406-002 -- jlg 2016.04.12 一卡通平台接口处理修改 MZSF9-20160412-002 -- jlg 2016.12.05 退卡时冲负原收取的卡押金费用(为了兼容5.0的模式) MZSF9-20161205-003 -- jlg 2016.12.22 处理无门诊账户无卡病人的补卡问题 MZSF9-20161212-001 -- jlg 2017.01.16 处理无效卡(退卡)的病人的补卡问题 MZSF9-20170112-002 -- jlg 2017.09.08 处理退卡时原来收取的卡费会被退还的问题 MZSF9-20170907-001 -- jlg 2017.10.19 整理有关是否扣卡押金的问题 MZSF9-20171018-001 -- liwm 2018.03.21 记账病人卡押金相关 for MZSF9-20180317-002 -- liwm 2018.05.30 原先参数使用0,1做判断,但是费别编号是可能为0,或1的,改成Y,N for MZSF9-20180528-003 -- liwm 2018.06.07 门诊收费存储过程统一添加调用参数日志 for MZSF9-20180604-003 -- gzj 2018.08.14 新增Popflag=8就诊卡重置处理过程 for MZSF9-20180702-004 -- qks 2018.10.11 新增Popflag=9指定卡类代号(IC_YHXX00.KLDH00)的旧卡不做写卡操作,直接改为空白卡; for MZSF9-20181011-001 -- qks 2018.11.13 bug:解决莆田市民卡退卡问题; for MZSF9-20181113-002 -- qks 2018.12.04 新增Popflag=10,解决bug:门诊结算菜单下进行清账退卡操作,会出现先退卡再退卡费,导致卡费无法退还给病人; for MZSF9-20181203-003 -- pwt 2018.12.22 为适应分院模式功能改造,IC_YWLS00插入CZYKS0; for MZSF9-20181222-004 -- jlg 2019.07.22 增加自费卡补卡时任何情况下都要扣卡费的处理 MZSF9-20190722-001 -- jlg 2019.09.03 处理有些医院换卡也要扣卡费的情况(跟补卡一样),加参数SF_YNKHKSFQZSQKF处理 MZSF9-20190830-001 -- linzetao 2020.03.03 增加入参Pzffsbh(支付方式编号), 增加调用存储过程SP_SF_ICYJMX_INSERT, 记录IC卡押金操作明细 MZSF9-20200224-002 -- linzetao 2021.04.20 处理His57升9费用明细只能退升级前的卡押金 MZSF9-20210419-004 ----------------------------------------------------------------------------------------------------------------------------------------------- as Vicyhxx IC_YHXX00%rowtype; Vickh00 IC_YHXX00.ICKH00%type; --原挂失卡卡号 Voldklb IC_YHXX00.ICKLB0%type; Vicknbh IC_YHXX00.ICKNBH%type; Vnewklb IC_YHXX00.ICKLB0%type; Vickje0 IC_YHXX00.ICKJE0%type; Vbtlbhk XT_XTCS00.VALUE0%type; Vmxid00 SF_FYMX00.MXID00%type; Vqyykt0 XT_XTCS00.VALUE0%type; --是否启用一卡通接口 Vthkf00 XT_XTCS00.VALUE0%type; --退卡时是否退还之前收取的卡费 Vczyxm0 BM_YGBM00.ZWXM00%type; --操作员姓名 Vsfdm00 IC_YHXX00.SFDM00%type; Vkmh000 IC_YHXX00.KMH000%type; --卡面号 Vickf00 SF_FYMX00.HJJE00%type; Vxjye00 SF_BRZHXX.XJYE00%type; --现金余额 Vsfskyj char(1); Vcounter number(14,4); --计数器变量 Vczrq00 char(8); Vczsj00 char(8); Vmzzhid SF_BRZHXX.MZZHID%type; Ecustom exception; VSF_SFYEPDSFKJDJF XT_XTCS00.VALUE0%type; --医保记账病人卡押金处理 Vfbbh00 varchar2(20); --病人费别编号 Vdsqykf XT_XTCS00.VALUE0%type; --院内卡补卡是否都收取原卡费 Vhksqkf XT_XTCS00.VALUE0%type; --院内卡换卡是否强制收取卡费 Vsfsqkf number(1); --是否收取卡费 Vxxxlog varchar2(2000); Vcznr00 varchar2(2000); Vtyjexg SF_BRZHXX.TYJE00%type; --停用金额修改额 Vytyje0 SF_BRZHXX.TYJE00%type; --病人原停用金额 VUpgradeDate BM_TYZD00.MC0000%type; --His升级日期 begin Pzxcgbz := 0; Vickf00 := 0; Vsfsqkf := 0; Vtyjexg := 0; --置停用金额修改额为0 Vczrq00 := to_char(sysdate,'yyyymmdd'); Vczsj00 := to_char(sysdate,'hh24:mi:ss'); Vxxxlog := substr('POPFLAG:'||nvl(to_char(POPFLAG), 'null')||','||'PICKH00:'||nvl(to_char(PICKH00), 'null')||','||'PCZY000:'||nvl(to_char(PCZY000), 'null')||','||'PCZYKS0:'||nvl(to_char(PCZYKS0), 'null')||','||'PCOMMIT:'||nvl(to_char(PCOMMIT), 'null'),1,2000); Pxxxx00 := ''; SP_TransLog(sysdate,'SP_SF_BRZHXX_ICKF00',Pczy000,Pczyks0,Vxxxlog); --获取操作员姓名 select nvl(max(ZWXM00),' ') into Vczyxm0 from BM_YGBM00 where YGBH00 = Pczy000; select * into Vicyhxx from IC_YHXX00 where ICKH00 = Pickh00; --门诊病人退卡时是否退还之前收取的卡费 1是0否 select nvl(max(trim(VALUE0)),'0') into Vthkf00 from XT_XTCS00 where NAME00='SF_MZBRTKSSFTHZQSQDKF'; --门诊院内卡补卡(并作废原卡)时,是否都收取原卡的卡费(不管之前是否扣卡押金),0否(按原来的规则收取)1是(都收取),默认0 select nvl(max(trim(VALUE0)),'0') into Vdsqykf from XT_XTCS00 where NAME00='SF_YNKBKSFDSQYKF'; --门诊院内卡换卡是否强制收取原卡的卡费,0否1是,默认0 select nvl(max(trim(VALUE0)),'0') into Vhksqkf from XT_XTCS00 where NAME00='SF_YNKHKSFQZSQKF'; --医保记账病人卡押金处理判断条件处理 select ','||nvl(max(VALUE0), 'N')||',' into VSF_SFYEPDSFKJDJF from XT_XTCS00 where NAME00 = 'SF_SFYEPDSFKJDJF'; select ','||nvl(max(FBBH00), '')||',' into Vfbbh00 from BM_BRXXB0 where BRID00 = Pbrid00; if instr(VSF_SFYEPDSFKJDJF, ',Y,') >0 and instr(VSF_SFYEPDSFKJDJF, Vfbbh00) > 0 then VSF_SFYEPDSFKJDJF := '1'; else VSF_SFYEPDSFKJDJF := '0'; end if; --His升级日期 VUpgradeDate := SF_XT_TYZDMC('HIS升级字典','UpgradeDate'); if VUpgradeDate is null then VUpgradeDate := '0'; end if; --售卡 if Popflag = 0 then if Vicyhxx.ZT0000 <> '0' then Ptsxx00 :='该卡已用,请更换诊疗卡!'; raise Ecustom; end if; select count(*) into Vcounter from IC_YHXX00 where BRID00=pbrid00 and ZT0000='1'; if Vcounter>0 then Ptsxx00 :='病人持有有效卡,不能再售卡!'; raise Ecustom; end if; --修改就诊卡的信息 update IC_YHXX00 set BRID00 = Pbrid00, ZT0000 = '1', ICKMM0 = Pkl0000 where ICKH00 = Pickh00 and ZT0000 = '0'; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,Pskbz00,Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Pbrid00,Pczyks0); if Psfsqyj='Y' then--要扣卡押金的情况 update IC_YHXX00 set SFSKYJ='1' where ICKH00=Pickh00; if Pmzzybz = '0' then update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) + Vicyhxx.ICKJE0 where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg + nvl(Vicyhxx.ICKJE0, 0); --记录本次停用金额修改值 --如果记账病人不扣卡押金,撤销上一部的操作,SFSKYJ设置为0 停用金额减回去 for MZSF9-20180303-002 MZSF9-20180317-002 if VSF_SFYEPDSFKJDJF='1' then update IC_YHXX00 set SFSKYJ='0' where ICKH00=Pickh00; update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) - Vicyhxx.ICKJE0 where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg - nvl(Vicyhxx.ICKJE0, 0); --记录本次停用金额修改值 end if; end if; else update IC_YHXX00 set SFSKYJ='0' where ICKH00=Pickh00; end if; end if; --退卡 if Popflag = 1 then if Vicyhxx.ZT0000 = '4' then Ptsxx00 :='非法卡,请重新输入病人的就诊卡号!'; raise Ecustom; end if; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Vicyhxx.ICKH00,Pczy000,'5',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,nvl(Vicyhxx.BRID00,Pbrid00),Pczyks0); if Vthkf00 ='1' then --为了兼容处理5.0系统的模式,原来有收卡押金费用的,则需要进行冲负 jlg --但是如果之前是换卡收取的卡费,则不能被退还 jlg select nvl(sum(a.HJJE00),0) into Vickf00 from SF_FYMX00 a where a.XMBH00+0=Vicyhxx.SFDM00 and a.JFLBID = 1 and a.JZDH00+0= 0 and a.BRID00 = nvl(Vicyhxx.BRID00,Pbrid00) and (VUpgradeDate = '0' or a.CZRQ00 < VUpgradeDate); if Vickf00>0 then if Vicyhxx.BRID00 is null then select max(ICKH00) into VICKH00 from IC_YHXX00 where BRID00=Pbrid00 and ZT0000='1'; end if; SP_SF_FYMX00_ICKF00(1, --0收费 1退费 nvl(VICKH00,Pickh00),--ICK号 Vmxid00, --收费 Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); end if; end if; --2018.11.13 莆田市民卡,已经生成了新的空白卡,不能作废; 注意:在用的莆田市民卡,前台程序已经把卡号被改掉了。for MZSF9-20181113-002 update IC_YHXX00 set ZT0000 = '4' where ICKH00 = Pickh00 and ZT0000 <> '4' and ZT0000<>'0'; if sql%notfound then update IC_YHXX00 set ZT0000 = '4' where brid00 = Pbrid00 and KMH000=Vicyhxx.KMH000 and ZT0000='1'; end if; if Vicyhxx.SFSKYJ='1' then if Pmzzybz = '0' then select nvl(max(TYJE00),0) into Vytyje0 from SF_BRZHXX where BRID00 = Pbrid00 and JFLBID = 1; --取原停用金额 update SF_BRZHXX set TYJE00 = greatest(nvl(TYJE00,0)-Vicyhxx.ICKJE0,0) where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg - least(Vytyje0,nvl(Vicyhxx.ICKJE0,0)); --记录本次停用金额修改值, 取原停用金额与IC卡金额较小值 end if; end if; end if; if Popflag = 2 then --换卡 if Vicyhxx.ZT0000 <> '0' then Ptsxx00 :='非法卡,请重新输入病人的新就诊卡号!'; raise Ecustom; end if; begin select ICKJE0,ICKLB0,ICKNBH into Vickje0, Voldklb, Vicknbh from IC_YHXX00 where ICKH00=Poldick; exception when no_data_found then Ptsxx00 :='警告:该病人旧的卡已不存在!'; raise Ecustom; end; select nvl(max(trim(VALUE0)),'Y') into Vbtlbhk from XT_XTCS00 where NAME00='SF_BTLXKSFYXHK'; --不同类型卡是否允许换卡。 if Vbtlbhk = 'N' then select nvl(max(trim(ICKLB0)),'0') into Vnewklb from IC_YHXX00 where ICKH00=Pickh00 ; if Voldklb<>Vnewklb then Ptsxx00 :='警告:不同类别的卡不能换!'; raise Ecustom; end if; end if; --处理旧卡 insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,NEWICK,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Poldick,Pczy000,'E',Vczrq00,Vczsj00,Vickje0,Vicknbh,Pbrid00,Pickh00,Pczyks0); update IC_YHXX00 set ZT0000 = '4' where ICKH00 = Poldick and ZT0000 <> '4'; select count(*) into Vcounter from IC_YHXX00 where ICKH00 = Poldick and SFSKYJ='1'; if Vcounter>0 then if Pmzzybz = '0' then --先退旧卡卡押金 update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) - Vickje0 where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg - Vickje0; --记录本次停用金额修改值 end if; end if; --处理新卡 update IC_YHXX00 set BRID00 = Pbrid00, ZT0000 = '1', ICKMM0 = Pkl0000 where ICKH00 = Pickh00 and ZT0000 = '0'; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,'C',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Pbrid00,Pczyks0); if Psfsqyj='Y' then update IC_YHXX00 set SFSKYJ='1' where ICKH00=Pickh00; if Pmzzybz = '0' then --再扣新卡卡押金 update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) + Vicyhxx.ICKJE0 where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg + nvl(Vicyhxx.ICKJE0,0); --记录本次停用金额修改值 end if; --如果记账病人不扣卡费,处理 for MZSF9-20180303-002 MZSF9-20180317-002 if VSF_SFYEPDSFKJDJF='1' then update IC_YHXX00 set SFSKYJ='0' where ICKH00=Pickh00; update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) - Vicyhxx.ICKJE0 where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg - nvl(Vicyhxx.ICKJE0,0); end if; else update IC_YHXX00 set SFSKYJ='0' where ICKH00=Pickh00; end if; if Psfybhk = 'Y' then update bm_brxxb0 set YBKH00=(select KMH000 from IC_YHXX00 where BRID00=Pbrid00 and ICKH00 = Pickh00 and ZT0000='1') where BRID00=Pbrid00; update zy_brxxb0 set YBKH00=(select YBKH00 from BM_BRXXB0 where BRID00 = Pbrid00) where BRID00=Pbrid00 and substr(BRZT00,1,1) in ('2','3'); end if; --旧卡为院内卡,参数设定换卡也扣卡费的情况下 if Vhksqkf = '1' and Voldklb = '0' then SP_SF_FYMX00_ICKF00(0, --0收费 1退费 Poldick, --ICK号 Vmxid00, --收费 Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); end if; end if; if Popflag = 3 then --补卡 if Vicyhxx.ZT0000 <> '0' then Ptsxx00 :='该卡非空白卡,请插入空白的就诊卡号!'; raise Ecustom; end if; select count(*) into Vcounter from IC_YHXX00 where BRID00 = Pbrid00 and ZT0000 ='1'; if Vcounter>0 then Ptsxx00 :='该病人已存在有有效卡,不能补卡!'; raise Ecustom; end if; select nvl(max(ICKH00),'0'),nvl(max(ICKJE0),'0') into Vickh00,Vickje0 from IC_YHXX00 where BRID00 = Pbrid00 and ZT0000 = '2'; if Vickh00 = '0' then Ptsxx00 :='该病人卡还未挂失不能补卡!'; --raise Ecustom; --现在这种情况不报错,因为存在原先无卡的病人现在补卡的情况 jlg else --挂失补卡的话,先报废原挂失卡 SP_SF_BRZHXX_ICKF00( 6, --0售卡 1退卡 2换卡 3补新卡 4挂失 5取消挂失 6报废卡 7报废卡回收 Pbrid00, --ID号 Vickh00, --IC卡号 Pygbh00, --员工编号 Pkl0000, --账户口令,就诊卡的口令 Vickh00, --旧IC卡号 当Popflag=2时 Pskbz00, --售卡标志 1售病人卡 2售员工卡 Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Pyybr00, --预约病人 Psfsqyj, --是否收取卡押金 Pmzzybz, --门诊住院标志 0门诊 1住院 Psfybhk, --是否医保换卡(院内直接换卡) Pzffsbh --支付方式编号 ); update IC_YWLS00 set NEWICK=Pickh00 where ICKH00=Vickh00 and YWCZ00='4' and CZRQ00=Vczrq00; end if; update IC_YHXX00 set BRID00 = Pbrid00, ZT0000 = '1', ICKMM0 = Pkl0000 where ICKH00 = Pickh00 and ZT0000 = '0'; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,'F',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Pbrid00,Pczyks0); if Psfsqyj='Y' then update IC_YHXX00 set SFSKYJ='1' where ICKH00=Pickh00; if Pmzzybz = '0' then Vtyjexg := Vtyjexg + nvl(Vicyhxx.ICKJE0,0); update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) + Vicyhxx.ICKJE0 where BRID00 = Pbrid00 and JFLBID = 1; --如果病人没有账户信息资料, 则新增一笔 if sql%notfound then select SQ_SF_BRZHXX_ZHYEID.nextval into Vmzzhid from dual; insert into SF_BRZHXX(MZZHID,JFLBID,BRID00,SFDJ00,KHRQ00,KHSJ00, CZYBH0,CZYXM0,XJYE00,ZZYE00,ZYE000,YKZYE0,BJJE00,TYJE00,YXQFJE,YBZHYE,KL0000) values(Vmzzhid,1,Pbrid00,'0',Vczrq00,Vczsj00, Pczy000,Vczyxm0,0,0,0,0,0,Vicyhxx.ICKJE0,0,0,Pkl0000); --ad_TYJE00 end if; --如果记账病人不扣卡费,处理 if VSF_SFYEPDSFKJDJF='1' or Vdsqykf = '1' then update IC_YHXX00 set SFSKYJ='0' where ICKH00=Pickh00; update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) - Vicyhxx.ICKJE0 where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg - nvl(Vicyhxx.ICKJE0,0); end if; end if; else update IC_YHXX00 set SFSKYJ='0' where ICKH00=Pickh00; end if; if Pmzzybz = '0' then update SF_YYZCBR set ZT0000 = '1', ZSDJR0 = Pczy000, DJRQ00 = Vczrq00 where BRID00 = Pbrid00; end if; end if; if Popflag = 4 then --挂失 update IC_YHXX00 set ZT0000 = '2' where ICKH00 = Pickh00; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,'3',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Vicyhxx.BRID00,Pczyks0); end if; if Popflag = 5 then --取消挂失 update IC_YHXX00 set ZT0000 = '1' where ICKH00 = Pickh00; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,'6',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Vicyhxx.BRID00,Pczyks0); end if; if Popflag = 6 then --报废 begin select ICKJE0,ICKLB0,ICKNBH,SFSKYJ into Vickje0, Voldklb, Vicknbh,Vsfskyj from IC_YHXX00 where ICKH00=Poldick; exception when no_data_found then Ptsxx00 :='警告:该病人旧的卡已不存在!'; raise Ecustom; end; if Vsfskyj='1' then if Pmzzybz = '0' then --退还卡押金 update SF_BRZHXX set TYJE00 = nvl(TYJE00, 0) - Vickje0 where BRID00 = Pbrid00 and JFLBID = 1; Vtyjexg := Vtyjexg - Vickje0; end if; Vsfsqkf:=1; elsif Vdsqykf = '1' then Vsfsqkf:=1; elsif VSF_SFYEPDSFKJDJF='1' then --如果记账病人不扣卡费,在这里还是要扣旧的卡费 for MZSF9-20180303-002 MZSF9-20180317-002 Vsfsqkf:=1; end if; --有收取卡费 if Vsfsqkf = 1 then SP_SF_FYMX00_ICKF00(0, --0收费 1退费 Poldick, --ICK号 Vmxid00, --收费 Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); end if; update IC_YHXX00 set ZT0000 = '3' where ICKH00 = Pickh00; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,'4',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Vicyhxx.BRID00,Pczyks0); end if; if Popflag = 7 then --报废卡回收 begin select ICKJE0,ICKLB0,ICKNBH,SFSKYJ into Vickje0, Voldklb, Vicknbh,Vsfskyj from IC_YHXX00 where ICKH00=Pickh00; exception when no_data_found then Ptsxx00 :='警告:该病人旧的卡已不存在!'; raise Ecustom; end; update IC_YHXX00 set ZT0000 = '4' where ICKH00 = Pickh00; insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,'A',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Vicyhxx.BRID00,Pczyks0); if Vsfskyj='1' then SP_SF_FYMX00_ICKF00(1, --0收费 1退费 Pickh00, --ICK号 Vmxid00, --收费 Pczy000, --操作员 Pczyks0, --操作员科室 'N', --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); end if; end if; if Popflag = 8 then --就诊卡重置 if Vicyhxx.ICKLB0 <> '2' then Ptsxx00 := '该卡是非医保卡,不能重置!'; raise Ecustom; end if; select count(*) into Vcounter from (select CFLSH0 from VW_SF_CFMX00 where BCCFH0 is null and THBZ00='0' and BRID00 = Pbrid00 union select to_char(YJDJH0) from VW_SF_YJYWMX where CXDJH0 is null and BRID00 = Pbrid00 ); if Vcounter > 0 then Ptsxx00 := '存在未结算的费用,请先对费用进行结算'; raise Ecustom; end if; select XJYE00 into Vxjye00 from SF_BRZHXX where BRID00 = Pbrid00; if Vxjye00 > 0 then Ptsxx00 := '请先退还卡内可用余额'; raise Ecustom; end if; update IC_YHXX00 set BRID00='',ZT0000='0' where BRID00 = Pbrid00; Vcznr00 := '修改 BRID00:' || Pbrid00 || ' ->'' ZT0000:' || Vicyhxx.ZT0000 || ' -> 0'; insert into XT_XTCZRZ(CZID00,CZTable,CZLX00,CZRYBM,CZNR00) values(SQ_XT_XTCZRZ_ID0000.NEXTVAL,'IC_YHXX00',1,Pczy000,Vcznr00); end if; if Popflag = 9 then --直接改为空白卡 for MZSF9-20181011-001 update IC_YHXX00 set BRID00='',ZT0000='0' where ICKH00 = Pickh00 and ZT0000 in ('3','4','0'); if sql%notfound=false then insert into IC_YWLS00(YWID00,ICKH00,YGBH00,YWCZ00,CZRQ00,CZSJ00,FSJE00,ICKNBH,BRID00,SFSKYJ,CZYKS0) values(SQ_IC_YWLS00_YWID00.nextval,Pickh00,Pczy000,'7',Vczrq00,Vczsj00,Vicyhxx.ICKJE0,Vicyhxx.ICKNBH,Vicyhxx.BRID00,Vicyhxx.SFSKYJ,Pczyks0); end if; end if; if Popflag = 10 then --退卡押金(收费模式) if Vthkf00 ='1' then --为了兼容处理5.0系统的模式,原来有收卡押金费用的,则需要进行冲负 jlg --但是如果之前是换卡收取的卡费,则不能被退还 jlg select nvl(sum(a.HJJE00),0) into Vickf00 from SF_FYMX00 a where a.XMBH00+0=Vicyhxx.SFDM00 and a.JFLBID = 1 and a.JZDH00+0= 0 and a.BRID00 = nvl(Vicyhxx.BRID00,Pbrid00) and (VUpgradeDate = '0' or a.CZRQ00 < VUpgradeDate); if Vickf00>0 then if Vicyhxx.BRID00 is null then select max(ICKH00) into VICKH00 from IC_YHXX00 where BRID00=Pbrid00 and ZT0000='1'; end if; SP_SF_FYMX00_ICKF00(1, --0收费 1退费 nvl(VICKH00,Pickh00),--ICK号 Vmxid00, --收费 Pczy000, --操作员 Pczyks0, --操作员科室 Pcommit, --是否提交 Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); end if; end if; end if; --政和县启用一卡通平台接口 jlg select nvl(max(trim(VALUE0)),'N') into Vqyykt0 from XT_XTCS00 where NAME00='SF_SFQYYKTPTJK'; if Vqyykt0 ='Y' then select count(1) into Vcounter from PT_HIS_BRXX where HISBRID = Pbrid00 ; --and KH0000 = Pickh00; --如果该病人为一卡通病人 ,记录一卡通卡状态变更记录 卡状态 0可用 1已用 2冻结 3挂失 4注销 if Vcounter >0 then if Popflag = '0' then --0售卡 insert into PT_HIS_KZTBGB(LSH000,KH0000,KZT000,CZR000,SFBK00,PTREAD) values(SQ_PT_HIS_KZTBGB_LSH000.nextval,Pickh00,'1',Vczyxm0,'N','0'); elsif Popflag = '1' then --1退卡 insert into PT_HIS_KZTBGB(LSH000,KH0000,KZT000,CZR000,SFBK00,PTREAD) values(SQ_PT_HIS_KZTBGB_LSH000.nextval,Pickh00,'4',Vczyxm0,'N','0'); elsif Popflag = '2' then --2换卡 --更改PT_HIS_BRXX的KH0000为新卡号 update PT_HIS_BRXX set KH0000 = Pickh00,PTREAD = '0' where HISBRID = Pbrid00 ; --原卡注销 insert into PT_HIS_KZTBGB(LSH000,KH0000,KZT000,CZR000,SFBK00,PTREAD) values(SQ_PT_HIS_KZTBGB_LSH000.nextval,Poldick,'4',Vczyxm0,'N','0'); --建新卡(问题:这张新卡是否一卡通新卡?如果是一卡通新卡不是要先传给一卡通平台看下是否有效(一卡通入库)?,如果返回是无效呢?...) --jlg insert into PT_HIS_KZTBGB(LSH000,KH0000,KZT000,CZR000,SFBK00,PTREAD) values(SQ_PT_HIS_KZTBGB_LSH000.nextval,Pickh00,'1',Vczyxm0,'N','0'); elsif Popflag = '3' then --3补新卡 --更改PT_HIS_BRXX的KH0000为新卡号 select KMH000 into Vkmh000 from IC_YHXX00 where ICKH00 = Pickh00; update PT_HIS_BRXX set KH0000 = Pickh00,KMH000 = Vkmh000,PTREAD = '0' where HISBRID = Pbrid00 ; --记录补卡操作 ,Vickh00 原挂失卡卡号,从上面补卡操作里得到 insert into PT_HIS_KZTBGB(LSH000,KH0000,KZT000,CZR000,SFBK00,NEWKH0,NEWKMH,BKCZR0,PTREAD) values(SQ_PT_HIS_KZTBGB_LSH000.nextval,Vickh00,'4',Vczyxm0,'Y',Pickh00,Vkmh000,Vczyxm0,'0'); elsif Popflag = '4' then --4挂失 insert into PT_HIS_KZTBGB(LSH000,KH0000,KZT000,CZR000,SFBK00,PTREAD) values(SQ_PT_HIS_KZTBGB_LSH000.nextval,Pickh00,'3',Vczyxm0,'N','0'); elsif Popflag = '5' then --5取消挂失 insert into PT_HIS_KZTBGB(LSH000,KH0000,KZT000,CZR000,SFBK00,PTREAD) values(SQ_PT_HIS_KZTBGB_LSH000.nextval,Pickh00,'1',Vczyxm0,'N','0'); /*elsif Popflag = '6' then --6报废卡 --无此操作 elsif Popflag = '7' then*/ --7报废卡回收 --无此操作 end if; end if; end if; --在IC卡操作明细表里新增一笔 SP_SF_ICYJMX_INSERT( Pbrid00, --病人ID Pczy000, --操作员 Pczyks0, --操作员科室 Vtyjexg, --停用金额修改值 Pzffsbh, --支付方式 '', --备注 'N', --Pcommit Pzxcgbz, --执行成功标志 1成功 0失败 Ptsxx00, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 ); Pzxcgbz:=1; if pcommit='Y' then commit; end if; exception when no_data_found then raise_application_error(-20001,substrb('没有找到数据!*'||sqlerrm,1,240)); when Ecustom then raise_application_error(-20010,substrb(Ptsxx00||'!*',1,240)); when others then raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240)); end; / --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ create or replace procedure SP_SF_NEWYBJK_JSQDQUERY( PYBJKID in number ,--输入:医保接口ID PJKCJBM in varchar2 ,--输入:接口场景编码 PBRID00 in number ,--输入:病人ID PGHID00 in number ,--输入:挂号ID PCZY000 in number ,--输入:操作员编码 PCZYXM0 in varchar2 ,--输入:操作员姓名 PJZDH00 in number ,--输入:结账单号 PDATALX in number ,--输入:数据获取类型 0:HIS内部直接生成 1:获取海泰drg更新数据[医保交互后] 2:更新部分[医保交互后] PQQCS00 in varchar2 default '' ,--输入(可空):请求参数(XML格式) PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 PZXZT00 out number ,--输出:执行状态 0:失败 1:成功 PFHCS00 out varchar2 ,--输出:返回参数(XML格式) PERRMSG out varchar2 --输出:错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2021.11.03 create by 住院医疗保障基金结算清单信息查询 by MZSF9-20211104-001 --zhangyc 2021.11.08 增加医保返回ybtcPay by MZSF9-20211110-001 -- --------- ---------- ------- LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_COUNT0 number(12,2); LS_ERRSTR varchar2(50); RGHXX SF_BRXXB0%rowtype; --挂号信息 RBRXX BM_BRXXB0%rowtype; --基本信息 RJZXX SF_JZB000%rowtype; --结账表 LS_JKFSZ0 SF_YBJKMX.JKFSZ0%type;--接口发送值 LS_JKFHZ0 SF_YBJKMX.JKFHZ0%type;--接口返回值 LS_dscg_time varchar2(14); --dscg_time 出院时间 number(14) LS_adm_caty varchar2(20); --adm_caty 入院科别 LS_dscg_caty varchar2(20); --dscg_caty 出院科别 LS_resp_nurs_name varchar2(50); --resp_nurs_name 责任护士姓名 varchar2(50) LS_resp_nurs_code varchar2(30); --resp_nurs_code 责任护士代码 varchar2(30) LS_chfpdr_name varchar2(50); --chfpdr_name 主诊医师姓名 varchar2(50) LS_chfpdr_code varchar2(30); --chfpdr_code 主诊医师代码 varchar2(30) LS_setl_begn_date varchar2(8); --setl_begn_date 结算开始日期 number(8) LS_setl_end_date varchar2(8); --setl_end_date 结算结束日期 number(8) LS_hi_paymtd varchar2(3); --hi_paymtd 医保支付方式 varchar2(3) LS_psn_selfpay number(12,2); --psn_selfpay 个人自付 number(16,2) Y LS_psn_ownpay number(12,2); --psn_ownpay 个人自费 number(16,2) Y=YBYL63(bkc011)  LS_acct_pay number(12,2); --acct_pay 个人账户支出 number(16,2) Y LS_psn_cashpay number(12,2); --psn_cashpay 个人现金支付 number(16,2) Y LS_HJJE00 SF_JZB000.HJJE00%type;--合计金额 LS_TCJJZF SF_JZB000.TCJJZF%type;--统筹基金 LS_GRZHZF SF_JZB000.GRZHZF%type;--医保账户支付 LS_ZFJE00 SF_JZB000.ZFJE00%type;--个人支付 LS_XJFKJE SF_JZB000.XJFKJE%type;--现金支付 LS_PJH000 SF_JZB000.PJH000%type;--票据号 LS_bill_code varchar2(50); --bill_code 票据代码 varchar2(50) Y LS_bill_no varchar2(50); --bill_no 票据号码 varchar2(30) Y LS_biz_sn varchar2(50); --biz_sn 业务流水号 varchar2(50) Y LS_payinfo_Json SF_YBJKMX.VALUE0%type;--[字符]基金支付信息 LS_opspdiseinfo_Json SF_YBJKMX.VALUE0%type;--[字符]门诊慢特病诊断信息 LS_diseinfo_Json SF_YBJKMX.VALUE0%type;--[字符]住院诊断信息< diseinfo> LS_iteminfo_Json SF_YBJKMX.VALUE0%type;--[字符]收费项目信息 LS_oprninfo_Json SF_YBJKMX.VALUE0%type;--[字符]手术操作信息 LS_icuinfo_Json SF_YBJKMX.VALUE0%type;--[字符]重症监护信息 LS_bldinfo_Num number(12);--[数量]输血信息 LS_payinfo_Num number(12);--[数量]基金支付信息 LS_opspdiseinfo_Num number(12);--[数量]门诊慢特病诊断信息 LS_diseinfo_Num number(12);--[数量]住院诊断信息< diseinfo> LS_iteminfo_Num number(12);--[数量]收费项目信息 LS_oprninfo_Num number(12);--[数量]手术操作信息 LS_icuinfo_Num number(12);--[数量]重症监护信息 LS_NullStr varchar2(20);--空值字符 LS_YBYL52 SF_JZB000.YBYL52%type;--YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_YBYL53 SF_JZB000.YBYL53%type;--YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_YBYL54 SF_JZB000.YBYL54%type;--YBYL54 bkc040 个人现金支付金额(实付现金) LS_YBYL55 SF_JZB000.YBYL55%type;--YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 LS_YBYL56 SF_JZB000.YBYL56%type;--YBYL56 bkc045 其中:统筹基金支付 LS_YBYL57 SF_JZB000.YBYL57%type;--YBYL57 bkc059 其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_YBYL58 SF_JZB000.YBYL58%type;--YBYL58 bkc052 其中:大病保险基金支付(商业保险支付) LS_YBYL59 SF_JZB000.YBYL59%type;--YBYL59 bkc062 其中:精准扶贫医疗叠加 LS_YBYL60 SF_JZB000.YBYL60%type;--YBYL60 bkc060 其中:医疗救助基金 LS_YBYL61 SF_JZB000.YBYL61%type;--YBYL61 ake173 其中:其他基金支付 LS_YBYL62 SF_JZB000.YBYL62%type;--YBYL62 ake026 其中:企业补充 LS_YBYL63 SF_JZB000.YBYL63%type;--YBYL63 bkc011 个人自费(非医保费用) LS_YBYL67 SF_JZB000.YBYL67%type;--YBYL67 bkc612 补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_YBYL68 SF_JZB000.YBYL68%type;--YBYL68 bkc064 产前检查费(医保返回) LS_YBDJH0 varchar2(30);--医保单据号 LS_JZDH00 number(10); LS_DYBZBM XT_ICD900.DYBZBM%type;--医保诊断对应编码 LS_DYJBMC XT_ICD900.DYJBMC%type;--医保诊断对应名称 LS_diag_code varchar2(50);--diag_code 诊断代码 varchar2(50) LS_diag_name varchar2(100);--diag_name 诊断名称 varchar2(100) LS_psn_no varchar2(30);--psn_no:人员编号 LS_AAZ149 varchar2(50);--特殊病种编码 LS_TSBZBH varchar2(50);--特殊病种编码 LS_TSBZMC varchar2(100);--特殊病种名称 LS_jsqd_Notsend_list varchar2(100);--医疗基金结算清单不发送list多个|隔开 LS_JSQD_MainNodeName varchar2(100);--医疗保障基金结算清单上传、查询主节点编码:(分隔符用|)(参考格式:setlinfo|setlinfo) LS_MainNodeName varchar2(50); --主项节点编码 LS_setlinfo_Json SF_YBJKMX.VALUE0%type;--结算清单信息开始 LS_VALUE0 SF_YBJKMX.VALUE0%type;-- LS_otp_wm_dise varchar2(200);--门(急)诊诊断(西医诊断) LS_wm_dise_code varchar2(50);--西医疾病代码 LS_otptcmdise varchar2(200);--门(急)诊诊断(中医诊断) LS_tcmdisecode varchar2(50);--中医疾病代码 LS_BAKXML varchar2(200); LS_gend varchar2(10);--性别 LS_opsp_diag_caty varchar2(50); --门诊慢特病诊断科别 LS_fixmedins_code varchar2(50);--定点医药机构编号 LS_fixmedins_name varchar2(50);--定点医药机构名称 LS_YYID00 XT_YYXX00.YYID00%type;--医院ID号 LS_YYQC00 XT_YYXX00.YYQC00%type;--医院全称 LS_YYJC00 XT_YYXX00.YYJC00%type;--医院简称 LS_GJBZBM XT_YYXX00.GJBZBM%type;--国家标准编码 LS_medins_fill_dept varchar2(50);--医疗机构填报部门 LS_medins_fill_psn varchar2(50);--医疗机构填报人 LS_YGBMMC BM_BMBM00.BMMC00%type;--员工部门名称 LS_YGZWXM BM_YGBM00.ZWXM00%type;--员工中文姓名 LS_setl_list_sn varchar2(30);--结算清单流水号:9 位 格式:年度编码(2 位) 顺序号编码(7 位) LS_YBTCPAY SF_YBJSD0.YBTCPAY%type;--ybtcPay:医保统筹基金 cursor CUR_YBJKZD is select a.* from BM_YBJKZD A where 1=1 and A.JKBM00=2 and A.SFYX00='1' order by A.PXXH00,A.NBID00; --诊断信息 cursor CUR_BRZDXX is select a.ZZDBZ0,A.ICD900 as ZDM000,a.ZDMC00 as ZDMC00 from YS_BRZDXX A where 1=1 and A.GHID00=PGHID00 order by A.ICD900; --基金支付信息开始 cursor CUR_payinfo is select tt.fund_pay_type, sum(tt.fund_payamt) as fund_payamt from ( select decode(aa.ZFFS00,3,'310200',4,'310100',16,'320100','390100') as fund_pay_type,--fund_pay_type 基金支付类型 varchar2(6) aa.JFJE00 as fund_payamt--fund_payamt 基金支付金额 number(16,2) from SF_BRJFB0 AA where aa.BRID00=PBRID00 and ((nvl(PJZDH00,0)>0 and aa.JZDH00=PJZDH00) or (nvl(PJZDH00,0)=0 and 1=1)) and aa.ZFFS00 in (3,4,10,11,13,14,15,16) ) tt group by tt.fund_pay_type ; --改为特殊病种 /* --门诊慢特病诊断信息开始 cursor CUR_opspdiseinfo is select a.ZZDBZ0 as ZZDBZ0, a.ZDMC00 as diag_name,--1 diag_name 诊断名称 varchar2(100) a.ICD900 as diag_code,--2 diag_code 诊断代码 varchar2(20) null as oprn_oprt_name,--3 oprn_oprt_name 手术操作名称 varchar2(500) null as oprn_oprt_code,--4 oprn_oprt_code 手术操作代码 varchar2(30) '1' as maindiag_flag--5 maindiag_flag 主诊断标志 varchar2(3) ,0:否' '1','是' from YS_BRZDXX A where 1=1 and A.GHID00=PGHID00 order by A.ICD900 ; */ --门诊慢特病诊断信息开始 cursor CUR_opspdiseinfo is select '0' as ZZDBZ0, LS_TSBZMC as diag_name,--1 diag_name 诊断名称 varchar2(100) LS_TSBZBH as diag_code,--2 diag_code 诊断代码 varchar2(20) null as oprn_oprt_name,--3 oprn_oprt_name 手术操作名称 varchar2(500) null as oprn_oprt_code,--4 oprn_oprt_code 手术操作代码 varchar2(30) '0' as maindiag_flag--5 maindiag_flag 主诊断标志 varchar2(3) ,0:否' '1','是' from dual A where LS_TSBZBH is not null ; --住院诊断信息开始 cursor CUR_diseinfo is select a.ZZDBZ0 as ZZDBZ0, decode(a.ZZDBZ0,'3','1','2') as diag_type,--1 diag_type 诊断类别 varchar2(3) '1','西医主要诊断','2','西医其他诊断' '3','中医主病诊断' '4','中医主证诊断' a.ICD900 as diag_code,--2 diag_code 诊断代码 varchar2(20) a.ZDMC00 as diag_name,--3 diag_name 诊断名称 varchar2(100) '4' as adm_cond_type,--4 adm_cond_type 入院病情类型 varchar2(3) 1','有' ,'3','情况不明' '2','临床未确定' '4','无' decode(a.ZZDBZ0,'3','1','0') as maindiag_flag--5 maindiag_flag 主诊断标志 varchar2(3) 0:否' '1','是' from YS_BRZDXX A where 1=2 and A.GHID00=PGHID00 order by A.ICD900 ; --收费项目信息开始 cursor CUR_iteminfo is select tt.med_chrgitm as med_chrgitm, sum(tt.amt) as amt, sum(tt.claa_sumfee) as claa_sumfee, sum(tt.clab_amt) as clab_amt, sum(tt.fulamt_ownpay_amt) as fulamt_ownpay_amt, sum(tt.oth_amt) as oth_amt from( select nvl(CC.GJFPBH,'14') as med_chrgitm,--1 med_chrgitm 医疗收费项目 varchar2(6) nvl(bb.akc227,0) as amt,--2 amt 金额 number(16,2) =akc227 nvl(bb.bkc008,0) as claa_sumfee,--3 claa_sumfee 甲类费用合计 number(16,2)=bkc008 nvl(bb.bkc009,0) as clab_amt,--4 clab_amt 乙类金额 number(16,2)=bkc009 nvl(bb.bkc011,0) as fulamt_ownpay_amt,--5 fulamt_ownpay_amt 全自费金额 number(16,2)=bkc011 nvl(bb.bkc010,0) as oth_amt--6 oth_amt 其他金额 number(16,2) =bkc010 from SF_JZB000 AA,SF_YBFPMX BB,BM_FPXM00 CC where AA.JZDH00=BB.JZDH00 and BB.AKA063 =CC.BH0000 and AA.BRID00=PBRID00 and AA.JZDH00=PJZDH00 ) tt group by tt.med_chrgitm ; --收费项目信息开始 cursor CUR_YNFPMX is select tt.med_chrgitm as med_chrgitm, sum(tt.amt) as amt, sum(tt.claa_sumfee) as claa_sumfee, sum(tt.clab_amt) as clab_amt, sum(tt.fulamt_ownpay_amt) as fulamt_ownpay_amt, sum(tt.oth_amt) as oth_amt from( select nvl(CC.GJFPBH,'14') as med_chrgitm,--1 med_chrgitm 医疗收费项目 varchar2(6) nvl(bb.XMJE00,0) as amt,--2 amt 金额 number(16,2) =akc227 0 as claa_sumfee,--3 claa_sumfee 甲类费用合计 number(16,2)=bkc008 0 as clab_amt,--4 clab_amt 乙类金额 number(16,2)=bkc009 0 as fulamt_ownpay_amt,--5 fulamt_ownpay_amt 全自费金额 number(16,2)=bkc011 0 as oth_amt--6 oth_amt 其他金额 number(16,2) =bkc010 from SF_JZB000 AA,SF_JZMX00 BB,BM_FPXM00 CC where AA.JZDH00=BB.JZDH00 and BB.XMBH00 =CC.FPXMID and AA.BRID00=PBRID00 and AA.JZDH00=PJZDH00 ) tt group by tt.med_chrgitm ; --手术操作信息开始 cursor CUR_oprninfo is select decode(bb.SFZSS0,'1','1','2') as oprn_oprt_type,--1 oprn_oprt_type 手术操作类别 varchar2(3) 1:主要手术及操作' '2','其他手术及操作' bb.SSXMJC as oprn_oprt_name,--2 oprn_oprt_name 手术操作名称 varchar2(500) nvl(bb.CM3000,SSBH00) as oprn_oprt_code,--3 oprn_oprt_code 手术操作代码 varchar2(30) aa.SQRQ00 as oprn_oprt_date,--4 oprn_oprt_date 手术操作日期 number(8) SF_ZY_GETJSQD_JKFSZ0('anst_mtd_code',aa.MZBH00) as anst_way,--5 anst_way 麻醉方式 varchar2(6) =xt_mzfs00 aa.SSYSXM as oper_dr_name,--6 oper_dr_name 术者医师姓名 varchar2(50) nvl((select nvl(tt.YBYGDM,tt.YSZJHM) from BM_YGBM00 tt where tt.YGBH00=aa.SSYS00 and rownum=1),aa.SSYS00) as oper_dr_code,--7 oper_dr_code 术者医师代码 varchar2(20) aa.MZYSXM as anst_dr_name,--8 anst_dr_name 麻醉医师姓名 varchar2(50) nvl((select nvl(tt.YBYGDM,tt.YSZJHM) from BM_YGBM00 tt where tt.YGBH00=aa.MZYS00 and rownum=1),aa.MZYS00) as anst_dr_code,--9 anst_dr_code 麻醉医师代码 varchar2(20) aa.SSQSRQ||substrb(aa.SSQSSJ,1,2)||substrb(aa.SSQSSJ,4,2)||substrb(aa.SSQSSJ,7,2) as oprn_oprt_begintime,--10 oprn_oprt_begintime 手术开始时间 number(14) aa.SSJSRQ||substrb(aa.SSJSSJ,1,2)||substrb(aa.SSJSSJ,4,2)||substrb(aa.SSJSSJ,7,2) as oprn_oprt_endtime,--11 oprn_oprt_endtime 手术结束时间 number(14) aa.MZKSRQ||substrb(aa.MZKSSJ,1,2)||substrb(aa.MZKSSJ,4,2)||substrb(aa.MZKSSJ,7,2) as anst_begintime,--12 anst_begintime 麻醉开始时间 number(14) aa.MZJSRQ||substrb(aa.MZJSSJ,1,2)||substrb(aa.MZJSSJ,4,2)||substrb(aa.MZJSSJ,7,2) as anst_endtime--13 anst_endtime 麻醉结束时间 number(14) from SS_YW0000 aa,SS_YWMX00 bb where aa.SSDH00=bb.SSDH00 and aa.MZZYBZ='0' and aa.BRID00=PBRID00 and aa.ZYGHID=PGHID00 ; --重症监护信息开始 cursor CUR_icuinfo is select null as scs_cutd_ward_type,--1 scs_cutd_ward_type 重症监护病房类型 varchar2(6) null as scs_cutd_inpool_time,--2 scs_cutd_inpool_time 重症监护进入时间 number(14) null as scs_cutd_exit_time,--3 scs_cutd_exit_time 重症监护退出时间 number(14) null as scs_cutd_sum_dura--4 scs_cutd_sum_dura 重症监护合计时长 varchar2(10) from dual where 1=2 ; begin /* 接口字典:select * from BM_YBJKZD where JKBM00=2; 属性字典:select * from BM_YBSXZD where JKBM00=2; */ --变量初始化 LS_ERRSTR:='变量初始化'; LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); PZXZT00:=0;--输出:执行状态 0:失败 1:成功 PFHCS00:='';--输出:返回参数(XML格式) PERRMSG:='';--输出:错误信息 LS_psn_selfpay:=0; --psn_selfpay 个人自付 number(16,2) Y LS_psn_ownpay:=0; --psn_ownpay 个人自费 number(16,2) Y=YBYL63(bkc011)  LS_acct_pay:=0; --acct_pay 个人账户支出 number(16,2) Y LS_psn_cashpay:=0; --psn_cashpay 个人现金支付 number(16,2) Y LS_payinfo_Json:=null; --[字符]基金支付信息 LS_opspdiseinfo_Json:=null;--[字符]门诊慢特病诊断信息 LS_diseinfo_Json:=null; --[字符]住院诊断信息< diseinfo> LS_iteminfo_Json:=null; --[字符]收费项目信息 LS_oprninfo_Json:=null; --[字符]手术操作信息 LS_icuinfo_Json:=null; --[字符]重症监护信息 LS_payinfo_Num:=0; --[数量]基金支付信息 LS_opspdiseinfo_Num:=0; --[数量]门诊慢特病诊断信息 LS_diseinfo_Num:=0; --[数量]住院诊断信息< diseinfo> LS_iteminfo_Num:=0; --[数量]收费项目信息 LS_oprninfo_Num:=0; --[数量]手术操作信息 LS_icuinfo_Num:=0; --[数量]重症监护信息 LS_NullStr:='-';--空值字符 LS_YBYL52:=0;--YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_YBYL53:=0;--YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_YBYL54:=0;--YBYL54 bkc040 个人现金支付金额(实付现金) LS_YBYL55:=0;--YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 LS_YBYL56:=0;--YBYL56 bkc045 其中:统筹基金支付 LS_YBYL57:=0;--YBYL57 bkc059 其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_YBYL58:=0;--YBYL58 bkc052 其中:大病保险基金支付(商业保险支付) LS_YBYL59:=0;--YBYL59 bkc062 其中:精准扶贫医疗叠加 LS_YBYL60:=0;--YBYL60 bkc060 其中:医疗救助基金 LS_YBYL61:=0;--YBYL61 ake173 其中:其他基金支付 LS_YBYL62:=0;--YBYL62 ake026 其中:企业补充 LS_YBYL63:=0;--YBYL63 bkc011 个人自费(非医保费用) LS_YBYL67:=0;--YBYL67 bkc612 补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_YBYL68:=0;--YBYL68 bkc064 产前检查费(医保返回) LS_YBDJH0:=null;--医保单据号 LS_JZDH00:=0; LS_AAZ149:=null;--特殊病种编码 LS_TSBZBH:=null;--特殊病种编码 LS_TSBZMC:=null;--特殊病种名称 LS_jsqd_Notsend_list:=null;--医疗基金结算清单不发送list多个|隔开 LS_setlinfo_Json:=null;--结算清单信息开始 --医疗基金结算清单不发送list多个|隔开(基金:payinfo,慢特病:opspdiseinfo,住院诊断:diseinfo,收费项目:iteminfo,手术:oprninfo,重症监护:icuinfo) 默认值:空值 LS_jsqd_Notsend_list:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','jsqd_Notsend_list'),1,100)); --医疗保障基金结算清单上传、查询主节点编码:(分隔符用|)(参考格式:setlinfo|setlinfo) LS_JSQD_MainNodeName:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','JSQD_MainNodeName'),1,100)); LS_MainNodeName:=substrb(SF_SF_RETURNINDEXEH(LS_JSQD_MainNodeName,'|', 1),1,50);--主项节点编码 LS_fixmedins_code:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','fixmedins_code'),1,50));--定点医药机构编号 LS_fixmedins_name:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','fixmedins_name'),1,50));--定点医药机构名称 LS_medins_fill_dept:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','medins_fill_dept'),1,50));--医疗机构填报部门 LS_medins_fill_psn:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','medins_fill_psn'),1,50));--医疗机构填报人 --获取医院的国家医保标准编码 begin select c.YYID00,c.YYQC00,c.YYJC00, c.GJBZBM,b.BMMC00,a.ZWXM00 into LS_YYID00,LS_YYQC00,LS_YYJC00, LS_GJBZBM,LS_YGBMMC,LS_YGZWXM from BM_BMBM00 b,XT_YYXX00 c,BM_YGBM00 A where b.BMBH00=a.BMBH00 and b.YYID00=c.YYID00 and a.ygbh00=PCZY000; exception when others then LS_YYID00 :=null; LS_YYQC00 :=null; LS_YYJC00 :=null; LS_GJBZBM :=null; end; if trim(LS_YYJC00) is not null then LS_fixmedins_name:=substrb(trim(LS_YYJC00),1,50);--定点医药机构名称 end if; if trim(LS_GJBZBM) is not null then LS_fixmedins_code:=substrb(trim(LS_GJBZBM),1,50);--定点医药机构编号 end if; if trim(LS_YGBMMC) is not null and trim(LS_medins_fill_dept) is null then LS_medins_fill_dept:=substrb(trim(LS_YGBMMC),1,50);--员工部门名称 end if; if trim(LS_YGZWXM) is not null and trim(LS_medins_fill_psn) is null then LS_medins_fill_psn:=substrb(trim(LS_YGZWXM),1,50);--员工中文姓名 end if; --参数校验 LS_ERRSTR:='参数校验'; if nvl(PGHID00,0)=0 and nvl(PBRID00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PBRID00(病人id)和PGHID00(挂号ID),参数传值错误!';--[出参]:错误信息 return; end if; if nvl(PBRID00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PBRID00(病人id),参数传值错误!';--[出参]:错误信息 return; end if; if nvl(PGHID00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PGHID00(挂号ID),参数传值错误!';--[出参]:错误信息 return; end if; if nvl(PJZDH00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PJZDH00(结账单号),参数传值错误!';--[出参]:错误信息 return; end if; --获取基本信息 begin select * into RBRXX from BM_BRXXB0 aa where 1=1 and AA.BRID00=PBRID00; exception when others then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效基本病人信息!';--[出参]:错误信息 return; rollback; end; --获取结账表 begin select * into RJZXX from SF_JZB000 aa where 1=1 and AA.BRID00=PBRID00 and JZDH00=PJZDH00 ; exception when others then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效结账记录!';--[出参]:错误信息 return; rollback; end; --查找对应的挂号信息 begin select * into RGHXX from SF_BRXXB0 aa where 1=1 and AA.BRID00=PBRID00 and AA.GHID00=PGHID00; exception when others then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效挂号信息!';--[出参]:错误信息 return; rollback; end; --门诊慢特病诊断科别 begin select trim(substrb(BMMC00,1,50)) into LS_opsp_diag_caty from BM_BMBM00 aa where 1=1 and AA.BMBH00=RGHXX.JZKS00; exception when others then LS_opsp_diag_caty:=null; --opsp_diag_caty 门诊慢特病诊断科别 end; --获取科室编码 begin select substrb(nvl(GJYBKS,YYKSBM),1,20) as adm_caty,substrb(nvl(GJYBKS,YYKSBM),1,20) as dscg_caty into LS_adm_caty,LS_dscg_caty from BM_BMBM00 aa where 1=2 and AA.BMBH00=RGHXX.GHKS00; exception when others then LS_adm_caty:=null; --adm_caty 入院科别 LS_dscg_caty:=null; --dscg_caty 出院科别 end; --责任护士代码、责任护士姓名 LS_resp_nurs_name:=null; --resp_nurs_name 责任护士姓名 LS_resp_nurs_code:=null; --resp_nurs_code 责任护士代码 /* begin select substrb(YBYGDM,1,30) as YBYGDM,substrb(ZWXM00,1,50) as ZWXM00 into LS_resp_nurs_code,LS_resp_nurs_name from BM_YGBM00 aa where 1=1 and AA.YGBH00=RGHXX.GHY000; exception when others then LS_resp_nurs_name:=null; --resp_nurs_name 责任护士姓名 varchar2(50) LS_resp_nurs_code:=null; --resp_nurs_code 责任护士代码 varchar2(30) end; */ --主诊医师代码、主诊医师姓名 begin select substrb(YBYGDM,1,30) as YBYGDM,substrb(ZWXM00,1,50) as ZWXM00 into LS_chfpdr_code,LS_chfpdr_name from BM_YGBM00 aa where 1=1 and AA.YGBH00=RGHXX.JZYS00; exception when others then LS_chfpdr_name:=null; --chfpdr_name 主诊医师姓名 varchar2(50) LS_chfpdr_code:=null; --chfpdr_code 主诊医师代码 varchar2(30) end; --setl_begn_date、setl_end_date begin select min(aa.CZRQ00) as setl_begn_date,max(aa.CZRQ00) as setl_end_date into LS_setl_begn_date,LS_setl_end_date from SF_BRFY00 AA where aa.BRID00=PBRID00 and aa.JZDH00=PJZDH00; exception when others then LS_setl_begn_date:=null; --setl_begn_date 结算开始日期 number(8) LS_setl_end_date:=null; --setl_end_date 结算结束日期 number(8) end; LS_setl_begn_date:=nvl(LS_setl_begn_date,to_char(sysdate,'YYYYMMDD')); --setl_begn_date 结算开始日期 number(8) LS_setl_end_date:=nvl(LS_setl_end_date,to_char(sysdate,'YYYYMMDD'));--setl_end_date 结算结束日期 number(8) --hi_paymtd 医保支付方式 [1:按项目 2:单病种 3:按病种分值 4:基本诊断相关分组(DRG) 5:按床日 6:按人次 7:按定额 9:其他] LS_hi_paymtd:='1';--接口发送值 begin select max(aa.YBDJH0)as YBDJH0,max(aa.JZDH00) as JZDH00, sum(aa.HJJE00) as HJJE00,sum(aa.TCJJZF) as TCJJZF,sum(aa.GRZHZF) as GRZHZF,sum(aa.ZFJE00) as ZFJE00,sum(aa.XJFKJE) as XJFKJE,max(aa.PJH000) as PJH000, sum(nvl(aa.YBYL52,0)) as YBYL52,sum(nvl(aa.YBYL53,0)) as YBYL53,sum(nvl(aa.YBYL54,0)) as YBYL54,sum(nvl(aa.YBYL55,0)) as YBYL55, sum(nvl(aa.YBYL56,0)) as YBYL56,sum(nvl(aa.YBYL57,0)) as YBYL57,sum(nvl(aa.YBYL58,0)) as YBYL58,sum(nvl(aa.YBYL59,0)) as YBYL59, sum(nvl(aa.YBYL60,0)) as YBYL60,sum(nvl(aa.YBYL61,0)) as YBYL61,sum(nvl(aa.YBYL62,0)) as YBYL62,sum(nvl(aa.YBYL63,0)) as YBYL63, sum(nvl(aa.YBYL67,0)) as YBYL67,sum(nvl(aa.YBYL68,0)) as YBYL68,max(trim(aa.TSBZBH)) as TSBZBH,max(trim(aa.YBSM09)) as AAZ149 into LS_YBDJH0,LS_JZDH00,LS_HJJE00,LS_TCJJZF,LS_GRZHZF,LS_ZFJE00,LS_XJFKJE,LS_PJH000, LS_YBYL52,LS_YBYL53,LS_YBYL54,LS_YBYL55, LS_YBYL56,LS_YBYL57,LS_YBYL58,LS_YBYL59, LS_YBYL60,LS_YBYL61,LS_YBYL62,LS_YBYL63, LS_YBYL67,LS_YBYL68,LS_TSBZBH,LS_AAZ149 from SF_JZB000 AA where aa.BRID00=PBRID00 and aa.JZDH00=PJZDH00; exception when others then LS_TCJJZF:=0;--统筹基金 LS_GRZHZF:=0;--医保账户支付 LS_ZFJE00:=0;--个人支付 LS_XJFKJE:=0;--现金支付 LS_PJH000:=0;--票据号 LS_YBYL52:=0;--YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_YBYL53:=0;--YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_YBYL54:=0;--YBYL54 bkc040 个人现金支付金额(实付现金) LS_YBYL55:=0;--YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 LS_YBYL56:=0;--YBYL56 bkc045 其中:统筹基金支付 LS_YBYL57:=0;--YBYL57 bkc059 其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_YBYL58:=0;--YBYL58 bkc052 其中:大病保险基金支付(商业保险支付) LS_YBYL59:=0;--YBYL59 bkc062 其中:精准扶贫医疗叠加 LS_YBYL60:=0;--YBYL60 bkc060 其中:医疗救助基金 LS_YBYL61:=0;--YBYL61 ake173 其中:其他基金支付 LS_YBYL62:=0;--YBYL62 ake026 其中:企业补充 LS_YBYL63:=0;--YBYL63 bkc011 个人自费(非医保费用) LS_YBYL67:=0;--YBYL67 bkc612 补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_YBYL68:=0;--YBYL68 bkc064 产前检查费(医保返回) LS_JZDH00:=0; LS_YBDJH0:=null; LS_AAZ149:=null;--特殊病种编码 LS_TSBZBH:=null;--特殊病种编码 LS_TSBZMC:=null;--特殊病种名称 end; --LS_YBYL52:=0;--YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 if nvl(LS_YBYL52,0)=0 then LS_YBYL52:=nvl(LS_HJJE00,0); end if; --LS_YBYL53:=0;--YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 if nvl(LS_YBYL53,0)=0 then LS_YBYL53:=nvl(LS_TCJJZF,0); end if; --LS_YBYL54:=0;--YBYL54 bkc040 个人现金支付金额(实付现金) if nvl(LS_YBYL54,0)=0 then LS_YBYL54:=nvl(LS_ZFJE00,0); end if; --LS_YBYL55:=0;--YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 if nvl(LS_YBYL55,0)=0 then LS_YBYL55:=nvl(LS_GRZHZF,0); end if; --LS_YBYL56:=0;--YBYL56 bkc045 其中:统筹基金支付 if nvl(LS_YBYL56,0)=0 then LS_YBYL56:=nvl(LS_TCJJZF,0); end if; LS_psn_selfpay:=nvl(LS_YBYL54,0)+nvl(LS_YBYL55,0)-nvl(LS_YBYL63,0); --psn_selfpay 个人自付 number(16,2) Y=bkc040(个人现金支付)+ bkc041(个人帐户支付)-bkc011(个人自费) LS_psn_ownpay:=nvl(LS_YBYL63,0); --psn_ownpay 个人自费 number(16,2) Y=YBYL63(bkc011)  LS_acct_pay:=nvl(LS_YBYL55,0); --acct_pay 个人账户支出 number(16,2) Y=YBYL55(bkc041) LS_psn_cashpay:=nvl(LS_YBYL54,0); --psn_cashpay 个人现金支付 number(16,2) Y=YBYL54(bkc040) if nvl(LS_PJH000,0)>0 then begin select trim(AA.PJXH00) as PJXH00,aa.PJH000 as PJH000,aa.PLBH00 as PLBH00 into LS_bill_no,LS_biz_sn,LS_bill_code from SF_PJSYQK AA where AA.PJH000=LS_PJH000; exception when others then LS_bill_code:='0';--bill_code 票据代码 varchar2(50) Y LS_bill_no:='0';--bill_no 票据号码 varchar2(30) Y LS_biz_sn:='0';--biz_sn 业务流水号 varchar2(50) Y end; end if; if LS_AAZ149 is not null then LS_TSBZBH:=LS_AAZ149; end if; if LS_TSBZBH is not null then begin select substrb(trim(AA.MC0000),1,100) into LS_TSBZMC from BM_TSBZB0 AA where trim(AA.BH0000)=trim(LS_TSBZBH) and rownum=1; exception when others then LS_TSBZBH:=null;--特殊病种编码 LS_TSBZMC:=null;--特殊病种名称 end; end if; --psn_no:人员编号 if trim(RBRXX.aac999) is not null then LS_psn_no:=trim(RBRXX.aac999); else if trim(RBRXX.YBID00) not in ('0') then LS_psn_no:=trim(RBRXX.YBID00); else LS_psn_no:=trim(RBRXX.BRZJBH); end if; end if; LS_psn_no:=substrb(SF_SF_GETYBSXZD(PBRID00,'0','psnno','','',''),1,30); LS_psn_no:=nvl(LS_psn_no,RBRXX.BRZJBH); --LS_wm_dise_code:西医疾病代码,西医疾病名称 begin select substrb(aa.ICD900,1,50),substrb(aa.ZDMC00,1,200) into LS_wm_dise_code,LS_otp_wm_dise from YS_BRZDXX aa where 1=2 and aa.GHID00=PGHID00 and aa.ZZDBZ0 in ('3') and rownum=1; exception when others then LS_wm_dise_code:=null;--西医疾病代码 LS_otp_wm_dise:=null;--西医疾病名称 end; --LS_tcmdisecode:中医疾病代码,LS_otptcmdise:中医疾病名称 begin select substrb(aa.ICD900,1,50),substrb(aa.ZDMC00,1,200) into LS_tcmdisecode,LS_otptcmdise from YS_BRZDXX aa where 1=2 and aa.GHID00=PGHID00 and aa.ZZDBZ0 in ('1') and rownum=1; exception when others then LS_tcmdisecode:=null;--中医疾病代码 LS_otptcmdise:=null;--中医疾病名称 end; LS_setl_list_sn:=substrb(LS_CZRQ00,3,2)||lpad(substrb(PYBJKID,1,7),7,'0');--结算清单流水号:9 位 格式:年度编码(2 位) 顺序号编码(7 位) LS_YBTCPAY:=nvl(LS_YBYL53,0);--ybtcPay:医保统筹基金 --生成主项数据 -- select count(*) into LS_COUNT0 from SF_YBJKRZ where YBJKID=PYBJKID and BRID00=PBRID00; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJKRZ(YBJKID,YBJKBM,YBJKMC,JKCJBM,BRID00,GHID00,GHH000,CZRQ00,CZSJ00,CZY000,CZYXM0,BRXM00, AAZ500,AAC002,FLAG,CAUSE) select PYBJKID,'000000','医疗保障基金结算清单查询',PJKCJBM,PBRID00,PGHID00,'0',LS_CZRQ00,LS_CZSJ00,PCZY000,PCZYXM0,RBRXX.BRXM00, trim(RBRXX.YBKH00),trim(RBRXX.YBID00),'1','[院内]结算单生成成功' from dual; end if; select count(*) into LS_COUNT0 from SF_YBJSD0 where YBJKID=PYBJKID and BRID00=PBRID00; if nvl(LS_COUNT0,0)=0 then Insert into SF_YBJSD0(BRID00,AKC190,JZDH00,YBJKID,YBJSQD,GHID00) select PBRID00,'0',PJZDH00,PYBJKID,null,PGHID00 from dual; end if; if trim(RBRXX.BRXB00)='男' then LS_gend:='1';--接口发送值 elsif trim(RBRXX.BRXB00)='女' then LS_gend:='2';--接口发送值 else LS_gend:='9';--接口发送值 end if; LS_dscg_time:=null; --更新SF_YBJSD0 if PDATALX in (0) then --输入:数据获取类型 0:HIS内部直接生成 1:获取海泰drg更新数据[医保交互后] 2:更新部分[医保交互后] update SF_YBJSD0 set SETL_ID=substrb(trim(LS_YBDJH0),1,30) ,--setl_id:结算ID SETL_LIST_SN=substrb(LS_setl_list_sn,1,30) ,--setl_list_sn:结算清单流水号 PSN_NO=substrb(trim(LS_psn_no),1,30) ,--psn_no:人员编号 MDTRT_ID=substrb(trim(nvl(RJZXX.YBGHH0,RGHXX.YBGHH0)),1,30) ,--mdtrt_id:就诊ID FIXMEDINS_NAME=substrb(LS_fixmedins_name,1,50) ,--fixmedins_name:定点医药机构名称 FIXMEDINS_CODE=substrb(LS_fixmedins_code,1,20) ,--fixmedins_code:定点医药机构编号 HI_SETL_LV=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','hi_setl_lv'),1,3),'1') ,--hi_setl_lv:医保结算等级 MEDCASNO=substrb(trim(RBRXX.MRN000),1,50) ,--medcasno:病案号 DCLA_TIME=to_char(sysdate,'YYYYMMDDHH24MISS') ,--dcla_time:申报时间 PSN_NAME=substrb(trim(RBRXX.BRXM00),1,50) ,--psn_name:人员姓名 GEND=LS_gend ,--gend:性别 BRDY=substrb(trim(RBRXX.BRCSRQ),1,10) ,--brdy:出生日期 AGE=SF_YS_CSRQTONL(RBRXX.BRCSRQ) ,--age:年龄 NWB_AGE=null ,--nwb_age:(年龄不足1周岁)年龄 NTLY='CHN' ,--ntly:国籍 NATY=substrb(nvl(SF_ZY_GETJSQD_JKFSZ0('naty',trim(RBRXX.BRMZ00)),LS_NullStr),1,10) ,--naty:民族 PATN_CERT_TYPE=substrb(nvl(SF_ZY_GETJSQD_JKFSZ0('patn_cert_type',trim(RBRXX.BRZJLX)),LS_NullStr),1,10),--patn_cert_type:患者证件类别 CERTNO=substrb(trim(RBRXX.BRZJBH),1,50) ,--certno:证件号码 PRFS=substrb(nvl(SF_ZY_GETJSQD_JKFSZ0('prfs',trim(RBRXX.BRZY00)),LS_NullStr),1,10) ,--prfs:职业 CURR_ADDR=substrb(trim(RBRXX.BRJTDZ),1,200) ,--curr_addr:现住址 EMP_NAME=substrb(trim(RBRXX.TYDWMC),1,200) ,--emp_name:单位名称 EMP_ADDR=null ,--emp_addr:单位地址 EMP_TEL=null ,--emp_tel:单位电话 POSCODE=substrb(trim(RBRXX.BRYB00),1,6) ,--poscode:邮编 CONER_NAME=substrb(nvl(trim(RBRXX.BRLXXM),LS_NullStr),1,50) ,--coner_name:联系人姓名 PATN_RLTS=substrb(nvl(SF_ZY_GETJSQD_JKFSZ0('patn_rlts',trim(RBRXX.BRLXGX)),LS_NullStr),1,6),--patn_rlts:与患者关系 CONER_ADDR=substrb(nvl(trim(RBRXX.BRLXDZ),LS_NullStr),1,200) ,--coner_addr:联系人地址 CONER_TEL=substrb(nvl(trim(RBRXX.BRLXDH),LS_NullStr),1,50) ,--coner_tel:联系人电话 INSUTYPE=null ,--insutype:险种类型 SP_PSN_TYPE=null ,--sp_psn_type:特殊人员类型 INSU_ADMDVS=substrb(nvl(trim(RBRXX.XZQH00),LS_NullStr),1,10) ,--insu_admdvs:参保所属医保区划 NWB_ADM_TYPE=null ,--nwb_adm_type:新生儿入院类型 NWBBIRWT=null ,--nwbbirwt:新生儿出生体重 NWBADMWT=null ,--nwbadmwt:新生儿入院体重 MUL_NWB_BIR_WT=null ,--mul_nwb_bir_wt:多新生儿出生体重 MUL_NWB_ADM_WT=null ,--mul_nwb_adm_wt:多新生儿入院体重 OPSP_DIAG_CATY=LS_opsp_diag_caty ,--opsp_diag_caty:门诊慢特病诊断科别 OPSP_MDTRT_DATE=RGHXX.jzrq00 ,--opsp_mdtrt_date:门诊慢特病就诊日期 IPT_MED_TYPE=null ,--ipt_med_type:住院医疗类型 [1:住院 2:日间手术] ADM_WAY=null ,--adm_way:入院途径[1:急诊 2:门诊 3:其他医疗机构转入 9:其他] TRT_TYPE=null ,--trt_type:治疗类别 ADM_TIME=null ,--adm_time:入院时间 DSCG_TIME=substrb(LS_dscg_time,1,20) ,--dscg_time:出院时间 ADM_CATY=substrb(LS_adm_caty,1,10) ,--adm_caty:入院科别 REFLDEPT_DEPT=null ,--refldept_dept:转科科别 DSCG_CATY=substrb(LS_dscg_caty,1,10) ,--dscg_caty:出院科别 ACT_IPT_DAYS=null ,--act_ipt_days:实际住院天数 WM_DISE_CODE=substrb(LS_wm_dise_code,1,50) ,--wm_dise_code:西医诊断疾病代码 OTP_WM_DISE=substrb(LS_otp_wm_dise,1,200) ,--otp_wm_dise:门(急)诊西医诊断 TCM_DISE_CODE=substrb(LS_tcmdisecode,1,50) ,--tcm_dise_code:中医诊断代码 OTP_TCM_DISE=substrb(LS_otptcmdise,1,200) ,--otp_tcm_dise:门(急)诊中医诊断 DIAG_CODE_CNT=null ,--diag_code_cnt:诊断代码计数 OPRN_OPRT_CODE_CNT=null ,--oprn_oprt_code_cnt:手术操作代码计数 VENT_USED_DAYS=null ,--vent_used_days:呼吸机使用天数 VENT_USED_H_CNT=null ,--vent_used_h_cnt:呼吸机使用小时数 VENT_USED_M_CNT=null ,--vent_used_m_cnt:呼吸机使用分钟数 BFADM_COMA_DAYS=null ,--bfadm_coma_days:入院前颅脑损伤患者昏迷天数 BFADM_COMA_H_CNT=null ,--bfadm_coma_h_cnt:入院前颅脑损伤患者昏迷小时数 BFADM_COMA_M_CNT=null ,--bfadm_coma_m_cnt:入院前颅脑损伤患者昏迷分钟数 AFADM_COMA_DAYS=null ,--afadm_coma_days:入院后颅脑损伤患者昏迷天数 AFADM_COMA_H_CNT=null ,--afadm_coma_h_cnt:入院后颅脑损伤患者昏迷小时数 AFADM_COMA_M_CNT=null ,--afadm_coma_m_cnt:入院后颅脑损伤患者昏迷分钟数 BLD_CAT=null ,--bld_cat:输血品种 BLD_AMT=null ,--bld_amt:输血量 BLD_UNT=null ,--bld_unt:输血计量单位 SPGA_NURSCARE_DAYS=null ,--spga_nurscare_days:特级护理天数 LV1_NURSCARE_DAYS=null ,--lv1_nurscare_days:一级护理天数 SCD_NURSCARE_DAYS=null ,--scd_nurscare_days:二级护理天数 LV3_NURSCARE_DAYS=null ,--lv3_nurscare_days:三级护理天数 DSCG_WAY=null ,--dscg_way:离院方式 [1:医嘱离院 2:医嘱转院 3:医嘱转社区卫生服务机构/乡镇卫生院 4:非医嘱离院 5:死亡 9:其他] ACP_MEDINS_NAME=null ,--acp_medins_name:拟接收机构名称 ACP_OPTINS_CODE=null ,--acp_optins_code:拟接收机构代码 DAYS_RINP_FLAG_31=null ,--days_rinp_flag_31:出院31天内再住院计划标志 DAYS_RINP_PUP_31=null ,--days_rinp_pup_31:出院31天内再住院目的 CHFPDR_NAME=substrb(LS_chfpdr_name,1,50) ,--chfpdr_name:主诊医师姓名 CHFPDR_CODE=substrb(LS_chfpdr_code,1,50) ,--chfpdr_code:主诊医师代码 BIZ_SN=substrb(nvl(LS_biz_sn,LS_NullStr),1,50) ,--biz_sn:业务流水号 BILL_CODE=substrb(nvl(LS_bill_code,LS_NullStr),1,50) ,--bill_code:票据代码 BILL_NO=substrb(nvl(LS_bill_no,LS_NullStr),1,50) ,--bill_no:票据号码 SETL_BEGN_DATE=substrb(LS_setl_begn_date,1,20) ,--setl_begn_date:结算开始日期 SETL_END_DATE=substrb(LS_setl_end_date,1,20) ,--setl_end_date:结算结束日期 PSN_SELFPAY=LS_psn_selfpay ,--psn_selfpay:个人自付 PSN_OWNPAY=LS_psn_ownpay ,--psn_ownpay:个人自费 ACCT_PAY=LS_acct_pay ,--acct_pay:个人账户支出 PSN_CASHPAY=LS_psn_cashpay ,--psn_cashpay:个人现金支付 HI_PAYMTD=substrb(nvl(LS_hi_paymtd,LS_NullStr),1,10) ,--hi_paymtd:医保支付方式 MEDINS_FILL_DEPT=LS_medins_fill_dept ,--medins_fill_dept:医疗机构填报部门 MEDINS_FILL_PSN=LS_medins_fill_psn ,--medins_fill_psn:医疗机构填报人 VALI_FLAG=null ,--vali_flag:有效标志 RID=null ,--rid:唯一记录号 UPDT_TIME=null ,--updt_time:更新时间 CRTER_ID=null ,--crter_id:创建人 CRTER_NAME=null ,--crter_name:创建人姓名 CRTE_TIME=null ,--crte_time:创建时间 CRTE_OPTINS_NO=null ,--crte_optins_no:创建机构 OPTER_ID=PCZY000 ,--opter_id:经办人ID OPTER_NAME=PCZYXM0 ,--opter_name:经办人姓名 OPT_TIME=LS_CZRQ00 ,--opt_time:经办时间 OPTINS_NO=null ,--optins_no:经办机构 POOLAREA=null ,--poolarea:统筹区编码 HI_NO=substrb(nvl(RBRXX.AAC999,RBRXX.YBID00),1,30) ,--hi_no:医保编号 HI_TYPE=substrb(nvl(trim(nvl(RBRXX.AAE140,RBRXX.BRZTQK)),LS_NullStr),1,10) ,--hi_type:医保类型 OPSP_DISE_NAME=null ,--opsp_dise_name:门慢门特病种名称 OPSP_DISE_CODE=null ,--opsp_dise_code:门慢门特病种目录代码 DSCG_DIAG=null ,--dscg_diag:出院诊断 RESP_NURS_NAME=substrb(LS_resp_nurs_name,1,50) ,--resp_nurs_name: 责任护士姓名 RESP_NURS_CODE=substrb(resp_nurs_code,1,50) ,--resp_nurs_code: 责任护士代码 HSORG_OPTER_CODE=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','hsorg_opter_code'),1,50)),--hsorg_opter_code:医保机构经办人代码 STAS_TYPE='9' ,--stas_type:状态分类 [0未提交,1已提交,2审核通过,3审核不通过 9:院内生成] HSORG_OPTER=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','hsorg_opter'),1,50)) ,--hsorg_opter:医保机构经办人 HSORG_NAME=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','hsorg'),1,50)) ,--hsorg_name:医保机构(医保经办结构名称) HSORG_CODE=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','hsorg_code'),1,50)) ,--hsorg_code:医保机构代码 CHK_CONT=null ,--chk_cont:审核内容 BAKXML=null ,--bakxml:备用字段 YBTCPAY=LS_YBTCPAY --ybtcPay:医保统筹基金 where YBJKID=PYBJKID and BRID00=PBRID00; /* 基金支付信息开始 1 fund_pay_type 基金支付类型 varchar2(6) 2 fund_payamt 基金支付金额 number(16,2) 基金支付信息结束 */ for C_List in CUR_payinfo loop LS_payinfo_Json:=null; LS_payinfo_Json:=LS_payinfo_Json||'{'; LS_payinfo_Json:=LS_payinfo_Json||'"fund_pay_type"'||':'||'"'||C_List.fund_pay_type||'"'||','; LS_payinfo_Json:=LS_payinfo_Json||'"fund_payamt"'||':'||'"'||C_List.fund_payamt||'"'||''; LS_payinfo_Json:=LS_payinfo_Json||'}'; insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,fund_pay_type,poolarea_fund_pay_type,poolarea_fund_pay_name,fund_payamt) select PYBJKID,'payinfo','基金支付信息', substrb(C_List.fund_pay_type,1,10) as fund_pay_type, substrb(C_List.fund_pay_type,1,10) as poolarea_fund_pay_type, substrb((select aa.SXSM00 from bm_ybsxzd aa where aa.JKBM00=2 and aa.sxbm00='fund_pay_type' and aa.VALUE0=C_List.fund_pay_type and rownum=1),1,50) as poolarea_fund_pay_name, C_List.fund_payamt from dual A; LS_payinfo_Num:=nvl(LS_payinfo_Num,0)+1; end loop; /* 门诊慢特病诊断信息开始 1 diag_name 诊断名称 varchar2(100) 2 diag_code 诊断代码 varchar2(20) 3 oprn_oprt_name 手术操作名称 varchar2(500) 4 oprn_oprt_code 手术操作代码 varchar2(30) 5 maindiag_flag 主诊断标志 varchar2(3) 门诊慢特病诊断信息结束 */ for C_List in CUR_opspdiseinfo loop LS_opspdiseinfo_Json:=null; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'{'; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"diag_name"'||':'||'"'||C_List.diag_name||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"diag_code"'||':'||'"'||C_List.diag_code||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"oprn_oprt_name"'||':'||'"'||C_List.oprn_oprt_name||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"oprn_oprt_code"'||':'||'"'||C_List.oprn_oprt_code||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"maindiag_flag"'||':'||'"'||C_List.maindiag_flag||'"'||''; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'}'; insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,diag_name,diag_code,oprn_oprt_name,oprn_oprt_code,maindiag_flag) select PYBJKID,'opspdiseinfo','门诊慢特病诊断信息', substrb(C_List.diag_name,1,50) as diag_name, substrb(C_List.diag_code,1,50) as diag_code, substrb(C_List.oprn_oprt_name,1,100) as oprn_oprt_name, substrb(C_List.oprn_oprt_code,1,50) as oprn_oprt_code, substrb(C_List.maindiag_flag,1,10) as maindiag_flag from dual A; LS_opspdiseinfo_Num:=nvl(LS_opspdiseinfo_Num,0)+1; end loop; /* 住院诊断信息< diseinfo>开始 1 diag_type 诊断类别 varchar2(3) 2 diag_code 诊断代码 varchar2(20) 3 diag_name 诊断名称 varchar2(100) 4 adm_cond_type 入院病情类型 varchar2(3) 5 maindiag_flag 主诊断标志 varchar2(3) 住院诊断信息< diseinfo>结束 */ for C_List in CUR_diseinfo loop LS_diseinfo_Json:=null; LS_diseinfo_Json:=LS_diseinfo_Json||'{'; LS_diseinfo_Json:=LS_diseinfo_Json||'"diag_type"'||':'||'"'||C_List.diag_type||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"diag_code"'||':'||'"'||C_List.diag_code||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"diag_name"'||':'||'"'||C_List.diag_name||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"adm_cond_type"'||':'||'"'||C_List.adm_cond_type||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"maindiag_flag"'||':'||'"'||C_List.maindiag_flag||'"'||''; LS_diseinfo_Json:=LS_diseinfo_Json||'}'; insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,diag_type,diag_code,diag_name,adm_cond_type,maindiag_flag) select PYBJKID,'diseinfo','住院诊断信息', substrb(C_List.diag_type,1,50) as diag_type, substrb(C_List.diag_code,1,50) as diag_code, substrb(C_List.diag_name,1,100) as diag_name, substrb(C_List.adm_cond_type,1,10) as adm_cond_type, substrb(C_List.maindiag_flag,1,10) as maindiag_flag from dual; LS_diseinfo_Num:=nvl(LS_diseinfo_Num,0)+1; end loop; /* 收费项目信息开始 1 med_chrgitm 医疗收费项目 varchar2(6) 2 amt 金额 number(16,2) 3 claa_sumfee 甲类费用合计 number(16,2) 4 clab_amt 乙类金额 number(16,2) 5 fulamt_ownpay_amt 全自费金额 number(16,2) 6 oth_amt 其他金额 number(16,2) 收费项目信息结束 */ for C_List in CUR_iteminfo loop LS_iteminfo_Json:=null; LS_iteminfo_Json:=LS_iteminfo_Json||'{'; LS_iteminfo_Json:=LS_iteminfo_Json||'"med_chrgitm"'||':'||'"'||C_List.med_chrgitm||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"amt"'||':'||'"'||C_List.amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"claa_sumfee"'||':'||'"'||C_List.claa_sumfee||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"clab_amt"'||':'||'"'||C_List.clab_amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"fulamt_ownpay_amt"'||':'||'"'||C_List.fulamt_ownpay_amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"oth_amt"'||':'||'"'||C_List.oth_amt||'"'||''; LS_iteminfo_Json:=LS_iteminfo_Json||'}'; insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,med_chrgitm_type,amt,claa_sumfee,clab_amt,fulamt_ownpay_amt,oth_amt) select PYBJKID,'iteminfo','收费项目信息', substrb(C_List.med_chrgitm,1,10) as med_chrgitm, C_List.amt as amt, C_List.claa_sumfee as claa_sumfee, C_List.clab_amt as clab_amt, C_List.fulamt_ownpay_amt as fulamt_ownpay_amt, C_List.oth_amt as oth_amt from dual; LS_iteminfo_Num:=nvl(LS_iteminfo_Num,0)+1; end loop; if nvl(LS_iteminfo_Num,0)=0 then --直接取SF_JZMX00 for C_List in CUR_YNFPMX loop LS_iteminfo_Json:=null; LS_iteminfo_Json:=LS_iteminfo_Json||'{'; LS_iteminfo_Json:=LS_iteminfo_Json||'"med_chrgitm"'||':'||'"'||C_List.med_chrgitm||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"amt"'||':'||'"'||C_List.amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"claa_sumfee"'||':'||'"'||C_List.claa_sumfee||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"clab_amt"'||':'||'"'||C_List.clab_amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"fulamt_ownpay_amt"'||':'||'"'||C_List.fulamt_ownpay_amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"oth_amt"'||':'||'"'||C_List.oth_amt||'"'||''; LS_iteminfo_Json:=LS_iteminfo_Json||'}'; insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,med_chrgitm_type,amt,claa_sumfee,clab_amt,fulamt_ownpay_amt,oth_amt) select PYBJKID,'iteminfo','收费项目信息', substrb(C_List.med_chrgitm,1,10) as med_chrgitm, C_List.amt as amt, C_List.claa_sumfee as claa_sumfee, C_List.clab_amt as clab_amt, C_List.fulamt_ownpay_amt as fulamt_ownpay_amt, C_List.oth_amt as oth_amt from dual; LS_iteminfo_Num:=nvl(LS_iteminfo_Num,0)+1; end loop; end if; insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,med_chrgitm_type,amt,claa_sumfee,clab_amt,fulamt_ownpay_amt,oth_amt) select PYBJKID,'iteminfo','收费项目信息',substrb(b.VALUE0,1,10) as MED_CHRGITM_TYPE, 0 as AMT,0 as CLAA_SUMFEE,0 as CLAB_AMT, 0 as FULAMT_OWNPAY_AMT,0 as OTH_AMT from bm_ybsxzd b where b.JKBM00=2 and b.sxbm00='med_chrgitm_type' and b.VALUE0 not in ('90','91','92') and substrb(VALUE0,1,10) not in (select nvl(A.med_chrgitm_type,'14') from SF_YBJSDX a where a.YBJKID=PYBJKID and a.JKJDBM='iteminfo') ; /* 手术操作信息开始 1 oprn_oprt_type 手术操作类别 varchar2(3) 2 oprn_oprt_name 手术操作名称 varchar2(500) 3 oprn_oprt_code 手术操作代码 varchar2(30) 4 oprn_oprt_date 手术操作日期 number(8) 5 anst_way 麻醉方式 varchar2(6) 6 oper_dr_name 术者医师姓名 varchar2(50) 7 oper_dr_code 术者医师代码 varchar2(20) 8 anst_dr_name 麻醉医师姓名 varchar2(50) 9 anst_dr_code 麻醉医师代码 varchar2(20) 10 oprn_oprt_begintime 手术开始时间 number(14) 11 oprn_oprt_endtime 手术结束时间 number(14) 12 anst_begintime 麻醉开始时间 number(14) 13 anst_endtime 麻醉结束时间 number(14) 手术操作信息结束 */ for C_List in CUR_oprninfo loop LS_oprninfo_Json:=null; LS_oprninfo_Json:=LS_oprninfo_Json||'{'; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_type"'||':'||'"'||C_List.oprn_oprt_type||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_name"'||':'||'"'||C_List.oprn_oprt_name||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_code"'||':'||'"'||C_List.oprn_oprt_code||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_date"'||':'||'"'||C_List.oprn_oprt_date||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_way"'||':'||'"'||C_List.anst_way||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oper_dr_name"'||':'||'"'||C_List.oper_dr_name||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oper_dr_code"'||':'||'"'||C_List.oper_dr_code||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_dr_name"'||':'||'"'||C_List.anst_dr_name||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_dr_code"'||':'||'"'||C_List.anst_dr_code||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_begintime"'||':'||'"'||C_List.oprn_oprt_begintime||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_endtime"'||':'||'"'||C_List.oprn_oprt_endtime||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_begintime"'||':'||'"'||C_List.anst_begintime||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_endtime"'||':'||'"'||C_List.anst_endtime||'"'||''; LS_oprninfo_Json:=LS_oprninfo_Json||'}'; insert into SF_YBJSDX( YBJKID,JKJDBM,JKJDMC,main_oprn_flag,oprn_oprt_name,oprn_oprt_code,oprn_oprt_date, anst_way,oper_dr_name,oper_dr_code,anst_dr_name,anst_dr_code,oprn_oprt_begntime, oprn_oprt_endtime,anst_begntime,anst_endtime ) select PYBJKID,'oprninfo','手术操作信息', substrb(C_List.oprn_oprt_type,1,30) as main_oprn_flag, substrb(C_List.oprn_oprt_name,1,100) as oprn_oprt_name, substrb(C_List.oprn_oprt_code,1,50) as oprn_oprt_code, substrb(C_List.oprn_oprt_date,1,20) as oprn_oprt_date, substrb(C_List.anst_way,1,30) as anst_way, substrb(C_List.oper_dr_name,1,100) as oper_dr_name, substrb(C_List.oper_dr_code,1,50) as oper_dr_code, substrb(C_List.anst_dr_name,1,100) as anst_dr_name, substrb(C_List.anst_dr_code,1,50) as anst_dr_code, substrb(C_List.oprn_oprt_begintime,1,20) as oprn_oprt_begintime, substrb(C_List.oprn_oprt_endtime,1,20) as oprn_oprt_endtime, substrb(C_List.anst_begintime,1,20) as anst_begintime, substrb(C_List.anst_endtime,1,20) as anst_endtime from dual; LS_oprninfo_Num:=nvl(LS_oprninfo_Num,0)+1; end loop; /* 重症监护信息开始 1 scs_cutd_ward_type 重症监护病房类型 varchar2(6) 2 scs_cutd_inpool_time 重症监护进入时间 number(14) 3 scs_cutd_exit_time 重症监护退出时间 number(14) 4 scs_cutd_sum_dura 重症监护合计时长 varchar2(10) 重症监护信息结束 */ for C_List in CUR_icuinfo loop LS_icuinfo_Json:=null; LS_icuinfo_Json:=LS_icuinfo_Json||'{'; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_ward_type"'||':'||'"'||C_List.scs_cutd_ward_type||'"'||','; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_inpool_time"'||':'||'"'||C_List.scs_cutd_inpool_time||'"'||','; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_exit_time"'||':'||'"'||C_List.scs_cutd_inpool_time||'"'||','; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_sum_dura"'||':'||'"'||C_List.scs_cutd_sum_dura||'"'||''; LS_icuinfo_Json:=LS_icuinfo_Json||'}'; insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,scs_cutd_ward_type,scs_cutd_inpool_time,scs_cutd_exit_time,scs_cutd_sum_dura) select PYBJKID,'icuinfo','重症监护信息', C_List.scs_cutd_ward_type,C_List.scs_cutd_inpool_time,C_List.scs_cutd_exit_time,C_List.scs_cutd_sum_dura from dual; LS_icuinfo_Num:=nvl(LS_icuinfo_Num,0)+1; end loop; --查询列表数据,无插入一笔空尽量,以便打印显示 --基金支付信息开始 select count(1) into LS_payinfo_Num from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='payinfo'; --无数据插入一笔空 if nvl(LS_payinfo_Num,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC) select PYBJKID,'payinfo','基金支付信息' from dual; end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_payinfo_Num,0)||'',1,200); --门诊慢特病诊断信息开始 select count(1) into LS_opspdiseinfo_Num from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='opspdiseinfo'; --无数据插入一笔空 if nvl(LS_opspdiseinfo_Num,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC) select PYBJKID,'opspdiseinfo','门诊慢特病诊断信息' from dual; end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_opspdiseinfo_Num,0)||'',1,200); --住院诊断信息< diseinfo>开始 select count(1) into LS_opspdiseinfo_Num from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='diseinfo'; --无数据插入一笔空 if nvl(LS_diseinfo_Num,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'diseinfo','住院诊断信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_diseinfo_Num,0)||'',1,200); --收费项目信息开始 select count(1) into LS_iteminfo_Num from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='iteminfo'; --无数据插入一笔空 if nvl(LS_iteminfo_Num,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'iteminfo','收费项目信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_iteminfo_Num,0)||'',1,200); --手术操作信息开始 select count(1) into LS_oprninfo_Num from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='oprninfo'; --无数据插入一笔空 if nvl(LS_oprninfo_Num,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'oprninfo','手术操作信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_oprninfo_Num,0)||'',1,200); update SF_YBJSD0 set BAKXML=LS_BAKXML where YBJKID=PYBJKID; --重症监护信息开始 select count(1) into LS_icuinfo_Num from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='icuinfo'; --无数据插入一笔空 if nvl(LS_icuinfo_Num,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'icuinfo','重症监护信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_icuinfo_Num,0)||'',1,200); --输血信息 select count(1) into LS_bldinfo_Num from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='bldinfo'; if nvl(LS_bldinfo_Num,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'bldinfo','输血信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||LS_bldinfo_Num||'',1,200); end if; if PCOMMIT='Y' then commit; end if; PZXZT00:=1;--输出:执行状态 0:失败 1:成功 exception when no_data_found then PZXZT00:=0; PERRMSG:=substrb('门诊医疗保障基金结算清单查询数据异常!位置['||LS_ERRSTR||']原因:'||sqlerrm,1,200); when others then PZXZT00:=0; PERRMSG:=substrb('门诊医疗保障基金结算清单查询数据异常!位置['||LS_ERRSTR||']原因:'||sqlerrm,1,200); end; / --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ create or replace procedure SP_SF_NEWYBJK_JSQDXXSC( PBRID00 in number ,--输入:病人ID PGHID00 in number ,--输入:挂号ID PCZY000 in number ,--输入:操作员编码 PJZDH00 in number ,--输入:结账单号 PYBJKID in number ,--输入:医保接口ID PQQCS00 in varchar2 default '' ,--输入(可空):请求参数(XML格式) PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 PZXZT00 out number ,--输出:执行状态 0:失败 1:成功 PFHCS00 out varchar2 ,--输出:返回参数(XML格式) PERRMSG out varchar2 --输出:错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments --linzetao 2021.09.22 create by 门诊医疗保障基金结算清单信息上传:SP_SF_NEWYBJK_JSQDXXSC MZSF9-20210922-003 --linzetao 2021.09.24 增加节点psn_no:人员编号 MZSF9-20210924-001 --zhangyc 2021.09.28 oprn_oprt_name、oprn_oprt_code 无值传“-” by MZSF9-20210928-001 --zhangyc 2021.10.09 门诊慢特病诊断信息改为传特殊病种以及根据jsqd_Notsend_list配置是否发送list by MZSF9-20211009-004 --zhangyc 2021.10.13 清单上传优化 by MZSF9-20211013-002 --zhangyc 2021.10.18 清单上传优化 by MZSF9-20211018-002 --zhangyc 2021.10.19 psn_no改为SF_SF_GETYBSXZD获取以及增加参数JSQD_MainNodeName配置主项节点编码“setlinfo” by MZSF9-20211019-001 --zhangyc 2021.10.26 清单下载psn_no、setl_id 用"data": {}中 by MZSF9-20211026-005 --zhangyc 2021.11.03 清单优化 by MZSF9-20211104-001 --zhangyc 2021.11.08 增加医保返回ybtcPay by MZSF9-20211110-001 -- --------- ---------- ------- LS_ERRSTR varchar2(50); RGHXX SF_BRXXB0%rowtype; --挂号信息 RBRXX BM_BRXXB0%rowtype; --基本信息 RJZXX SF_JZB000%rowtype; --结账表 LS_JKFSZ0 SF_YBJKMX.JKFSZ0%type;--接口发送值 LS_JKFHZ0 SF_YBJKMX.JKFHZ0%type;--接口返回值 LS_dscg_time varchar2(14); --dscg_time 出院时间 number(14) LS_adm_caty varchar2(20); --adm_caty 入院科别 LS_dscg_caty varchar2(20); --dscg_caty 出院科别 LS_resp_nurs_name varchar2(50); --resp_nurs_name 责任护士姓名 varchar2(50) LS_resp_nurs_code varchar2(30); --resp_nurs_code 责任护士代码 varchar2(30) LS_chfpdr_name varchar2(50); --chfpdr_name 主诊医师姓名 varchar2(50) LS_chfpdr_code varchar2(30); --chfpdr_code 主诊医师代码 varchar2(30) LS_setl_begn_date varchar2(8); --setl_begn_date 结算开始日期 number(8) LS_setl_end_date varchar2(8); --setl_end_date 结算结束日期 number(8) LS_hi_paymtd varchar2(3); --hi_paymtd 医保支付方式 varchar2(3) LS_psn_selfpay number(12,2); --psn_selfpay 个人自付 number(16,2) Y LS_psn_ownpay number(12,2); --psn_ownpay 个人自费 number(16,2) Y=YBYL63(bkc011)  LS_acct_pay number(12,2); --acct_pay 个人账户支出 number(16,2) Y LS_psn_cashpay number(12,2); --psn_cashpay 个人现金支付 number(16,2) Y LS_HJJE00 SF_JZB000.HJJE00%type;--合计金额 LS_TCJJZF SF_JZB000.TCJJZF%type;--统筹基金 LS_GRZHZF SF_JZB000.GRZHZF%type;--医保账户支付 LS_ZFJE00 SF_JZB000.ZFJE00%type;--个人支付 LS_XJFKJE SF_JZB000.XJFKJE%type;--现金支付 LS_PJH000 SF_JZB000.PJH000%type;--票据号 LS_bill_code varchar2(50); --bill_code 票据代码 varchar2(50) Y LS_bill_no varchar2(50); --bill_no 票据号码 varchar2(30) Y LS_biz_sn varchar2(50); --biz_sn 业务流水号 varchar2(50) Y LS_payinfo_Json SF_YBJKMX.VALUE0%type;--[字符]基金支付信息 LS_opspdiseinfo_Json SF_YBJKMX.VALUE0%type;--[字符]门诊慢特病诊断信息 LS_diseinfo_Json SF_YBJKMX.VALUE0%type;--[字符]住院诊断信息< diseinfo> LS_iteminfo_Json SF_YBJKMX.VALUE0%type;--[字符]收费项目信息 LS_oprninfo_Json SF_YBJKMX.VALUE0%type;--[字符]手术操作信息 LS_icuinfo_Json SF_YBJKMX.VALUE0%type;--[字符]重症监护信息 LS_payinfo_Num number(12);--[数量]基金支付信息 LS_opspdiseinfo_Num number(12);--[数量]门诊慢特病诊断信息 LS_diseinfo_Num number(12);--[数量]住院诊断信息< diseinfo> LS_iteminfo_Num number(12);--[数量]收费项目信息 LS_oprninfo_Num number(12);--[数量]手术操作信息 LS_icuinfo_Num number(12);--[数量]重症监护信息 LS_NullStr varchar2(20);--空值字符 LS_YBYL52 SF_JZB000.YBYL52%type;--YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_YBYL53 SF_JZB000.YBYL53%type;--YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_YBYL54 SF_JZB000.YBYL54%type;--YBYL54 bkc040 个人现金支付金额(实付现金) LS_YBYL55 SF_JZB000.YBYL55%type;--YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 LS_YBYL56 SF_JZB000.YBYL56%type;--YBYL56 bkc045 其中:统筹基金支付 LS_YBYL57 SF_JZB000.YBYL57%type;--YBYL57 bkc059 其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_YBYL58 SF_JZB000.YBYL58%type;--YBYL58 bkc052 其中:大病保险基金支付(商业保险支付) LS_YBYL59 SF_JZB000.YBYL59%type;--YBYL59 bkc062 其中:精准扶贫医疗叠加 LS_YBYL60 SF_JZB000.YBYL60%type;--YBYL60 bkc060 其中:医疗救助基金 LS_YBYL61 SF_JZB000.YBYL61%type;--YBYL61 ake173 其中:其他基金支付 LS_YBYL62 SF_JZB000.YBYL62%type;--YBYL62 ake026 其中:企业补充 LS_YBYL63 SF_JZB000.YBYL63%type;--YBYL63 bkc011 个人自费(非医保费用) LS_YBYL67 SF_JZB000.YBYL67%type;--YBYL67 bkc612 补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_YBYL68 SF_JZB000.YBYL68%type;--YBYL68 bkc064 产前检查费(医保返回) LS_YBDJH0 varchar2(30);--医保单据号 LS_JZDH00 number(10); LS_psn_no varchar2(30);--psn_no:人员编号 LS_DYBZBM xt_ICD900.DYBZBM%type;--医保诊断对应编码 LS_DYJBMC xt_ICD900.DYJBMC%type;--医保诊断对应名称 LS_diag_code varchar2(50);--diag_code 诊断代码 varchar2(50) LS_diag_name varchar2(100);--diag_name 诊断名称 varchar2(100) LS_AAZ149 varchar2(50);--特殊病种编码 LS_TSBZBH varchar2(50);--特殊病种编码 LS_TSBZMC varchar2(100);--特殊病种名称 LS_jsqd_Notsend_list varchar2(100);--医疗基金结算清单不发送list多个|隔开 LS_JSQD_MainNodeName varchar2(100);--医疗保障基金结算清单上传、查询主节点编码:(分隔符用|)(参考格式:setlinfo|setlinfo) LS_MainNodeName varchar2(50); --主项节点编码 LS_setlinfo_Json SF_YBJKMX.VALUE0%type;--结算清单信息开始 LS_VALUE0 SF_YBJKMX.VALUE0%type;-- LS_fixmedins_code varchar2(50);--定点医药机构编号 LS_fixmedins_name varchar2(50);--定点医药机构名称 LS_YYID00 XT_YYXX00.YYID00%type;--医院ID号 LS_YYQC00 XT_YYXX00.YYQC00%type;--医院全称 LS_YYJC00 XT_YYXX00.YYJC00%type;--医院简称 LS_GJBZBM XT_YYXX00.GJBZBM%type;--国家标准编码 LS_medins_fill_dept varchar2(50);--医疗机构填报部门 LS_medins_fill_psn varchar2(50);--医疗机构填报人 LS_YGBMMC BM_BMBM00.BMMC00%type;--员工部门名称 LS_YGZWXM BM_YGBM00.ZWXM00%type;--员工中文姓名 LS_setl_list_sn varchar2(30);--结算清单流水号:9 位 格式:年度编码(2 位) 顺序号编码(7 位) LS_YBTCPAY SF_YBJSD0.YBTCPAY%type;--ybtcPay:医保统筹基金 cursor CUR_YBJKZD is select a.* from BM_YBJKZD A where 1=1 and A.JKBM00=2 and A.SFYX00='1' order by A.PXXH00,A.NBID00; --诊断信息 cursor CUR_BRZDXX is select A.ZZDBZ0,A.ICD900 as ZDM000,A.ZDMC00 as ZDMC00 from YS_BRZDXX A where 1=1 and A.GHID00=PGHID00 and length(A.ICD900)<20 order by A.ICD900; --基金支付信息开始 cursor CUR_payinfo is select tt.fund_pay_type,sum(tt.fund_payamt) as fund_payamt from ( select decode(aa.ZFFS00,3,'310200',4,'310100',16,'320100','390100') as fund_pay_type,--fund_pay_type 基金支付类型 varchar2(6) aa.JFJE00 as fund_payamt--fund_payamt 基金支付金额 number(16,2) from SF_BRJFB0 AA where aa.BRID00=PBRID00 and ((nvl(PJZDH00,0)>0 and aa.JZDH00=PJZDH00) or (nvl(PJZDH00,0)=0 and 1=1)) and aa.ZFFS00 in (3,4,10,11,13,14,15,16) ) tt group by tt.fund_pay_type; /* --门诊慢特病诊断信息开始 cursor CUR_opspdiseinfo is select a.ZZDBZ0 as ZZDBZ0, a.ZDMC00 as DIAG_NAME, --1 diag_name 诊断名称 varchar2(100) a.ICD900 as DIAG_CODE, --2 diag_code 诊断代码 varchar2(20) null as OPRN_OPRT_NAME, --3 oprn_oprt_name 手术操作名称 varchar2(500) null as OPRN_OPRT_CODE, --4 oprn_oprt_code 手术操作代码 varchar2(30) '1' as MAINDIAG_FLAG --5 maindiag_flag 主诊断标志 varchar2(3) ,0:否' '1','是' from YS_BRZDXX A where 1=1 and A.GHID00=PGHID00 order by A.ICD900; */ --门诊慢特病诊断信息开始 cursor CUR_opspdiseinfo is select '0' as ZZDBZ0, LS_TSBZMC as diag_name,--1 diag_name 诊断名称 varchar2(100) LS_TSBZBH as diag_code,--2 diag_code 诊断代码 varchar2(20) null as oprn_oprt_name,--3 oprn_oprt_name 手术操作名称 varchar2(500) null as oprn_oprt_code,--4 oprn_oprt_code 手术操作代码 varchar2(30) '0' as maindiag_flag--5 maindiag_flag 主诊断标志 varchar2(3) ,0:否' '1','是' from dual A where LS_TSBZBH is not null ; --住院诊断信息开始 cursor CUR_diseinfo is select a.ZZDBZ0 as ZZDBZ0, decode(a.ZZDBZ0,'3','1','2') as DIAG_TYPE, --1 diag_type 诊断类别 varchar2(3) '1','西医主要诊断','2','西医其他诊断' '3','中医主病诊断' '4','中医主证诊断' a.ICD900 as DIAG_CODE, --2 diag_code 诊断代码 varchar2(20) a.ZDMC00 as DIAG_NAME, --3 diag_name 诊断名称 varchar2(100) '4' as ADM_COND_TYPE, --4 adm_cond_type 入院病情类型 varchar2(3) 1','有' ,'3','情况不明' '2','临床未确定' '4','无' decode(a.ZZDBZ0,'3','1','0') as MAINDIAG_FLAG --5 maindiag_flag 主诊断标志 varchar2(3) 0:否' '1','是' from YS_BRZDXX A where 1=2 and A.GHID00=PGHID00 and length(A.ICD900)<20 order by A.ICD900; --收费项目信息开始 cursor CUR_iteminfo is select tt.MED_CHRGITM as MED_CHRGITM, sum(tt.AMT) as AMT, sum(tt.CLAA_SUMFEE) as CLAA_SUMFEE, sum(tt.CLAB_AMT) as CLAB_AMT, sum(tt.FULAMT_OWNPAY_AMT) as FULAMT_OWNPAY_AMT, sum(tt.OTH_AMT) as OTH_AMT from( select nvl(CC.GJFPBH,'14') as MED_CHRGITM, --1 med_chrgitm 医疗收费项目 varchar2(6) nvl(bb.AKC227,0) as AMT, --2 amt 金额 number(16,2) =akc227 nvl(bb.BKC008,0) as CLAA_SUMFEE, --3 claa_sumfee 甲类费用合计 number(16,2)=bkc008 nvl(bb.BKC009,0) as CLAB_AMT, --4 clab_amt 乙类金额 number(16,2)=bkc009 nvl(bb.BKC011,0) as FULAMT_OWNPAY_AMT,--5 fulamt_ownpay_amt 全自费金额 number(16,2)=bkc011 nvl(bb.BKC010,0) as OTH_AMT --6 oth_amt 其他金额 number(16,2) =bkc010 from SF_JZB000 AA,SF_YBFPMX BB,BM_FPXM00 CC where AA.JZDH00 = BB.JZDH00 and BB.AKA063 = CC.BH0000 and AA.BRID00 = PBRID00 and AA.JZDH00 = PJZDH00 ) tt group by tt.MED_CHRGITM; --手术操作信息开始 cursor CUR_oprninfo is select decode(bb.SFZSS0,'1','1','2') as oprn_oprt_type, --1 oprn_oprt_type 手术操作类别 varchar2(3) 1:主要手术及操作' '2','其他手术及操作' bb.SSXMJC as oprn_oprt_name, --2 oprn_oprt_name 手术操作名称 varchar2(500) nvl(bb.CM3000,SSBH00) as oprn_oprt_code, --3 oprn_oprt_code 手术操作代码 varchar2(30) aa.SQRQ00 as oprn_oprt_date, --4 oprn_oprt_date 手术操作日期 number(8) SF_ZY_GETJSQD_JKFSZ0('anst_mtd_code',aa.MZBH00) as anst_way, --5 anst_way 麻醉方式 varchar2(6) =xt_mzfs00 aa.SSYSXM as oper_dr_name, --6 oper_dr_name 术者医师姓名 varchar2(50) nvl((select nvl(tt.YBYGDM,tt.YSZJHM) from BM_YGBM00 tt where tt.YGBH00=aa.SSYS00 and rownum=1),aa.SSYS00) as oper_dr_code, --7 oper_dr_code 术者医师代码 varchar2(20) aa.MZYSXM as anst_dr_name, --8 anst_dr_name 麻醉医师姓名 varchar2(50) nvl((select nvl(tt.YBYGDM,tt.YSZJHM) from BM_YGBM00 tt where tt.YGBH00=aa.MZYS00 and rownum=1),aa.MZYS00) as anst_dr_code, --9 anst_dr_code 麻醉医师代码 varchar2(20) aa.SSQSRQ||substrb(aa.SSQSSJ,1,2)||substrb(aa.SSQSSJ,4,2)||substrb(aa.SSQSSJ,7,2) as oprn_oprt_begintime, --10 oprn_oprt_begintime 手术开始时间 number(14) aa.SSJSRQ||substrb(aa.SSJSSJ,1,2)||substrb(aa.SSJSSJ,4,2)||substrb(aa.SSJSSJ,7,2) as oprn_oprt_endtime, --11 oprn_oprt_endtime 手术结束时间 number(14) aa.MZKSRQ||substrb(aa.MZKSSJ,1,2)||substrb(aa.MZKSSJ,4,2)||substrb(aa.MZKSSJ,7,2) as anst_begintime, --12 anst_begintime 麻醉开始时间 number(14) aa.MZJSRQ||substrb(aa.MZJSSJ,1,2)||substrb(aa.MZJSSJ,4,2)||substrb(aa.MZJSSJ,7,2) as anst_endtime --13 anst_endtime 麻醉结束时间 number(14) from SS_YW0000 aa,SS_YWMX00 bb where aa.SSDH00=bb.SSDH00 and aa.MZZYBZ='0' and aa.BRID00=PBRID00 and aa.ZYGHID=PGHID00; --重症监护信息开始 cursor CUR_icuinfo is select null as scs_cutd_ward_type, --1 scs_cutd_ward_type 重症监护病房类型 varchar2(6) null as scs_cutd_inpool_time, --2 scs_cutd_inpool_time 重症监护进入时间 number(14) null as scs_cutd_exit_time, --3 scs_cutd_exit_time 重症监护退出时间 number(14) null as scs_cutd_sum_dura --4 scs_cutd_sum_dura 重症监护合计时长 varchar2(10) from dual where 1=2; begin /* 接口字典:select * from BM_YBJKZD where JKBM00=2; 属性字典:select * from BM_YBSXZD where JKBM00=2; */ --变量初始化 LS_ERRSTR:='变量初始化'; PZXZT00:=0; --输出:执行状态 0:失败 1:成功 PFHCS00:=''; --输出:返回参数(XML格式) PERRMSG:=''; --输出:错误信息 LS_psn_selfpay:=0; --psn_selfpay 个人自付 number(16,2) Y LS_psn_ownpay:=0; --psn_ownpay 个人自费 number(16,2) Y=YBYL63(bkc011)  LS_acct_pay:=0; --acct_pay 个人账户支出 number(16,2) Y LS_psn_cashpay:=0; --psn_cashpay 个人现金支付 number(16,2) Y LS_payinfo_Json:=null; --[字符]基金支付信息 LS_opspdiseinfo_Json:=null;--[字符]门诊慢特病诊断信息 LS_diseinfo_Json:=null; --[字符]住院诊断信息< diseinfo> LS_iteminfo_Json:=null; --[字符]收费项目信息 LS_oprninfo_Json:=null; --[字符]手术操作信息 LS_icuinfo_Json:=null; --[字符]重症监护信息 LS_payinfo_Num:=0; --[数量]基金支付信息 LS_opspdiseinfo_Num:=0; --[数量]门诊慢特病诊断信息 LS_diseinfo_Num:=0; --[数量]住院诊断信息< diseinfo> LS_iteminfo_Num:=0; --[数量]收费项目信息 LS_oprninfo_Num:=0; --[数量]手术操作信息 LS_icuinfo_Num:=0; --[数量]重症监护信息 LS_NullStr:='-'; --空值字符 LS_YBYL52:=0; --YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_YBYL53:=0; --YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_YBYL54:=0; --YBYL54 bkc040 个人现金支付金额(实付现金) LS_YBYL55:=0; --YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 LS_YBYL56:=0; --YBYL56 bkc045 其中:统筹基金支付 LS_YBYL57:=0; --YBYL57 bkc059 其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_YBYL58:=0; --YBYL58 bkc052 其中:大病保险基金支付(商业保险支付) LS_YBYL59:=0; --YBYL59 bkc062 其中:精准扶贫医疗叠加 LS_YBYL60:=0; --YBYL60 bkc060 其中:医疗救助基金 LS_YBYL61:=0; --YBYL61 ake173 其中:其他基金支付 LS_YBYL62:=0; --YBYL62 ake026 其中:企业补充 LS_YBYL63:=0; --YBYL63 bkc011 个人自费(非医保费用) LS_YBYL67:=0; --YBYL67 bkc612 补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_YBYL68:=0; --YBYL68 bkc064 产前检查费(医保返回) LS_YBDJH0:=null; --医保单据号 LS_JZDH00:=0; LS_AAZ149:=null;--特殊病种编码 LS_TSBZBH:=null;--特殊病种编码 LS_TSBZMC:=null;--特殊病种名称 LS_jsqd_Notsend_list:=null;--医疗基金结算清单不发送list多个|隔开 LS_setlinfo_Json:=null;--结算清单信息开始 --医疗基金结算清单不发送list多个|隔开(基金:payinfo,慢特病:opspdiseinfo,住院诊断:diseinfo,收费项目:iteminfo,手术:oprninfo,重症监护:icuinfo) 默认值:空值 LS_jsqd_Notsend_list:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','jsqd_Notsend_list'),1,100)); --医疗保障基金结算清单上传、查询主节点编码:(分隔符用|)(参考格式:setlinfo|setlinfo) LS_JSQD_MainNodeName:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','JSQD_MainNodeName'),1,100)); LS_MainNodeName:=substrb(SF_SF_RETURNINDEXEH(LS_JSQD_MainNodeName,'|', 1),1,50);--主项节点编码 LS_fixmedins_code:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','fixmedins_code'),1,50));--定点医药机构编号 LS_fixmedins_name:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','fixmedins_name'),1,50));--定点医药机构名称 LS_medins_fill_dept:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','medins_fill_dept'),1,50));--医疗机构填报部门 LS_medins_fill_psn:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','medins_fill_psn'),1,50));--医疗机构填报人 --获取医院的国家医保标准编码 begin select c.YYID00,c.YYQC00,c.YYJC00, c.GJBZBM,b.BMMC00,a.ZWXM00 into LS_YYID00,LS_YYQC00,LS_YYJC00, LS_GJBZBM,LS_YGBMMC,LS_YGZWXM from BM_BMBM00 b,XT_YYXX00 c,BM_YGBM00 A where b.BMBH00=a.BMBH00 and b.YYID00=c.YYID00 and a.ygbh00=PCZY000; exception when others then LS_YYID00 :=null; LS_YYQC00 :=null; LS_YYJC00 :=null; LS_GJBZBM :=null; end; if trim(LS_YYJC00) is not null then LS_fixmedins_name:=substrb(trim(LS_YYJC00),1,50);--定点医药机构名称 end if; if trim(LS_GJBZBM) is not null then LS_fixmedins_code:=substrb(trim(LS_GJBZBM),1,50);--定点医药机构编号 end if; if trim(LS_YGBMMC) is not null and trim(LS_medins_fill_dept) is null then LS_medins_fill_dept:=substrb(trim(LS_YGBMMC),1,50);--员工部门名称 end if; if trim(LS_YGZWXM) is not null and trim(LS_medins_fill_psn) is null then LS_medins_fill_psn:=substrb(trim(LS_YGZWXM),1,50);--员工中文姓名 end if; --参数校验 LS_ERRSTR:='参数校验'; if nvl(PGHID00,0)=0 and nvl(PBRID00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PBRID00(病人id)和PGHID00(挂号ID),参数传值错误!';--[出参]:错误信息 return; end if; if nvl(PBRID00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PBRID00(病人id),参数传值错误!';--[出参]:错误信息 return; end if; if nvl(PGHID00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PGHID00(挂号ID),参数传值错误!';--[出参]:错误信息 return; end if; if nvl(PJZDH00,0)=0 then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='入参:PJZDH00(结账单号),参数传值错误!';--[出参]:错误信息 return; end if; --获取基本信息 begin select * into RBRXX from BM_BRXXB0 aa where 1=1 and AA.BRID00=PBRID00; exception when others then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效基本病人信息!';--[出参]:错误信息 rollback; return; end; --获取结账表 begin select * into RJZXX from SF_JZB000 aa where 1=1 and AA.BRID00=PBRID00 and JZDH00=PJZDH00 ; exception when others then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效结账记录!';--[出参]:错误信息 rollback; return; end; --查找对应的挂号信息 begin select * into RGHXX from SF_BRXXB0 aa where 1=1 and AA.BRID00=PBRID00 and AA.GHID00=PGHID00; exception when others then PZXZT00:=0;--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效挂号信息!';--[出参]:错误信息 rollback; return; end; --获取科室编码 begin select substrb(nvl(GJYBKS,YYKSBM),1,20) as adm_caty,substrb(nvl(GJYBKS,YYKSBM),1,20) as dscg_caty into LS_adm_caty,LS_dscg_caty from BM_BMBM00 aa where 1=1 and AA.BMBH00=RGHXX.GHKS00; exception when others then LS_adm_caty:=null;--adm_caty 入院科别 LS_dscg_caty:=null; --dscg_caty 出院科别 end; --责任护士代码、责任护士姓名 begin select substrb(YBYGDM,1,30) as YBYGDM,substrb(ZWXM00,1,50) as ZWXM00 into LS_resp_nurs_code,LS_resp_nurs_name from BM_YGBM00 aa where 1=1 and AA.YGBH00=RGHXX.GHY000; exception when others then LS_resp_nurs_name:=null; --resp_nurs_name 责任护士姓名 varchar2(50) LS_resp_nurs_code:=null; --resp_nurs_code 责任护士代码 varchar2(30) end; --主诊医师代码、主诊医师姓名 begin select substrb(YBYGDM,1,30) as YBYGDM,substrb(ZWXM00,1,50) as ZWXM00 into LS_chfpdr_code,LS_chfpdr_name from BM_YGBM00 aa where 1=1 and AA.YGBH00=RGHXX.JZYS00; exception when others then LS_chfpdr_name:=null; --chfpdr_name 主诊医师姓名 varchar2(50) LS_chfpdr_code:=null; --chfpdr_code 主诊医师代码 varchar2(30) end; --setl_begn_date、setl_end_date begin select min(aa.CZRQ00) as setl_begn_date,max(aa.CZRQ00) as setl_end_date into LS_setl_begn_date,LS_setl_end_date from SF_BRFY00 AA where aa.BRID00=PBRID00 and aa.JZDH00=PJZDH00; exception when others then LS_setl_begn_date:=null; --setl_begn_date 结算开始日期 number(8) LS_setl_end_date:=null; --setl_end_date 结算结束日期 number(8) end; LS_setl_begn_date:=nvl(LS_setl_begn_date,to_char(sysdate,'YYYYMMDD')); --setl_begn_date 结算开始日期 number(8) LS_setl_end_date:=nvl(LS_setl_end_date,to_char(sysdate,'YYYYMMDD'));--setl_end_date 结算结束日期 number(8) --hi_paymtd 医保支付方式 [1:按项目 2:单病种 3:按病种分值 4:基本诊断相关分组(DRG) 5:按床日 6:按人次 7:按定额 9:其他] LS_hi_paymtd:='1';--接口发送值 begin select max(aa.YBDJH0)as YBDJH0,max(aa.JZDH00) as JZDH00, sum(aa.HJJE00) as HJJE00,sum(aa.TCJJZF) as TCJJZF,sum(aa.GRZHZF) as GRZHZF,sum(aa.ZFJE00) as ZFJE00,sum(aa.XJFKJE) as XJFKJE,max(aa.PJH000) as PJH000, sum(nvl(aa.YBYL52,0)) as YBYL52,sum(nvl(aa.YBYL53,0)) as YBYL53,sum(nvl(aa.YBYL54,0)) as YBYL54,sum(nvl(aa.YBYL55,0)) as YBYL55, sum(nvl(aa.YBYL56,0)) as YBYL56,sum(nvl(aa.YBYL57,0)) as YBYL57,sum(nvl(aa.YBYL58,0)) as YBYL58,sum(nvl(aa.YBYL59,0)) as YBYL59, sum(nvl(aa.YBYL60,0)) as YBYL60,sum(nvl(aa.YBYL61,0)) as YBYL61,sum(nvl(aa.YBYL62,0)) as YBYL62,sum(nvl(aa.YBYL63,0)) as YBYL63, sum(nvl(aa.YBYL67,0)) as YBYL67,sum(nvl(aa.YBYL68,0)) as YBYL68,max(trim(aa.TSBZBH)) as TSBZBH into LS_YBDJH0,LS_JZDH00,LS_HJJE00,LS_TCJJZF,LS_GRZHZF,LS_ZFJE00,LS_XJFKJE,LS_PJH000, LS_YBYL52,LS_YBYL53,LS_YBYL54,LS_YBYL55, LS_YBYL56,LS_YBYL57,LS_YBYL58,LS_YBYL59, LS_YBYL60,LS_YBYL61,LS_YBYL62,LS_YBYL63, LS_YBYL67,LS_YBYL68,LS_TSBZBH from SF_JZB000 AA where aa.BRID00=PBRID00 and aa.JZDH00=PJZDH00; exception when others then LS_TCJJZF:=0;--统筹基金 LS_GRZHZF:=0;--医保账户支付 LS_ZFJE00:=0;--个人支付 LS_XJFKJE:=0;--现金支付 LS_PJH000:=0;--票据号 LS_YBYL52:=0;--YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 LS_YBYL53:=0;--YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 LS_YBYL54:=0;--YBYL54 bkc040 个人现金支付金额(实付现金) LS_YBYL55:=0;--YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 LS_YBYL56:=0;--YBYL56 bkc045 其中:统筹基金支付 LS_YBYL57:=0;--YBYL57 bkc059 其中:公务员医疗补助(bkc059=bkc059_1+bkc059_2+bkc059_3) LS_YBYL58:=0;--YBYL58 bkc052 其中:大病保险基金支付(商业保险支付) LS_YBYL59:=0;--YBYL59 bkc062 其中:精准扶贫医疗叠加 LS_YBYL60:=0;--YBYL60 bkc060 其中:医疗救助基金 LS_YBYL61:=0;--YBYL61 ake173 其中:其他基金支付 LS_YBYL62:=0;--YBYL62 ake026 其中:企业补充 LS_YBYL63:=0;--YBYL63 bkc011 个人自费(非医保费用) LS_YBYL67:=0;--YBYL67 bkc612 补助基金支付bkc612=bkc052 大病保险基金支付+bkc059公务员医疗补助+bkc062精准扶贫医疗叠加+bkc060医疗救助基金+ake173 其他基金支付+ake026企业补充+bkc061保健基金支付 LS_YBYL68:=0;--YBYL68 bkc064 产前检查费(医保返回) LS_JZDH00:=0; LS_YBDJH0:=null; end; --LS_YBYL52:=0;--YBYL52 akc227 医疗费总金额=个人现金支付金额+个人账户支付金额+基金支付总额 if nvl(LS_YBYL52,0)=0 then LS_YBYL52:=nvl(LS_HJJE00,0); end if; --LS_YBYL53:=0;--YBYL53 bkc102 基金支付总额=统筹基金支付+商保基金支付+公务员医疗补助+精准扶贫医疗叠加+医疗救助基金+其他基金支付+企业补充 if nvl(LS_YBYL53,0)=0 then LS_YBYL53:=nvl(LS_TCJJZF,0); end if; --LS_YBYL54:=0;--YBYL54 bkc040 个人现金支付金额(实付现金) if nvl(LS_YBYL54,0)=0 then LS_YBYL54:=nvl(LS_ZFJE00,0); end if; --LS_YBYL55:=0;--YBYL55 bkc041 个人帐户支付总额=医保帐户支付+健康帐户支付+家庭共济帐户支付 if nvl(LS_YBYL55,0)=0 then LS_YBYL55:=nvl(LS_GRZHZF,0); end if; --LS_YBYL56:=0;--YBYL56 bkc045 其中:统筹基金支付 if nvl(LS_YBYL56,0)=0 then LS_YBYL56:=nvl(LS_TCJJZF,0); end if; LS_psn_selfpay:=nvl(LS_YBYL54,0)+nvl(LS_YBYL55,0)-nvl(LS_YBYL63,0); --psn_selfpay 个人自付 number(16,2) Y=bkc040(个人现金支付)+ bkc041(个人帐户支付)-bkc011(个人自费) LS_psn_ownpay:=nvl(LS_YBYL63,0); --psn_ownpay 个人自费 number(16,2) Y=YBYL63(bkc011)  LS_acct_pay:=nvl(LS_YBYL55,0); --acct_pay 个人账户支出 number(16,2) Y=YBYL55(bkc041) LS_psn_cashpay:=nvl(LS_YBYL54,0); --psn_cashpay 个人现金支付 number(16,2) Y=YBYL54(bkc040) if nvl(LS_PJH000,0)>0 then begin select trim(AA.PJXH00) as PJXH00,aa.PJH000 as PJH000,aa.PLBH00 as PLBH00 into LS_bill_no,LS_biz_sn,LS_bill_code from SF_PJSYQK AA where AA.PJH000=LS_PJH000; exception when others then LS_bill_code:='0';--bill_code 票据代码 varchar2(50) Y LS_bill_no:='0';--bill_no 票据号码 varchar2(30) Y LS_biz_sn:='0';--biz_sn 业务流水号 varchar2(50) Y end; end if; --LS_biz_sn:=nvl(LS_biz_sn,LS_PJH000);--biz_sn 业务流水号 if LS_AAZ149 is not null then LS_TSBZBH:=LS_AAZ149; end if; if LS_TSBZBH is not null then begin select substrb(trim(AA.MC0000),1,100) into LS_TSBZMC from BM_TSBZB0 AA where trim(AA.BH0000)=trim(LS_TSBZBH) and rownum=1; exception when others then LS_TSBZBH:=null;--特殊病种编码 LS_TSBZMC:=null;--特殊病种名称 end; end if; --psn_no:人员编号 if trim(RBRXX.aac999) is not null then LS_psn_no:=trim(RBRXX.aac999); else if trim(RBRXX.YBID00) not in ('0') then LS_psn_no:=trim(RBRXX.YBID00); else LS_psn_no:=trim(RBRXX.BRZJBH); end if; end if; LS_psn_no:=substrb(SF_SF_GETYBSXZD(PBRID00,'0','psnno','','',''),1,30); LS_psn_no:=nvl(LS_psn_no,RBRXX.BRZJBH); --生成主项数据 LS_ERRSTR:='生成主项数据'; for C_JKZD in CUR_YBJKZD loop LS_JKFSZ0:=null;--接口发送值 LS_JKFHZ0:=null;--接口返回值 if C_JKZD.SJJGBM='psn_no' then--psn_no 人员编号 LS_JKFSZ0:=LS_psn_no;--接口发送值 elsif C_JKZD.SJJGBM='mdtrt_id' then--1 mdtrt_id 就诊ID varchar2(30) Y =akc190(医保住院号/医保门诊挂号流水号) LS_JKFSZ0:=trim(nvl(RJZXX.YBGHH0,RGHXX.YBGHH0)); elsif C_JKZD.SJJGBM='setl_id' then--2 setl_id 结算ID varchar2(30) Y =aae072(医保单据号) LS_JKFSZ0:=trim(nvl(RJZXX.YBSM05,RJZXX.YBDJH0)); elsif C_JKZD.SJJGBM='fixmedins_name' then--3 fixmedins_name 定点医药机构名称 varchar2(200) Y LS_JKFSZ0:=LS_fixmedins_name;--接口发送值 elsif C_JKZD.SJJGBM='fixmedins_code' then--4 fixmedins_code 定点医药机构编号 varchar2(12) Y LS_JKFSZ0:=LS_fixmedins_code;--接口发送值 elsif C_JKZD.SJJGBM='hi_setl_lv' then--5 hi_setl_lv 医保结算等级 varchar2(3) LS_JKFSZ0:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','hi_setl_lv'),1,250),'1');--接口发送值 elsif C_JKZD.SJJGBM='hi_no' then--6 hi_no 医保编号 varchar2(30)   参保人在医保系统中的唯一身份代码 LS_JKFSZ0:=nvl(RBRXX.AAC999,RBRXX.YBID00);--接口发送值 elsif C_JKZD.SJJGBM='medcasno' then--7 medcasno 病案号 varchar2(40) Y LS_JKFSZ0:=trim(RBRXX.MRN000);--接口发送值   elsif C_JKZD.SJJGBM='dcla_time' then--8 dcla_time 申报时间 number(14)   结算清单上报时间 LS_JKFSZ0:=to_char(sysdate,'YYYYMMDDHH24MISS');--接口发送值 elsif C_JKZD.SJJGBM='psn_name' then--9 psn_name 人员姓名 varchar2(50) Y LS_JKFSZ0:=trim(RBRXX.BRXM00);--接口发送值   elsif C_JKZD.SJJGBM='gend' then--10 gend 性别 varchar2(6) Y 1:男 2:女 9:未说明性别 if trim(RBRXX.BRXB00)='男' then LS_JKFSZ0:='1';--接口发送值 elsif trim(RBRXX.BRXB00)='女' then LS_JKFSZ0:='2';--接口发送值 else LS_JKFSZ0:='9';--接口发送值 end if; elsif C_JKZD.SJJGBM='brdy' then--11 brdy 出生日期 number(8) Y  LS_JKFSZ0:=trim(RBRXX.BRCSRQ);--接口发送值 elsif C_JKZD.SJJGBM='age' then--12 age 年龄 number(4,1) 大于1岁(含1岁)时必填,单位岁 LS_JKFSZ0:=SF_YS_CSRQTONL(RBRXX.BRCSRQ);--接口发送值 elsif C_JKZD.SJJGBM='ntly' then--13 ntly 国籍 varchar2(6)  Y 参照字典nat_regn_code if trim(RBRXX.BRGJ00)='中国' or trim(RBRXX.BRGJ00) is null then LS_JKFSZ0:='CHN';--接口发送值 else LS_JKFSZ0:='CHN';--接口发送值 end if; elsif C_JKZD.SJJGBM='nwb_age' then--14 nwb_age (年龄不足1周岁)年龄 number(3)   小于1岁时必填,单位天 LS_JKFSZ0:=0;--接口发送值 elsif C_JKZD.SJJGBM='naty' then--15 naty 民族 varchar2(3) Y LS_JKFSZ0:=nvl(SF_ZY_GETJSQD_JKFSZ0(C_JKZD.SJJGBM,trim(RBRXX.BRMZ00)),LS_NullStr);--接口发送值     elsif C_JKZD.SJJGBM='patn_cert_type' then--16 patn_cert_type 患者证件类别 varchar2(3) Y LS_JKFSZ0:=nvl(SF_ZY_GETJSQD_JKFSZ0(C_JKZD.SJJGBM,trim(RBRXX.BRZJLX)),LS_NullStr); elsif C_JKZD.SJJGBM='certno' then--17 certno 证件号码 varchar2(50) Y 患者证件号码 LS_JKFSZ0:=nvl(trim(RBRXX.BRZJBH),LS_NullStr);--接口发送值 elsif C_JKZD.SJJGBM='prfs' then--18 prfs 职业 varchar2(6) Y LS_JKFSZ0:=nvl(SF_ZY_GETJSQD_JKFSZ0(C_JKZD.SJJGBM,trim(RBRXX.BRZY00)),LS_NullStr); elsif C_JKZD.SJJGBM='curr_addr' then--19 curr_addr 现住址 varchar2(200) LS_JKFSZ0:=trim(RBRXX.BRJTDZ);--接口发送值    elsif C_JKZD.SJJGBM='emp_name' then--20 emp_name 单位名称 varchar2(200) LS_JKFSZ0:=trim(RBRXX.TYDWMC);--接口发送值     elsif C_JKZD.SJJGBM='emp_addr' then--21 emp_addr 单位地址 varchar2(200) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='emp_tel' then--22 emp_tel 单位电话 varchar2(50) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='poscode' then--23 poscode 邮编 varchar2(6) LS_JKFSZ0:=trim(RBRXX.BRYB00);--接口发送值    elsif C_JKZD.SJJGBM='coner_name' then--24 coner_name 联系人姓名 varchar2(50) Y  LS_JKFSZ0:=nvl(trim(RBRXX.BRLXXM),LS_NullStr);--接口发送值   elsif C_JKZD.SJJGBM='patn_rlts' then--25 patn_rlts 与患者关系 varchar2(6) Y  LS_JKFSZ0:=nvl(trim(RBRXX.BRLXGX),LS_NullStr);--接口发送值   elsif C_JKZD.SJJGBM='coner_addr' then--26 coner_addr 联系人地址 varchar2(200) Y LS_JKFSZ0:=nvl(trim(RBRXX.BRLXDZ),LS_NullStr);--接口发送值    elsif C_JKZD.SJJGBM='coner_tel' then--27 coner_tel 联系人电话 varchar2(50) Y  LS_JKFSZ0:=nvl(trim(RBRXX.BRLXDH),LS_NullStr);--接口发送值 elsif C_JKZD.SJJGBM='hi_type' then--28 hi_type 医保类型 varchar2(3) Y  参照字典MDCS_TYPE LS_JKFSZ0:=nvl(trim(nvl(RBRXX.AAE140,'310')),LS_NullStr) ;--接口发送值 elsif C_JKZD.SJJGBM='insuplc' then--29 insuplc 参保地 varchar2(6) Y LS_JKFSZ0:=nvl(trim(RBRXX.XZQH00),LS_NullStr);--接口发送值  elsif C_JKZD.SJJGBM='sp_psn_type' then--30 sp_psn_type 特殊人员类型 varchar2(6) LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='nwb_admtype' then--31 nwb_admtype 新生儿入院类型 varchar2(3) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='nwbbirwt' then--32 nwbbirwt 新生儿出生体重 number(6,2)   精确到10克(g) LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='nwbadmwt' then--33 nwbadmwt 新生儿入院体重 number(6,2)   精确到10克(g) LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='mul_nwb_bir_wt' then--mul_nwb_bir_wt 多新生儿出生体重 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='mul_nwb_adm_wt' then--33 mul_nwb_adm_wt 多新生儿入院体重 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='opsp_diag_caty' then--34 opsp_diag_caty 门诊慢特病诊断科别 varchar2(50) LS_JKFSZ0:=null;--接口发送值   elsif C_JKZD.SJJGBM='opsp_mdtrt_date' then--35 opsp_mdtrt_date 门诊慢特病就诊日期 number(8) LS_JKFSZ0:=null;--接口发送值  elsif C_JKZD.SJJGBM='ipt_med_type' then--36 ipt_med_type 住院医疗类型 varchar2(3) [1:住院 2:日间手术] LS_JKFSZ0:='1';--接口发送值 elsif C_JKZD.SJJGBM='adm_way' then--37 adm_way 入院途径 varchar2(3)[1:急诊 2:门诊 3:其他医疗机构转入 9:其他] --select * from bm_tyzd00 where zdmc00 like '%入院途径%' LS_JKFSZ0:='9';--nvl(SF_ZY_GETJSQD_JKFSZ0(C_JKZD.SJJGBM,trim(RZYXX.RYTJ00)),'9');--接口发送值     elsif C_JKZD.SJJGBM='trt_type' then--38 trt_type 治疗类别 varchar2(3) [1:西医 2.1:中医 2.2:民族医 3:中西医] --select * from bm_tyzd00 where zdmc00 like '%治疗类别%' LS_JKFSZ0:='3';--SF_ZY_GETJSQD_JKFSZ0(C_JKZD.SJJGBM,trim(RZYXX.ZLLB00));--接口发送值    elsif C_JKZD.SJJGBM='adm_time' then--39 adm_time 入院时间 number(14) LS_JKFSZ0:=null;--RZYXX.RYRQ00||substrb(RZYXX.RYSJ00,1,2)||substrb(RZYXX.RYSJ00,4,2)||substrb(RZYXX.RYSJ00,7,2);--接口发送值   elsif C_JKZD.SJJGBM='adm_caty' then--40 adm_caty 入院科别 varchar2(6) 参照科室代码(dept)当住院医疗类型(ipt_med_type)不为空时必填 LS_JKFSZ0:=LS_adm_caty;--接口发送值 elsif C_JKZD.SJJGBM='refldept_dept' then--41 refldept_dept 转科科别 varchar2(6)   参照科室代码(dept),如果超过一次以上的转科,用“→”转接表示 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='dscg_time' then--42 dscg_time 出院时间 number(14) LS_dscg_time:=null; LS_JKFSZ0:=LS_dscg_time;--接口发送值   elsif C_JKZD.SJJGBM='dscg_caty' then--43 dscg_caty 出院科别 varchar2(6) Y  参照科室代码(dept)当住院医疗类型(ipt_med_type)不为空时必填 LS_JKFSZ0:=LS_dscg_caty;--接口发送值 elsif C_JKZD.SJJGBM='act_ipt_days' then--44 act_ipt_days 实际住院天数 number(3) LS_JKFSZ0:=null;--to_date(nvl(RZYXX.CYDJRQ,to_char(sysdate,'YYYYMMDD')),'YYYYMMDD')-to_date(RZYXX.RYRQ00,'YYYYMMDD')+1;--接口发送值     elsif C_JKZD.SJJGBM='otp_wm_dise' then--45 otp_wm_dise 门(急)诊西医诊断 varchar2(200) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='wm_dise_code' then--46 wm_dise_code 西医诊断疾病代码 varchar2(20) LS_JKFSZ0:=null;--接口发送值   elsif C_JKZD.SJJGBM='otptcmdise' then--47 otptcmdise 门(急)诊中医诊断 varchar2(200) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='tcmdisecode' then--48 tcmdisecode 中医诊断代码 varchar2(20) LS_JKFSZ0:=null;--接口发送值  elsif C_JKZD.SJJGBM='diag_code_cnt' then--49 diag_code_cnt 诊断代码计数 number(3) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='oprn_oprt_code_cnt' then--50 oprn_oprt_code_cnt 手术操作代码计数 number(3) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='vent_used_dura' then--51 vent_used_dura 呼吸机使用时长 varchar2(10)   格式:天数/小时数/分钟数例:1/13/24 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='pwcry_bfadm_coma_dura' then--52 pwcry_bfadm_coma_dura 颅脑损伤患者入院前昏迷时长 varchar2(10)   格式:天数/小时数/分钟数例:1/13/24 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='pwcry_afadm_coma_dura' then--53 pwcry_afadm_coma_dura 颅脑损伤患者入院后昏迷时长 varchar2(10)   格式:天数/小时数/分钟数例:1/13/24 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='bld_cat' then--54 bld_cat 输血品种 varchar2(3) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='bld_amt' then--55 bld_amt 输血量 number(6) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='bld_unt' then--56 bld_unt 输血计量单位 varchar2(3) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='spga_nurscare_days' then--57 spga_nurscare_days 特级护理天数 number(3) LS_JKFSZ0:=0;--接口发送值    elsif C_JKZD.SJJGBM='lv1_nurscare_days' then--58 lv1_nurscare_days 一级护理天数 number(3) LS_JKFSZ0:=0;--接口发送值    elsif C_JKZD.SJJGBM='scd_nurscare_days' then--59 scd_nurscare_days 二级护理天数 number(3) LS_JKFSZ0:=0;--接口发送值    elsif C_JKZD.SJJGBM='lv3_nurscare_days' then--60 lv3_nurscare_days 三级护理天数 number(3) LS_JKFSZ0:=0;--接口发送值    elsif C_JKZD.SJJGBM='dscg_way' then--61 dscg_way 离院方式 varchar2(3) [1:医嘱离院 2:医嘱转院 3:医嘱转社区卫生服务机构/乡镇卫生院 4:非医嘱离院 5:死亡 9:其他] LS_JKFSZ0:=null;--SF_ZY_GETJSQD_JKFSZ0(C_JKZD.SJJGBM,trim(RZYXX.BRLYFS));--接口发送值    elsif C_JKZD.SJJGBM='acp_medins_name' then--62 acp_medins_name 拟接收机构名称 varchar2(100)   --当离院方式为“2”时,如果接收患者的医疗机构明确,需要填写转入医疗机构的名称;当离院方式为“3”时,如果接收患者的社区卫生服务机构明确,需要填写社区卫生服务机构/乡镇卫生院名称 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='acp_optins_code' then--63 acp_optins_code 拟接收机构代码 varchar2(30)   --当离院方式为“2”或“3”时,如果接收患者的医疗机构或社区卫生服务机构明确,需要填写机构对应的医保定点医疗机构代码 LS_JKFSZ0:=null;--接口发送值 elsif C_JKZD.SJJGBM='bill_code' then--64 bill_code 票据代码 varchar2(50) Y LS_JKFSZ0:=nvl(LS_bill_code,LS_NullStr) ;--接口发送值 elsif C_JKZD.SJJGBM='bill_no' then--65 bill_no 票据号码 varchar2(30) Y LS_JKFSZ0:=nvl(LS_bill_no,LS_NullStr) ;--接口发送值 elsif C_JKZD.SJJGBM='biz_sn' then--66 biz_sn 业务流水号 varchar2(50) Y 业务流水号 LS_JKFSZ0:=nvl(LS_biz_sn,LS_NullStr) ;--接口发送值 elsif C_JKZD.SJJGBM='days_rinp_flag_31' then--67 days_rinp_flag_31 出院31天内再住院计划标志 varchar2(3) LS_JKFSZ0:=null;--接口发送值  elsif C_JKZD.SJJGBM='days_rinp_pup_31' then--68 days_rinp_pup_31 出院31天内再住院目的 varchar2(200) LS_JKFSZ0:=null;--接口发送值    elsif C_JKZD.SJJGBM='chfpdr_name' then--69 chfpdr_name 主诊医师姓名 varchar2(50) LS_JKFSZ0:=LS_chfpdr_name;--接口发送值    elsif C_JKZD.SJJGBM='chfpdr_code' then--70 chfpdr_code 主诊医师代码 varchar2(30)   主诊医师在《医保医师代码》中的代码,在就医地未完成标准化前,可传医师在就医地系统中的唯一编号 LS_JKFSZ0:=LS_chfpdr_code;--接口发送值 elsif C_JKZD.SJJGBM='setl_begn_date' then--71 setl_begn_date 结算开始日期 number(8) Y  LS_JKFSZ0:=LS_setl_begn_date;--接口发送值 elsif C_JKZD.SJJGBM='setl_end_date' then--72 setl_end_date 结算结束日期 number(8) Y  LS_JKFSZ0:=LS_setl_end_date;--接口发送值 elsif C_JKZD.SJJGBM='psn_selfpay' then--73 psn_selfpay 个人自付 number(16,2) Y LS_JKFSZ0:=LS_psn_selfpay;--接口发送值    elsif C_JKZD.SJJGBM='psn_ownpay' then--74 psn_ownpay 个人自费 number(16,2) Y  LS_JKFSZ0:=LS_psn_ownpay;--接口发送值   elsif C_JKZD.SJJGBM='acct_pay' then--75 acct_pay 个人账户支出 number(16,2) Y LS_JKFSZ0:=LS_acct_pay;--接口发送值    elsif C_JKZD.SJJGBM='psn_cashpay' then--76 psn_cashpay 个人现金支付 number(16,2) Y  LS_JKFSZ0:=LS_psn_cashpay;--接口发送值   elsif C_JKZD.SJJGBM='hi_paymtd' then--77 hi_paymtd 医保支付方式 varchar2(3) Y [1:按项目 2:单病种 3:按病种分值 4:基本诊断相关分组(DRG) 5:按床日 6:按人次 7:按定额 9:其他] LS_JKFSZ0:=nvl(LS_hi_paymtd,LS_NullStr); elsif C_JKZD.SJJGBM='hsorg' then--78 hsorg 医保机构 varchar2(100) Y LS_JKFSZ0:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','hsorg'),1,250));--接口发送值 elsif C_JKZD.SJJGBM='hsorg_opter' then--79 hsorg_opter 医保机构经办人 varchar2(50) Y LS_JKFSZ0:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','hsorg_opter'),1,250));--接口发送值 elsif C_JKZD.SJJGBM='medins_fill_dept' then--80 medins_fill_dept 医疗机构填报部门 varchar2(100) Y  LS_JKFSZ0:=LS_medins_fill_dept;--接口发送值   elsif C_JKZD.SJJGBM='medins_fill_psn' then--81 medins_fill_psn 医疗机构填报人 varchar2(50) LS_JKFSZ0:=LS_medins_fill_psn;--接口发送值  elsif C_JKZD.SJJGBM='resp_nurs_name' then--82 resp_nurs_name 责任护士姓名 varchar2(50) LS_JKFSZ0:=LS_resp_nurs_name;--接口发送值     elsif C_JKZD.SJJGBM='resp_nurs_code' then--83 resp_nurs_code 责任护士代码 varchar2(30)   责任护士在《医保护士代码》中的代码,在就医地未完成标准化前,可传护士在就医地系统中的唯一编号 LS_JKFSZ0:=LS_resp_nurs_code;--接口发送值 elsif C_JKZD.SJJGBM='stas_type' then--状态分类[0未提交,1已提交,2审核通过,3审核不通过] LS_JKFSZ0:='1';--接口发送值 end if; --拼接json字符 LS_VALUE0:=substrb('"'||trim(C_JKZD.SJJGBM)||'"'||':'||'"'||trim(LS_JKFSZ0)||'"',1,4000); if trim(LS_setlinfo_Json) is null then LS_setlinfo_Json:=substrb(LS_VALUE0,1,4000); else LS_setlinfo_Json:=substrb(LS_setlinfo_Json||','||LS_VALUE0, 1,4000); end if; if trim(LS_MainNodeName) is null then --主项节点编码 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(C_JKZD.SJJGBM,1,50),substrb(C_JKZD.SJJGMC,1,100), LS_JKFSZ0,LS_JKFHZ0,'1',substrb(C_JKZD.BZ0000,1,200) from dual; end if; end loop; --结算清单信息开始 if trim(LS_MainNodeName) is not null and trim(LS_setlinfo_Json) is not null then --主项节点编码 LS_setlinfo_Json:=substrb('{'||LS_setlinfo_Json||'}', 1,4000); insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,ZDLX00) select PYBJKID,LS_payinfo_Num,LS_MainNodeName,'data',LS_MainNodeName,'结算清单信息',null,null,'D',null,LS_setlinfo_Json,'D' from dual; end if; /* 基金支付信息开始 1 fund_pay_type 基金支付类型 varchar2(6) 2 fund_payamt 基金支付金额 number(16,2) 基金支付信息结束 */ if LS_jsqd_Notsend_list is null or instrb('|'||LS_jsqd_Notsend_list||'|','|'||'payinfo'||'|')<=0 then for C_List in CUR_payinfo loop LS_payinfo_Json:=null; LS_payinfo_Json:=LS_payinfo_Json||'{'; LS_payinfo_Json:=LS_payinfo_Json||'"fund_pay_type"'||':'||'"'||C_List.fund_pay_type||'"'||','; LS_payinfo_Json:=LS_payinfo_Json||'"fund_payamt"'||':'||'"'||C_List.fund_payamt||'"'||''; LS_payinfo_Json:=LS_payinfo_Json||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,LS_payinfo_Num,'payinfo','data','payinfo','基金支付信息',null,null,'1',null,LS_payinfo_Json from dual; LS_payinfo_Num:=nvl(LS_payinfo_Num,0)+1; end loop; --无数据插入一笔空 if nvl(LS_payinfo_Num,0)=0 then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'payinfo','data','payinfo','基金支付信息',null,null,'1',null, LS_payinfo_Json from dual; end if; end if; /* 门诊慢特病诊断信息开始 1 diag_name 诊断名称 varchar2(100) 2 diag_code 诊断代码 varchar2(20) 3 oprn_oprt_name 手术操作名称 varchar2(500) 4 oprn_oprt_code 手术操作代码 varchar2(30) 5 maindiag_flag 主诊断标志 varchar2(3) 门诊慢特病诊断信息结束 */ if LS_jsqd_Notsend_list is null or instrb('|'||LS_jsqd_Notsend_list||'|','|'||'opspdiseinfo'||'|')<=0 then for C_List in CUR_opspdiseinfo loop LS_DYBZBM:=null;--医保诊断对应编码 LS_DYJBMC:=null;--医保诊断对应名称 LS_diag_code:=null;--diag_code:诊断代码 LS_diag_name:=null;--diag_name:诊断名称 /* begin if C_List.ZZDBZ0='1' then --中医 select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from BM_ZYJB00 B where B.JBBH00=C_List.diag_code and nvl(SYBZ00,'1')='1' and rownum=1; elsif C_List.ZZDBZ0='2' then --症候 select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from BM_ZYZH00 B where B.ZHBH00=C_List.diag_code and nvl(SYBZ00,'1')='1' and rownum=1; else select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from xt_ICD900 B where B.ICD900=C_List.diag_code and nvl(SYBZ00,'1')='1'; end if; exception when others then LS_diag_code:=substrb(C_List.diag_code,1,50);--diag_code 诊断代码 varchar2(50) LS_diag_name:=substrb(C_List.diag_name,1,100);--diag_name 诊断名称 varchar2(100) end; LS_diag_code:=substrb(nvl(LS_DYBZBM,C_List.diag_code),1,50);--diag_code 诊断代码 varchar2(50) LS_diag_name:=substrb(nvl(LS_DYJBMC,C_List.diag_name),1,100);--diag_name 诊断名称 varchar2(100) */ LS_diag_code:=substrb(C_List.diag_code,1,50);--diag_code 诊断代码 varchar2(50) LS_diag_name:=substrb(C_List.diag_name,1,100);--diag_name 诊断名称 varchar2(100) LS_opspdiseinfo_Json:=null; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'{'; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"diag_name"'||':'||'"'||LS_diag_name||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"diag_code"'||':'||'"'||LS_diag_code||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"oprn_oprt_name"'||':'||'"'||nvl(C_List.oprn_oprt_name,LS_NullStr)||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"oprn_oprt_code"'||':'||'"'||nvl(C_List.oprn_oprt_code,LS_NullStr)||'"'||','; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'"maindiag_flag"'||':'||'"'||C_List.maindiag_flag||'"'||''; LS_opspdiseinfo_Json:=LS_opspdiseinfo_Json||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,LS_opspdiseinfo_Num,'opspdiseinfo','data','opspdiseinfo','门诊慢特病诊断信息', null,null,'1',null, LS_opspdiseinfo_Json from dual; LS_opspdiseinfo_Num:=nvl(LS_opspdiseinfo_Num,0)+1; end loop; --无数据插入一笔空 if nvl(LS_opspdiseinfo_Num,0)=0 then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'opspdiseinfo','data','opspdiseinfo','门诊慢特病诊断信息', null,null,'1',null,LS_opspdiseinfo_Json from dual; end if; end if; /* 住院诊断信息< diseinfo>开始 1 diag_type 诊断类别 varchar2(3) 2 diag_code 诊断代码 varchar2(20) 3 diag_name 诊断名称 varchar2(100) 4 adm_cond_type 入院病情类型 varchar2(3) 5 maindiag_flag 主诊断标志 varchar2(3) 住院诊断信息< diseinfo>结束 */ if LS_jsqd_Notsend_list is null or instrb('|'||LS_jsqd_Notsend_list||'|','|'||'diseinfo'||'|')<=0 then for C_List in CUR_diseinfo loop LS_DYBZBM:=null;--医保诊断对应编码 LS_DYJBMC:=null;--医保诊断对应名称 LS_diag_code:=null;--diag_code:诊断代码 LS_diag_name:=null;--diag_name:诊断名称 begin if C_List.ZZDBZ0='1' then --中医 select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from BM_ZYJB00 B where B.JBBH00=C_List.diag_code and nvl(SYBZ00,'1')='1' and rownum=1; elsif C_List.ZZDBZ0='2' then --症候 select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from BM_ZYZH00 B where B.ZHBH00=C_List.diag_code and nvl(SYBZ00,'1')='1' and rownum=1; else select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from xt_ICD900 B where B.ICD900=C_List.diag_code and nvl(SYBZ00,'1')='1'; end if; exception when others then LS_diag_code:=substrb(C_List.diag_code,1,50);--diag_code 诊断代码 varchar2(50) LS_diag_name:=substrb(C_List.diag_name,1,100);--diag_name 诊断名称 varchar2(100) end; LS_diag_code:=substrb(nvl(LS_DYBZBM,C_List.diag_code),1,50);--diag_code 诊断代码 varchar2(50) LS_diag_name:=substrb(nvl(LS_DYJBMC,C_List.diag_name),1,100);--diag_name 诊断名称 varchar2(100) LS_diseinfo_Json:=null; LS_diseinfo_Json:=LS_diseinfo_Json||'{'; LS_diseinfo_Json:=LS_diseinfo_Json||'"diag_type"'||':'||'"'||C_List.diag_type||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"diag_code"'||':'||'"'||LS_diag_code||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"diag_name"'||':'||'"'||LS_diag_name||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"adm_cond_type"'||':'||'"'||C_List.adm_cond_type||'"'||','; LS_diseinfo_Json:=LS_diseinfo_Json||'"maindiag_flag"'||':'||'"'||C_List.maindiag_flag||'"'||''; LS_diseinfo_Json:=LS_diseinfo_Json||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,LS_diseinfo_Num,'diseinfo','data','diseinfo','住院诊断信息', null,null,'1',null,LS_diseinfo_Json from dual; LS_diseinfo_Num:=nvl(LS_diseinfo_Num,0)+1; end loop; --无数据插入一笔空 if nvl(LS_diseinfo_Num,0)=0 then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'diseinfo','data','diseinfo','住院诊断信息', null,null,'1',null,LS_diseinfo_Json from dual; end if; end if; /* 收费项目信息开始 1 med_chrgitm 医疗收费项目 varchar2(6) 2 amt 金额 number(16,2) 3 claa_sumfee 甲类费用合计 number(16,2) 4 clab_amt 乙类金额 number(16,2) 5 fulamt_ownpay_amt 全自费金额 number(16,2) 6 oth_amt 其他金额 number(16,2) 收费项目信息结束 */ if LS_jsqd_Notsend_list is null or instrb('|'||LS_jsqd_Notsend_list||'|','|'||'iteminfo'||'|')<=0 then for C_List in CUR_iteminfo loop LS_iteminfo_Json:=null; LS_iteminfo_Json:=LS_iteminfo_Json||'{'; LS_iteminfo_Json:=LS_iteminfo_Json||'"med_chrgitm"'||':'||'"'||C_List.med_chrgitm||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"amt"'||':'||'"'||C_List.amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"claa_sumfee"'||':'||'"'||C_List.claa_sumfee||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"clab_amt"'||':'||'"'||C_List.clab_amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"fulamt_ownpay_amt"'||':'||'"'||C_List.fulamt_ownpay_amt||'"'||','; LS_iteminfo_Json:=LS_iteminfo_Json||'"oth_amt"'||':'||'"'||C_List.oth_amt||'"'||''; LS_iteminfo_Json:=LS_iteminfo_Json||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,LS_iteminfo_Num,'iteminfo','data','iteminfo','收费项目信息', null,null,'1',null,LS_iteminfo_Json from dual; LS_iteminfo_Num:=nvl(LS_iteminfo_Num,0)+1; end loop; --无数据插入一笔空 if nvl(LS_iteminfo_Num,0)=0 then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'iteminfo','data','iteminfo','收费项目信息', null,null,'1',null,LS_iteminfo_Json from dual; end if; end if; /* 手术操作信息开始 1 oprn_oprt_type 手术操作类别 varchar2(3) 2 oprn_oprt_name 手术操作名称 varchar2(500) 3 oprn_oprt_code 手术操作代码 varchar2(30) 4 oprn_oprt_date 手术操作日期 number(8) 5 anst_way 麻醉方式 varchar2(6) 6 oper_dr_name 术者医师姓名 varchar2(50) 7 oper_dr_code 术者医师代码 varchar2(20) 8 anst_dr_name 麻醉医师姓名 varchar2(50) 9 anst_dr_code 麻醉医师代码 varchar2(20) 10 oprn_oprt_begintime 手术开始时间 number(14) 11 oprn_oprt_endtime 手术结束时间 number(14) 12 anst_begintime 麻醉开始时间 number(14) 13 anst_endtime 麻醉结束时间 number(14) 手术操作信息结束 */ if LS_jsqd_Notsend_list is null or instrb('|'||LS_jsqd_Notsend_list||'|','|'||'oprninfo'||'|')<=0 then for C_List in CUR_oprninfo loop LS_oprninfo_Json:=null; LS_oprninfo_Json:=LS_oprninfo_Json||'{'; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_type"'||':'||'"'||C_List.oprn_oprt_type||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_name"'||':'||'"'||C_List.oprn_oprt_name||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_code"'||':'||'"'||C_List.oprn_oprt_code||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_date"'||':'||'"'||C_List.oprn_oprt_date||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_way"'||':'||'"'||C_List.anst_way||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oper_dr_name"'||':'||'"'||nvl(C_List.oper_dr_name,LS_NullStr)||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oper_dr_code"'||':'||'"'||nvl(C_List.oper_dr_code,LS_NullStr)||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_dr_name"'||':'||'"'||nvl(C_List.anst_dr_name,LS_NullStr)||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_dr_code"'||':'||'"'||nvl(C_List.anst_dr_code,LS_NullStr)||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_begintime"'||':'||'"'||C_List.oprn_oprt_begintime||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"oprn_oprt_endtime"'||':'||'"'||C_List.oprn_oprt_endtime||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_begintime"'||':'||'"'||C_List.anst_begintime||'"'||','; LS_oprninfo_Json:=LS_oprninfo_Json||'"anst_endtime"'||':'||'"'||C_List.anst_endtime||'"'||''; LS_oprninfo_Json:=LS_oprninfo_Json||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,LS_oprninfo_Num,'oprninfo','data','oprninfo','手术操作信息', null,null,'1',null,LS_oprninfo_Json from dual; LS_oprninfo_Num:=nvl(LS_oprninfo_Num,0)+1; end loop; --无数据插入一笔空 if nvl(LS_oprninfo_Num,0)=0 then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'oprninfo','data','oprninfo','手术操作信息', null,null,'1',null,LS_oprninfo_Json from dual; end if; end if; /* 重症监护信息开始 1 scs_cutd_ward_type 重症监护病房类型 varchar2(6) 2 scs_cutd_inpool_time 重症监护进入时间 number(14) 3 scs_cutd_exit_time 重症监护退出时间 number(14) 4 scs_cutd_sum_dura 重症监护合计时长 varchar2(10) 重症监护信息结束 */ if LS_jsqd_Notsend_list is null or instrb('|'||LS_jsqd_Notsend_list||'|','|'||'icuinfo'||'|')<=0 then for C_List in CUR_icuinfo loop LS_icuinfo_Json:=null; LS_icuinfo_Json:=LS_icuinfo_Json||'{'; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_ward_type"'||':'||'"'||C_List.scs_cutd_ward_type||'"'||','; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_inpool_time"'||':'||'"'||C_List.scs_cutd_inpool_time||'"'||','; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_exit_time"'||':'||'"'||C_List.scs_cutd_inpool_time||'"'||','; LS_icuinfo_Json:=LS_icuinfo_Json||'"scs_cutd_sum_dura"'||':'||'"'||C_List.scs_cutd_sum_dura||'"'||''; LS_icuinfo_Json:=LS_icuinfo_Json||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,LS_icuinfo_Num,'icuinfo','data','icuinfo','重症监护信息', null,null,'1',null,LS_icuinfo_Json from dual; LS_icuinfo_Num:=nvl(LS_icuinfo_Num,0)+1; end loop; --无数据插入一笔空 if nvl(LS_icuinfo_Num,0)=0 then insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'icuinfo','data','icuinfo','重症监护信息', null,null,'1',null,LS_icuinfo_Json from dual; end if; end if; if PCOMMIT='Y' then commit; end if; PZXZT00:=1;--输出:执行状态 0:失败 1:成功 exception when no_data_found then PZXZT00:=0; PERRMSG:=substrb('门诊医疗保障基金结算清单信息上传整理数据异常!位置['||LS_ERRSTR||']原因:'||sqlerrm,1,200); when others then PZXZT00:=0; PERRMSG:=substrb('门诊医疗保障基金结算清单信息上传整理数据异常!位置['||LS_ERRSTR||']原因:'||sqlerrm,1,200); end; / --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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 --输出:错误信息 ) -- MODIFICATION HISTORY -- Person Date Comments -- zhangyc 2019.11.04 created 门诊新医保接口确认过程 MZSF9-20191104-006 -- jlg 2019.11.07 重新整理 MZSF9-20191106-004 -- liwm 2019.12.19 同步玉陈修改,初诊建档职退情况,参保险种取一条BKC001_MC MZSF9-20191219-001 -- liwm 2020.01.08 新医保接口,病人资格信息查询,漳州地区有返回医保账户余额,但是界面上没有识别到,添加处理 MZSF9-20200108-001 -- liwm 2020.01.13 新医保接口,门诊结算时(通用登记接口)医保返回的AAE140需要保存到bm_brxxb0和sf_brxxb0 MZSF9-20200110-001 -- zhangyc 2020.03.17 修改厦门医保调用yb04.10.01.16医保分中心名称aab034_mc主节点未返回,取cbxzlist by MZSF9-20200317-001 -- zhangyc 2020.04.01 由于厦门医保未返回:统筹基金总额bkc102顾增加参数TCJJQZFS=Y取统筹基金总额bkc102=N取统筹基金bkc045 by MZSF9-20200403-002 -- jlg 2020.04.17 新医保接口,修改LS_SBTCJJ,LS_SBZHZF,LS_GWYBZ0,LS_SYBXZF等的取值方式 MZSF9-20200413-001 -- linzetao 2020.05.20 修改医保接口返回aac004_mc而未返回aac004节点 MZSF9-20200511-001 -- zhangyc 2020.06.18 修改厦门医保接口bkc052:sybxzf(大病保险基金支付) bkc060:mzbzje(民政补助)独立统筹之外 bkc612:sybxzf(大病保险基金支付)+gwybz0(公务员补助)+mzbzje(医疗救助基金)+bjjjzf(保健基金支付)by MZSF9-20200622-001 -- liwm 2020.09.02 两定机构补充aab301处理 MZSF9-20200831-001 -- linzetao 2020.09.28 门诊通用登记更新BM_BRXXB0.ICZTMC, 取返回报文节点LS_BKC026_MC MZSF9-20200928-002 -- linzetao 2020.10.15 处理医保接口返回AAC999节点内容 MZSF9-20201013-005 -- zhangyc 2020.11.13 扩展参数LS_TCJJQZFS=D(bkc045,bkc059,bkc052,bkc060独立写入) by MZSF9-20201113-001 -- linzetao 2021.01.04 处理费用冲销时YBJKID写入SF_JZB000 ZYSF9-20210104-001 -- linzetao 2021.02.19 更新医保返回的aac002节点到BM_BRXXB0.YBID00 MZSF9-20210208-001 -- linzetao 2021.02.22 修正主项目未返回BKC026_MC未能取到cbxzlist中BKC026_MC节点的问题 MZSF9-20210219-001 -- linzetao 2021.02.24 日志表SF_YBJKRZ增加获取返回信息 MZSF9-20210223-002 -- linzetao 2021.03.22 处理医保电子凭证进行资格查询时更新BM_BRXXB0 MZSF9-20210322-001 -- linzetao 2021.03.26 处理通用登记成功后将发送的BKE042节点内容保存到SF_BRXXB0.BKE042 MZSF9-20210326-002 -- linzetao 2021.04.14 处理医保未返回aab034_mc时取aab031_mc MZSF9-20210413-004 -- linzetao 2021.05.06 处理通用登记时记录返回的医保中心名称和职退情况到SF_YBJKRZ MZSF9-20210423-003 -- zhangyc 2021.05.26 凭证就诊(跨省病人),如果医保未返回aaz500取aac002作为卡号并且跨省YDKS...通用退费后,把SF_BRXXB0.YBGHH0=0(同一个挂号号不允许多次结算) by MZSF9-20210528-003 -- linzetao 2021.09.22 增加场景YBJK_JSQDXXSC_001:医疗保障基金结算清单信息上传 by MZSF9-20210922-003 -- zhangyc 2021.10.02 由于医保某个场景aac006:出生日期 改为:yyyy-mm-dd现在改为yyyymmdd by MZSF9-20211002-002 --zhangyc 2021.10.09 ake007:费用发生日期(结算日期) 如果返回:2021-10-04 21:21:19转为yyyymmdd by MZSF9-20211009-001 --zhangyc 2021.10.18 清单下载(插入空的iteminfo:收费项目信息)by MZSF9-20211018-002 -- --------- ---------- ------------------------------------- as 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(50); --参保险种险种类型编码 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 LS_TCJJQZFS varchar2(10); --新医保接口统筹基金取值发送(厦门医保无返回bkc102可设置为N) Y:取基金支付总额:bkc102,N:取其中基金支付总额:bkc045 默认:Y LS_QTTCJJ number(12,2); --统筹基金 LS_SBTCJJ number(12,2); --商保统筹基金 LS_SBZHZF number(12,2); --商保账户支付 LS_GWYBZ0 number(12,2); --公务员补助 LS_SYBXZF number(12,2); --商业保险支付 LS_SFGWYBZDL varchar2(2); --判断是否公务员补助独立 LS_BZ0000 SF_YBJKMX.BZ0000%type; --备注说明 LS_YBLB00 BM_BRXXB0.YBLB00%type; --医保类别 LS_YBBRLB BM_BRXXB0.YBBRLB%type; --医保病人类别 LS_FBBH00 BM_BRXXB0.FBBH00%type; --病人费别 LS_YBZXLB IC_YBBRLB.YBZXLB%type; --医保中心类别 LS_YBZXMC IC_YBBRLB.YBMC00%type; --医保中心名称 LS_YBBHSB IC_YBBRLB.YBBHSB%type; --是否包含商保或公务员补助 LS_XZQH00 BM_BRXXB0.XZQH00%type; --行政区划 LS_AAC066 SF_YBJKRZ.AAC066%type;--工作状态编码 LS_AAC066_MC SF_YBJKRZ.AAC066_MC%type;--工作状态名称 LS_BKE050 SF_YBJKRZ.BKE050%type;--His病案号前面必须加上医院网点编号 LS_BKE299 SF_YBJKRZ.BKE299%type;--医保病案流水号 LS_BKC160 SF_YBJKRZ.BKC160%type;--公务员体检帐户余额 LS_BKC134 SF_YBJKRZ.BKC134%type;--乙类先行自付额 LS_BKE856 SF_YBJKRZ.BKE856%type;--超封顶线金额 LS_BKC053 SF_YBJKRZ.BKC053%type;--商保现金支付 LS_BKC054 SF_YBJKRZ.BKC054%type;--商保账户支付 LS_YLJZLIST SF_YBJKMX.VALUE0%type;--医疗救助信息 LS_YLJZLIST_BKA162_MC varchar2(50); LS_BKA162_MC SF_YBJKRZ.BKA162_MC%type; SF_XYBZTQKQZFS XT_XTCS00.VALUE0%type; LS_BKC101 SF_YBJKRZ.BKC101%type;--bkc101:除外耗材费用 LS_BKC125 SF_YBJKRZ.BKC125%type;--bkc125:超标床位费用 LS_BKE361 SF_YBJKRZ.BKE361%type;--bke361:普门累计或特门累计 LS_BKC064 SF_YBJKRZ.BKC064%type;--bkc064:产前检查费 LS_BKC620 SF_YBJKRZ.BKC620%type;--bkc620:(本地)成员共济账户支付 LS_BKC619 SF_YBJKRZ.BKC619%type;--bkc619:(异地)成员共济账户支付 LS_BKEH73 SF_YBJKRZ.BKEH73%type;--bkeh73:职工医疗费补助 LS_BKC048 SF_YBJKRZ.BKC048%type;--bkc048:处级及以上干部补助 LS_DRGZFE SF_YBJKRZ.DRGZFE%type;--drgzfe:DRG付费标准 LS_BKE921 SF_YBJKRZ.BKE921%type;--bke921:(家庭健康)共济账户扣款人 LS_BKE922 SF_YBJKRZ.BKE922%type;--bke922:(家庭健康)共济账户扣款人金额 LS_JSBLLX SF_YBJKRZ.JSBLLX%type;--jsbllx:DRG结算病例类型 LS_BRID00 BM_BRXXB0.BRID00%type;--病人id LS_BKE042 SF_YBJKRZ.BKE042%type;--his流水号(发送) in_YBDZPZ varchar2(100); --医保电子凭证 LS_BKE284 SF_YBJKRZ.BKE284%type;--身份认证类型(01:读卡02:融合码06:医保码20:医疗证) in_YBDJH0 varchar2(30);--医保单据号 in_CXJZDH varchar2(10);--冲销结账单号 LS_CXJZDH SF_YBJKRZ.JZDH00%type;--冲销结账单号 LS_YDKS_fzxmc0 varchar2(50);--异地跨省医保中心名称 LS_BAKXML varchar2(200); LS_Open_JSQD_download varchar2(10);--新医保国家结算清单查询或下载接口是否开启(新模式:医保提供明细数据His自行设置模板) 1:门诊开启 2:住院开启 3:门诊和住院都开启 0:不开启 默认值:0 LS_YBJK_ake007 varchar2(20);--费用发生日期(结算日期) LS_YBJK_aac006 varchar2(20);--出生日期 --待遇累计dylist cursor CUR_DYLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='dylist' order by JKMXID; --身份标志sflist cursor CUR_SFLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='sflist' order by JKMXID; --参保险种cbxzlist cursor CUR_CBXZLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='cbxzlist' order by JKMXID; --补助明细 cursor CUR_MZLIST is select VALUE0 from SF_YBJKMX where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='mzlist' 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_QTTCJJ:=0;--其它统筹基金 LS_SBTCJJ:=0;--商保统筹基金 LS_SBZHZF:=0;--商保账户支付 LS_GWYBZ0:=0;--公务员补助 in_CXJZDH:=null;--冲销结账单号 in_YBDJH0:=null; --医保单据号 LS_BAKXML:=null; --TCJJQZFS:新医保接口统筹基金取值发送(厦门医保无返回bkc102可设置为N) Y:取基金支付总额:bkc102,N:取其中基金支付总额:bkc045 默认:Y LS_TCJJQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','TCJJQZFS'),1,10),'Y'); LS_YDKS_fzxmc0:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','YDKS_fzxmc0'),1,50));--异地跨省医保中心名称 --新医保国家结算清单查询或下载接口是否开启(新模式:医保提供明细数据His自行设置模板) 1:门诊开启 2:住院开启 3:门诊和住院都开启 0:不开启 默认值:0 LS_Open_JSQD_download:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','Open_JSQD_download'),1,10),'0'); --LS_BKE286 结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 begin select BKE286,JZDH00,FLAG,BKE284 into LS_BKE286,LS_JZDH00,LS_FLAG00,LS_BKE284 from SF_YBJKRZ where YBJKID=PYBJKID; exception when others then LS_BKE286:=null; LS_JZDH00:=0; end; LS_BRID00 := PBRID00; LS_HISCS0 := substrb(PINCS00,1,2000); --HIS前台请求参数 in_YBDZPZ := trim(substrb(SF_SF_GETXMLNOTE('YBDZPZ',LS_HISCS0),1,50)); --医保电子凭证 in_CXJZDH := trim(substrb(SF_SF_GETXMLNOTE('CXJZDH',LS_HISCS0),1,10));--冲销结账单号 in_YBDJH0 := trim(substrb(SF_SF_GETXMLNOTE('YBDJH0',LS_HISCS0),1,30)); --医保单据号 if in_CXJZDH is null then LS_CXJZDH:=0; else begin LS_CXJZDH:=to_number(in_CXJZDH); exception when others then LS_CXJZDH:=0; end; end if; --获取病人基本信息 if nvl(LS_BRID00,0)>0 then begin select a.YBLB00,a.YBBRLB,a.FBBH00, C.YBZXLB,C.YBMC00,C.YBBHSB into LS_YBLB00,LS_YBBRLB,LS_FBBH00,LS_YBZXLB,LS_YBZXMC,LS_YBBHSB from BM_BRXXB0 a,IC_YBBRLB C where 1=1 and a.FBBH00=C.FBBH00 and C.YBLB00=A.YBLB00 and a.BRID00=LS_BRID00; exception when others then LS_YBBHSB:='0'; end; end if; --通用变量取值--begin--- 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_YBJK_aac006:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac006','1'),1,20);--aac006 出生日期(yyyy-mm-dd) if LS_YBJK_aac006 is not null and lengthb(LS_YBJK_aac006)=10 then LS_AAC006:=substrb(LS_YBJK_aac006,1,4)||substrb(LS_YBJK_aac006,6,2)||substrb(LS_YBJK_aac006,9,2); update SF_YBJKMX set JKFHZ0=LS_AAC006 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='aac006'; end if; 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); --bka531 是否精准扶贫对象 Y:是 N:否 LS_AAE072:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aae072','1'),1,30); --aae072 医保收费流水号 LS_AKC190:=substrb(SF_SF_GETYBJKMX(PYBJKID,'akc190','1'),1,30); --akc190 医保挂号流水号 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_BKC160:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc160','1');--公务员体检帐户余额 LS_BKA162_MC := SF_SF_GETYBJKMX(PYBJKID,'bka162_mc','1'); --医疗救助认定身份名称 LS_BKE042:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bke042','0'); 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; --通用变量取值--end--- --医保电子凭证资格信息查询, 病人id入参为空或0, 根据医保卡号重新获取BRID00 if PJKCJBM in ('YBJK_YBCX_0005') and nvl(LS_BRID00,0) = 0 and in_YBDZPZ in ('1') then begin select BRID00 into LS_BRID00 from IC_YHXX00 where ICKH00=SF_SF_CARDNO_ICKH00(LS_AAZ500) and ICKNBH=SF_SF_CARDNO_ICKH00(LS_AAZ500) and ZT0000='1'; exception when others then LS_BRID00 := 0; end; end if; if LS_BRID00 > 0 then --行政区划处理 if LS_AAB301 is not null then select max(XZQH00) into LS_XZQH00 from BM_BRXXB0 where BRID00 = LS_BRID00; if LS_XZQH00 is null or LS_XZQH00 <> LS_AAB301 then update BM_BRXXB0 set XZQH00 = LS_AAB301 where BRID00 = LS_BRID00; end if; end if; --个人管理码(医保编号)处理 if LS_AAC999 is not null then update BM_BRXXB0 set AAC999 = LS_AAC999 where BRID00 = LS_BRID00 and (AAC999 is null or AAC999 <> LS_AAC999); end if; --证件号码(社会保障号) if LS_AAC002 is not null then update BM_BRXXB0 set YBID00 = LS_AAC002 where BRID00 = LS_BRID00 and (YBID00 is null or YBID00 <> LS_AAC002); end if; end if; ---->交易对账--begin-- 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=LS_BRID00 and JZDH00=LS_JZDH00; end if; update SF_YBJKRZ set JKZT00=LS_JKZT00 where YBJKID=PYBJKID; ---->交易对账--end-- ---->通用收费--begin-- 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_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_YBJK_aac006:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac006','1'),1,20);--aac006 出生日期(yyyy-mm-dd) if LS_YBJK_aac006 is not null and lengthb(LS_YBJK_aac006)=10 then LS_AAC006:=substrb(LS_YBJK_aac006,1,4)||substrb(LS_YBJK_aac006,6,2)||substrb(LS_YBJK_aac006,9,2); update SF_YBJKMX set JKFHZ0=LS_AAC006 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='aac006'; end if; LS_AAC004:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac004','1'),1,10); --aac004 性别 varchar2(3) LS_AAC004_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac004_mc','1'),1,10); --aac004_mc 性别名称 varchar2(10) 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); --bka531 是否精准扶贫对象 Y:是 N:否 LS_AAE072:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aae072','1'),1,30); --aae072 医保收费流水号 LS_AKC190:=substrb(SF_SF_GETYBJKMX(PYBJKID,'akc190','1'),1,30); --akc190 医保挂号流水号 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_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_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; --医保报销金额 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_AKC087:=SF_SF_GETYBJKMX_NUM(PYBJKID,'akc087','1'); --akc087 个人账户余额 LS_BKC591:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc591','1'); --bkc591 家庭共济账户余额 LS_AKA150:=SF_SF_GETYBJKMX_NUM(PYBJKID,'aka150','1'); --aka150 本年度住院次数 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_BKC160:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc160','1');--公务员体检帐户余额 LS_BKC134:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc134','1');--乙类先行自付额 LS_BKE856:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bke856','1');--超封顶线金额 LS_BKC053:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc053','1');--商保现金支付 LS_BKC054:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc054','1');--商保账户支付 LS_BKC101:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc101','1');--bkc101:除外耗材费用 LS_BKC125:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc125','1');--bkc125:超标床位费用 LS_BKE361:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bke361','1');--bke361:普门累计或特门累计 LS_BKC064:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc064','1');--bkc064:产前检查费 LS_BKC620:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc620','1');--bkc620:(本地)成员共济账户支付 LS_BKC619:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc619','1');--bkc619:(异地)成员共济账户支付 LS_BKEH73:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkeh73','1');--bkeh73:职工医疗费补助 LS_BKC048:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc048','1');--bkc048:处级及以上干部补助 LS_DRGZFE:=SF_SF_GETYBJKMX_NUM(PYBJKID,'drgzfe','1');--drgzfe:DRG付费标准 LS_BKE921:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bke921','1'),1,50);--bke921:(家庭健康)共济账户扣款人 LS_BKE922:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bke922','1'),1,50);--bke922:(家庭健康)共济账户扣款人金额 LS_JSBLLX:=substrb(SF_SF_GETYBJKMX(PYBJKID,'jsbllx','1'),1,10);--jsbllx:DRG结算病例类型 LS_AKE007:=substrb(SF_SF_GETYBJKMX(PYBJKID,'ake007','1'),1,8);--ake007:费用发生日期(结算日期) LS_BAE029:=substrb(SF_SF_GETYBJKMX(PYBJKID,'bae029','1'),1,8);--bae029:费用发生时间(结算时间) LS_YBJK_ake007:=substrb(SF_SF_GETYBJKMX(PYBJKID,'ake007','1'),1,20);--费用发生日期(结算日期) if LS_YBJK_ake007 is not null then if lengthb(LS_YBJK_ake007)=19 then --2021-10-04 21:21:19 LS_BAE029:=substrb(LS_YBJK_ake007,12,8);--费用发生时间(结算时间) LS_YBJK_ake007:=substrb(LS_YBJK_ake007,1,10); LS_AKE007:=substrb(LS_YBJK_ake007,1,4)||substrb(LS_YBJK_ake007,6,2)||substrb(LS_YBJK_ake007,9,2);--费用发生日期(结算日期) update SF_YBJKMX set JKFHZ0=LS_AKE007 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='ake007'; update SF_YBJKMX set JKFHZ0=LS_BAE029 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='bae029'; elsif lengthb(LS_YBJK_ake007)=10 then --2021-10-04 LS_AKE007:=substrb(LS_YBJK_ake007,1,4)||substrb(LS_YBJK_ake007,6,2)||substrb(LS_YBJK_ake007,9,2);--费用发生日期(结算日期) update SF_YBJKMX set JKFHZ0=LS_AKE007 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='ake007'; end if; end if; --bkc612 补助基金支付=bkc052(大病保险基金支付)+ bkc059(公务员医疗补助)+ bkc062(精准扶贫医疗叠加)+ bkc060(医疗救助基金)+ ake173(其他基金支付)+ ake026(企业补充)+ bkc061(保健基金支付) --bkc612 补助基金支付=sybxzf(大病保险基金支付)+gwybz0(公务员补助)+mzbzje(医疗救助基金)+bjjjzf(保健基金支付) LS_BKC612:=SF_SF_GETYBJKMX_NUM(PYBJKID,'bkc612','1'); --重新算统筹基金总额 if (LS_TCJJQZFS in ('N','D')) or (nvl(LS_BKC102,0)=0 and nvl(LS_BKC045,0)>0) then --参考 SP_SF_YBFYJS_INSERT if LS_TCJJQZFS in ('D') then --统筹基金、公务员补助、商业保险、民政补助等等独立写入 LS_BKC102:=nvl(LS_BKC102,0);--其它医保独立写入(统筹基金总额按实际医保返回为准,不在累加) else --其它统筹支付 直接取bkc612 LS_QTTCJJ:=SF_XT_YBFHJE('YBYL67',nvl(LS_BKC612,0));---补助基金支付 --其它统筹支付=其它统筹支付+bkc045 其中:统筹基金支付 LS_QTTCJJ:=nvl(LS_QTTCJJ,0)+nvl(LS_BKC045,0); --重新算医保基金支付总额bkc102=其它统筹支付临时变量 LS_BZ0000:=substrb('医保返回:'||LS_BKC102||',院内重新赋值:'||LS_QTTCJJ,1,200); LS_BKC102:=nvl(LS_QTTCJJ,0); --修改SF_YBJKMX update SF_YBJKMX set JKFHZ0=nvl(LS_BKC102,0),BZ0000=LS_BZ0000 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='bkc102'; end if; 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,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_BKC612,BKC061=LS_BKC061,BKC076=LS_BKC076,BKZFE0=LS_BKZFE0,BKZHYE=LS_BKZHYE,BKC079=LS_BKC079, AAC066=LS_AAC066,AAC066_MC=LS_AAC066_MC,BKE050=LS_BKE050,BKE299=LS_BKE299,BKC160=LS_BKC160, BKC134=LS_BKC134,BKE856=LS_BKE856,BKC053=LS_BKC053,BKC054=LS_BKC054, BKC101=LS_BKC101,--BKC101:除外耗材费用 BKC125=LS_BKC125,--BKC125:超标床位费用 BKE361=LS_BKE361,--BKE361:普门累计或特门累计 BKC064=LS_BKC064,--BKC064:产前检查费 BKC620=LS_BKC620,--BKC620:(本地)成员共济账户支付 BKC619=LS_BKC619,--BKC619:(异地)成员共济账户支付 BKEH73=LS_BKEH73,--BKEH73:职工医疗费补助 BKC048=LS_BKC048,--BKC048:处级及以上干部补助 DRGZFE=LS_DRGZFE,--DRGZFE:DRG付费标准 BKE921=LS_BKE921,--BKE921:(家庭健康)共济账户扣款人 BKE922=LS_BKE922,--BKE922:(家庭健康)共济账户扣款人金额 JSBLLX=LS_JSBLLX,--JSBLLX:DRG结算病例类型 AKE007=nvl(LS_AKE007,to_char(sysdate,'YYYYMMDD')),--费用发生日期(结算日期) BAE029=nvl(LS_BAE029,to_char(sysdate,'HH24:MI:SS'))--费用发生时间(结算时间) where YBJKID=PYBJKID; --LS_BKE286 结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 if LS_BKE286 in ('0') then --预结算成功后,修改账户基本信息 update SF_BRZHXX set YBYJS0=nvl(LS_BKC045,0)+nvl(LS_BKC041,0), YBZHYE=nvl(LS_AKC087,0) where BRID00=LS_BRID00; end if; ---->通用收费--end-- ---->门诊费用冲销--begin-- 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 YBJKID=PYBJKID,YBDJH0=LS_AAE072,YBSM19=PYBJKID,YBSM20=LS_AKC190 where BRID00=LS_BRID00 and CXJZDH=LS_JZDH00; end if; --2021.05.27 跨省异地处理--begin-- if in_YBDJH0 is not null and in_YBDJH0 not in ('0') and substrb(in_YBDJH0,1,4) in ('YDKS') and LS_CXJZDH>0 then update SF_BRXXB0 a set a.YBGHH0='0' where a.BRID00=LS_BRID00 and a.YBGHH0 not in ('0') and a.GHID00 in (select b.MZID00 from SF_JZB000 b where b.BRID00=LS_BRID00 and b.JZDH00=LS_CXJZDH); end if; --2021.05.27 跨省异地处理--end-- PZXZT00:=1; --执行状态 0:失败 1:成功 ---->-门诊费用冲销--end-- ---->-费用明细上传 --begin-- 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:成功 ---->费用明细上传 --end-- ---->费用明细作废 --begin-- 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:成功 ---->费用明细作废 --end-- ---->门诊挂号 --begin-- elsif PJKCJBM in ('YBJK_MZDJ_0006') then --门诊挂号 --akc190 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号 select substrb(SF_SF_GETYBJKMX(PYBJKID,'akc190','1'),1,30) into LS_AKC190 from dual; if trim(LS_AKC190) is not null then update SF_BRXXB0 set YBGHH0=trim(LS_AKC190) where BRID00=LS_BRID00 and GHID00=PGHID00; end if; if PGHID00 > 0 then update SF_BRXXB0 set BKE042=LS_BKE042 where BRID00=LS_BRID00 and GHID00=PGHID00; end if; update SF_YBJKRZ set JKZT00=LS_JKZT00,AKC190=nvl(LS_AKC190,AKC190),BKC001=LS_BKC001,BKC001_MC=LS_BKC001_MC, AAE140=LS_AAE140,AAE140_MC=LS_AAE140_MC,AAB034=LS_AAB034,AAB034_MC=LS_AAB034_MC,GZZTMC=LS_GZZTMC where YBJKID=PYBJKID; --修改基本信息表:BM_BRXXB0:bkc001_mc、aae140、aae140_mc if LS_BRID00>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) ,--病人职退情况 ICZTMC=LS_ICZTMC where BRID00=LS_BRID00; end if; --修改挂号表:SF_BRXXB0:bkc001_mc、aae140、aae140_mc if LS_BRID00>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=LS_BRID00 and GHID00=PGHID00; end if; PZXZT00:=1; --执行状态 0:失败 1:成功 ---->门诊挂号--end-- ---->门诊挂号冲销--begin-- elsif PJKCJBM in ('YBJK_MZDJ_0008') then --门诊挂号冲销 update SF_BRXXB0 set YBGHH0='0' where BRID00=LS_BRID00 and GHID00=PGHID00; update SF_YBJKRZ set JKZT00=LS_JKZT00,AKC190=nvl(LS_AKC190,AKC190) where YBJKID=PYBJKID; PZXZT00:=1; --执行状态 0:失败 1:成功 ---->门诊挂号冲销--end-- ---->资格信息查询--begin-- --医保用户登录、医保身份认证、资格信息查询 直接返回成功 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_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_YBJK_aac006:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac006','1'),1,20);--aac006 出生日期(yyyy-mm-dd) if LS_YBJK_aac006 is not null and lengthb(LS_YBJK_aac006)=10 then LS_AAC006:=substrb(LS_YBJK_aac006,1,4)||substrb(LS_YBJK_aac006,6,2)||substrb(LS_YBJK_aac006,9,2); update SF_YBJKMX set JKFHZ0=LS_AAC006 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='aac006'; end if; LS_AAC004:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac004','1'),1,10); --aac004 性别 varchar2(3) LS_AAC004_MC:=substrb(SF_SF_GETYBJKMX(PYBJKID,'aac004_mc','1'),1,10); --aac004_mc 性别名称 varchar2(10) 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); --bka531 是否精准扶贫对象 Y:是 N:否 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_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_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_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; if trim(LS_BKC001_MC) is null or trim(LS_AAB034_MC) is null or trim(LS_BKC026_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; update SF_YBJKMX set JKFHZ0=LS_GZZTMC where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='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; update SF_YBJKMX set JKFHZ0=LS_AAB034 where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='aab034'; 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; update SF_YBJKMX set JKFHZ0=LS_AAB034_MC where YBJKID=PYBJKID and JDBM00='data' and ZDBM00='aab034_mc'; end if; if LS_BKC026_MC is null then LS_BKC026_MC := trim(substrb(SF_ZY_GETXMLNOTE('bkc026_mc',LS_CBXZLIST),1,50)); --医疗救助认定身份名称 if LS_BKC026_MC is not null then LS_ICZTMC:=LS_BKC026_MC; end if; end if; end if; --从参保list中获取bkc001_mc(职退情况)--end--- --aab034_mc为空aab031_mc不为空, 则aab034_mc取aab031_mc if LS_AAB034_MC is null and LS_AAB301_MC is not null then LS_AAB034_MC:=LS_AAB301_MC; end if; end if; --2021.04.23 凭证就诊,如果医保未返回aaz500取aac002作为卡号 if (LS_bke284='06' or substrb(SF_SF_GETYBJKMX(PYBJKID,'bke284','0'),1,10)='06') and LS_AAZ500 is null and LS_AAC002 is not null then LS_AAZ500:=LS_AAC002; end if; --异地跨省有维护参数,统一转为参数设置的医保中心名称 if LS_aab301 is not null and substrb(LS_aab301,1,2) not in ('35') and LS_YDKS_fzxmc0 is not null then LS_AAB034_MC:=LS_YDKS_fzxmc0; 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,AKC087=LS_AKC087,AAE140=LS_AAE140,AAE140_MC=LS_AAE140_MC, AAC066=LS_AAC066,AAC066_MC=LS_AAC066_MC,BKE050=LS_BKE050,BKE299=LS_BKE299,BKC160=LS_BKC160, BKC134=LS_BKC134,BKE856=LS_BKE856,BKC053=LS_BKC053,BKC054=LS_BKC054 where YBJKID=PYBJKID; ---->资格信息查询--end-- elsif PJKCJBM in ('YBJK_JSQDXXSC_001') then --医疗保障基金结算清单信息上传 LS_AAE072:=substrb(SF_SF_GETYBJKMX(PYBJKID,'setl_list_id','1'),1,30);--清单流水号 update SF_YBJKRZ set AAE072=LS_AAE072 where YBJKID=PYBJKID; elsif PJKCJBM in ('YBJK_GJYBJSD_0001') then --门诊和住院国家医保结算单下载 update SF_YBJKRZ set FLAG='1' where YBJKID=PYBJKID; if LS_Open_JSQD_download in ('1','3') then --开启新模式 --基金支付信息开始 select count(1) into LS_COUNT0 from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='payinfo'; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'payinfo','基金支付信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_COUNT0,0)||'',1,200); --门诊慢特病诊断信息开始 select count(1) into LS_COUNT0 from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='opspdiseinfo'; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'opspdiseinfo','门诊慢特病诊断信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_COUNT0,0)||'',1,200); --住院诊断信息开始 select count(1) into LS_COUNT0 from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='diseinfo'; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'diseinfo','住院诊断信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_COUNT0,0)||'',1,200); --收费项目信息开始 insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC,MED_CHRGITM_TYPE,AMT,CLAA_SUMFEE,CLAB_AMT,FULAMT_OWNPAY_AMT,OTH_AMT) select PYBJKID,'iteminfo','收费项目信息',substrb(b.VALUE0,1,10) as MED_CHRGITM_TYPE, 0 as AMT,0 as CLAA_SUMFEE,0 as CLAB_AMT, 0 as FULAMT_OWNPAY_AMT,0 as OTH_AMT from bm_ybsxzd b where b.JKBM00=2 and b.sxbm00='med_chrgitm_type' and substrb(VALUE0,1,10) not in (select nvl(A.med_chrgitm_type,'14') from SF_YBJSDX a where a.YBJKID=PYBJKID and a.JKJDBM='iteminfo') ; select count(1) into LS_COUNT0 from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='iteminfo'; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'iteminfo','收费项目信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_COUNT0,0)||'',1,200); --手术操作信息开始 select count(1) into LS_COUNT0 from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='oprninfo'; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'oprninfo','手术操作信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_COUNT0,0)||'',1,200); --重症监护信息开始 select count(1) into LS_COUNT0 from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='icuinfo'; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'icuinfo','重症监护信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_COUNT0,0)||'',1,200); --输血信息开始 select count(1) into LS_COUNT0 from SF_YBJSDX where YBJKID=PYBJKID and JKJDBM='bldinfo'; if nvl(LS_COUNT0,0)=0 then insert into SF_YBJSDX(YBJKID,JKJDBM,JKJDMC)values(PYBJKID,'bldinfo','输血信息'); end if; LS_BAKXML:=substrb(LS_BAKXML||''||nvl(LS_COUNT0,0)||'',1,200); update SF_YBJSD0 set BAKXML=LS_BAKXML where YBJKID=PYBJKID; end if; 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; / --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ create or replace procedure SP_SF_NEWYBJK_YBJKRZ ( 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:成功 PYBJKID out varchar2 , --输出:医保接口ID PERRMSG out varchar2 --输出:错误信息 ) -- MODIFICATION HISTORY -- Person Date Comments -- zhangyc 2019.11.04 created 门诊新医保接口日志写入过程 MZSF9-20191104-006 -- jlg 2019.11.07 重新整理 MZSF9-20191106-004 -- liwm 2019.11.20 中间表变更 MZSF9-20191120-003 -- liwm 2019.11.29 aka063节点始终为编号,ZY_YBFPBH未能生效 MZSF9-20191129-005 -- liwm 2019.12.03 结算冲销的时候需要去掉jzdh00的判断,否则医保已结算但是院内未成功的会失败 MZSF9-20191203-001 -- liwm 2019.12.06 增加生育工伤体检的处理 MZSF9-20191209-001 -- liwm 2019.12.10 处理处方日期为空问题,处理YBGHH0 同5.0获取方式的差异 MZSF9-20191210-003 -- liwm 2019.12.11 增加bke284 MZSF9-20191213-002 -- liwm 2019.12.14 增加漳州地区新增字段 MZSF9-20191214-001 -- liwm 2019.12.20 对账的YBGHH0和YBDJH0从SF_JZB000中获取 MZSF9-20191223-002 -- liwm 2019.12.25 若特殊病种有维护字典,前台结算有传特殊病种,判断是否生育 MZSF9-20191225-001 -- liwm 2019.12.27 修改新医保用户密码获得方式,适配分院模式 MZSF9-20191227-006 --zhangyc 2020.03.17 修改bkf237:医保科室编码 akf001:his挂号科室 by MZSF9-20200317-001 --zhangyc 2020.03.25 akf001:his挂号科室 、bke042:his流水号取挂号ID(挂号、明细上传、费用结算保存一致)、退费冲销增加节点aka130 医疗类别 bke042 his流水号 bkee70:his退费流水号、aka070剂型空着默认000(无)、增加超限制结算功能 by MZSF9-20200331-003 --zhangyc 2020.04.01 如果挂号类别名称有包含“急诊”aka130=12 同时BM_GHLBB0.YSZJDJ如果有维护BKA535取该值 by MZSF9-20200403-001 --zhangyc 2020.04.03 修正费用登记医保返回成功院内报错发起冲销是bke298同费用登记的发送的bke298不一致导致无法正常退费 by MZSF9-20200403-002 --zhangyc 2020.04.21 nvl(A.SFXMID,trim(A.XMBH00))-->nvl(to_char(A.SFXMID),trim(A.XMBH00)) by MZSF9-20200422-003 --liwm 2020.04.27 门诊病人费别修改,自费转医保,点击保存,发送的【资格信息查询】中aac002没有发送内容 MZSF9-20200423-001 --zhangyc 2020.06.05 akc192发送格式改为yyyymmddhh24miss by MZSF9-20200606-001 --qks 2020.06.18 SF_YBJKQD.AKA071:trim(A.QYZL00)->trim(A.YPYL00); for MZSF9-20200619-001 --linzetao 2020.08.13 修正费用明细作废AKC190节点发送为空的问题 MZSF9-20200812-002 --linzetao 2020.08.26 修正新医保报文药事服务费发送的姓名不正确问题 MZSF9-20200826-001 --linzetao 2020.09.04 调整aaz501节点的取值来源(取新医保接口通用配置) MZSF9-20200904-002 -- liwm 2020.09.02 两定机构补充aab301处理 MZSF9-20200831-001 --linzetao 2020.09.16 门诊费用冲销时HIS收费流水为空或0时, bke298节点传当前LS_YBJKID MZSF9-20200914-001 --linzetao 2020.09.28 调整YYKSBM取值, 从BM_BMBM00.YYKSBM调整为从函数SF_SF_GetYYKSBM返回 MZSF9-20200928-001 --zhangyc 2020.10.22 增加费用冲正功能 by MZSF9-20201022-002 -- liwm 2020.10.26 门诊收费冲销如果前端有传HISLSH,直接用前端传的HISLSH MZSF9-20201026-001 --linzetao 2020.10.27 通用明细上传bke182节点取院内项目名称, 为空时取医保项目名称 MZSF9-20201022-001 --zhangyc 2020.11.13 增加费用结算退费功能(bkee70) by MZSF9-20201113-001 --linzetao 2020.11.17 增加医保人员信息验证功能(yb04.10.01.20) MZSF9-20201013-003 --linzetao 2020.11.23 调整AAC002当医保码(BKE284=06)结算时发送证件号码 MZSF9-20201123-001 --linzetao 2020.11.24 处理上传明细时药品项目单位转成医保编码 MZSF9-20201124-001 --zhangyc 2020.12.01 增加参数MZ_AKC192_BKC014_BKC171控制AKC192、BKC014、BKC171是否取挂号日期和时间 by MZSF9-20201201-002 --linzetao 2020.12.02 通用字典配置通用明细药品单位是否发送医保编码 MZSF9-20201202-003 --linzetao 2020.12.16 处理医保新接口参数设置字典BH0000='aka063'的配置 MZSF9-20201208-002 --linzetao 2020.12.18 处理两定机构通用收费需发送aab301节点 MZSF9-20201222-001 --linzetao 2020.12.28 医保码结算(bke284=06)时证件编号不符合身份证号规则aac002发送医保id, -- 急诊特殊病种aka130需发送特殊病种类别 MZSF9-20201228-002 --linzetao 2021.01.12 处理通用收费节点bka190(是否共济扣款),bkeg23(是否账户抵扣) MZSF9-20210108-001 --linzetao 2021.02.24 处理通用明细上传时诊断码转换及整理bkeh83,bkeh05,bkeh06,bakxml数据 MZSF9-20210223-002 --linzetao 2021.03.31 处理跨省科室编号 MZSF9-20210318-001 --linzetao 2021.04.29 截取AKF002,BKF238长度为20(原为50) MZSF9-20210427-004 --linzetao 2021.05.06 处理产前检查aka130发送17 MZSF9-20210427-006 --linzetao 2021.05.10 处理体检aka130发送A1 MZSF9-20210509-001 --linzetao 2021.05.18 处理通用明细上传zdlist列表的bke302问题 MZSF9-20210514-002 --zhangyc 2021.05.26 医保凭证读卡跳转到yb04.10.01.16(有参数YBDZPZ_funid设置编码)by MZSF9-20210528-003 --linzetao 2021.06.22 资格信息查询aaz500优先取前端传入的CARDNO MZSF9-20210617-002 --chenHeyi 2021.08.25 增加场景YBJK_GJYBJSD_0001: 国家医保结算单 by MZSF9-20210824-001 --zhangyc 2021.09.01 增加获取BM_BRXXB0.YBKSBM:医保卡识别码赋值给AAZ501 by MZSF9-20210901-005 --linzetao 2021.09.22 增加场景YBJK_JSQDXXSC_001:医疗保障基金结算清单信息上传 调用SP_SF_NEWYBJK_JSQDXXSC by MZSF9-20210922-003 --chenHeyi 2021.09.22 增加bkb526医疗机构国家码的取值与处理,bkc007的取值,BKC507与BKC506的取值 MZSF9-20210922-001 --linzetao 2021.09.24 场景YBJK_GJYBJSD_0001:门诊和住院国家医保结算单下载根据参数(Open_JSQD_DOWNLOAD)控制新模式 MZSF9-20210924-001 --zhangyc 2021.09.26 setl_id:结算ID取结账表SF_JZB000.YBDJH0 by MZSF9-20210926-001 --zhangyc 2021.09.28 基金清单查询医保返回setl_list_id放在data节点目录下 by MZSF9-20210928-001 --linzetao 2021.09.28 修正通用上传明细bkc007节点取值问题 MZSF9-20210928-002 --linzetao 2021.09.30 处理bke181,bke182发送问题 MZSF9-20210930-002 --zhangyc 2021.10.02 处理疾病诊断转化 by MZSF9-20211002-002 --zhangyc 2021.10.09 根据参数LS_YYKSBMFSLX(akf001:医保编码 bkf237:院内编码)互换 by MZSF9-20211009-001 --zhangyc 2021.10.19 psn_no改为SF_SF_GETYBSXZD获取 by MZSF9-20211019-001 --zhangyc 2021.10.26 清单下载psn_no、setl_id 用"data": {}中 by MZSF9-20211026-005 --chenHeyi 2021.10.29 医保国家标准诊断码大于20位以上诊断不发送给医保 MZSF9-20211028-004 --zhangyc 2021.10.29 增加体检结算功能参数(MZ_Medical_Para) by MZSF9-20211027-001 --zhangyc 2021.11.03 由于前台PGHH000传空导致substrb(PGHH000,1,2)='TJ'判断失效,改为substrb(LS_GHH000,1,2)='TJ' by MZSF9-20211103-002 -- --------- ---------- -------------------------------- as LS_COUNT0 number(5); LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_GHID00 number(10); --挂号ID LS_FUNID varchar2(50); --功能编码 LS_BRXM00 SF_YBJKRZ.BRXM00%type; --病人姓名 LS_YBJKID SF_YBJKRZ.YBJKID%type; --医保接口ID LS_YBJKBM SF_YBJKRZ.YBJKBM%type; --医保接口编码 LS_YBJKMC SF_YBJKRZ.YBJKMC%type; --医保接口名称 LS_JKCJBM SF_YBJKRZ.JKCJBM%type; --接口场景编码 LS_AAZ500 SF_YBJKRZ.AAZ500%type; --社会保障卡号 LS_AAZ501 SF_YBJKRZ.AAZ501%type; --卡识别码 LS_BKZ543 SF_YBJKRZ.BKZ543%type; --二维码 LS_AAC002 SF_YBJKRZ.AAC002%type; --证件号码(社会保障号) LS_AAC003 SF_YBJKRZ.AAC003%type; --病人姓名 LS_MKLXMC SF_YBJKRZ.MKLXMC%type; --模块类型名称 LS_YBKH00 BM_BRXXB0.YBKH00%type; --医保卡号 --LS_YBKH00 varchar2(30); --医保卡号 LS_YBID00 BM_BRXXB0.YBID00%type; --医保ID LS_BRZJBH BM_BRXXB0.BRZJBH%type; --病人证件号码 LS_YBKSBM varchar2(50); --BM_BRXXB0.YBKSBM%type; --医保卡识别码 LS_VALUE0 SF_YBJKMX.VALUE0%type; -- LS_FSLXBZ SF_YBJKMX.VALUE0%type; --发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它 LS_JKFSZ0 SF_YBJKMX.JKFSZ0%type; --接口发送值 LS_JKFHZ0 SF_YBJKMX.JKFHZ0%type; --接口返回值 LS_QTQQCS BM_ZFPTCS.JKQQCS%type; --前台接口请求参数临时中间变量 LS_HISCS0 SF_YBJKRZ.HISCS0%type; --HIS前台请求参数 LS_JKQQCS SF_YBJKRZ.JKQQCS%type; --接口请求参数 LS_JKFHCS SF_YBJKRZ.JKFHCS%type; --接口返回参数 LS_USR000 BM_YGBM00.YBYHBM%type; --医保接口_登录用户名 LS_PWD000 BM_YGBM00.YBYHMM%type; --医保接口_登录密码 LS_CARDNO varchar2(50); --卡号 LS_MZZYBZ varchar2(1); --门诊住院标识 0:门诊 1:住院 LS_JZDH00 SF_JZB000.JZDH00%type; --结账单号 LS_CXJZDH SF_JZB000.JZDH00%type; --冲销结账单号 LS_YBDJH0 SF_JZB000.YBDJH0%type; --医保单据号 LS_TSBZBH varchar2(30); --特殊病种编码 LS_AKA078 varchar2(10); --医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_BKE241 varchar2(10); --数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 LS_BKE298 varchar2(50); --HIS收费单据流水号 LS_AKA130 varchar2(10); --医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 LS_BKE286 varchar2(10); --结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 LS_FYJSLX varchar2(50); --费用结算类型 LS_MXLSH0 varchar2(50); --明细流水号 LS_YBGHH0 varchar2(50); --医保挂号号 LS_XMFSBZ varchar2(50); --项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCF00_TEMP00 LS_ID0000 varchar2(50); --中间表ID LS_AKC190 varchar2(30); --医保门诊挂号流水号/住院登记流水号 LS_AAE072 varchar2(30);--医保单据号 LS_GHKS00 SF_BRXXB0.GHKS00%type; --挂号科室编码 LS_GHKSMC BM_BMBM00.BMMC00%type; --挂号科室名称 LS_KDYS00 SF_BRXXB0.JZYS00%type; --开单医生编码 LS_KDYSXM BM_YGBM00.ZWXM00%type; --开单医生姓名 LS_YSZJHM BM_YGBM00.YSZJHM%type; --医生证件编码 LS_YBYGDM BM_YGBM00.YBYGDM%type; --医保员工代码 LS_BKE042 varchar2(50); --his流水号 LS_BKC014 varchar2(8); --实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期) LS_BKC171 varchar2(8); --实际就诊时间 住院指病人实际出院时间 LS_CFXMSL number(12,2); --明细项目数量 LS_AKB065 number(12,2); --医疗费总金额 LS_JSOSTR SF_YBJKMX.VALUE0%type; -- LS_BKE301 varchar2(3); --诊断或症状类型 y 参见编码附件 LS_BKE302 varchar2(3); --诊断或症状序号 y 参见编码附件 LS_BKE087 varchar2(50); --诊断或症状编码 y 见icd-10或症状表编码 LS_BKE088 varchar2(100); --诊断或症状名称 y 见icd-10或症状表名称 LS_YBFPBH varchar2(10); --医保发票是否使用编号 Y:编码 N:明细 LS_AKA063 varchar2(50); --发票类别 LS_QDQZFS varchar2(50); --医保新接口费用清单取值方式 1:取SF_YBJKQD或ZY_YBJKQD 2:取SF_YBJKMX或ZY_YBJKMX 默认:1 LS_SFYJS0 varchar2(50); --是否预结算 'Y':是预结算,'N':不是预结算 LS_AAZ149 varchar2(30); --特殊病种编码 LS_YYKSBM BM_BMBM00.YYKSBM%type; --医院科室编码 LS_BXLB00 SF_BRXXB0.BXLB00%type; --保险类型,普通 生育 工伤 LS_YBBMMC BM_YBKSBM.YBBMMC%type; --挂号科室对应医保科室名称 LS_GHLBMC BM_GHLBB0.LBMC00%type; --挂号类别名称 LS_SFYBZGTJHSFYZMTJJK XT_XTCS00.VALUE0%type; --医保职工体检号是否有专门的体检接口 LS_BKE284 varchar2(50);--身份认证类型 身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_YBZXLB IC_YBBRLB.YBZXLB%type;--医保中心名称 LS_TSBZFL BM_TSBZB0.TSBZFL%type;--病种分类 0:特殊病种 1:生育病种 2:单病种 LS_MZID00 SF_JZB000.MZID00%type;--门诊iD LS_GHLB00 SF_BRXXB0.GHLB00%type;--挂号类别编号=BM_GHLBB0.LBBH00 LS_LBMC00 BM_GHLBB0.LBMC00%type;--挂号类别名称 LS_YSZJDJ BM_GHLBB0.YSZJDJ%type;--医师诊金等级接口编码 LS_BKA535 varchar2(10);--医师诊查费等级 110 普通医师 111 主治医师 112 副主任医师 113 主任医师 114 专家 120 普通医师[中医辩证] 121 主治医师[中医辩证] 122 副主任医师[中医辩证] 123 主任医师[中医辩证] 124 国医大师[中医辩证] LS_CFLSHQZFS varchar2(10);--新医保接口费用结算处方项目数(itemcount)取值方式 Y:处方项目数 N:医保明细流水号个数 默认:N LS_HISLSHQZFS varchar2(10);--新医保接口His流水号(bke042)取值方式 Y:系统序列号 N:挂号ID或住院ID 默认:N LS_BKEE70 varchar2(50);--his 退费流水号 varchar2(50) y 对帐时使用 LS_BKA555 varchar2(50);--bka555 对账数据分类YBSM23 varchar2(3) y 参见编码附件(本地、省内、跨省等),“门诊超限全自费” 01 本市 02 省内异地 03 省外异地 99 门诊超限全自费 LS_BKF237 varchar2(50);--his内部科室编码(医保科室编码) LS_BKF238 varchar2(50);--his内部科室名称 LS_AKF001 varchar2(50);--标准科室编码 LS_AKF002 varchar2(50);--标准科室名称 LS_CXZBZ0 varchar2(50);--超限制标志: (0:否 1:是) LS_HISLSH varchar2(50);--HIS流水号 LS_AKC192 varchar2(20);--实际门诊/入院日期 格式:yyyymmddhh24miss LS_XZQH00 BM_BRXXB0.XZQH00%type; --行政区划 LS_GHH000 SF_BRXXB0.GHH000%type; --挂号号 LS_aab301 varchar2(10);--参保地行政区划 LS_bae016 varchar2(50);--作废原因 in_AAC002 varchar2(30);--身份证号 in_AKC190 varchar2(30);--医保挂挂号或住院流水号[akc190] in_BKE297 varchar2(50);--医保明细流水号[bke297] in_YBJKID varchar2(50);--医保接口ID in_CXTYPE varchar2(50);--冲销类型 100: 费用明细冲销 110: 费用结算冲销 120: 入院登记冲销 in_RZTYPE varchar2(50);--日志类型 0:日志表 1:流水表 in_CZLX00 varchar2(50);--0:发送 1:返回 in_AKA078 varchar2(10);--医疗就诊方式 in_BKE241 varchar2(10);--数据来源 in_AAB301 varchar2(10);--参保行政区号 in_BAE016 varchar2(50);--作废原因 in_FUNID varchar2(50);--原交易功能代码[funid] in_AAE072 varchar2(30);--医保收费流水号[aae072] in_BKE042 varchar2(50);--his流水号[bke042] in_BKE298 varchar2(50);--his收费单据流水号[bke298] in_AAZ500 varchar2(30);--医保卡号[aaz500]: in_AAC003 varchar2(50);--姓名[aac003]: in_bkee70 varchar2(50);--his 退费流水号 varchar2(50) y 对帐时使用 in_BKEG23 varchar2(50); --是否账户抵扣 in_BKA190 varchar2(50); --是否共济扣款 LS_GHRQ00 SF_BRXXB0.GHRQ00%type;--挂号日期 LS_GHSJ00 SF_BRXXB0.GHSJ00%type;--挂号时间 LS_YBSJSFRQMS varchar2(100);--新医保门诊(AKC192、BKC014、BKC171)是否取挂号日期和时间:格式(1:是0:否|有效天数0:当天,1:两天) 默认:0|1 LS_SFFSGHRQ varchar2(1); --新医保门诊是否发送挂号日期1:是0:否 LS_FSGHRQTS number(12) ; --新医保门诊发送挂号日期有效天数0:当天,1:两天 LS_YXTSNUM number(12) ; --有效天数临时变量 LS_YPDWSFFSYBBM varchar2(100); --通用明细药品单位是否发送医保编码, 0否1是, 默认0 LS_YBJKFPLBCS varchar2(50); --新医保接口发票类别(aka063)(格式:门诊,住院) 0:发送编码 1:发送名称 默认:0,0 LS_BKEG23 varchar2(50); --是否账户抵扣 LS_BKA190 varchar2(50); --是否共济扣款 LS_DYBZBM XT_ICD900.DYBZBM%type; --对应标准编码 LS_DYJBMC XT_ICD900.DYJBMC%type; --对应疾病名称 LS_YBLB00 SF_BRXXB0.YBLB00%type; --医保类别 LS_FBBH00 SF_BRXXB0.FBBH00%type; --费别编号 LS_YBSDLB IC_YBBRLB.YBSDLB%type; --医保属地类别 LS_SFCQJC SF_BRXXB0.SFCQJC%type; --是否产前检查 LS_ZZDBZ0 char(1); --主诊断标志, 用于记录主诊断是否已生成, 0未生成1已生成 in_YBDZPZ varchar2(10); --是否医保电子资格信息查询 1:是 0:否 LS_YBDZPZ_funid varchar2(50); --医保凭证就诊,医保功能编码funid in_CARSBM varchar2(50); --入参:卡识别码 LS_EXESQL varchar2(1000); LS_FHCS00 varchar2(1000);--输出:返回参数(XML格式) LS_bkb526 XT_YYXX00.GJBZBM%type; --bkb526医疗机构国家码 LS_BKC007_FSYSGJBM BM_TYZD00.MC0000%type; --字典参数BKC007_FSYSGJBM MZSF9-20210922-001 LS_bkc007 BM_YGBM00.YBYGDM%type; --bkc007医师国家编码 MZSF9-20210922-001 LS_aac999 BM_BRXXB0.aac999%type;--个人管理码(医保编号) LS_Open_JSQD_download varchar2(10); --新医保国家结算清单查询或下载接口是否开启(新模式:医保提供明细数据His自行设置模板) 1:门诊开启 2:住院开启 3:门诊和住院都开启 0:不开启 默认值:0 LS_psn_no varchar2(30); --psn_no:人员编号 LS_setl_id varchar2(30); --setl_id:结算ID LS_YYKSBMFSLX BM_TYZD00.MC0000%type; --新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0 LS_JSQD_MainNodeName varchar2(100);--医疗保障基金结算清单[上传基本信息主节点编码]、[查询基本信息返回节点编码、请求节点编码]:(分隔符用|)(参考格式:setlinfo|setlinfo|data) 默认值:空值 LS_JSQDDataNodeName varchar2(50); --主项节点编码 LS_BKE087_MAX_LENGTH BM_TYZD00.MC0000%type; --字典参数BKE087_MAX_LENGTH MZSF9-20211028-004 in_BKE087_MAX_LENGTH number(5); --MZSF9-20211028-004 LS_MZ_Medical_Para BM_TYZD00.MC0000%type; --门诊收费体检结算医保相关参数,格式[开启(1:开0:否)|就诊方式aka078|医疗类别aka130|诊断编码|固定收费项目] 默认值:0|60|A1|Z00.800|001105000010000-110500001 LS_Medical_type varchar2(1);--体检结算:体检病人标识 1:体检病人 0:非体检病人 LS_Medical_Open varchar2(1);--体检结算:是否开启 1:开 0:否 LS_Medical_aka078 varchar2(10);--体检结算:就诊方式aka078 LS_Medical_aka130 varchar2(10);--体检结算:就诊方式aka130 LS_Medical_bke087 varchar2(50);--体检结算:诊断编码bke087 LS_Medical_bke045 varchar2(50);--体检结算:固定收费项目bke045 cursor CUR_YBFSZX is select YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ from SF_YBJKMX where YBJKID=LS_YBJKID and FSLXBZ in ('1','3') order by JKMXID; --诊断信息 2021.5.18 诊断信息按西医主诊断->中医疾病->其它诊断排序 cursor CUR_BRZDXX is select a.* from ( select decode(a.ZZDBZ0,'3','1','1','2','3') YBZDBZ,a.* from YS_BRZDXX a where GHID00=PGHID00 order by ZZDBZ0 ) a order by YBZDBZ; --select * from YS_BRZDXX where GHID00=PGHID00 order by ZZDBZ0; --清单明细 SF_YBJKQD cursor CUR_MXLIST is select * from SF_YBJKQD where YBJKID=LS_YBJKID order by JKMXID; begin LS_EXESQL:=''; LS_FHCS00:='';--输出:返回参数(XML格式) LS_YBSJSFRQMS:='0|0';--新医保门诊(AKC192、BKC014、BKC171)是否取挂号日期和时间:格式(1:是0:否|有效天数0:当天,1:两天) 默认:0|1 LS_SFFSGHRQ:='0'; --新医保门诊是否发送挂号日期1:是0:否 LS_FSGHRQTS:=0; --新医保门诊发送挂号日期有效天数0:当天,1:两天 LS_YPDWSFFSYBBM := '0'; --通用明细药品单位是否发送医保编码, 0否1是, 默认0 in_YBDZPZ:= '0';--是否医保电子资格信息查询 1:是 0:否 LS_MZ_Medical_Para:=null; --门诊收费体检结算医保相关参数,格式[开启(1:开0:否)|就诊方式aka078|医疗类别aka130|诊断编码|固定收费项目] 默认值:0|60|A1|Z00.800|001105000010000-110500001 LS_Medical_type:=null;--体检结算:体检病人标识 1:体检病人 0:非体检病人 LS_Medical_Open:=null;--体检结算:是否开启 1:开 0:否 LS_Medical_aka078:=null;--体检结算:就诊方式aka078 LS_Medical_aka130:=null;--体检结算:就诊方式aka130 LS_Medical_bke087:=null;--体检结算:诊断编码bke087 LS_Medical_bke045:=null;--体检结算:固定收费项目bke045 --医保发票是否使用编号 Y:编码 N:明细 begin select substrb(trim(VALUE0),1,10) into LS_YBFPBH from XT_XTCS00 where name00 in ('ZY_YBFPBH'); exception when others then LS_YBFPBH:='N'; end; --LS_QDQZFS YBQDMXFSLX:医保新接口费用清单取值方式 1:取SF_YBJKQD或ZY_YBJKQD 2:取SF_YBJKMX或ZY_YBJKMX 默认:1 LS_QDQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','YBQDMXFSLX'),1,10),'1'); --LS_CFLSHQZFS FYJSCFXMSQZFS:新医保接口费用结算处方项目数(itemcount)取值方式 Y:处方项目数 N:医保明细流水号个数 默认:N LS_CFLSHQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','FYJSCFXMSQZFS'),1,10),'N'); --LS_HISLSHQZFS HISLSHQZFS:新医保接口His流水号(bke042)取值方式 Y:系统序列号 N:挂号ID或住院ID 默认:N LS_HISLSHQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','HISLSHQZFS'),1,10),'N'); LS_AAZ501:=substrb(SF_SF_TYZD00('医保新接口参数设置','aaz501'),1,50); LS_YBSJSFRQMS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','MZ_AKC192_BKC014_BKC171'),1,50),'0,0');--新医保门诊(AKC192、BKC014、BKC171)是否取挂号日期和时间:格式(1:是0:否|有效天数0:当天,1:两天) 默认:0|0 LS_SFFSGHRQ:=substrb(SF_SF_RETURNINDEXEH(LS_YBSJSFRQMS,'|', 1),1,1);--新医保门诊是否发送挂号日期1:是0:否 if LS_SFFSGHRQ='1' then --1:发送挂号日期和时间 begin LS_FSGHRQTS:=to_number(SF_SF_RETURNINDEXEH(LS_YBSJSFRQMS,'|', 2));--新医保门诊发送挂号日期有效天数0:当天,1:两天 exception when others then LS_FSGHRQTS:=0; end; end if; LS_YPDWSFFSYBBM := nvl(SF_SF_TYZD00('医保新接口参数设置','YPDWSFFSYBBM'),'0'); --通用明细药品单位是否发送医保编码, 0否1是, 默认0 --新医保接口发票类别(aka063)(格式:门诊,住院) 0:发送编码 1:发送名称 默认:0,0 LS_YBJKFPLBCS := nvl(SF_XT_RETURNINDEXEH(nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','aka063'),1,50),'0,0'),',',1),'0'); LS_YBDZPZ_funid:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','YBDZPZ_funid'),1,50),'yb04.10.01.16');--医保凭证就诊,医保功能编码funid --字典参数BKC007_FSYSGJBM LS_BKC007_FSYSGJBM:=nvl(SF_SF_TYZD00('医保新接口参数设置','BKC007_FSYSGJBM'),'0'); --新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:1 LS_YYKSBMFSLX:=trim(nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','yyksbmfslx'),1,50),'1')); --医保国家标准诊断码大于20位以上诊断不发送给医保-字典参数BKE087_MAX_LENGTH MZSF9-20211028-004 in_BKE087_MAX_LENGTH:=0; LS_BKE087_MAX_LENGTH:=nvl(SF_SF_TYZD00('医保新接口参数设置','BKE087_MAX_LENGTH'),'0'); begin in_BKE087_MAX_LENGTH:=to_number(LS_BKE087_MAX_LENGTH); exception when others then in_BKE087_MAX_LENGTH:=0; end; --MZ_Medical_Para 门诊收费体检结算医保相关参数,格式[开启(1:开0:否)|就诊方式aka078|医疗类别aka130|诊断编码|固定收费项目] 默认值:0|60|A1|Z00.800|001105000010000-110500001 LS_MZ_Medical_Para:=substrb(SF_SF_TYZD00('医保新接口参数设置','MZ_Medical_Para'),1,100); if LS_MZ_Medical_Para is not null then LS_Medical_Open:=substrb(SF_SF_RETURNINDEXEH(LS_MZ_Medical_Para,'|', 1),1,1);--体检结算:是否开启 1:开 0:否 LS_Medical_aka078:=substrb(SF_SF_RETURNINDEXEH(LS_MZ_Medical_Para,'|', 2),1,10);--体检结算:就诊方式aka078 LS_Medical_aka130:=substrb(SF_SF_RETURNINDEXEH(LS_MZ_Medical_Para,'|', 3),1,10);--体检结算:就诊方式aka130 LS_Medical_bke087:=substrb(SF_SF_RETURNINDEXEH(LS_MZ_Medical_Para,'|', 4),1,50);--体检结算:诊断编码bke087 LS_Medical_bke045:=substrb(SF_SF_RETURNINDEXEH(LS_MZ_Medical_Para,'|', 5),1,50);--体检结算:固定收费项目bke045 end if; select SQ_SF_YBJKRZ_YBJKID.nextval into LS_YBJKID from dual; select max(XZQH00) into LS_XZQH00 from BM_BRXXB0 where BRID00 = PBRID00; --取得行政区号 LS_GHID00:=PGHID00; --挂号ID LS_GHH000:=PGHH000; --取入参挂号号 PYBJKID:=LS_YBJKID; LS_JKCJBM:=PJKCJBM; LS_MZZYBZ:='0'; --门诊住院标识 0:门诊 1:住院 PZXZT00:=0; --执行状态 0:失败 1:成功 LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_QTQQCS:=null; --前台接口请求参数临时中间变量 LS_HISCS0:=null; --HIS前台请求参数 LS_JKQQCS:=null; --接口请求参数 LS_JKFHCS:=null; --接口返回参数 LS_YBKSBM:=null; --医保卡识别码 LS_USR000:=''; --医保接口_登录用户名(测试用) LS_PWD000:=''; --医保接口_登录密码(测试用) LS_TSBZBH:=''; --特殊病种编码 LS_AKA078:='10'; --医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_BKE241:='01'; --数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 LS_BKE298:=LS_YBJKID; --HIS收费单据流水号 LS_AKA130:='11'; --医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 LS_MXLSH0:=null; --明细流水号 LS_YBGHH0:=null; --医保挂号号 LS_XMFSBZ:='N'; --项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCFMX_TEMP00 LS_ID0000:=null; --中间表ID LS_AKC190:=null; --医保门诊挂号流水号/住院登记流水号 LS_BKE042:=LS_YBJKID; --his流水号 LS_BKC014:=to_char(sysdate,'YYYYMMDD'); --实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期) LS_BKC171:=to_char(sysdate,'HH24MISS'); --实际就诊时间 住院指病人实际出院时间 LS_CFXMSL:=0; --明细项目数量 LS_AKB065:=0; --医疗费总金额 LS_CXJZDH:=0; --冲销结账单号 LS_BKA535:='110';--医师诊查费等级 110 普通医师 111 主治医师 112 副主任医师 113 主任医师 114 专家 120 普通医师[中医辩证] 121 主治医师[中医辩证] 122 副主任医师[中医辩证] 123 主任医师[中医辩证] 124 国医大师[中医辩证] LS_BKEE70:=LS_YBJKID;--his 退费流水号 varchar2(50) y 对帐时使用 LS_BKA555:='01';--bka555 对账数据分类 varchar2(3) y 参见编码附件(本地、省内、跨省等),“门诊超限全自费” 01 本市 02 省内异地 03 省外异地 99 门诊超限全自费 LS_AKC192:=to_char(sysdate,'yyyymmddhh24miss');--实际门诊/入院日期 格式:yyyymmddhh24miss LS_bae016:='失败作废';--作废原因 LS_BKEG23:='1'; --是否账户抵扣 LS_BKA190:='Y'; --是否共济扣款 LS_JSQD_MainNodeName:=null;--医疗保障基金结算清单[上传基本信息主节点编码]、[查询基本信息返回节点编码、请求节点编码]:(分隔符用|)(参考格式:setlinfo|setlinfo|data) 默认值:空值 LS_JSQDDataNodeName:=null; --主项节点编码 select nvl(max(VALUE0),'N') into LS_SFYBZGTJHSFYZMTJJK from XT_XTCS00 where NAME00 = 'SF_YBZGTJHSFYZMTJJK'; begin select substrb(CJMC00,1,30)CJMC00,substrb(FUNCMC,1,20) into LS_YBJKMC, LS_YBJKBM from BM_TYCJBM where CJBM00=LS_JKCJBM; exception when others then LS_YBJKMC:=null; LS_YBJKBM:=null; end; --获取前端请求的参数 if PQQCSID is not null then begin select JKQQCS into LS_QTQQCS from BM_ZFPTCS where DDLSH0=PQQCSID; exception when others then LS_QTQQCS:=null; end; end if; if LS_QTQQCS is not null then LS_HISCS0:=substrb(LS_QTQQCS,1,2000); else LS_HISCS0:=substrb(PINCS00,1,2000); end if; --获取医保用户名和名 begin select A.YBYHBM,A.YBYHMM into LS_USR000, LS_PWD000 from BM_YGBM00 A where A.YGBH00=PCZY000; exception when others then LS_USR000:='';--医保接口_登录用户名 LS_PWD000:='';--医保接口_登录密码 end; --员工编码未维护授权码和密码根据部门科室编码从XT_YYXX00获取 if PCZYKS0 > 0 and LS_USR000 is null then begin select B.YBYHBM,B.YBYHMM into LS_USR000,LS_PWD000 from BM_BMBM00 A,XT_YYXX00 B where A.YYID00=B.YYID00 and A.BMBH00=PCZYKS0; exception when others then LS_USR000:='';--医保接口_登录用户名 LS_PWD000:='';--医保接口_登录密码 end; end if; --查找病人基本信息 if PBRID00>0 then begin select A.YBKH00,A.YBID00,A.BRZJBH,A.BRXM00,E.YBZXLB,A.XZQH00,substrb(trim(A.YBKSBM),1,50) as YBKSBM,AAC999 into LS_YBKH00, LS_YBID00,LS_BRZJBH,LS_BRXM00,LS_YBZXLB,LS_XZQH00,LS_YBKSBM,LS_AAC999 from BM_BRXXB0 A,IC_YBBRLB E where A.BRID00=PBRID00 and A.YBLB00=E.YBLB00 and A.FBBH00=E.FBBH00; exception when others then PZXZT00:=0; --执行状态 0:失败 1:成功 end; end if; LS_FUNID:=LS_YBJKBM;--功能编码 LS_MKLXMC:=substrb(SF_SF_GETXMLNOTE('MKLXMC',LS_HISCS0),1,50); --获取前端传入卡号 select substrb(SF_SF_GETXMLNOTE('CARDNO',LS_HISCS0),1,50) into LS_CARDNO from dual; --前端未传入卡号, 则取BM_BRXXB0.YBKH00 if trim(LS_CARDNO) in ('0') or trim(LS_CARDNO) is null then if trim(LS_YBKH00) not in ('0') and trim(LS_YBKH00) is not null then LS_CARDNO := trim(LS_YBKH00); end if; end if; --if trim(LS_YBKH00) in ('0') or trim(LS_YBKH00) is null then -- select substrb(SF_SF_GETXMLNOTE('CARDNO',LS_HISCS0),1,50) into LS_CARDNO from dual; --else -- LS_CARDNO:=trim(LS_YBKH00); --end if; --获取卡识别码(基本信息表卡识别码为空请求报文中获取) if LS_YBKSBM is null then in_CARSBM:=substrb(SF_SF_GETXMLNOTE('CARSBM',LS_HISCS0),1,50); if in_CARSBM is not null then LS_YBKSBM:=in_CARSBM; end if; --LS_YBKSBM:=LS_CARDNO; end if; --解析请求报文病人姓名 if LS_BRXM00 is null then select substrb(SF_SF_GETXMLNOTE('BRXM00',LS_HISCS0),1,50) into LS_BRXM00 from dual; end if; --解析报文中结账单号 begin select to_number(SF_SF_GETXMLNOTE('JZDH00',LS_HISCS0)) into LS_JZDH00 from dual; exception when others then LS_JZDH00:=0; end; --解析报文中冲销结账单号 begin select to_number(SF_SF_GETXMLNOTE('CXJZDH',LS_HISCS0)) into LS_CXJZDH from dual; exception when others then LS_CXJZDH:=0; end; --解析报文中特殊病种编码 select substrb(SF_SF_GETXMLNOTE('TSBZBH',LS_HISCS0),1,30) into LS_TSBZBH from dual; --解析报文中 明细流水号 select substrb(SF_SF_GETXMLNOTE('MXLSH0',LS_HISCS0),1,50) into LS_MXLSH0 from dual; --解析报文中 医保挂号号 select substrb(SF_SF_GETXMLNOTE('YBGHH0',LS_HISCS0),1,30) into LS_AKC190 from dual; --解析报文中 LS_XMFSBZ 项目选择发送 Y:BM_SFCFMX_TEMP01, N:SF_YBFSMX select substrb(SF_SF_GETXMLNOTE('XMFSBZ',LS_HISCS0),1,50) into LS_XMFSBZ from dual; --解析报文中 中间表ID select substrb(SF_SF_GETXMLNOTE('ID0000',LS_HISCS0),1,50) into LS_ID0000 from dual; --LS_SFYJS0 --是否预结算 'Y':是预结算,'N':不是预结算 select substrb(SF_SF_GETXMLNOTE('SFYJS0',LS_HISCS0),1,50) into LS_SFYJS0 from dual; --LS_CXZBZ0 varchar2(50);--超限制标志: (0:否 1:是) LS_CXZBZ0:=nvl(substrb(SF_SF_GETXMLNOTE('CXZBZ0',LS_HISCS0),1,50),'0');--超限制标志: (0:否 1:是) LS_HISLSH:=substrb(SF_SF_GETXMLNOTE('HISLSH',LS_HISCS0),1,50);--HIS流水号 LS_AAC002:=substrb(SF_SF_GETXMLNOTE('AAC002',LS_HISCS0),1,50);--证件号码(社会保障号) LS_BKE284:=substrb(SF_SF_GETXMLNOTE('BKE284',LS_HISCS0),1,50);--身份认证类型 in_AAC002:=trim(substrb(SF_SF_GETXMLNOTE('AAC002',LS_HISCS0),1,30));--身份证号 in_AKC190:=trim(substrb(SF_SF_GETXMLNOTE('AKC190',LS_HISCS0),1,50));--医保挂挂号或住院流水号[akc190] in_BKE297:=trim(substrb(SF_SF_GETXMLNOTE('BKE297',LS_HISCS0),1,50));--医保明细流水号[bke297] in_YBJKID:=trim(substrb(SF_SF_GETXMLNOTE('YBJKID',LS_HISCS0),1,50));--医保接口ID in_CXTYPE:=trim(substrb(SF_SF_GETXMLNOTE('CXTYPE',LS_HISCS0),1,50));--冲销类型 100: 费用明细冲销 110: 费用结算冲销 120: 入院登记冲销 in_RZTYPE:=trim(substrb(SF_SF_GETXMLNOTE('RZTYPE',LS_HISCS0),1,50));--日志类型 0:日志表 1:流水表 in_CZLX00:=trim(substrb(SF_SF_GETXMLNOTE('CZLX00',LS_HISCS0),1,50));--0:发送 1:返回 in_AKA078:=trim(substrb(SF_SF_GETXMLNOTE('AKA078',LS_HISCS0),1,10));--医疗就诊方式 in_BKE241:=trim(substrb(SF_SF_GETXMLNOTE('BKE241',LS_HISCS0),1,10));--数据来源 in_AAB301:=trim(substrb(SF_SF_GETXMLNOTE('AAB301',LS_HISCS0),1,10));--参保行政区号 in_BAE016:=trim(substrb(SF_SF_GETXMLNOTE('BAE016',LS_HISCS0),1,50));--作废原因 in_FUNID:=trim(substrb(SF_SF_GETXMLNOTE('FUNID',LS_HISCS0),1,50));--原交易功能代码[funid] in_AAE072:=trim(substrb(SF_SF_GETXMLNOTE('AAE072',LS_HISCS0),1,30));--医保收费流水号[aae072] in_BKE042:=trim(substrb(SF_SF_GETXMLNOTE('BKE042',LS_HISCS0),1,50));--his流水号[bke042] in_BKE298:=trim(substrb(SF_SF_GETXMLNOTE('BKE298',LS_HISCS0),1,50));--his收费单据流水号[bke298] in_AAZ500:=trim(substrb(SF_SF_GETXMLNOTE('AAZ500',LS_HISCS0),1,30));--医保卡号[aaz500]: in_AAC003:=trim(substrb(SF_SF_GETXMLNOTE('AAC003',LS_HISCS0),1,50));--姓名[aac003]: in_BKEE70:=trim(substrb(SF_SF_GETXMLNOTE('BKEE70',LS_HISCS0),1,50));--his 退费流水号 varchar2(50) y 对帐时使用 in_BKEG23:=trim(substrb(SF_SF_GETXMLNOTE('BKEG23',LS_HISCS0),1,50));--是否账户抵扣 in_BKA190:=trim(substrb(SF_SF_GETXMLNOTE('BKA190',LS_HISCS0),1,50));--是否共济扣款 in_YBDZPZ:=trim(substrb(SF_SF_GETXMLNOTE('YBDZPZ',LS_HISCS0),1,10));--是否医保电子资格信息查询 1:是 0:否 LS_psn_no:=trim(substrb(SF_ZY_GETXMLNOTE('PSN_NO',LS_HISCS0),1,30));--psn_no:人员编号 LS_setl_id:=trim(substrb(SF_ZY_GETXMLNOTE('SETL_ID',LS_HISCS0),1,30));--setl_id:结算ID LS_AAZ500:=LS_CARDNO;--社会保障卡号 LS_AAZ501:=nvl(LS_YBKSBM,LS_AAZ501);---卡识别码 LS_BKZ543:=null;--二维码 if LS_AAC002 is null or trim(LS_AAC002)='' then if LS_BKE284 in ('06') then if LS_BRZJBH is not null and SP_SF_CHECKSFZH(LS_BRZJBH) = 1 then LS_AAC002 := trim(LS_BRZJBH); else LS_AAC002 := trim(LS_YBID00); end if; else if trim(nvl(LS_YBID00,'0'))='0' then LS_AAC002:=trim(LS_BRZJBH);---证件号码(社会保障号) else LS_AAC002:=trim(LS_YBID00); end if; end if; end if; --TODO 考虑用一个函数来封装 if PGHID00 <> 0 then begin select a.BXLB00, (select YBBMMC from BM_YBKSBM where YBBMBH=b.YBKSBH and rownum=1) YBBMMC, (select LBMC00 from BM_GHLBB0 where LBBH00=a.GHLB00 and rownum=1) GHLBMC, A.GHRQ00,A.GHSJ00 into LS_BXLB00,LS_YBBMMC, LS_GHLBMC,LS_GHRQ00,LS_GHSJ00 from SF_BRXXB0 a,BM_BMBM00 b where a.GHKS00 = b.BMBH00 and a.GHID00 = PGHID00; exception when others then LS_BXLB00:='0'; --找不到就当普通 LS_YBBMMC :=''; LS_GHLBMC := ''; LS_GHRQ00:=to_char(sysdate,'YYYYMMDD'); LS_GHSJ00:=to_char(sysdate,'HH24:MI:SS'); end; --0:普通 1:生育 2:工伤 3:体检 if LS_YBBMMC='职工体检' or LS_YBBMMC='居民体检' or (LS_SFYBZGTJHSFYZMTJJK='Y' and LS_GHLBMC='体检号') then LS_BXLB00 := '3'; else --普通/工伤/生育 select max(BXLB00) into LS_BXLB00 from SF_BRXXB0 where GHID00 = PGHID00; if LS_BXLB00 = '普通' or trim(LS_BXLB00) is null then LS_BXLB00 := '0'; elsif LS_BXLB00 = '生育' then LS_BXLB00 := '1'; elsif LS_BXLB00 = '工伤' then LS_BXLB00 := '2'; end if; end if; end if; --病种分类 0:特殊病种 1:生育病种 2:单病种 if trim(LS_TSBZBH) is not null then begin select TSBZFL into LS_TSBZFL from BM_TSBZB0 where trim(BH0000)=trim(LS_TSBZBH) and YBZXLB=LS_YBZXLB; exception when others then LS_TSBZFL:=''; end; end if; if LS_TSBZFL in ('1') then LS_BXLB00:='1';--1:生育 end if; --医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_AKA078:=SF_SF_GETYBSXZD(PBRID00,'0','aka078',LS_TSBZBH,LS_BXLB00,''); --医疗类别11:普通门诊12:急诊13:门诊慢(特)病种16:急诊观留床21:普通住院29:择日住院31:家庭病床34:按病种住院42:处方购药43:非处方购药A1:体检52:生育住院 LS_AKA130:=SF_SF_GETYBSXZD(PBRID00,'0','aka130',LS_TSBZBH,LS_BXLB00,''); --数据来源bke241: 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_BKE241:=SF_SF_GETYBSXZD(PBRID00,LS_MZZYBZ,'bke241',LS_TSBZBH,LS_BXLB00,''); --身份认证类型bke284:01:读卡 02:融合码 06:医保码 20:医疗证 if LS_BKE284 is null then LS_BKE284:=SF_SF_GETYBSXZD(PBRID00,LS_MZZYBZ,'bke284',LS_TSBZBH,LS_BXLB00,''); end if; --超限制标志: (0:否 1:是) AKA130:医疗类别 (1A 门诊超限全自费) if LS_CXZBZ0 in ('1') then LS_AKA130:='1A';--:1A 门诊超限全自费 end if; --结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 if PJKCJBM in ('YBJK_TYSF_0020_1','YBJK_TYSF_0021_1','YBJK_MXSC_0026_1') or LS_SFYJS0 in ('Y') then --门诊收费预结算、住院收费预结算 LS_BKE286:='0'; elsif PJKCJBM in ('YBJK_TYSF_0021_2') then --住院预结算 LS_BKE286:='1'; else LS_BKE286:='2'; end if; LS_AAZ149:=LS_TSBZBH;--特殊病种编码 if nvl(LS_JZDH00,0) in (0) and nvl(LS_CXJZDH,0) not in (0) then LS_JZDH00:=nvl(LS_CXJZDH,0); end if; --获取挂号类别名称 if LS_GHID00>0 and PBRID00>0 then begin select B.LBMC00,B.YSZJDJ,a.SFCQJC into LS_LBMC00,LS_YSZJDJ,LS_SFCQJC from SF_BRXXB0 A,BM_GHLBB0 B where A.GHLB00=B.LBBH00 and A.GHID00=LS_GHID00 and A.BRID00=PBRID00; exception when others then LS_LBMC00:=''; LS_YSZJDJ:=''; end; end if; --bka535:医师诊查费等级 110 普通医师 111 主治医师 112 副主任医师 113 主任医师 114 专家 120 普通医师[中医辩证] 121 主治医师[中医辩证] 122 副主任医师[中医辩证] 123 主任医师[中医辩证] 124 国医大师[中医辩证] if instrb(LS_LBMC00,'主治医师')>0 then LS_BKA535:='111'; elsif instrb(LS_LBMC00,'副主任医师')>0 then LS_BKA535:='112'; elsif instrb(LS_LBMC00,'主任医师')>0 then LS_BKA535:='113'; elsif instrb(LS_LBMC00,'专家')>0 then LS_BKA535:='114'; elsif instrb(LS_LBMC00,'普通医师[中医辩证]')>0 then LS_BKA535:='120'; elsif instrb(LS_LBMC00,'主治医师[中医辩证]')>0 then LS_BKA535:='121'; elsif instrb(LS_LBMC00,'副主任医师[中医辩证]')>0 then LS_BKA535:='122'; elsif instrb(LS_LBMC00,'主任医师[中医辩证]')>0 then LS_BKA535:='123'; elsif instrb(LS_LBMC00,'国医大师[中医辩证]')>0 then LS_BKA535:='124'; else LS_BKA535:='110'; end if; --医师诊金等级接口编码 if LS_YSZJDJ is not null then LS_BKA535:=LS_YSZJDJ; end if; --挂号类别名称包含急诊,AKA130 医疗类别 12 急诊 --急诊特殊病种不按急诊发送, 仍按特殊病种发送 if instrb(LS_LBMC00,'急诊')>0 and LS_TSBZBH is null then LS_AKA130:='12'; end if; --非特殊病种才判断产前检查和体检 if LS_TSBZBH is null then --产前检查发送17 if nvl(LS_SFCQJC,'0') = '1' then LS_AKA130:='17'; elsif nvl(LS_SFCQJC,'0') = '2' then LS_AKA130:='A1'; end if; end if; --厦门医保 bke042:his流水号 挂号、明细上传、结算保存一致 if LS_GHID00>0 and LS_HISLSHQZFS not in ('Y') then LS_BKE042:=LS_GHID00; end if; --获取挂号科室和名称以及医保科室编码 if PGHID00>0 and PBRID00>0 then begin select a.GHKS00,b.BMMC00,a.GHH000,a.YBLB00,a.FBBH00 into LS_GHKS00,LS_GHKSMC,LS_GHH000,LS_YBLB00,LS_FBBH00 from SF_BRXXB0 a,BM_BMBM00 B where a.GHKS00=b.BMBH00 and A.GHID00=PGHID00 and a.BRID00=PBRID00; exception when others then LS_GHKS00:=''; LS_GHKSMC:=''; LS_GHH000:=PGHH000; end; if LS_GHH000 is not null then select SF_SF_GetYYKSBM(PBRID00,LS_GHH000,0) into LS_YYKSBM from dual; else begin select YBSDLB into LS_YBSDLB from IC_YBBRLB where YBLB00=LS_YBLB00 and FBBH00=LS_FBBH00; exception when others then LS_YBSDLB := '0'; end; begin --医保属地类别为2, 取跨省医保科室编码 if LS_YBSDLB = '2' then select KSYBKS into LS_YYKSBM from bm_bmbm00 where BMBH00=LS_GHKS00; else select YYKSBM into LS_YYKSBM from bm_bmbm00 where BMBH00=LS_GHKS00; end if; exception when others then LS_YYKSBM:=''; end; end if; end if; --LS_AAC003 病人姓名 LS_AAC003:=trim(LS_BRXM00); LS_aab301:=substrb(LS_XZQH00,1,10); --参保地行政区划 --2021.10.08 新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码) if LS_YYKSBMFSLX = '0' then LS_BKF237:=substrb(LS_GHKS00,1,50);--院内科室编码 LS_BKF238:=substrb(LS_GHKSMC,1,50);--标准科室名称 LS_AKF001:=substrb(LS_YYKSBM,1,50);--医保科室编码 LS_AKF002:=substrb(LS_GHKSMC,1,50);--医保科室名称 else LS_AKF001:=substrb(LS_GHKS00,1,50);--院内科室编码 LS_AKF002:=substrb(LS_GHKSMC,1,50);--标准科室名称 LS_BKF237:=substrb(LS_YYKSBM,1,50);--医保科室编码 LS_BKF238:=substrb(LS_GHKSMC,1,50);--医保科室名称 end if; --行政区号如果没有保存,则根据卡号强制转换 if LS_XZQH00 is null or length(LS_XZQH00)<>6 then LS_aab301:=substrb(SF_SF_AAB301(-1, null, LS_AAZ500),1,10); --参保地行政区划 end if; --增加bkb526医疗机构国家码的取值与处理 MZSF9-20210922-001 begin select SF_XT_GETYYGJBZBM(to_number(LS_GHKS00)) into LS_bkb526 from dual; exception when others then LS_bkb526 := null; end; --2020.10.22 直接按报文前台传参数赋值--begin-- --医保卡号[aaz500] if in_AAZ500 is not nulL and in_AAZ500 not in ('0') then LS_aaz500:=in_AAZ500; else if trim(LS_YBKH00) not in ('0') and trim(LS_YBKH00) is not null then LS_AAZ500:=trim(LS_YBKH00); end if; end if; --身份证号[aac002] if in_aac002 is not null then LS_aac002:=in_aac002; end if; --姓名[aac003]: if in_AAC003 is not null then LS_AAC003:=in_AAC003; end if; --医保挂挂号或住院流水号[akc190] if in_AKC190 is not null and in_AKC190 not in ('0') then LS_AKC190:=substrb(in_AKC190,1,30); end if; --医保明细流水号[bke297] if in_BKE297 is not null then LS_MXLSH0:=substrb(in_BKE297,1,50); end if; --医疗就诊方式 if in_AKA078 is not null then LS_AKA078:=substrb(in_AKA078,1,10); end if; --数据来源 if in_BKE241 is not null then LS_BKE241:=substrb(in_BKE241,1,10); end if; --参保行政区号 if in_AAB301 is not null then LS_aab301:=substrb(in_AAB301,1,10); end if; --作废原因 if in_BAE016 is not null then LS_bae016:=substrb(in_BAE016,1,50); end if; --医保收费流水号[aae072]: if in_AAE072 is not null then LS_AAE072:=substrb(in_AAE072,1,30); end if; --his流水号[bke042]: if in_bke042 is not null then LS_bke042:=substrb(in_bke042,1,50); end if; --his收费单据流水号[bke298] if in_bke298 is not null then LS_BKE298:=substrb(in_bke298,1,50); end if; if in_BKEE70 is not null then ----his 退费流水号 varchar2(50) y 对帐时使用 LS_BKEE70:=substrb(in_BKEE70,1,50); end if; --是否账户抵扣 if in_BKEG23 is not null then LS_BKEG23 := in_BKEG23; end if; --是否共济扣款 if in_BKA190 is not null then LS_BKA190 := in_BKA190; end if; --2020.10.22 直接按报文前台传参数赋值--End- if LS_psn_no is null then --psn_no:人员编号 if trim(LS_aac999) is not null then LS_psn_no:=trim(LS_aac999); else if trim(LS_YBID00) not in ('0') then LS_psn_no:=trim(LS_YBID00); else LS_psn_no:=trim(LS_BRZJBH); end if; end if; end if; --2020.11.27 根据挂号日期和时间转化--begin--- if trim(LS_GHRQ00) is not null and trim(LS_GHRQ00) not in ('0','20991231') and LS_SFFSGHRQ='1' then --1:发送挂号日期和时间 begin LS_YXTSNUM:=to_date(LS_CZRQ00,'YYYYMMDD')-to_date(LS_GHRQ00,'YYYYMMDD'); --有效天数临时变量 exception when others then LS_YXTSNUM:=0; LS_FSGHRQTS:=-1; end; if LS_YXTSNUM<=LS_FSGHRQTS then --当前时间-挂号日期<=系统设置的有效时间 LS_BKC014:=LS_GHRQ00; --实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期) if LS_GHSJ00 is not null then LS_BKC171:=rpad(substrb(LS_GHSJ00,1,2)||substrb(LS_GHSJ00,4,2)||substrb(LS_GHSJ00,7,2),6,'0'); --实际就诊时间 住院指病人实际出院时间 end if; LS_AKC192:=LS_BKC014||LS_BKC171;--实际门诊/入院日期 格式:yyyymmddhh24miss end if; end if; --2020.11.27 根据挂号日期和时间转化--end--- --2021.05.26 跨省医保凭证结算,AAZ500赋值空 if (substrb(SF_SF_GETYBJKMX(PYBJKID,'bke284','0'),1,10)='06' or LS_BKE284 in ('06')) AND PJKCJBM not in ('YBJK_YBCX_0005') AND substrb(LS_XZQH00,1,2) not in ('35') and LS_XZQH00 is not null and length(LS_AAZ500) not in (9) then LS_aaz500:=substrb(LS_aaz500,1,9); end if; --2021.05.27 医保电子凭证资格信息查询 交易码转yb04.10.01.16 if (in_YBDZPZ='1' or LS_BKE284 in ('06')) and PJKCJBM in ('YBJK_YBCX_0005') then --是否医保电子资格信息查询 1:是 0:否 LS_FUNID:=LS_YBDZPZ_funid;--功能编码 end if; --2021.10.29 福清医院,体检挂号号头两位是TJxxx,SF_BRXXB.SFCQJC:0普通1产前检查2体检 if substrb(LS_GHH000,1,2)='TJ' or LS_SFCQJC in ('2') then LS_Medical_type:='1';--体检结算:体检病人标识 1:体检病人 0:非体检病人 end if; if LS_Medical_type='1' and LS_Medical_Open='1' then LS_AKA078:=nvl(LS_Medical_aka078,LS_AKA078);--医疗就诊方式 LS_AKA130:=nvl(LS_Medical_aka130,LS_AKA130);--医疗类别 end if; --步骤1:插入日志主表 insert into SF_YBJKRZ(YBJKID,YBJKBM,YBJKMC,JKCJBM,BRID00,GHID00,GHH000,CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0, BRXM00,AAZ500,AAZ501,BKZ543,AAC002,AAC003,HISCS0,JKQQCS,JKFHCS,MKLXMC,BKE286,BKE241,AKA078, AKA130,AAZ149,AKC190,BKE298,JZDH00,AAB301,BKE042,BKEE70,AAE072,BKEG23,BKA190) select LS_YBJKID,LS_YBJKBM,LS_YBJKMC,LS_JKCJBM,PBRID00,PGHID00,LS_GHH000,LS_CZRQ00,LS_CZSJ00,PCZY000,PCZYXM0,PCZYKS0, LS_BRXM00,LS_AAZ500,LS_AAZ501,LS_BKZ543,LS_AAC002,LS_AAC003,LS_HISCS0,LS_JKQQCS,LS_JKFHCS,LS_MKLXMC,LS_BKE286,LS_BKE241,LS_AKA078, LS_AKA130,LS_AAZ149,LS_AKC190,LS_BKE298,LS_JZDH00,LS_aab301,LS_BKE042,LS_BKEE70,LS_AAE072,LS_BKEG23,LS_BKA190 from dual; --接口公共参数--begin-- --插入主项节点功能编码(main) --发送报文节点-------->FSLXBZ:(发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它)<-------- --usr 登录用户名 varchar2(50) y insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'usr','登录用户名',LS_USR000,null,'1',null from dual; --pwd 密码 varchar2(32) y (md5加密) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'pwd','密码',LS_PWD000,null,'1',null from dual; --funid 功能点id varchar2(32) y insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'funid','功能编码',LS_FUNID,null,'1',null from dual; ------->接口返回节点-------->FSLXBZ:(发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它)<-------- --flag 校验标志(0-未通过 1-已通过) number(1) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'flag','校验标志(0:未通过 1:已通过)',null,null,'2',null from dual; --cause 未通过原因说明 varchar2(500) n insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'cause','未通过原因说明',null,null,'2',null from dual; ------->接口返回节点-------->FSLXBZ:(发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它)<-------- --接口公共参数--end-- if PJKCJBM in ('YBJK_JSQDXXSC_001') then --医疗保障基金结算清单信息上传 --setl_list_id 清单流水号 varchar2(9) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'setl_list_id','医疗保障基金结算清单信息上传流水号', null,null,'2',null from dual; LS_EXESQL:='begin SP_SF_NEWYBJK_JSQDXXSC(:v1,:v2,:v3,:v4,:v5,:v6,:v7,:v8,:v9,:v10); end;'; execute immediate LS_EXESQL using in PBRID00, --PBRID00 in number ,--输入:病人ID in LS_GHID00, --PGHID00 in number ,--输入:挂号ID in PCZY000, --PCZY000 in number ,--输入:操作员编码 in LS_JZDH00, --PJZDH00 in number ,--输入:结账单号 in LS_YBJKID, --PYBJKID in number ,--输入:医保接口ID in LS_HISCS0, --PQQCS00 in varchar2 default '' ,--输入(可空):请求参数(XML格式) in PCOMMIT, --PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 out PZXZT00, --PZXZT00 out number ,--输出:执行状态 0:失败 1:成功 out LS_FHCS00, --PFHCS00 out varchar2 ,--输出:返回参数(XML格式) out PERRMSG --PERRMSG out varchar2 --输出:错误信息 ; if PZXZT00=0 then PZXZT00:=0; PERRMSG:=substrb('整理医疗保障基金结算清单信息上传数据失败!原因:'||PERRMSG,1,200); return; end if; elsif PJKCJBM in ('YBJK_GJYBJSD_0001') then --门诊和住院国家医保结算单下载 --新医保国家结算清单查询或下载接口是否开启(新模式:医保提供明细数据His自行设置模板) 1:门诊开启 2:住院开启 3:门诊和住院都开启 0:不开启 默认值:0 LS_Open_JSQD_download:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','Open_JSQD_download'),1,10),'0'); --医疗保障基金结算清单[上传基本信息主节点编码]、[查询基本信息返回节点编码、请求节点编码]:(分隔符用|)(参考格式:setlinfo|setlinfo|data) 默认值:空值 LS_JSQD_MainNodeName:=trim(substrb(SF_SF_TYZD00('医保新接口参数设置','JSQD_MainNodeName'),1,100)); LS_JSQDDataNodeName:=substrb(SF_SF_RETURNINDEXEH(LS_JSQD_MainNodeName,'|', 3),1,50);--主项节点编码 if LS_Open_JSQD_download in ('1','3') then --开启新模式 --setl_id 结算ID varchar2(30) Y =aae072(医保单据号) if LS_setl_id is null then begin select max(trim(nvl(AA.YBSM05,AA.YBDJH0))) into LS_setl_id from SF_JZB000 AA where aa.BRID00=PBRID00 and ((nvl(LS_JZDH00,0)>0 and aa.JZDH00=LS_JZDH00) or (nvl(LS_JZDH00,0)=0 and 1=1)); exception when others then LS_setl_id:=null; end; end if; --psn_no:人员编号 改为SF_ZY_GETYBSXZD获取 LS_psn_no:=substrb(SF_SF_GETYBSXZD(PBRID00,'0','psnno','','',''),1,30); LS_psn_no:=nvl(LS_psn_no,LS_BRZJBH); if LS_JSQDDataNodeName is not null then LS_VALUE0:=LS_VALUE0||'{'; LS_VALUE0:=LS_VALUE0||'"psn_no"'||':'||'"'||trim(LS_psn_no)||'"'||','; LS_VALUE0:=LS_VALUE0||'"setl_id"'||':'||'"'||trim(LS_setl_id)||'"'||''; LS_VALUE0:=LS_VALUE0||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,ZDLX00) select PYBJKID,1,LS_JSQDDataNodeName,'data',LS_JSQDDataNodeName,'结算清单信息',null,null,'D',null,LS_VALUE0,'D' from dual; else --psn_no 人员编号 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'psn_no','人员编号',LS_psn_no,null,'1',null from dual; --setl_id 结算ID insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'setl_id','结算ID',LS_setl_id,null,'1',null from dual; end if; else if LS_FUNID in ('F12.03.01') then --reportid VARCHAR2 Y 报表ID 传固定值:1000001 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'reportid','报表ID','1000001',null,'1',null from dual; --argname1 VARCHAR2 Y 字段1名称 传固定值:akc190 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'argname1','字段1名称','akc190',null,'1',null from dual; --argtype1 VARCHAR2 Y 字段1类型 传固定值:String insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'argtype1','字段1类型','String',null,'1',null from dual; --arg1 VARCHAR2 Y 字段1值 医保住院流水号 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'arg1','医保住院流水号',trim(LS_YBGHH0),null,'1',null from dual; --argname2 VARCHAR2 Y 字段2名称 传固定值:aka078 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'argname2','字段2名称','aka078',null,'1',null from dual; --argtype2 VARCHAR2 Y 字段2类型 传固定值:String insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'argtype2','字段2类型','String',null,'1',null from dual; --arg2 VARCHAR2 Y 字段2值 就诊类型:住院20,特门50 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'arg2','字段2值(住院20,特门50)','20',null,'1',null from dual; --argcount VARCHAR2 N 字段数量 传固定值:2 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'argcount','字段数量','2',null,'1',null from dual; else --akc190 String 流水号 非空 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保挂号号',LS_akc190,null,'1',null from dual; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aae072','医保结算单号',LS_AAE072,null,'1',null from dual; end if; end if; elsif PJKCJBM in ('YBJK_YBDZ_0004') then --医保冲正交易 --funid 原交易功能代码 varchar2(50) y 可被冲正的交易 通用收费(yb04.07.01.04) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'funid','原交易功能代码',in_funid,null,'1',null from dual; --aka078 医疗就诊方式 varchar2(3) y 参见编码附件 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aka078','医疗就诊方式',LS_AKA078,null,'1',null from dual; --akc190 医保流水号 varchar2(20) n 医保门诊挂号流水号/住院登记流水号 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保门诊挂号流水号或住院登记流水号',LS_akc190,null,'1',null from dual; --aae072 医保收费流水号 varchar2(20) n insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aae072','医保收费流水号',LS_AAE072,null,'1',null from dual; --bke042 his流水号 varchar2(50) y his门诊流水号或住院流水号 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bke042','his流水号',LS_BKE042,null,'1',null from dual; --bke298 his收费单据流水号 varchar2(50) y His收费单据流水号 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bke298','his收费单据流水号',LS_bke298,null,'1',null from dual; --aab301 参保地行政区划 varchar2(6) n 两定机构必填 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aab301','参保地行政区划',LS_aab301,null,'1',null from dual; --bkb526医疗机构国家码 --insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) --select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bkb526','医疗机构国家码',LS_bkb526,null,'1',null from dual; elsif PJKCJBM in ('YBJK_YBDZ_0000') then --医保交易对帐 --9.0门诊前端不好处理,改成从结帐表获取 select trim(a.YBDJH0),trim(a.YBGHH0),nvl(YBJKID,YBSM19),substrb(YBSM23,1,20) into LS_YBDJH0, LS_AKC190,LS_BKE298,LS_BKA555 from SF_JZB000 a where A.JZDH00 = LS_JZDH00; --超限制标志: (0:否 1:是) BKA555:对帐数据分类 (99 门诊超限全自费) if LS_CXZBZ0 in ('1') then LS_BKA555:='99';--:99:门诊超限全自费 end if; if trim(LS_YBDJH0) is not null and trim(LS_YBDJH0) not in ('0') then LS_AAE072:=substrb(trim(LS_YBDJH0),1,30); end if; --aka078 医疗就诊方式 varchar2(3) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aka078','医疗就诊方式',LS_AKA078,null,'1',null from dual; --akc190 医保流水号 varchar2(20) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保流水号',LS_AKC190,null,'1',null from dual; --aae072 医保收费流水号 varchar2(20) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aae072','医保收费流水号', nvl(LS_AAE072,LS_YBDJH0),null,'1',null from dual; --bke298 his收费流水号 varchar2(50) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bke298','his收费流水号',LS_BKE298,null,'1',null from dual; --bka555 对账数据分类 varchar2(3) y 参见编码附件(本地、省内、跨省等),“门诊超限全自费” 不参与对帐 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bka555','对账数据分类',nvl(LS_BKA555,'01'),null,'1',null from dual; --aab301 行政区号 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aab301','行政区号',LS_aab301,null,'1',null from dual; --bkb526医疗机构国家码 --insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) --select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bkb526','医疗机构国家码',LS_bkb526,null,'1',null from dual; elsif PJKCJBM in ('YBJK_TYSF_0020','YBJK_TYSF_0020_1','YBJK_TYSF_0020_2') then --门诊收费 --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZSF00,null from BM_YBJKZD where MZSF00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from SF_YBFSMX where ID0000=LS_ID0000; --体检病人发单个项目:001105000010000-110500001:体检费 :处方项目数改为:1 if LS_Medical_type='1' and LS_Medical_Open='1' and LS_Medical_bke045 is not null then LS_CFXMSL:=1; end if; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y LS_JKFSZ0:=trim(LS_AAZ500); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then -- 卡识别码 varchar2(32) n “读卡”认证时必填 LS_JKFSZ0:=LS_AAZ501; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 省交易时必填 --LS_JKFSZ0:=trim(LS_YBID00); LS_JKFSZ0:=trim(LS_AAC002); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y LS_JKFSZ0:=LS_AAC003; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_JKFSZ0:=LS_BKE284; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='ecToken' then --令牌 LS_JKFSZ0:=''; elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aka130' then -- 医疗类别 varchar2(3) y 参见编码附件 --医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 LS_JKFSZ0:=LS_AKA130; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号 LS_JKFSZ0:=LS_AKC190; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke298' then -- his收费单据流水号 varchar2(50) y HIS收费单据流水号 LS_JKFSZ0:=LS_BKE298; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz149' then -- 病种编码 varchar2(16) n 参见编码附件门诊上传特殊病种、住院上传单病种 LS_JKFSZ0:=LS_AAZ149; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke286' then -- 结算标识 varchar2(3) n 参见编码附件 --结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 LS_JKFSZ0:=LS_BKE286; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkc014' then -- 实际就诊日期 number(8) y 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期) LS_JKFSZ0:=LS_BKC014; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkc171' then -- 实际就诊时间 number(6) n 住院指病人实际出院时间 LS_JKFSZ0:=LS_BKC171; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc194' then -- 出院日期 number(14) n 格式: yyyymmddhhmmss “出院结算”时必填 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke078' then -- 离院方式 varchar2(3) y 参见编码附件 --离院方式 1 医嘱离院 2 医嘱转院 3 医嘱转社区卫生服务机构/乡镇卫生院 4 非医嘱离院 5 死亡 9 其他 LS_JKFSZ0:='9'; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='itemcount' then -- 处方项目数 number(4) y --医保明细流水号个数(厦门医保) if LS_CFLSHQZFS not in ('Y') then LS_JKFSZ0:=1; --医保明细流水号个数(HIS系统暂时都是单次上传明细,单次结算所以个数都是1) else LS_JKFSZ0:=LS_CFXMSL; end if; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc227' then -- 医疗费总金额 number(12,4) y LS_JKFSZ0:=LS_AKB065; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke058' then -- 住院天数 number(4,1) n 住院结算时必填 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc029' then -- 计划生育手术类别 varchar2(3) n update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc026' then -- 生育类别 varchar2(3) n update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc028' then -- 胎儿数 number(3) n update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc020' then -- 计划生育手术或生育日期 number(8) n update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bmc041' then -- 怀孕天数 number(3) n update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_BKE241;----数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号 LS_JKFSZ0:=LS_BKE042; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bka535' then -- 医师诊查费等级 110 普通医师 111 主治医师 112 副主任医师 113 主任医师 114 专家 120 普通医师[中医辩证] 121 主治医师[中医辩证] 122 副主任医师[中医辩证] 123 主任医师[中医辩证] 124 国医大师[中医辩证] LS_JKFSZ0:=LS_BKA535; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkeg23' then --是否账户抵扣 LS_JKFSZ0 := LS_BKEG23; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bka190' then --是否账户抵扣 LS_JKFSZ0 := LS_BKA190; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; --费用明细上传流水开始 --bke297 医保明细流水号 varchar2(20) LS_JSOSTR:=LS_JSOSTR||'{'; LS_JSOSTR:=LS_JSOSTR||'"bke297"'||':'||'"'||trim(LS_MXLSH0)||'"'||''; LS_JSOSTR:=LS_JSOSTR||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'cflist','data','cflist','费用明细上传流水',null,null,'1',null,LS_JSOSTR from dual; --费用明细上传流水结束 elsif PJKCJBM in ('YBJK_TYTF_0023') then --YBJK_TYTF_0023 :门诊费用冲销 if nvl(PBRID00,0)=0 then PZXZT00:=0;--输出:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的基本信息!'; return; end if; /* 这段必须去掉 2019.12.03 if nvl(LS_JZDH00,0)=0 then PZXZT00:=0;--输出:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的结账信息!'; return; end if; */ --获取YBDJH0:医保单据号 YBSM20:医保挂号号 begin select YBDJH0,substrb(YBGHH0,1,30),MZID00,nvl(a.YBJKID,a.YBSM19) into LS_YBDJH0,LS_AKC190,LS_MZID00,LS_BKE298 from SF_JZB000 a where BRID00=PBRID00 and JZDH00=LS_JZDH00; exception when others then LS_YBDJH0:=substrb(SF_SF_GETXMLNOTE('YBDJH0',LS_HISCS0),1,30); end; if LS_MZID00>0 and LS_HISLSHQZFS not in ('Y') then LS_BKE042:=LS_MZID00; end if; --如果结算未成功LS_BKE298直接取前台传入值 if LS_HISLSH is not null and trim(LS_HISLSH) <> '0' then LS_BKE298:=LS_HISLSH; end if; --如果HIS收费流水号为空或0, 则取当前LS_YBJKID if LS_BKE298 is null or LS_BKE298 = '0' then LS_BKE298 := LS_YBJKID; end if; if trim(LS_YBDJH0) is not null and trim(LS_YBDJH0) not in ('0') then LS_AAE072:=substrb(trim(LS_YBDJH0),1,30); end if; --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZSFCX,null from BM_YBJKZD where MZSFCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号 LS_JKFSZ0:=trim(LS_AAZ500); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then -- 卡识别码 varchar2(32) n “读卡”认证时必填 LS_JKFSZ0:=LS_AAZ501; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac002' then --证件号码(社会保障号) --LS_JKFSZ0:=trim(LS_YBID00); LS_JKFSZ0:=trim(LS_AAC002); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名 LS_JKFSZ0:=LS_AAC003; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_JKFSZ0:=LS_BKE284; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='ecToken' then --令牌 LS_JKFSZ0:=''; elsif lower(C_YBFS.ZDBM00)='aka078' then --医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aka130' then --aka130 医疗类别 LS_JKFSZ0:=LS_AKA130; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc190' then --医保流水号(医保挂号) LS_JKFSZ0:=LS_AKC190; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aae072' then --医保收费流水号(医保结账单号) LS_JKFSZ0:=nvl(LS_AAE072,LS_YBDJH0); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke298' then --his收费流水号 LS_JKFSZ0:=LS_BKE298; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke241' then --数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 LS_JKFSZ0:=LS_BKE241;----数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号 LS_JKFSZ0:=LS_BKE042; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkee70' then -- his 退费流水号 varchar2(50) y 对帐时使用 LS_JKFSZ0:=LS_BKEE70; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; elsif PJKCJBM in ('YBJK_MXSC_0026','YBJK_MXSC_0026_1','YBJK_MXSC_0026_2') then --门诊费用明细上传 --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZMXSC,null from BM_YBJKZD where MZMXSC in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; if PGHID00>0 then begin select trim(a.YBGHH0)YBGHH0,a.GHKS00,b.BMMC00,a.JZYS00,C.ZWXM00,C.YSZJHM,nvl(C.YBYGDM,'') into LS_YBGHH0,LS_GHKS00,LS_GHKSMC,LS_KDYS00,LS_KDYSXM,LS_YSZJHM,LS_YBYGDM --LS_bkc007 from SF_BRXXB0 a,BM_BMBM00 B ,BM_YGBM00 C where a.GHKS00=b.BMBH00 and a.JZYS00=C.YGBH00 and A.GHID00=PGHID00 and a.BRID00=PBRID00; --if LS_bkc007='' then --MZSF9-20210922-001 -- LS_bkc007:=LS_YSZJHM; --end if; exception when others then LS_GHKS00:=''; LS_GHKSMC:=''; LS_YBGHH0:=''; end; end if; --字典启用取国家医师编码 LS_BKC007 := LS_YSZJHM; if LS_BKC007_FSYSGJBM in ('1','3') then LS_BKC007 := nvl(LS_YBYGDM,LS_YSZJHM); end if; --如果入参未传入医保挂号号,取收费病人信息表的医保挂号 if LS_AKC190 is null and LS_YBGHH0 is not null and LS_YBGHH0 not in ('0') then LS_AKC190:=LS_YBGHH0; end if; select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from SF_YBFSMX where ID0000=LS_ID0000; --体检病人发单个项目:001105000010000-110500001:体检费 :处方项目数改为:1 if LS_Medical_type='1' and LS_Medical_Open='1' and LS_Medical_bke045 is not null then LS_CFXMSL:=1; end if; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y LS_JKFSZ0:=trim(LS_AAZ500); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then -- 卡识别码 varchar2(32) n “读卡”认证时必填 LS_JKFSZ0:=LS_AAZ501; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y LS_JKFSZ0:=LS_AAC003; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_JKFSZ0:=LS_BKE284; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='ecToken' then --令牌 LS_JKFSZ0:=''; elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n --LS_JKFSZ0:=trim(LS_YBID00); LS_JKFSZ0:=trim(LS_AAC002); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号 LS_JKFSZ0:=LS_AKC190; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号 LS_JKFSZ0:=LS_BKE042; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='itemcount' then -- 明细项目数量 number(4) y LS_JKFSZ0:=LS_CFXMSL; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akb065' then -- 医疗费总金额 number(16,2) y LS_JKFSZ0:=LS_AKB065; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_BKE241;----数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; --诊断明细开始 /* bke301 诊断或症状类型 varchar2(3) y 参见编码附件 01:门诊 02:入院03:出院04:病理诊断 bke302 诊断或症状序号 varchar2(3) y 参见编码附件 01:主要、主病 02:次要、主症、其它 03:第三等 bke087 诊断或症状编码 varchar2(50) y 见icd-10或症状表编码 bke088 诊断或症状名称 varchar2(100) y 见icd-10或症状表名称 */ ----体检病人并且有维护对应的诊断--begin--- if LS_Medical_type='1' and LS_Medical_Open='1' and LS_Medical_bke087 is not null then LS_BKE301:='01'; --诊断或症状类型 01:门诊 02:入院03:出院04:病理诊断 LS_BKE302:='01'; --诊断或症状序号 01:主要、主病 02:次要、主症、其它 03:第三等 begin select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from xt_ICD900 B where B.ICD900=LS_Medical_bke087 and nvl(b.SYBZ00,'1')='1'; exception when others then LS_DYBZBM:=null; LS_DYJBMC:=null; end; LS_BKE087:=substrb(nvl(LS_DYBZBM,LS_Medical_bke087),1,50); --诊断或症状编码 LS_BKE088:=substrb(nvl(LS_DYJBMC,'一般性检查,其他的'),1,100);--诊断或症状名称 LS_JSOSTR:=LS_JSOSTR||'{'; LS_JSOSTR:=LS_JSOSTR||'"bke301"'||':'||'"'||trim(LS_BKE301)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"bke302"'||':'||'"'||trim(LS_BKE302)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"bke087"'||':'||'"'||trim(LS_BKE087)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"bke088"'||':'||'"'||trim(LS_BKE088)||'"'||''; LS_JSOSTR:=LS_JSOSTR||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'zdlist','data','zdlist','诊断明细',null,null,'1',null,LS_JSOSTR from dual; ----体检病人并且有维护对应的诊断--end--- else ----其它医保病人诊断--begin--- ls_ZZDBZ0 := '0'; for C_ZDXX in CUR_BRZDXX loop LS_JSOSTR:=''; LS_BKE301:='01'; --诊断或症状类型 01:门诊 02:入院03:出院04:病理诊断 /*if C_ZDXX.ZZDBZ0='3' then LS_BKE302:='01'; --诊断或症状序号 01:主要、主病 02:次要、主症、其它 03:第三等 else LS_BKE302:='02'; end if;*/ --2021.05.18主诊断优先取西医主诊断, 再取中医疾病, 主诊断只能有一条 if C_ZDXX.YBZDBZ = '1' then --先处理西医主诊断 if ls_ZZDBZ0 = '0' then --未发送主诊断, 则按主诊断发送, 否则按次诊断发送 ls_BKE302 := '01'; ls_ZZDBZ0 := '1'; else ls_BKE302 := '02'; end if; elsif C_ZDXX.YBZDBZ = '2' then --再处理中医疾病 if ls_ZZDBZ0 = '0' then --未发送主诊断, 则按主诊断发送, 否则按次诊断发送 ls_BKE302 := '01'; ls_ZZDBZ0 := '1'; else ls_BKE302 := '02'; end if; else --其余诊断或症候按次诊断发送 ls_BKE302 := '02'; end if; if nvl(SF_XT_TYZD00('医保新接口参数设置','change_zdbm_ssbm'),'0') = '1' then begin if C_ZDXX.ZZDBZ0='1' then --中医 select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from BM_ZYJB00 B where B.JBBH00=C_ZDXX.ICD900 and nvl(SYBZ00,'1')='1' and rownum=1; elsif C_ZDXX.ZZDBZ0='2' then --症候 select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from BM_ZYZH00 B where B.ZHBH00=C_ZDXX.ICD900 and nvl(SYBZ00,'1')='1' and rownum=1; else select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from xt_ICD900 B where B.ICD900=C_ZDXX.ICD900 and nvl(b.SYBZ00,'1')='1'; end if; exception when others then LS_DYBZBM:=C_ZDXX.ICD900; LS_DYJBMC:=C_ZDXX.ZDMC00; end; LS_BKE087:=substrb(nvl(LS_DYBZBM,C_ZDXX.ICD900),1,50); --诊断或症状编码 LS_BKE088:=substrb(nvl(LS_DYJBMC,C_ZDXX.ZDMC00),1,100);--诊断或症状名称 else LS_BKE087:=substrb(C_ZDXX.ICD900,1,50); --诊断或症状编码 LS_BKE088:=substrb(C_ZDXX.ZDMC00,1,100);--诊断或症状名称 end if; --医保国家标准诊断码大于20位以上诊断不发送给医保 MZSF9-20211028-004 if in_BKE087_MAX_LENGTH=0 or LS_BKE087 is null or (length(nvl(LS_BKE087,''))<=in_BKE087_MAX_LENGTH ) then LS_JSOSTR:=LS_JSOSTR||'{'; LS_JSOSTR:=LS_JSOSTR||'"bke301"'||':'||'"'||trim(LS_BKE301)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"bke302"'||':'||'"'||trim(LS_BKE302)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"bke087"'||':'||'"'||trim(LS_BKE087)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"bke088"'||':'||'"'||trim(LS_BKE088)||'"'||''; LS_JSOSTR:=LS_JSOSTR||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'zdlist','data','zdlist','诊断明细',null,null,'1',null,LS_JSOSTR from dual; end if; end loop; --诊断明细结束 end if; ----其它医保病人诊断--end--- --插入到中间表SF_YBJKQD ----体检病人并且有维护对应的单条明细--begin--- if LS_Medical_type='1' and LS_Medical_Open='1' and LS_Medical_bke045 is not null then insert into SF_YBJKQD(YBJKID,JKMXID,BKE162,BKEA97,BKE045,BKE046,AKA063,AKA074,AKA070,AKA067,AKC225,AKC226, AKC227,AKA071,AKA072,AKA073,AKC221,AKC229,AKF001,AKF002,BKF237,BKF238,BKC006,BKC007,BKEA96, BKA001,BKEAA0,BKEAA1,BKEAA2,BKEAA3,BKE181,BKE182,BKEC27,BKC541,BKE506,BKE507,BKE508,BKE509, BKEH83,BKEH05,BKEH06,BAKXML,BKC507,BKC506) select LS_YBJKID as YBJKID, LS_YBJKID as JKMXID, LS_YBJKID as BKE162, --his处方号 LS_YBJKID as BKEA97, --his处方明细流水号 substrb(trim(A.XMBH00),1,50) as BKE045, --收费项目编码 substrb(trim(A.XMMC00),1,100) as BKE046, --收费项目名称 substrb(trim(A.MZFPXM),1,3) as AKA063, --发票项目类别 '无' as AKA074, --规格型号 '000' as AKA070, --剂型 substrb(nvl(trim(A.XMDW00),'无'),1,20) as AKA067, --单位 LS_AKB065 as AKC225, --单价 number(12,4) 1 as AKC226, --数量 number(8) LS_AKB065 as AKC227, --金额 number(12,4) 0 as AKA071, --每次用量 number(5,2) '无' as AKA072, --使用频次 varchar2(5) '无' as AKA073, --给药途径 varchar2(50) LS_CZRQ00 as AKC221, --处方日期 number(8) 0 as AKC229, --执行天数 number(4,1) LS_AKF001 as AKF001, --科室编码 varchar2(50) LS_AKF002 as AKF002, --科室名称 varchar2(50) LS_BKF237 as BKF237, --his内部科室编码 varchar2(50) LS_BKF238 as BKF238, --his内部科室名称 varchar2(50) LS_KDYSXM as bkc006, --中间表医生姓名为空, 则取当前挂号就诊医生姓名 LS_bkc007 as bkc007, --中间表医生姓名为空, 则取当前挂号就诊医生证件号码(与医生姓名同步) trim(A.SFYBXM) as bkea96, --限制范围类别 varchar2(3) substrb(A.SFYBXM,1,2) as bka001, --是否医保项目 varchar(2) y y-是 n-否 'N' as bkeaa0, --处方外流标志 varchar2(3) y Y-外流项目、N-非外流项目 (1)处方开具医疗机构如果有处方外流需求的,需要标识外流项目和非外流项目 如果没有外流需求的,默认设置为非外流项目 null as bkeaa1, --处方开具医疗机构 varchar2(40) y 开具处方时默认填入,处方执行时由流转平台 null as bkeaa2, --处方执行医疗机构 varchar2(40) n 处方执行医疗机构编号 null as bkeaa3, --处方外流对应流水号 varchar2(20) n 处方开具时归属的医保流水号 substrb(trim(A.XMBH00),1,50) as BKE181,--HIS院内项目编码 substrb(trim(A.XMMC00),1,100) as BKE182, --HIS院内项目名称 LS_CZRQ00 as BKEC27,--记帐日期1、住院:明细对应记帐日期或执行日期,与日清单时间对应。2、门诊,该值等于【处方日期】目录与价格动态调整依据 null as BKC541,--医保服务人员类别:001:医师 002:护师(士) 003:药师(士) 004:技师 005:收费员 006:助理医师 007:心理咨询师 null as BKE506,--单次用药单位 null as BKE507,--取药总量 null as BKE508,--取药总量单位 null as BKE509, --药量天数 null as BKEH83, --国家标准对应编码 null as BKEH05, --医保备用1 null as BKEH06, --医保备用2 null as BAKXML, --HIS备用字段(xml格式)后续扩展 null as BKC507, --药师国家编码 null as BKC506 --药师姓名 from BM_YBSFXM A where A.XMBH00=LS_Medical_bke045 and A.YBZXLB=LS_YBZXLB and rownum=1 ; ----体检病人并且有维护对应的单条明细--end--- else ----其它医保对应的费用明细--begin--- --SF_YBJKQD.AKA071:trim(A.QYZL00)->trim(A.YPYL00) insert into SF_YBJKQD(YBJKID,JKMXID,BKE162,BKEA97,BKE045,BKE046,AKA063,AKA074,AKA070,AKA067,AKC225,AKC226, AKC227,AKA071,AKA072,AKA073,AKC221,AKC229,AKF001,AKF002,BKF237,BKF238,BKC006,BKC007,BKEA96, BKA001,BKEAA0,BKEAA1,BKEAA2,BKEAA3,BKE181,BKE182,BKEC27,BKC541,BKE506,BKE507,BKE508,BKE509, BKEH83,BKEH05,BKEH06,BAKXML,BKC507,BKC506) select LS_YBJKID as YBJKID, LS_ID0000 as JKMXID, LS_YBJKID as BKE162, --his处方号 varchar2(20) SQ_SF_YBJKMX_JKMXID.nextval as BKEA97, --his处方明细流水号 varchar2(50) trim(A.XMBH00) as BKE045, --收费项目编码 varchar2(20) trim(A.XMMC00) as BKE046, --收费项目名称 varchar2(100) trim(A.FPXMBH) as AKA063, --发票项目类别 varchar2(3) substrb(nvl(trim(A.XMGG00),'无'),1,20) as AKA074, --规格型号 varchar2(50) nvl(trim(A.JX0000),'000') as AKA070, --剂型 varchar2(3) --substrb(nvl(trim(A.XMDW00),'无'),1,20) as AKA067, --单位 varchar2(20) decode(a.FLAG00,'0',substrb(trim(A.XMDW00),1,20), decode(LS_YPDWSFFSYBBM,'0',substrb(trim(A.XMDW00),1,20),substrb(SF_XT_GETYPYBDW(trim(a.XMDW00),'2'),1,20))) as AKA067, --单位 varchar2(20) A.XMDJ00 as AKC225, --单价 number(12,4) A.XMSL00 as AKC226, --数量 number(8) A.XMJE00 as AKC227, --金额 number(12,4) trim(A.YPYL00) as AKA071, --每次用量 number(5,2) trim(A.YPPL00) as AKA072, --使用频次 varchar2(5) trim(A.GYTJ00) as AKA073, --给药途径 varchar2(50) trim(A.CZRQ00) as AKC221, --处方日期 number(8) nvl(trim(A.YLTS00),'1') as AKC229, --执行天数 number(4,1) LS_AKF001 as AKF001, --科室编码 varchar2(50) LS_AKF002 as AKF002, --科室名称 varchar2(50) LS_BKF237 as BKF237, --his内部科室编码 varchar2(50) LS_BKF238 as BKF238, --his内部科室名称 varchar2(50) trim(decode(A.YSXM00,null,LS_KDYSXM,A.YSXM00)) as bkc006, --中间表医生姓名为空, 则取当前挂号就诊医生姓名 trim(decode(A.YSXM00,null,LS_bkc007,A.YSZJHM)) as bkc007, --中间表医生姓名为空, 则取当前挂号就诊医生证件号码(与医生姓名同步) --decode(LS_BKC007_FSYSGJBM,'1',LS_bkc007,'3',LS_bkc007,trim(decode(A.YSXM00,null,LS_YSZJHM,A.YSZJHM))) as bkc007, --中间表医生姓名为空, 则取当前挂号就诊医生证件号码(与医生姓名同步) trim(A.SFYB00) as bkea96, --限制范围类别 varchar2(3) substrb(A.SFYB00,1,2) as bka001, --是否医保项目 varchar(2) y y-是 n-否 'N' as bkeaa0, --处方外流标志 varchar2(3) y Y-外流项目、N-非外流项目 (1)处方开具医疗机构如果有处方外流需求的,需要标识外流项目和非外流项目 如果没有外流需求的,默认设置为非外流项目 null as bkeaa1, --处方开具医疗机构 varchar2(40) y 开具处方时默认填入,处方执行时由流转平台 null as bkeaa2, --处方执行医疗机构 varchar2(40) n 处方执行医疗机构编号 null as bkeaa3, --处方外流对应流水号 varchar2(20) n 处方开具时归属的医保流水号 nvl(A.BKE181,nvl(to_char(A.SFXMID),trim(A.XMBH00))) as BKE181,--HIS院内项目编码 nvl(A.BKE182,trim(nvl(A.YYXMMC,A.XMMC00))) as BKE182, --HIS院内项目名称 nvl(trim(A.CZRQ00),LS_CZRQ00) as BKEC27,--记帐日期1、住院:明细对应记帐日期或执行日期,与日清单时间对应。2、门诊,该值等于【处方日期】目录与价格动态调整依据 '001' as BKC541,--医保服务人员类别:001:医师 002:护师(士) 003:药师(士) 004:技师 005:收费员 006:助理医师 007:心理咨询师 substrb(trim(A.DCYYDW),1,20) as BKE506,--单次用药单位 substrb(trim(A.QYZL00),1,20) as BKE507,--取药总量 substrb(trim(A.QYZLDW),1,20) as BKE508,--取药总量单位 substrb(nvl(trim(A.YLTS00),'1'),1,20) as BKE509, --药量天数 a.BKEH83, --国家标准对应编码 a.BKEH05, --医保备用1 a.BKEH06, --医保备用2 a.BAKXML, --HIS备用字段(xml格式)后续扩展 a.BKC507, --药师国家编码 a.BKC506 --药师姓名 from SF_YBFSMX A where ID0000=LS_ID0000; if LS_YBJKFPLBCS = '1' then --医保发票是否发送名称, 1是0否 update SF_YBJKQD a set AKA063=(select trim(nvl(max(XMMC00),'其他费')) from BM_YBFPXM where BH0000=a.AKA063 and YBZXLB=ls_YBZXLB and rownum=1) where a.YBJKID=LS_YBJKID; end if; --if LS_YBFPBH in ('Y') then --医保发票是否使用编号 Y:编码 N:明细 -- update SF_YBJKQD a set a.AKA063=(select b.BH0000 from BM_FPXM00 b where b.XMMC00=a.AKA063) where YBJKID=LS_YBJKID; --end if; --LS_QDQZFS 医保新接口费用清单取值方式 1:取SF_YBJKQD或ZY_YBJKQD 2:取SF_YBJKMX或ZY_YBJKMX 默认:1 if LS_QDQZFS not in ('1') then --收费明细开始 SF_YBJKQD for C_CFMX in CUR_MXLIST loop LS_JSOSTR:=''; LS_JSOSTR:=LS_JSOSTR||'{'; LS_JSOSTR:=LS_JSOSTR||'"bke162"'||':'||'"'||trim(C_CFMX.bke162)||'"'||',';-- his处方号 varchar2(20) y LS_JSOSTR:=LS_JSOSTR||'"bkea97"'||':'||'"'||trim(C_CFMX.bkea97)||'"'||',';-- his处方明细流水号 varchar2(50) y 院内系统每条收费项目唯一标识 LS_JSOSTR:=LS_JSOSTR||'"bke045"'||':'||'"'||trim(C_CFMX.bke045)||'"'||',';-- 收费项目编码 varchar2(20) y 医保对应项目编码 LS_JSOSTR:=LS_JSOSTR||'"bke046"'||':'||'"'||trim(C_CFMX.bke046)||'"'||',';-- 收费项目名称 varchar2(100) y LS_JSOSTR:=LS_JSOSTR||'"aka063"'||':'||'"'||trim(C_CFMX.aka063)||'"'||','; -- 发票项目类别 varchar2(3) n 参见编码附件 LS_JSOSTR:=LS_JSOSTR||'"aka074"'||':'||'"'||trim(C_CFMX.aka074)||'"'||',';-- 规格型号 varchar2(50) y LS_JSOSTR:=LS_JSOSTR||'"aka070"'||':'||'"'||trim(C_CFMX.aka070)||'"'||',';-- 剂型 varchar2(3) y 参见编码附件 LS_JSOSTR:=LS_JSOSTR||'"aka067"'||':'||'"'||trim(C_CFMX.aka067)||'"'||',';-- 单位 varchar2(20) y 参见规范编码附件V1.0 LS_JSOSTR:=LS_JSOSTR||'"akc225"'||':'||'"'||C_CFMX.akc225||'"'||',';-- 单价 number(12,4) y LS_JSOSTR:=LS_JSOSTR||'"akc226"'||':'||'"'||C_CFMX.akc226||'"'||',';-- 数量 number(8) y LS_JSOSTR:=LS_JSOSTR||'"akc227"'||':'||'"'||C_CFMX.akc227||'"'||',';-- 金额 number(12,4) y LS_JSOSTR:=LS_JSOSTR||'"aka071"'||':'||'"'||trim(C_CFMX.aka071)||'"'||',';-- 每次用量 number(5,2) n 药品类项目必填 LS_JSOSTR:=LS_JSOSTR||'"aka072"'||':'||'"'||trim(C_CFMX.aka072)||'"'||',';-- 使用频次 varchar2(5) n 药品类项目必填,参见编码附件 LS_JSOSTR:=LS_JSOSTR||'"aka073"'||':'||'"'||trim(C_CFMX.aka073)||'"'||',';-- 给药途径 varchar2(50) n 药品类项目必填 LS_JSOSTR:=LS_JSOSTR||'"akc221"'||':'||'"'||trim(C_CFMX.akc221)||'"'||',';-- 处方日期 number(8) y 价调动态调整说明 LS_JSOSTR:=LS_JSOSTR||'"akc229"'||':'||'"'||trim(C_CFMX.akc229)||'"'||',';-- 执行天数 number(4,1) n LS_JSOSTR:=LS_JSOSTR||'"akf001"'||':'||'"'||trim(C_CFMX.akf001)||'"'||',';-- 科室编码 varchar2(50) n 即资格管理系统中的“医疗机构科室id” LS_JSOSTR:=LS_JSOSTR||'"akf002"'||':'||'"'||trim(C_CFMX.akf002)||'"'||',';-- 科室名称 varchar2(50) n 即资格管理系统中的“医院科室名称” LS_JSOSTR:=LS_JSOSTR||'"bkf237"'||':'||'"'||trim(C_CFMX.bkf237)||'"'||',';-- his内部科室编码 varchar2(50) y 院内编码 LS_JSOSTR:=LS_JSOSTR||'"bkf238"'||':'||'"'||trim(C_CFMX.bkf238)||'"'||',';-- his内部科室名称 varchar2(50) y 院内定义 LS_JSOSTR:=LS_JSOSTR||'"bkc006"'||':'||'"'||trim(C_CFMX.bkc006)||'"'||',';-- 医疗服务人员姓名 varchar2(50) y 开处方医疗服务人员姓名 LS_JSOSTR:=LS_JSOSTR||'"bkc007"'||':'||'"'||trim(C_CFMX.bkc007)||'"'||',';-- 医疗服务人员证件号码 varchar2(18) y 开处方医疗服务人员证件号码 LS_JSOSTR:=LS_JSOSTR||'"bkc507"'||':'||'"'||trim(C_CFMX.bkc507)||'"'||',';-- 药师国家编码 varchar2(50) n LS_JSOSTR:=LS_JSOSTR||'"bkc506"'||':'||'"'||trim(C_CFMX.bkc506)||'"'||',';-- 药师姓名 varchar2(50) n LS_JSOSTR:=LS_JSOSTR||'"bkea96"'||':'||'"'||trim(C_CFMX.bkea96)||'"'||','; -- 限制范围类别 varchar2(3) y Y-范围内、N-范围外(1)医保项目无限制范围的项目值为Y;自费项目值为N;(2)医保项目有限制范围的项目,在限制范围内的值为Y,否则为N LS_JSOSTR:=LS_JSOSTR||'"bka001"'||':'||'"'||trim(C_CFMX.bka001)||'"'||',';-- 是否医保项目 varchar(2) y y-是 n-否 LS_JSOSTR:=LS_JSOSTR||'"bkeaa0"'||':'||'"'||trim(C_CFMX.bkeaa0)||'"'||',';-- 处方外流标志 varchar2(3) y Y-外流项目、N-非外流项目(1)处方开具医疗机构如果有处方外流需求的,需要标识外流项目和非外流项目如果没有外流需求的,默认设置为非外流项目 LS_JSOSTR:=LS_JSOSTR||'"bkeaa1"'||':'||'"'||trim(C_CFMX.bkeaa1)||'"'||',';-- 处方开具医疗机构 varchar2(40) y 开具处方时默认填入,处方执行时由流转平台 LS_JSOSTR:=LS_JSOSTR||'"bkeaa2"'||':'||'"'||trim(C_CFMX.bkeaa2)||'"'||',';-- 处方执行医疗机构 varchar2(40) n 处方执行医疗机构编号 LS_JSOSTR:=LS_JSOSTR||'"bkeaa3"'||':'||'"'||trim(C_CFMX.bkeaa3)||'"'||',';-- 处方外流对应流水号 varchar2(20) n 处方开具时归属的医保流水号 LS_JSOSTR:=LS_JSOSTR||'"bke181"'||':'||'"'||trim(C_CFMX.BKE181)||'"'||',' ;--HIS院内项目编码 LS_JSOSTR:=LS_JSOSTR||'"bke182"'||':'||'"'||trim(C_CFMX.BKE182)||'"'||',' ;--HIS院内项目名称 LS_JSOSTR:=LS_JSOSTR||'"bkec27"'||':'||'"'||trim(C_CFMX.BKEC27)||'"'||',' ;--记帐日期1、住院:明细对应记帐日期或执行日期,与日清单时间对应。2、门诊,该值等于【处方日期】目录与价格动态调整依据 LS_JSOSTR:=LS_JSOSTR||'"bkc541"'||':'||'"'||trim(C_CFMX.BKC541)||'"'||',' ;--医保服务人员类别:001:医师 002:护师(士) 003:药师(士) 004:技师 005:收费员 006:助理医师 007:心理咨询师 LS_JSOSTR:=LS_JSOSTR||'"bke506"'||':'||'"'||trim(C_CFMX.BKE506)||'"'||',' ;--单次用药单位 LS_JSOSTR:=LS_JSOSTR||'"bke507"'||':'||'"'||trim(C_CFMX.BKE507)||'"'||',' ;--取药总量 LS_JSOSTR:=LS_JSOSTR||'"bke508"'||':'||'"'||trim(C_CFMX.BKE508)||'"'||',' ;--取药总量单位 LS_JSOSTR:=LS_JSOSTR||'"bke509"'||':'||'"'||trim(C_CFMX.BKE509)||'"'||' ' ;--药量天数 LS_JSOSTR:=LS_JSOSTR||'}'; insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'mxlist','data','mxlist','收费明细',null,null,'1',null,LS_JSOSTR from dual; end loop; --收费明细结束 if LS_SFFSGHRQ='1' then --新医保门诊是否发送挂号日期1:是0:否 参数开后,AKC221,BKEC27 不能超过LS_BKC014 update SF_YBJKQD set AKC221=LS_BKC014 where YBJKID=LS_YBJKID and AKC221>LS_BKC014 ; update SF_YBJKQD set BKEC27=LS_BKC014 where YBJKID=LS_YBJKID and BKEC27>LS_BKC014; end if; end if; ----其它医保对应的费用明细--end--- end if; elsif PJKCJBM in ('YBJK_MXZF_0029') then --门诊费用明细作废 --获取YBDJH0:医保单据号 YBSM20:医保挂号号 begin select YBDJH0,substrb(YBGHH0,1,30),MZID00,nvl(a.YBJKID,a.YBSM19) into LS_YBDJH0,LS_AKC190,LS_MZID00,LS_BKE298 from SF_JZB000 a where BRID00=PBRID00 and JZDH00=LS_JZDH00; exception when others then LS_YBDJH0:=substrb(SF_SF_GETXMLNOTE('YBDJH0',LS_HISCS0),1,30); end; --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZMXCX,null from BM_YBJKZD where MZMXCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号 LS_JKFSZ0:=LS_AKC190; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke297' then -- 医保明细流水号 varchar2(20) y LS_JKFSZ0:=LS_MXLSH0; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bae016' then -- 作废原因 varchar2(100) y LS_JKFSZ0:=LS_bae016; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_BKE241;--数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then --行政区号 LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; elsif PJKCJBM in ('YBJK_MZDJ_0006') then --门诊挂号 --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZGH00,null from BM_YBJKZD where MZGH00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y LS_JKFSZ0:=trim(LS_AAZ500); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then --卡识别码 LS_JKFSZ0:=LS_AAZ501; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 跨省交易时必填 --LS_JKFSZ0:=trim(LS_YBID00); LS_JKFSZ0:=trim(LS_AAC002); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y LS_JKFSZ0:=LS_AAC003; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_JKFSZ0:=LS_BKE284; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='ecToken' then --令牌 LS_JKFSZ0:=''; elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件, 填写规则参见表格尾部 LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aka130' then -- 医疗类别 varchar2(3) y 参见编码附件,择日住院、家庭病床等通过此字段标识, 填写规则参见表格尾部 --医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 LS_JKFSZ0:=LS_AKA130; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号 LS_JKFSZ0:=LS_BKE042; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akf001' then -- 标准科室编码 varchar2(50) n 即资格管理系统中的“医疗机构科室id” LS_JKFSZ0:=LS_akf001; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akf002' then -- 标准科室名称 varchar2(50) n 即资格管理系统中的“医院科室名称” LS_JKFSZ0:=LS_akf002; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkf237' then -- his内部科室编码 varchar2(50) y 医保科室编码 LS_JKFSZ0:=LS_bkf237; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkf238' then -- his内部科室名称 varchar2(50) y 院内定义 LS_JKFSZ0:=LS_bkf238; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc069' then -- 急诊标志 varchar2(3) y 0 否,1 是 LS_JKFSZ0:='0'; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc066' then -- 外伤标志 varchar2(3) y 0 否,1 是 LS_JKFSZ0:='0'; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc192' then -- 实际门诊/入院日期 number(14) y 若为空,默认取系统时间 LS_JKFSZ0:=LS_akc192; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aae030' then -- 择日住院起始日期 number(8) n update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aae031' then -- 择日住院截止日期 number(8) n update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_BKE241;----数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then -- 卡识别码 varchar2(32) n “读卡”认证时必填 LS_JKFSZ0:=LS_AAZ501; --LS_JKFSZ0:=LS_YBKSBM; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aka042' then -- 住院类别 varchar2(3) n 参见编码附件(生育住院时该字段为必填项) LS_JKFSZ0:=''; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; elsif PJKCJBM in ('YBJK_MZDJ_0008') then --门诊挂号冲销 --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZGHCX,null from BM_YBJKZD where MZGHCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y LS_JKFSZ0:=trim(LS_AAZ500); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then -- 卡识别码 varchar2(32) n “读卡”认证时必填 LS_JKFSZ0:=LS_AAZ501; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 跨省交易时必填 --LS_JKFSZ0:=trim(LS_YBID00); LS_JKFSZ0:=trim(LS_AAC002); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y LS_JKFSZ0:=LS_AAC003; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_JKFSZ0:=LS_BKE284; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='ecToken' then --令牌 LS_JKFSZ0:=''; elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号 LS_JKFSZ0:=LS_AKC190; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号 if trim(LS_HISLSH) is not null then LS_JKFSZ0:=LS_HISLSH; else LS_JKFSZ0:=LS_BKE042; end if; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_BKE241;----数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; --本功能主要应用于his建档时调用,参保人在医疗机构首次就诊时,需调用此服务进行身份认证,获取参保人基本信息。 --医保支持多渠道认证方式,目前仅开通读卡验证。其它刷脸、扫码及二维码等几种认证方式支持扩展,扩展的内容解释权归本地医保 elsif PJKCJBM in ('YBJK_YBDK_0001','YBJK_YBDK_0002','YBJK_YBDK_0003','YBJK_YBDK_0004') then --医保身份认证(f04.10.01.16) --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZGHSK,null from BM_YBJKZD where MZGHSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号 LS_JKFSZ0:=LS_CARDNO; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then --卡识别码 LS_JKFSZ0:=LS_AAZ501; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkz543' then --二维码 LS_JKFSZ0:=LS_BKZ543; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名 LS_JKFSZ0:=LS_AAC003; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_JKFSZ0:=LS_BKE284; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='ecToken' then --令牌 LS_JKFSZ0:=''; end if; end loop; elsif PJKCJBM in ('YBJK_YBCX_0005') then --资格信息查询(f04.10.01.17) --插入主项节点功能编码(data)--从字典取值 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,MZGHSK,null from BM_YBJKZD where MZGHSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号 LS_JKFSZ0:=LS_CARDNO; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then --卡识别码 LS_JKFSZ0:=LS_AAZ501; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then LS_JKFSZ0:=LS_aab301; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkb526' then --bkb526医疗机构国家码 LS_JKFSZ0:=LS_bkb526; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkz543' then --二维码 LS_JKFSZ0:=LS_BKZ543; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名 LS_JKFSZ0:=LS_AAC003; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 省交易时必填 LS_JKFSZ0:=trim(LS_AAC002); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_JKFSZ0:=LS_BKE284; update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='ecToken' then --令牌 LS_JKFSZ0:=''; end if; end loop; elsif PJKCJBM in ('YBJK_YBCX_0053') then --医保人员信息验证(yb04.10.01.20) --aaz500 社会保障卡号 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aaz500','社会保障卡号',LS_AAZ500,null,'3',null from dual; --aac002 证件号码(社会保障号) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aac002','证件号码(社会保障号)',LS_AAC002,null,'3',null from dual; --aac003 姓名 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aac003','姓名',LS_AAC003,null,'3',null from dual; --aac003 姓名 insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bkeh16','校验结果',null,null,'2',null from dual; end if; if PCOMMIT='Y' then commit; end if; /* --医保凭证结算 不发送aaz500 if LS_BKE284 in ('06') then update SF_YBJKMX set FSLXBZ='0' where YBJKID=LS_YBJKID and ZDBM00='aaz500'; end if; */ PZXZT00:=1;--输出:执行状态 0:失败 1:成功 PYBJKID:=LS_YBJKID;--输出:订单流水号 exception when no_data_found then PZXZT00:=0; PERRMSG:=substrb('执行新医保接口交互日志失败!原因:'||sqlerrm,1,200); when others then PZXZT00:=0; PERRMSG:=substrb('执行新医保接口交互日志失败!原因:'||sqlerrm,1,200); end; / --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@