create or replace procedure SP_ZY_NEWYBJK_YBJKRZ ( PJKCJBM in varchar2 , --输入(不可空):接口场景编码 PBRID00 in number , --输入(无值传0):BRID00 PZYID00 in number , --输入(无值传0):住院ID PZYH000 in varchar2 , --输入(无值传0):住院号 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 住院新医保接口日志写入过程 ZYSF9-20191104-002 -- jlg 2019.11.05 重新整理 ZYSF9-20191105-001 -- liwm 2019.12.11 修改入院登记几个字段错误的问题 ZYSF9-20191211-002 -- liwm 2019.12.14 漳州地区医保字段补充 ZYSF9-20191214-002 -- jlg 2019.12.14 补回住院病案首页上传yb04.07.04.03的处理脚本 ZYSF9-20191213-004 -- jlg 2019.12.16 处理病案首页发送之费用报文错误问题{fylist} ZYSF9-20191216-001 -- liwm 2019.12.17 住院 ZYSF9-20191217-001 -- liwm 2019.12.18 自费改医保问题解决 ZYSF9-20191218-007 -- jlg 2019.12.18 处理费用结算时应异常导致医保单方面冲销出错的问题 ZYSF9-20191218-006 -- liwm 2019.12.23 择日住院问题解决 ZYSF9-20191223-004 -- liwm 2019.12.24 修改费别时前端选了入院日期,但是还是采用系统日期 ZYSF9-20191224-004 -- jlg 2019.12.24 处理病案首页撤销时病案流水号bke299为空的问题 ZYSF9-20191223-002 -- liwm 2019.12.25 出院结算出院日期根据前台传入 ZYSF9-20191225-001 -- liwm 2019.12.27 修改新医保用户密码获得方式,适配分院模式 ZYSF9-20191227-006 -- liwm 2020.01.19 新医保接口启用时,若病人没有诊断信息,任然要产生zdlist[] 节点,有些小医院确实没有诊断。 ZYSF9-20200117-002 -- jlg 2020.03.18 增加报文(amc029:计划生育手术类别 amc026:生育类别 amc028:胎儿数 amc020:计划生育手术或生育日期 bmc041:怀孕天数)的取值 ZYSF9-20200312-001 -- zhangyc 2020.03.25 厦门新医保接口改造:bkf237:医保科室编码 akf001:his挂号科室 、bke042:his流水号取挂号ID(挂号、明细上传、费用结算保存一致)、退费冲销增加节点aka130 医疗类别 bke042 his流水号 bkee70:his退费流水号 by ZYSF9-20200331-002 -- zhangyc 2020.04.21 nvl(A.SFXMID,trim(A.XMBH00))-->nvl(to_char(A.SFXMID),trim(A.XMBH00)) by ZYSF9-20200422-004 -- liwm 2020.04.23 新医保接口发送的【资格信息查询】中aac002没有发送内容 ZYSF9-20200422-005 -- liwm 2020.04.24 新医保接口,费别修改aac002传值不正确 ZYSF9-20200423-002 -- qiulf 2020.05.27 增加厦门医保工伤登记 ZYSF9-20200527-002 -- linzetao 2020.07.03 新医保工伤接口不传aaz501及ectoken节点 ZYSF9-20200629-001 -- linzetao 2020.07.20 新医保工伤接口上传住院明细增加cle530节点 ZYSF9-20200713-003 -- zhangyc 2020.07.31 处理新医保工伤接口住院费用统计问题 ZYSF9-20200731-001 -- liwm 2020.07.31 新医保接口上传增加aab301节点 ZYSF9-20200804-001 -- linzetao 2020.08.04 处理医保厦门新医保接口住院收费冲销流水号不一致问题 ZYSF9-20200804-002 -- linzetao 2020.08.11 处理C-DRG病案数据上传和作废 ZYSF9-20191219-002 -- linzetao 2020.08.17 参数ZY_YBDBZJSFSPTBCTS启用且前端传入普通病床天数(PTBCTS), 住院天数按普通病床天数发送 ZYSF9-20200721-001 -- linzetao 2020.08.17 修正其它生育类型入院aka078节点发送错误问题 ZYSF9-20200805-001 -- linzetao 2020.08.25 修正aka042节点发送为空问题 ZYSF9-20200813-002 -- linzetao 2020.08.28 调整LS_PTBCTS变量定义长度 ZYSF9-20200825-001 -- liwm 2020.09.02 调整aab301的处理 ZYSF9-20200902-001 -- linzetao 2020.09.04 调整aaz501节点的取值来源(取新医保接口通用配置) ZYSF9-20200907-003 -- linzetao 2020.09.23 处理无结算出院登记场景 ZYSF9-20200918-002 -- linzetao 2020.09.29 调整发送医保His内部科室, 由当前病区调整为当前科室 ZYSF9-20200929-001 -- linzetao 2020.10.09 处理新医保接口字典bh0000='yyksbmfslx'的配置 ZYSF9-20200929-002 -- zhangyc 2020.10.22 增加费用冲正功能 by ZYSF9-20201022-004 -- liwm 2020.10.23 住院预结算增加aab301节点 ZYSF9-20201023-001 -- zhangyc 2020.11.13 新医保通用字典增加参数(BM_TYZD00.BH0000=YDSYYBBM)控制(参数格式:Y开启N关闭|aka078对应值|aka130对应值)异地生育病人(aka078=20 aka130=21) by ZYSF9-20201113-004 -- linzetao 2020.11.23 处理上传费用明细时药品项目剂型(aka070)和给药途径(aka073)节点, 药品项目单位转换成医保编码 ZYSF9-20201123-001 -- linzetao 2020.12.02 通用字典配置通用明细药品单位是否发送医保编码 ZYSF9-20201202-002 -- linzetao 2020.12.18 处理医保新接口参数设置字典BH0000='aka063'的配置 ZYSF9-20201216-006 -- linzetao 2020.12.30 处理通用收费流产病人发送生育类别、胎儿数、怀孕天数等信息 ZYSF9-20201221-003 -- linzetao 2020.12.31 住院收费新增节点bkc080(出院类型) ZYSF9-20201228-003 -- linzetao 2021.01.12 处理通用收费节点bka190(是否共济扣款),bkeg23(是否账户抵扣) ZYSF9-20210108-001 -- linzetao 2021.01.18 处理通用收费bkc014早于ZY_BRXXB0.YBRYRQ按YBRYRQ发送 ZYSF9-20210107-002 -- linzetao 2021.01.27 处理新生儿医保结算 ZYSF9-20210125-002 -- linzetao 2021.02.24 处理参数ZY_YBDBZJSFSPTBCTS扩展 ZYSF9-20210220-001 -- linzetao 2021.02.25 处理通用明细上传时诊断码转换及整理bkeh83,bkeh05,bkeh06,bakxml数据 ZYSF9-20210223-004 -- linzetao 2021.02.26 增加新生儿相关场景处理 ZYSF9-20210226-001 -- linzetao 2021.02.26 处理新生儿取消入院登记场景 ZYSF9-20210226-003 -- linzetao 2021.03.11 处理当医保字典配置YBQDMXFSLX不等于1时, 通用明细报文上传发送bkeh83,bkeh05,bkeh06节点 ZYSF9-20210311-002 -- linzetao 2021.03.30 处理前端传入YYKSBM(医院科室编码) ZYSF9-20210318-002 -- linzetao 2021.04.09 处理病案节点内容长度超过250问题 ZYSF9-20210409-002 -- linzetao 2021.04.18 处理生成通用明细时剂型和使用频率为空填默认值,单病种aka130按照字典配置 ZYSF9-20210418-001 -- linzetao 2021.04.20 处理BQ_JSXX00.FMFSBH为空时取BQ_JSXX00.FMFS00转换 ZYSF9-20210420-002 -- zhangyc 2021.04.20 通用收费增加发送BAE465:国家病种代码 by ZYSF9-20210420-001 -- --------- ---------- -------------------------------- as LS_COUNT0 number(5); LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_FUNID varchar2(50); --功能编码 LS_BRXM00 ZY_YBJKRZ.BRXM00%type; --病人姓名 LS_YBJKID ZY_YBJKRZ.YBJKID%type; --医保接口ID LS_YBJKBM ZY_YBJKRZ.YBJKBM%type; --医保接口编码 LS_YBJKMC ZY_YBJKRZ.YBJKMC%type; --医保接口名称 LS_JKCJBM ZY_YBJKRZ.JKCJBM%type; --接口场景编码 LS_AAZ500 ZY_YBJKRZ.AAZ500%type; --社会保障卡号 LS_AAZ501 ZY_YBJKRZ.AAZ501%type; --卡识别码 LS_BKZ543 ZY_YBJKRZ.BKZ543%type; --二维码 LS_AAC002 ZY_YBJKRZ.AAC002%type; --证件号码(社会保障号) LS_AAC003 ZY_YBJKRZ.AAC003%type; --病人姓名 LS_YBKH00 BM_BRXXB0.YBKH00%type; --医保卡号 LS_YBID00 BM_BRXXB0.YBID00%type; --医保ID LS_BRZJBH BM_BRXXB0.BRZJBH%type; --病人证件号码 LS_YBKSBM varchar2(50); --BM_BRXXB0.YBKSBM%type; --医保卡识别码 LS_VALUE0 ZY_YBJKMX.VALUE0%type; LS_FSLXBZ ZY_YBJKMX.VALUE0%type; --发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它 LS_JKFSZ0 ZY_YBJKMX.JKFSZ0%type; --接口发送值 LS_JKFHZ0 ZY_YBJKMX.JKFHZ0%type; --接口返回值 LS_QTQQCS BM_ZFPTCS.JKQQCS%type; --前台接口请求参数临时中间变量 LS_HISCS0 ZY_YBJKRZ.HISCS0%type; --HIS前台请求参数 LS_JKQQCS ZY_YBJKRZ.JKQQCS%type; --接口请求参数 LS_JKFHCS ZY_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_BQBM00 varchar2(50); --病情编码 LS_JZDH00 ZY_JZB000.JZDH00%type; --结账单号 LS_YBDJH0 ZY_JZB000.YBDJH0%type; --医保单据号 LS_CXJZDH ZY_JZB000.JZDH00%type; --冲销结账单号 LS_MKLXMC ZY_YBJKRZ.MKLXMC%type; --模块类型名称 LS_AKA078 varchar2(50); --医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_BKE241 varchar2(50); --数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 LS_BKE298 varchar2(50); --HIS收费单据流水号 LS_AKA130 varchar2(50); --医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 35:新生儿分娩 LS_BKE286 varchar2(50); --结算标识 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_YBZXLB ZY_BRXXB0.YBZXLB%type; --医保中心类别 LS_YBZYH0 ZY_BRXXB0.YBZYH0%type; -- LS_RYRQ00 ZY_BRXXB0.RYRQ00%type; -- LS_RYSQK0 ZY_BRXXB0.RYSQK0%type; -- LS_RYLB00 ZY_BRXXB0.RYLB00%type; -- LS_RYBQ00 ZY_BRXXB0.RYBQ00%type; -- LS_RZKS00 ZY_BRXXB0.RZKS00%type; -- LS_RYCWH0 ZY_BRXXB0.RYCWH0%type; -- LS_DQBQ00 ZY_BRXXB0.DQBQ00%type; -- LS_DQKS00 ZY_BRXXB0.DQKS00%type; -- LS_CYRQ00 ZY_BRXXB0.CYRQ00%type; -- LS_RYCZY0 ZY_BRXXB0.RYCZY0%type; -- LS_CYCZY0 ZY_BRXXB0.CYCZY0%type; -- LS_ZZYS00 ZY_BRXXB0.ZZYS00%type; -- LS_ZRYS00 ZY_BRXXB0.ZRYS00%type; -- LS_SXYS00 ZY_BRXXB0.SXYS00%type; -- LS_CYDJRQ ZY_BRXXB0.CYDJRQ%type; -- LS_DBZBM0 ZY_BRXXB0.DBZBM0%type; -- LS_YBKSMC BM_YBKSZD.KSMC00%type; --医保科室名称 LS_DQBQMC BM_BMBM00.BMMC00%type; --挂号科室名称 LS_DQKSMC BM_BMBM00.BMMC00%type; --当前科室名称 LS_KDYSXM BM_YGBM00.ZWXM00%type; --开单医生姓名 LS_YSZJHM BM_YGBM00.YSZJHM%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 ZY_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:取ZY_YBJKQD或ZY_YBJKQD 2:取ZY_YBJKMX或ZY_YBJKMX 默认:1 LS_SFYJS0 varchar2(50); --是否预结算 'Y':是预结算,'N':不是预结算 LS_AAZ149 varchar2(50); --特殊病种编码 LS_BAID00 number(12); --病案首页ID LS_TMPPXH number(12); --临时序号 LS_JSTYPE varchar2(50); --结算类型 0:正常结算 1:中途结算 2:年度结算 LS_JKLXBM varchar2(50); --接口类型 -1无 0普通医保 1生育医保 2:工伤 3保健医保 LS_YYKSBM BM_BMBM00.YYKSBM%type; --医院科室编码 LS_BKE078 varchar2(50); --离院方式 1 医嘱离院 2 医嘱转院 3 医嘱转社区卫生服务机构/乡镇卫生院 4 非医嘱离院 5 死亡 9 其他 LS_BKE299 varchar2(20); --医保病案流水号 LS_BKE284 varchar2(50); --身份认证类型 身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_AAE030 varchar2(50); --择日入院起始日期 LS_AAE031 varchar2(50); --择日入院截止日期 LS_AKC192 varchar2(30); --akc192 LS_YBRYRQ varchar2(30); --医保入院日期时间 LS_INDEX0 number(5); --下标 LS_YBCYRQ varchar2(30); --前台传入的医保出院日期 LS_JSJZRQ varchar2(30); --前台传入的费用发生日期 LS_JHSYSS BQ_JSXX00.JHSYSS%type; --计划生育手术 BM_TYZD00.ZDMC00=计划生育手术类别 ZY_JHSYSS ZY_BRXXB0.JHSYSS%type; --计划生育手术 LS_SYSSLB BQ_JSXX00.FMFSBH%type; --手术生育类别 BM_TYZD00.ZDMC00=手术生育类别 LS_SYSSMC BQ_JSXX00.FMFS00%type; --分娩方式名称 ZY_SYSSLB ZY_BRXXB0.SYSSLB%type; --手术生育类别 LS_SYFMRQ ZY_BRXXB0.SYFMRQ%type; --分娩日期 ZY_SYFMRQ ZY_BRXXB0.SYFMRQ%type; --分娩日期 LS_TESL00 number(5); --胎儿数量 ZY_TESL00 ZY_BRXXB0.TESL00%type; --胎儿数量 LS_SYHYTS ZY_BRXXB0.HYTS00%type; --怀孕天数 ZY_SYHYTS ZY_BRXXB0.HYTS00%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_BKC006 varchar2(50);--医疗服务人员姓名 LS_BKC007 varchar2(50);--医疗服务人员证件号码 IN_GSDJH0 varchar2(50);--工伤登记号 LS_GSYBBM BM_TYCJBM.GSYBBM%type; --新医保工伤功能点编码 IN_DJRXM0 varchar2(20); --工伤登记人姓名 LS_XZQH00 BM_BRXXB0.XZQH00%type; --行政区划 LS_HISLSH varchar2(50); --His流水号 LS_SQLTXT varchar2(2000); --sql语句 LS_PTBCTS varchar2(50); --普通病床天数 LS_AKA042 varchar2(50); --住院类别 ZY_YBDBZJSFSPTBCTS XT_XTCS00.VALUE0%type; --住院医保特殊病种病人结算是否发送普通病床天数(ptbcts)值给医保 LS_YYKSBMFSLX BM_TYZD00.MC0000%type; --新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0 LS_AAE072 varchar2(30);--医保单据号 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); --是否共济扣款 in_YEXM00 varchar2(50); --婴儿姓名 in_YYKSBM varchar2(50); --医院科室编码(医保) LS_SFXNH0 IC_YBBRLB.SFXNH0%type; --0大中心,1农合,2独立分中心,3异地医保,4异地农合,5职工医保,6居民医保 LS_YDSYYBBM varchar2(50);--新医保接口异地生育(aka078和aka130)发送编码(参数格式:Y开启N关闭|aka078对应值|aka130对应值) 默认值:N|20|21 LS_YPDWSFFSYBBM varchar2(100); --通用明细药品单位是否发送医保编码, 0否1是, 默认0 LS_YBJKFPLBCS varchar2(50); --新医保接口发票类别(aka063)(格式:门诊,住院) 0:发送编码 1:发送名称 默认:0,0 LS_bkc080 varchar2(20);--离院类型 010 痊愈 020 好转 030 恶化 040 死亡 050 其他 LS_ZLXG00 XT_ZLXG00.MC0000%type; LS_BKEG23 varchar2(50); --是否账户抵扣 LS_BKA190 varchar2(50); --是否共济扣款 LS_BRYBRYRQ ZY_BRXXB0.YBRYRQ%type; --医保入院日期 LS_XSEYBZYH BQ_JSXX00.YBZYH0%type; --新生儿医保住院号 LS_DYBZBM XT_ICD900.DYBZBM%type; --对应标准编码 LS_DYJBMC XT_ICD900.DYJBMC%type; --对应疾病名称 LS_JSXH00 BQ_JSXX00.JSXH00%type; --接生序号 LS_YECSRQ BQ_JSXX00.YECSRQ%type; --婴儿出生日期 LS_YECSSJ BQ_JSXX00.YECSSJ%type; --婴儿出生时间 LS_YECYRQ BQ_JSXX00.YECYRQ%type; --婴儿出院日期 LS_YECYSJ BQ_JSXX00.YECYSJ%type; --婴儿出院时间 LS_FFBZBM ZY_BRXXB0.FFBZBM%type; --付费病种编码 LS_BAE465 BM_BZSFBZ.BAE465%type; --国家病种代码 LS_BAEMC0 BM_BZSFBZ.BAEMC0%type; --国家病种名称 LS_FBBH00 BM_BRXXB0.FBBH00%type; --费别编码 ls_error varchar2(200); cursor CUR_YBFSZX is select YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ from ZY_YBJKMX where YBJKID=LS_YBJKID and FSLXBZ in ('1','3') order by JKMXID; --诊断信息 cursor CUR_BRZDXX is select * from BQ_BRZDXX where ZYID00=PZYID00 order by ZDM000; --清单明细 ZY_YBJKQD cursor CUR_MXLIST is select * from ZY_YBJKQD where YBJKID=LS_YBJKID order by JKMXID; begin --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'); --新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:1 LS_YYKSBMFSLX:=trim(nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','yyksbmfslx'),1,50),'1')); --YDSYYBBM 新医保接口异地生育(aka078和aka130)发送编码(参数格式:Y开启N关闭|aka078对应值|aka130对应值) 默认值:N|20|21 LS_YDSYYBBM:=nvl(substrb(trim(SF_SF_TYZD00('医保新接口参数设置','YDSYYBBM')),1,50),'N|20|21'); 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'),',',2),'0'); select max(XZQH00) into LS_XZQH00 from BM_BRXXB0 where BRID00 = PBRID00; select SQ_ZY_YBJKRZ_YBJKID.nextval into LS_YBJKID from dual; PYBJKID:=LS_YBJKID; LS_JKCJBM:=PJKCJBM; PZXZT00:=0; --执行状态 0:失败 1:成功 LS_MZZYBZ:='1'; --门诊住院标识 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_AKA078:='20'; --医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_BKE241:='01'; --数据来源:对外接口方式 01 接口02 自助机15 微信16 支付宝19 服务12 诊间结算 LS_BKE298:=LS_YBJKID; --HIS收费单据流水号 LS_AKA130:='21'; --医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 LS_CFXMSL:=0; --明细项目数量 LS_AKB065:=0; --医疗费总金额 LS_CXJZDH:=0; --冲销结账单号 LS_BKE042:=LS_YBJKID; --his流水号 LS_BKC014:=to_char(sysdate,'YYYYMMDD'); --实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期) LS_BKC171:=to_char(sysdate,'HH24MISS'); --实际就诊时间 住院指病人实际出院时间 LS_BKE078:='09'; --离院方式 1 医嘱离院 2 医嘱转院 3 医嘱转社区卫生服务机构/乡镇卫生院 4 非医嘱离院 5 死亡 9 其他 LS_AKC192 := LS_CZRQ00||LS_BKC171; 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_bae016:='失败作废';--作废原因 LS_bkc080:='010';--离院类型 010 痊愈 020 好转 030 恶化 040 死亡 050 其他 LS_BKEG23:='1'; LS_BKA190:='Y'; LS_BRYBRYRQ:=''; --医保入院日期 --医保发票是否使用编号 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; --住院医保单病种病人结算是否发送普通病床天数(ptbcts)值给医保 select nvl(max(trim(VALUE0)),'0') into ZY_YBDBZJSFSPTBCTS from XT_XTCS00 where name00='ZY_YBDBZJSFSPTBCTS'; begin select substrb(CJMC00,1,30)CJMC00,substrb(FUNCMC,1,20),substrb(GSYBBM,1,20) into LS_YBJKMC, LS_YBJKBM,LS_GSYBBM from BM_TYCJBM where CJBM00=LS_JKCJBM; exception when others then LS_YBJKMC:=null; LS_YBJKBM:=null; LS_GSYBBM:=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 nvl(PBRID00,0)>0 then begin select A.YBKH00,A.YBID00,A.BRZJBH,A.BRXM00,A.XZQH00 into LS_YBKH00, LS_YBID00,LS_BRZJBH,LS_BRXM00,LS_XZQH00 from BM_BRXXB0 A where A.BRID00=PBRID00; exception when others then PZXZT00:=0; --执行状态 0:失败 1:成功 PERRMSG:='未找到有效的基本信息!'; return; end; end if; if nvl(PZYID00,0)>0 then begin select A.YBZYH0,A.RYRQ00,A.RYSQK0,A.RYLB00,A.RYBQ00,A.RZKS00,A.RYCWH0,A.DQBQ00,A.DQKS00,A.CYRQ00, A.CYDJRQ,A.RYCZY0,A.CYCZY0,A.ZZYS00,A.ZRYS00,A.SXYS00,A.DBZBM0,A.JHSYSS,A.SYSSLB,A.SYFMRQ, A.TESL00,A.HYTS00,A.SFXNH0,A.YBZXLB,A.YBRYRQ,A.FFBZBM,A.SYSSMC,A.FBBH00 into LS_YBZYH0,LS_RYRQ00,LS_RYSQK0,LS_RYLB00,LS_RYBQ00,LS_RZKS00,LS_RYCWH0,LS_DQBQ00,LS_DQKS00,LS_CYRQ00, LS_CYDJRQ,LS_RYCZY0,LS_CYCZY0,LS_ZZYS00,LS_ZRYS00,LS_SXYS00,LS_DBZBM0,LS_JHSYSS,LS_SYSSLB,LS_SYFMRQ, LS_TESL00,LS_SYHYTS,LS_SFXNH0,LS_YBZXLB,LS_BRYBRYRQ,LS_FFBZBM,LS_SYSSMC,LS_FBBH00 from VW_ZY_BRXXB0 A where A.ZYID00=PZYID00; select SYFMRQ,TESL00,SYSSLB,JHSYSS,HYTS00 into ZY_SYFMRQ,ZY_TESL00,ZY_SYSSLB,ZY_JHSYSS,ZY_SYHYTS from ZY_BRXXB0 where ZYID00=PZYID00; exception when others then PZXZT00:=0; --执行状态 0:失败 1:成功 PERRMSG:='未找住院病人信息!'; return; end; LS_YYKSBM:=SF_ZY_GETYYKSBM(PZYID00, 0); --医院科室编码 LS_YSZJHM:=SF_ZY_GETYYKSBM(PZYID00, 1); --医生证件编码 select BMMC00 into LS_DQBQMC from BM_BMBM00 where BMBH00=LS_DQBQ00; --取当前科室名称 begin select BMMC00 into LS_DQKSMC from BM_BMBM00 where BMBH00=LS_DQKS00; exception when others then LS_DQKSMC := LS_DQBQMC; end; begin Select substrb(ZWXM00,1,50),substrb(SFZBH0,1,50) into LS_BKC006,LS_BKC007 from BM_YGBM00 where YGBH00=decode(nvl(LS_SXYS00,0),0,LS_ZZYS00,LS_SXYS00);--先取住院医生 exception when others then LS_BKC006:='';--医疗服务人员姓名 LS_BKC007:='';--医疗服务人员证件号码 end; end if; LS_FUNID:=LS_YBJKBM;--功能编码 IN_GSDJH0:=trim(substrb(SF_ZY_GETXMLNOTE('GSDJH0',LS_HISCS0),1,50));--工伤登记号 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then LS_FUNID := LS_GSYBBM; IN_DJRXM0:=trim(substrb(SF_ZY_GETXMLNOTE('DJRXM0',LS_HISCS0),1,50));--工伤登记人姓名 end if; LS_MKLXMC:=substrb(SF_ZY_GETXMLNOTE('MKLXMC',LS_HISCS0),1,50); --获取卡号 if trim(LS_YBKH00) in ('0') or trim(LS_YBKH00) is null then select substrb(SF_ZY_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 select substrb(SF_ZY_GETXMLNOTE('CARSBM',LS_HISCS0),1,50) into LS_YBKSBM from dual; end if; --解析请求报文病人姓名 if LS_BRXM00 is null then select substrb(SF_ZY_GETXMLNOTE('BRXM00',LS_HISCS0),1,50) into LS_BRXM00 from dual; end if; --解析报文中结账单号 begin select to_number(SF_ZY_GETXMLNOTE('JZDH00',LS_HISCS0)) into LS_JZDH00 from dual; exception when others then LS_JZDH00:=0; end; --解析报文中冲销结账单号 begin select to_number(SF_ZY_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_BQBM00 from dual; --解析报文中 明细流水号 select substrb(SF_SF_GETXMLNOTE('MXLSH0',LS_HISCS0),1,50) into LS_MXLSH0 from dual; --解析报文中 医保挂号号 select substrb(SF_SF_GETXMLNOTE('YBZYH0',LS_HISCS0),1,30) into LS_AKC190 from dual; --解析报文中 LS_XMFSBZ 项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCFMX_TEMP00 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_JSTYPE 结算类型 0:正常结算 1:中途结算 2:年度结算 select substrb(SF_SF_GETXMLNOTE('JSTYPE',LS_HISCS0),1,50) into LS_JSTYPE from dual; --LS_JKLXBM 接口类型 -1无 0普通医保 1生育医保 2:工伤 3保健医保 select substrb(SF_SF_GETXMLNOTE('JKLXBM',LS_HISCS0),1,50) into LS_JKLXBM from dual; --入院类别 select substrb(SF_SF_GETXMLNOTE('RYLB00',LS_HISCS0),1,30) into LS_RYLB00 from dual; -- select substrb(SF_SF_GETXMLNOTE('ZYQSRQ',LS_HISCS0),1,50) into LS_AAE030 from dual; select substrb(SF_SF_GETXMLNOTE('ZYJZRQ',LS_HISCS0),1,50) into LS_AAE031 from dual; select substrb(SF_SF_GETXMLNOTE('RYRQ00',LS_HISCS0)||LS_BKC171,1,50) into LS_YBRYRQ from dual; select substrb(SF_SF_GETXMLNOTE('YBCYRQ',LS_HISCS0),1,30) into LS_YBCYRQ from dual; select substrb(SF_SF_GETXMLNOTE('JSJZRQ',LS_HISCS0),1,30) into LS_JSJZRQ from dual; select substrb(SF_SF_GETXMLNOTE('AAC002',LS_HISCS0),1,50) into LS_AAC002 from dual; if LS_YBID00='0' then select substrb(SF_SF_GETXMLNOTE('YBID00',LS_HISCS0),1,50) into LS_YBID00 from dual; if LS_YBID00 is null then LS_YBID00 := '0'; end if; end if; --解析报文医保His流水号 select substrb(SF_SF_GETXMLNOTE('HISLSH',LS_HISCS0),1,50) into LS_HISLSH from dual; --解析报文普通病床天数 select substrb(SF_SF_GETXMLNOTE('PTBCTS',LS_HISCS0),1,50) into LS_PTBCTS from dual; LS_AAE072:=substrb(SF_SF_GETXMLNOTE('YBDJH0',LS_HISCS0),1,30);--医保单据号 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_YEXM00:=trim(substrb(SF_SF_GETXMLNOTE('YEXM00',LS_HISCS0),1,50));--婴儿姓名 in_YYKSBM:=trim(substrb(SF_SF_GETXMLNOTE('YYKSBM',LS_HISCS0),1,50));--医院科室编码(医保) begin select to_char(to_number(BZDYBH)) into LS_AKA042 from BM_TYZD00 where ZDMC00='医保入院类别对应' and MC0000=LS_RYLB00; exception when others then LS_AKA042 := ''; end; if LS_RYLB00 = '普通' or trim(LS_RYLB00) is null then LS_RYLB00 := '0'; elsif LS_RYLB00 = '生育' or instrb(LS_RYLB00,'生育') > 0 then LS_RYLB00 := '1'; elsif LS_RYLB00 = '工伤' then LS_RYLB00 := '2'; else LS_RYLB00 := '0'; end if; LS_AAZ500:=LS_CARDNO;--社会保障卡号 select max(trim(MC0000)) into LS_AAZ501 from BM_TYZD00 where ZDMC00='医保新接口参数设置' and BH0000='aaz501'; --LS_AAZ501:=LS_YBKSBM;---卡识别码 LS_BKZ543:=null;--二维码 if trim(LS_AAC002)='' then if trim(LS_YBID00)='0' then LS_AAC002:=trim(LS_BRZJBH);---证件号码(社会保障号) else LS_AAC002:=trim(LS_YBID00); end if; end if; --医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_AKA078:=SF_ZY_GETYBSXZD(PZYID00,'1','aka078',LS_BQBM00,LS_RYLB00,''); if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then LS_AKA078:=SF_ZY_GETYBSXZD(PZYID00,'2','aka078',LS_BQBM00,LS_RYLB00,''); end if; --医疗类别11:普通门诊12:急诊13:门诊慢(特)病种16:急诊观留床21:普通住院29:择日住院31:家庭病床34:按病种住院42:处方购药43:非处方购药A1:体检52:生育住院 LS_AKA130:=SF_ZY_GETYBSXZD(PZYID00,'1','aka130',LS_BQBM00,LS_RYLB00,''); --择日住院处理 if LS_AAE030 is not null and LS_AAE031 is not null then LS_AKA130 := '29'; end if; --数据来源bke241: 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_BKE241:=SF_ZY_GETYBSXZD(PZYID00,'1','bke241',LS_BQBM00,LS_RYLB00,''); --身份认证类型bke284:01:读卡 02:融合码 06:医保码 20:医疗证 LS_BKE284:=SF_ZY_GETYBSXZD(PZYID00,'1','bke284',LS_BQBM00,LS_RYLB00,''); --单病种医疗类别判断 if trim(substrb(SF_SF_GETXMLNOTE('DBZBM0',LS_HISCS0),1,50)) is not null or LS_DBZBM0 is not null or LS_FFBZBM is not null then LS_AKA130 := SF_XT_TYZDMC('医保新接口参数设置','aka130_DBZ'); if LS_AKA130 is null then LS_AKA130:='34';--34:按病种住院 end if; end if; --LS_JSTYPE 结算类型 0:正常结算 1:中途结算 2:年度结算 --结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 if PJKCJBM in ('YBJK_TYSF_0020_1','YBJK_TYSF_0021_1') or LS_SFYJS0 in ('Y') then --门诊收费预结算、住院收费预结算 LS_BKE286:='0'; elsif PJKCJBM in ('YBJK_TYSF_0021_2') or LS_JSTYPE in ('1') then --中途结算 LS_BKE286:='1'; elsif PJKCJBM in ('YBJK_ZYSF_WJSCY') then --无结算出院 LS_BKE286 := '9'; elsif PJKCJBM in ('YBJK_TYSF_0021_3') then --新生儿出院结算 LS_BKE286 := '2'; else LS_BKE286:='2'; end if; 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 trim(LS_YBZYH0) is not null and trim(LS_YBZYH0) not in ('0') then LS_AKC190:=trim(LS_YBZYH0); end if; --如果住院病人已经登记单病种按单病种编码发 if LS_DBZBM0 is not null then LS_AAZ149:=LS_DBZBM0; else LS_AAZ149:=LS_BQBM00;--特殊病种编码 end if; if in_YYKSBM is not null then LS_YYKSBM := in_YYKSBM; end if; LS_YBKSMC := SF_XT_GETYBKSMC(LS_DQKS00,LS_YYKSBM); if LS_YYKSBMFSLX = '0' then LS_AKF001 := substrb(LS_YYKSBM,1,50); --医保科室编码 LS_AKF002 := substrb(LS_YBKSMC,1,50); --医保科室名称 LS_BKF237 := substrb(LS_DQKS00,1,50); --院内科室编码 LS_BKF238 := substrb(LS_DQKSMC,1,50); --院内科室名称 else LS_AKF001 := substrb(LS_DQKS00,1,50); --院内科室编码 LS_AKF002 := substrb(LS_DQKSMC,1,50); --院内科室名称 LS_BKF237 := substrb(LS_YYKSBM,1,50); --医保科室编码 LS_BKF238 := substrb(LS_YBKSMC,1,50); --医保科室名称 --LS_AKF001:=substrb(LS_DQBQ00,1,50);--院内科室编码 --LS_AKF002:=substrb(LS_DQBQMC,1,50);--标准科室名称 --LS_BKF238:=substrb(LS_DQBQMC,1,50);--医保科室名称 --LS_BKF238 := substrb(LS_DQKSMC,1,50); end if; --厦门医保 bke042:his流水号 挂号、明细上传、结算保存一致 if nvl(PZYID00,0)>0 and LS_HISLSHQZFS not in ('Y') then LS_BKE042:=PZYID00; end if; --医保卡号[aaz500] if in_AAZ500 is not nulL and in_AAZ500 not in ('0') then LS_aaz500:=in_AAZ500; end if; --身份证号[aac002] if in_aac002 is not null then LS_aac002:=in_aac002; end if; --姓名[aac003]: LS_AAC003:=trim(LS_BRXM00); if in_AAC003 is not null then LS_AAC003:=in_AAC003; end if; LS_aab301:=substrb(LS_XZQH00,1,10); --参保地行政区划 --行政区划如果没有保存,则根据卡号强制转换 if LS_XZQH00 is null or length(LS_XZQH00)<>6 then LS_aab301:=substrb(SF_SF_AAB301(-1, null, LS_AAZ500),1,10); --参保地行政区划 --select SF_SF_AAB301(-1, null, LS_AAZ500) into LS_XZQH00 from dual; end if; --2020.10.22 直接按报文前台传参数赋值--begin-- --医保挂挂号或住院流水号[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- --2020.11.10 zhangyc 异地生育病人(aka078=20 aka130=21)--强制转码--begin-- --LS_SFXNH0:0大中心,1农合,2独立分中心,3异地医保,4异地农合,5职工医保,6居民医保 --LS_BRLBBH:类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 --LS_YDSYYBBM:异地生育发送医保编码参数格式:Y开启N关闭|aka078对应值|aka130对应值 --判断条件,参数开启+(SFXNH0=3,4 或医保住院号头两位YD)+类别编码=1:生育 if SF_SF_RETURNINDEXEH(LS_YDSYYBBM,'|', 1)='Y' and (LS_SFXNH0 in ('3','4') or substrb(LS_AKC190,1,2) in ('YD'))and LS_RYLB00 in ( '1') then LS_AKA078:=nvl(SF_SF_RETURNINDEXEH(LS_YDSYYBBM,'|', 2),'20');--20 住院 LS_AKA130:=nvl(SF_SF_RETURNINDEXEH(LS_YDSYYBBM,'|', 3),'21');--21:普通住院 end if; --2020.11.10 zhangyc 异地生育病人(aka078=20 aka130=21)--强制转码--end-- --2021.02.25 linzetao 新生儿登记, 通用明细上传, 通用收费重新取 LS_AAZ500,LS_YBID00,LS_AAC003 begin-- if PJKCJBM in ('YBJK_ZYDJ_0010','YBJK_ZYDJ_0011','YBJK_MXSC_0027_2','YBJK_TYSF_0021_3','YBJK_MXZF_0030_1','YBJK_TYTF_0024_1') then select max(LSBXH0),max(LSKH00),max(YECSRQ),max(YECSSJ),max(YBZYH0),max(JSXH00),max(YECYRQ),max(YECYSJ) into LS_YBID00,LS_AAZ500,LS_YECSRQ,LS_YECSSJ,LS_AKC190,LS_JSXH00,LS_YECYRQ,LS_YECYSJ from BQ_JSXX00 where ZYID00=PZYID00 and YEXM00=in_YEXM00; LS_AKA130 := '35'; LS_AAC003 := in_YEXM00; --婴儿出生日期时间为空, 取当前时间 if LS_YECSRQ is not null then LS_AKC192 := nvl(LS_YECSRQ,to_char(sysdate,'YYYYMMDD'))||nvl(LS_YECSSJ,to_char(sysdate,'HH24MISS')); else LS_AKC192 := to_char(sysdate,'YYYYMMDDHH24MISS'); end if; LS_YBRYRQ := ''; --厦门医保 bke042:his流水号 挂号、明细上传、结算保存一致 if nvl(PZYID00,0)>0 and LS_HISLSHQZFS not in ('Y') then LS_BKE042:=to_char(PZYID00)||'_'||LS_JSXH00; end if; --新生儿医保出院日期取当前日期时间 if LS_YECYRQ is not null then LS_YBCYRQ := LS_YECYRQ; else LS_YBCYRQ := to_char(sysdate,'YYYYMMDD'); end if; end if; --2021.02.25 linzetao 新生儿登记重新取LS_AAZ500,LS_YBID00,LS_AAC003 end-- --治疗效果 if nvl(PZYID00,0) > 0 then select trim(max(MC0000)) into LS_ZLXG00 from XT_ZLXG00 where DM0000 in (select ZLXG00 from BQ_BRZDXX where ZYID00=PZYID00 and ZDLB00='3' and rownum=1); if instrb(LS_ZLXG00,'治愈')>0 then LS_bkc080:='010'; elsif instrb(LS_ZLXG00,'好转')>0 then LS_bkc080:='020'; elsif instrb(LS_ZLXG00,'死亡')>0 then LS_bkc080:='040'; elsif instrb(LS_ZLXG00,'24小时死亡')>0 then LS_bkc080:='040'; elsif instrb(LS_ZLXG00,'正常分娩')>0 then LS_bkc080:='050'; elsif instrb(LS_ZLXG00,'计划生育')>0 then LS_bkc080:='050'; elsif instrb(LS_ZLXG00,'其他')>0 then LS_bkc080:='050'; end if; end if; --获取病种对应的国家编码BAE465:国家病种代码 if trim(LS_AAZ149) is not null then begin select BAE465,BAEMC0 into LS_BAE465,LS_BAEMC0 from BM_BZSFBZ A where A.FFBZBM=LS_AAZ149 and A.FBBH00=LS_FBBH00 and A.YBZXLB=LS_YBZXLB and rownum=1; exception when others then LS_BAE465:=null; LS_BAEMC0:=null; end; end if; --步骤1:插入日志主表 insert into ZY_YBJKRZ(YBJKID,YBJKBM,YBJKMC,JKCJBM,BRID00,ZYID00,ZYH000,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_FUNID,LS_YBJKMC,LS_JKCJBM,PBRID00,PZYID00,PZYH000,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 ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'main',null,'usr','登录用户名',LS_USR000,null,'1',null from dual; --pwd 密码 varchar2(32) y (md5加密) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'main',null,'pwd','密码',LS_PWD000,null,'1',null from dual; --funid 功能点id varchar2(32) y insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_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 ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'main',null,'flag','校验标志(0:未通过 1:已通过)',null,null,'2',null from dual; --cause 未通过原因说明 varchar2(500) n insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'main',null,'cause','未通过原因说明',null,null,'2',null from dual; ------->接口返回节点-------->FSLXBZ:(发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它)<-------- --接口公共参数--end-- if PJKCJBM in ('YBJK_YBDZ_0004') then --医保冲正交易 --funid 原交易功能代码 varchar2(50) y 可被冲正的交易 通用收费(yb04.07.01.04) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'funid','原交易功能代码',in_funid,null,'1',null from dual; --aka078 医疗就诊方式 varchar2(3) y 参见编码附件 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aka078','医疗就诊方式',LS_AKA078,null,'1',null from dual; --akc190 医保流水号 varchar2(20) n 医保门诊挂号流水号/住院登记流水号 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保门诊挂号流水号或住院登记流水号',LS_akc190,null,'1',null from dual; --aae072 医保收费流水号 varchar2(20) n insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae072','医保收费流水号',LS_AAE072,null,'1',null from dual; --bke042 his流水号 varchar2(50) y his门诊流水号或住院流水号 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke042','his流水号',LS_BKE042,null,'1',null from dual; --bke298 his收费单据流水号 varchar2(50) y His收费单据流水号 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke298','his收费单据流水号',LS_bke298,null,'1',null from dual; --aab301 参保地行政区划 varchar2(6) n 两定机构必填 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aab301','参保地行政区划',LS_aab301,null,'1',null from dual; elsif PJKCJBM in ('YBJK_YBDZ_0000') then --医保交易对帐 if LS_JZDH00>0 then begin select nvl(YBJKID,YBSM19),substrb(YBSM23,1,20) into LS_BKE298,LS_BKA555 from ZY_JZB000 a where ZYID00=PZYID00 and JZDH00=LS_JZDH00; exception when others then LS_BKE298:=''; LS_BKA555:=''; end; end if; --aka078 医疗就诊方式 varchar2(3) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aka078','医疗就诊方式',LS_AKA078,null,'1',null from dual; --akc190 医保流水号 varchar2(20) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保流水号',LS_AKC190,null,'1',null from dual; --aae072 医保收费流水号 varchar2(20) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae072','医保收费流水号',LS_AAE072,null,'1',null from dual; --bke298 his收费流水号 varchar2(50) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke298','his收费流水号',LS_BKE298,null,'1',null from dual; --bka555 对账数据分类 varchar2(3) y 参见编码附件(本地、省内、跨省等),“门诊超限全自费” 不参与对帐 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bka555','对账数据分类',nvl(LS_BKA555,'01'),null,'1',null from dual; elsif PJKCJBM in ('YBJK_TYSF_0021','YBJK_TYSF_0021_1','YBJK_TYSF_0021_2','YBJK_TYSF_0021_3','YBJK_TYSF_0022','YBJK_ZYSF_WJSCY') then --住院收费 --插入主项节点功能编码(data)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYSF00,null from BM_YBJKZD where ZYSF00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYSF00,null from BM_YBJKZD where ZYSF00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; end if; select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from BM_ZYCFMX_TEMP00 where ID0000=LS_ID0000; --2020.07.31 LS_AKB065:=nvl(LS_AKB065,0); LS_CFXMSL:=nvl(LS_CFXMSL,1); if LS_AKB065=0 then select sum(HJJE00) into LS_AKB065 from ZY_FYMX00 where ZYID00=PZYID00 and JZDH00=0; end if; if PJKCJBM in ('YBJK_ZYSF_WJSCY') then --无结算出院, 处理以下节点值 LS_AKA130 := ''; --医疗类别 LS_BKE298 := ''; --his收费单据流水号 LS_BKC014 := ''; --实际就诊日期 LS_AKB065 := 0; --医疗费总金额 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 ZY_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); update ZY_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_BRXM00; LS_JKFSZ0:=LS_AAC003; update ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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; if LS_JSJZRQ is not null and PJKCJBM not in ('YBJK_ZYSF_WJSCY') then --医保入院日期大于结算结账日期, 发送医保入院日期 if LS_BRYBRYRQ is not null and LS_BRYBRYRQ > LS_JSJZRQ then LS_JKFSZ0 := LS_BRYBRYRQ; else LS_JKFSZ0 := LS_JSJZRQ; end if; end if; update ZY_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 ZY_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 “出院结算”时必填 if LS_YBCYRQ is not null then LS_JKFSZ0:=LS_YBCYRQ; elsif LS_CYRQ00 is null or LS_CYRQ00 in ('201991231') then LS_JKFSZ0:=to_char(sysdate,'YYYYMMDD'); else LS_JKFSZ0:=LS_CYRQ00; end if; LS_JKFSZ0 := LS_JKFSZ0||to_char(sysdate,'HH24MISS'); update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bke078' then -- 离院方式 varchar2(3) y 参见编码附件 LS_JKFSZ0:=LS_BKE078; update ZY_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; if PJKCJBM in ('YBJK_ZYSF_WJSCY') then --无结算出院登记, 处方项目数传0 LS_JKFSZ0 := 0; end if; update ZY_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 ZY_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 住院结算时必填 if ZY_YBDBZJSFSPTBCTS in ('1','2','3','4') and LS_PTBCTS is not null and LS_PTBCTS <> '0' then LS_JKFSZ0 := LS_PTBCTS; --前端有传入普通病床天数, 则发送普通病床天数 else LS_JKFSZ0:=to_date(nvl(LS_CYDJRQ,to_char(sysdate,'YYYYMMDD')),'YYYYMMDD')-to_date(LS_RYRQ00,'YYYYMMDD')+1; end if; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc029' then -- 计划生育手术类别 varchar2(3) n if LS_JHSYSS is not null then LS_JKFSZ0:=LS_JHSYSS; else LS_JKFSZ0:=ZY_JHSYSS; end if; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc026' then -- 生育类别 varchar2(3) n if LS_SYSSLB is not null then LS_JKFSZ0:=LS_SYSSLB; elsif ZY_SYSSLB is not null then LS_JKFSZ0:=ZY_SYSSLB; elsif LS_SYSSMC is not null then if LS_SYSSMC='顺产' then LS_JKFSZ0:='1'; elsif LS_SYSSMC='难产' then LS_JKFSZ0:='3'; elsif LS_SYSSMC='胎吸' then LS_JKFSZ0:='8'; elsif LS_SYSSMC='产钳' then LS_JKFSZ0:='8'; elsif LS_SYSSMC='臀抽' then LS_JKFSZ0:='8'; elsif LS_SYSSMC='剖宫产' or LS_SYSSMC = '剖腹产' then LS_JKFSZ0:='4'; elsif LS_SYSSMC = '计划生育' then LS_JKFSZ0:='8'; else LS_JKFSZ0:='8'; end if; end if; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc028' then -- 胎儿数 number(3) n if nvl(LS_TESL00,0) > 0 then LS_JKFSZ0:=to_char(LS_TESL00); else LS_JKFSZ0:=to_char(ZY_TESL00); end if; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='amc020' then -- 计划生育手术或生育日期 number(8) n if LS_SYFMRQ is not null then LS_JKFSZ0:=LS_SYFMRQ; else LS_JKFSZ0:=ZY_SYFMRQ; end if; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bmc041' then -- 怀孕天数 number(3) n if nvl(LS_SYHYTS,0) <> 0 then LS_JKFSZ0:=LS_SYHYTS; else LS_JKFSZ0:=ZY_SYHYTS; end if; update ZY_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 ZY_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 ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' and PJKCJBM = 'YBJK_TYSF_0021_1' then -- 行政区划 update ZY_YBJKMX set JKFSZ0=LS_XZQH00 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bkc080' then -- 出院类型 varchar2(3) LS_JKFSZ0 := LS_BKC080; update ZY_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 ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='bae465' then -- bae465:国家病种代码 LS_JKFSZ0:=LS_bae465; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'clz550','工伤统一结算登记号',IN_GSDJH0,null,'3',null); insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae011','收费人',IN_DJRXM0,null,'1',null); end if; if PJKCJBM not in ('YBJK_ZYSF_WJSCY') then --非无结算出院场景费用明细需上传 --费用明细上传流水开始 --bke297 医保明细流水号 varchar2(20) LS_JSOSTR:=LS_JSOSTR||'{'; LS_JSOSTR:=LS_JSOSTR||'"bke297"'||':'||'"'||trim(LS_MXLSH0)||'"'||''; LS_JSOSTR:=LS_JSOSTR||'}'; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'cflist','data','cflist','费用明细上传流水',null,null,'1',null,LS_JSOSTR from dual; --费用明细上传流水结束 end if; elsif PJKCJBM in ('YBJK_TYTF_0024','YBJK_TYTF_0024_1') then --住院费用冲销 if nvl(PBRID00,0)=0 then PZXZT00:=0;--输出:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的基本信息!'; return; end if; --获取YBDJH0:医保单据号 YBSM20:医保挂号号 begin select YBDJH0,nvl(a.YBJKID,a.YBSM19) into LS_YBDJH0,LS_BKE298 from ZY_JZB000 a where ZYID00=PZYID00 and JZDH00=LS_JZDH00; exception when others then LS_YBDJH0:=substrb(SF_ZY_GETXMLNOTE('YBDJH0',LS_HISCS0),1,30); --如果报文有传入医保HIS流水号, 则LS_BKE298取报文传入值 if LS_HISLSH is not null then LS_BKE298 := LS_HISLSH; end if; end; 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)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYSFCX,null from BM_YBJKZD where ZYSFCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYSFCX,null from BM_YBJKZD where ZYSFCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; end if; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号 LS_JKFSZ0:=trim(LS_AAZ500); update ZY_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); update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名 --LS_JKFSZ0:=trim(LS_BRXM00); LS_JKFSZ0:=trim(LS_AAC003); update ZY_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 ZY_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 ZY_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 ZY_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 ZY_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,trim(LS_YBDJH0)); update ZY_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 ZY_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 ZY_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 ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'clz550','工伤统一结算登记号',IN_GSDJH0,null,'3',null); insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae011','退费人',IN_DJRXM0,null,'1',null); end if; elsif PJKCJBM in ('YBJK_MXSC_0027','YBJK_MXSC_0027_1','YBJK_MXSC_0028','YBJK_MXSC_0027_2') then --住院费用明细上传 --插入主项节点功能编码(data)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYMXSC,null from BM_YBJKZD where ZYMXSC in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYMXSC,null from BM_YBJKZD where ZYMXSC in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; end if; select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from BM_ZYCFMX_TEMP00 where ID0000=LS_ID0000; --医保发送变量赋值 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 ZY_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_BRXM00; LS_JKFSZ0:=LS_AAC003; update ZY_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); update ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then -- 行政区划 update ZY_YBJKMX set JKFSZ0=LS_aab301 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'clz550','工伤统一结算登记号',IN_GSDJH0,null,'3',null); insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae011','上传人',IN_DJRXM0,null,'1',null); insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'cle530','审核标志','1',null,'1',null); end if; --诊断明细开始 /* 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或症状表名称 */ select count(*) into LS_COUNT0 from BQ_BRZDXX where ZYID00=PZYID00; if nvl(LS_COUNT0,0)>0 then for C_ZDXX in CUR_BRZDXX loop LS_JSOSTR:=''; LS_BKE301:='02'; --诊断或症状类型 01:门诊 02:入院03:出院04:病理诊断 if C_ZDXX.ZDLB00='3' then LS_BKE302:='01'; --诊断或症状序号 01:主要、主病 02:次要、主症、其它 03:第三等 else LS_BKE302:='02'; end if; if nvl(SF_XT_TYZD00('医保新接口参数设置','change_zdbm_ssbm'),'0') = '1' then begin select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from xt_ICD900 B where B.ICD900=C_ZDXX.ZDM000 and nvl(B.SYBZ00,'1')='1'; exception when others then LS_DYBZBM:=C_ZDXX.ZDM000; LS_DYJBMC:=C_ZDXX.ZDMC00; end; LS_BKE087:=substrb(nvl(LS_DYBZBM,C_ZDXX.ZDM000),1,50); --诊断或症状编码 y 见icd-10或症状表编码 LS_BKE088:=substrb(nvl(LS_DYJBMC,C_ZDXX.ZDMC00),1,100);--诊断或症状名称 y 见icd-10或症状表名称 else LS_BKE087:=substrb(C_ZDXX.ZDM000,1,50); --诊断或症状编码 y 见icd-10或症状表编码 LS_BKE088:=substrb(C_ZDXX.ZDMC00,1,100);--诊断或症状名称 y 见icd-10或症状表名称 end if; 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 ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'zdlist','data','zdlist','诊断明细',null,null,'1',null,LS_JSOSTR from dual; end loop; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'zdlist','data','zdlist','诊断明细',null,null,'1',null,'' from dual; end if; --诊断明细结束 insert into ZY_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) select LS_YBJKID as YBJKID , LS_ID0000 as JKMXID, LS_YBJKID as BKE162, --his处方号 varchar2(20) SQ_ZY_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(trim(A.XMGG00),1,20) as AKA074, --规格型号 varchar2(50) --'000' as AKA070, --剂型 varchar2(3) nvl(trim(a.JX0000),'000') as AKA070, --剂型 decode(a.FLAG00,'0',substrb(trim(A.XMDW00),1,20), decode(LS_YPDWSFFSYBBM,'1',substrb(SF_XT_GETYPYBDW(trim(a.XMDW00),'2'),1,20),substrb(trim(A.XMDW00),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) n 药品类项目必填 substrb(nvl(trim(A.YPYL00),'1'),1,5) as AKA071, nvl(trim(A.YPPL00),'9999') as AKA072, --使用频次 varchar2(5) n 药品类项目必填 --''as AKA073, --给药途径 varchar2(5) n 药品类项目必填 trim(a.GYTJ00) as AKA073, --给药途径 nvl(trim(A.CZRQ00), LS_CZRQ00) as AKC221,--akc221 处方日期 number(8) trim(A.YPTS00) as AKC229, --akc229 执行天数 number(4,1) LS_AKF001 as AKF001, --akf001 科室编码 varchar2(50) LS_AKF002 as AKF002, --akf002 科室名称 varchar2(50) LS_BKF237 as BKF237, --bkf237 his内部科室编码 varchar2(50) LS_BKF238 as BKF238, --bkf238 his内部科室名称 varchar2(50) nvl(trim(YSXM00),LS_BKC006) as BKC006, --bkc006 医生姓名 nvl(trim(YSZJHM),LS_BKC007) as BKC007, --bkc007 医生证件编码 substrb(A.SFYB00,1,2) 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, nvl(to_char(A.SFXMID),trim(A.XMBH00)) as BKE181,--HIS院内项目编码 trim(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:心理咨询师 null as BKE506,--单次用药单位 null as BKE507,--取药总量 null as BKE508,--取药总量单位 null as BKE509,--药量天数 a.BKEH83, --国家标准对应编码 a.BKEH05, --医保备用1 a.BKEH06, --医保备用2 a.BAKXML --HIS备用字段(xml格式)后续扩展 from BM_ZYCFMX_TEMP00 A where ID0000=LS_ID0000; if LS_YBJKFPLBCS = '1' then --医保发票是否发送名称, 1是0否 update ZY_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 not in ('Y') then --医保发票是否使用编号 Y:编码 N:明细 -- update ZY_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:取ZY_YBJKQD或ZY_YBJKQD 2:取ZY_YBJKMX或ZY_YBJKMX 默认:1 if LS_QDQZFS not in ('1') then --收费明细开始 ZY_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||'"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||'"bkeh83"'||':'||'"'||trim(C_CFMX.BKEH83)||'"'||',' ;--BKEH83:国家标准对应编码 LS_JSOSTR:=LS_JSOSTR||'"bkeh05"'||':'||'"'||trim(C_CFMX.BKEH05)||'"'||',' ;--BKEH05:医保备用1 LS_JSOSTR:=LS_JSOSTR||'"bkeh06"'||':'||'"'||trim(C_CFMX.BKEH06)||'"'||' ' ;--BKEH06:医保备用2 LS_JSOSTR:=LS_JSOSTR||'}'; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'mxlist','data','mxlist','收费明细',null,null,'1',null,LS_JSOSTR from dual; end loop; --收费明细结束 end if; elsif PJKCJBM in ('YBJK_MXZF_0030','YBJK_MXZF_0030_1') then --住院费用明细冲销 --插入主项节点功能编码(data)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYMXCX,null from BM_YBJKZD where ZYMXCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,ZYMXCX,null from BM_YBJKZD where ZYMXCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; end if; --医保发送变量赋值 --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号 LS_JKFSZ0:=LS_AKC190; update ZY_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 ZY_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 ZY_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 ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aab301' then -- 行政区划 update ZY_YBJKMX set JKFSZ0=LS_aab301 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'clz550','工伤统一结算登记号',IN_GSDJH0,null,'3',null); insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae011','作废人',IN_DJRXM0,null,'1',null); end if; elsif PJKCJBM in ('YBJK_ZYDJ_0007','YBJK_ZYDJ_0010') then --住院登记 --插入主项节点功能编码(data)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJ00,null from BM_YBJKZD where RYDJ00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJ00,null from BM_YBJKZD where RYDJ00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=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 ZY_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); update ZY_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_BRXM00; LS_JKFSZ0:=LS_AAC003; update ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='akc192' then -- 实际门诊/入院日期 number(14) y 若为空,默认取系统时间 if LS_YBRYRQ is not null then LS_AKC192 := LS_YBRYRQ; end if; LS_JKFSZ0:=LS_AKC192; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aae030' then -- 择日住院起始日期 number(8) n LS_JKFSZ0 := LS_AAE030; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aae031' then -- 择日住院截止日期 number(8) n LS_JKFSZ0 := LS_AAE031; update ZY_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 ZY_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_YBKSBM; LS_JKFSZ0:=LS_AAZ501; update ZY_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 := LS_AKA042; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'clz550','工伤统一结算登记号',IN_GSDJH0,null,'3',null); insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae011','登记人',IN_DJRXM0,null,'1',null); end if; elsif PJKCJBM in ('YBJK_ZYDJ_0009','YBJK_ZYDJ_0011') then --住院登记冲销 --插入主项节点功能编码(data)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJCX,null from BM_YBJKZD where RYDJCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJCX,null from BM_YBJKZD where RYDJCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=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 ZY_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); update ZY_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_BRXM00; LS_JKFSZ0:=LS_AAC003; update ZY_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 ZY_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 ZY_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 ZY_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 ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'clz550','工伤统一结算登记号',IN_GSDJH0,null,'3',null); insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aae011','作废人',IN_DJRXM0,null,'1',null); end if; --本功能主要应用于his建档时调用,参保人在医疗机构首次就诊时,需调用此服务进行身份认证,获取参保人基本信息。 --医保支持多渠道认证方式,目前仅开通读卡验证。其它刷脸、扫码及二维码等几种认证方式支持扩展,扩展的内容解释权归本地医保 elsif PJKCJBM in ('YBJK_YBDK_0001','YBJK_YBDK_0002','YBJK_YBDK_0003','YBJK_YBDK_0004') then --医保身份认证(f04.10.01.16) --插入主项节点功能编码(data)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJSK,null from BM_YBJKZD where RYDJSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJSK,null from BM_YBJKZD where RYDJSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; end if; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号 LS_JKFSZ0:=LS_AAZ500; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then --卡识别码 --LS_JKFSZ0:=LS_YBKSBM; LS_JKFSZ0:=LS_AAZ501; update ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名 --LS_JKFSZ0:=LS_BRXM00; LS_JKFSZ0:=LS_AAC003; update ZY_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 ZY_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)--从字典取值 if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then --工伤接口不发送aaz501及ectoken insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJSK,null from BM_YBJKZD where RYDJSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause','aaz501','ectoken') and JKBM00=1; else insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,50),null,null,RYDJSK,null from BM_YBJKZD where RYDJSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1; end if; --医保发送变量赋值 for C_YBFS in CUR_YBFSZX loop LS_JKFSZ0:='';--接口发送值 if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号 LS_JKFSZ0:=LS_AAZ500; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aaz501' then --卡识别码 --LS_JKFSZ0:=LS_YBKSBM; LS_JKFSZ0:=LS_AAZ501; update ZY_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 ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名 --LS_JKFSZ0:=LS_BRXM00; LS_JKFSZ0:=LS_AAC003; update ZY_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 ZY_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 ZY_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; if IN_GSDJH0 is not null and IN_GSDJH0 <>'0' then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) values (LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'clz550','工伤统一结算登记号',IN_GSDJH0,null,'3',null); end if; elsif PJKCJBM in ('YBJK_BASY_0032') then -- 住院病案首页上传yb04.07.04.03 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保住院号',null,null,'2',null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke050','His病案流水号',null,null,'2',null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke299','医保病案流水号',null,null,'2',null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke147','门诊病案号',null,null,'2',null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'aaz500','社会保障卡号',null,null,'2',null from dual; SP_ZY_BASYFS_NEWYBJK(LS_YBJKID,PZYID00,PCZY000,LS_BAID00,PERRMSG); if PERRMSG is null then --成功 --写入data数据 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00, JKFSZ0,JKFHZ0,FSLXBZ,BZ0000, VALUE0,ZDLX00) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(FSZDM0,1,50),ZDMC00, decode(sign(lengthb(VALUE0)-250),1,null,substrb(VALUE0,1,250)),null,1,null, decode(sign(lengthb(VALUE0)-250),1,'"'||FSZDM0||'":"'||VALUE0||'"',null), decode(sign(lengthb(VALUE0)-250),1,9,null) from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=1 and MXJKBH is null; --各种列表数据 for C_BASY in (select FSZDM0,ZDMC00,MXJKBH from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=1 and MXJKBH is not null) loop LS_INDEX0 := 0; --列表数据内数据个数(按序号) for C_BASY_INDEX in (select XH0001 from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=C_BASY.MXJKBH group by XH0001) loop LS_JSOSTR:=' '; --组合数据列表 for C_BASY_LIST in (select VALUE0,PXXH00,FSZDM0 from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=C_BASY.MXJKBH and XH0001=C_BASY_INDEX.XH0001) loop if LS_JSOSTR = ' ' then LS_JSOSTR:=LS_JSOSTR||'"'||C_BASY_LIST.FSZDM0||'":"'||trim(C_BASY_LIST.VALUE0)||'"'; else LS_JSOSTR:=LS_JSOSTR||',"'||C_BASY_LIST.FSZDM0||'":"'||trim(C_BASY_LIST.VALUE0)||'"'; end if; end loop; LS_JSOSTR:='{'||LS_JSOSTR||'}'; LS_INDEX0 := LS_INDEX0 + 1; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,C_BASY.FSZDM0,'data',C_BASY.FSZDM0,C_BASY.ZDMC00,null,null,'1',null,LS_JSOSTR from dual; end loop; if LS_INDEX0 = 0 then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,C_BASY.FSZDM0,'data',C_BASY.FSZDM0,C_BASY.ZDMC00,null,null,'1',null,'' from dual; end if; end loop; end if; elsif PJKCJBM in ('YBJK_BASY_0033') then -- 住院病案首页冲销yb04.07.04.04 --返回值 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke299','医保病案作废流水号',null,null,'2',null from dual; --查找要冲销病案号 select YBBALSH01 into LS_BKE299 from ZY_BASYXX where ZYID00=PZYID00 and FSCGBZ = 1; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保流水号',LS_AKC190,null,1,null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bke299','医保病案流水号',LS_BKE299,null,'1',null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'bae016','作废原因','撤销病案首页发送',null,'1',null from dual; elsif PJKCJBM in ('YBJK_CDRG_0000') then -- 住院C-DRG病案数据上传sm04.07.04.09 LS_SQLTXT := 'begin SP_ZY_CDRGFS_XYBJK0_JHMK(:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8); end;'; execute immediate LS_SQLTXT using in LS_YBJKID,in PZYID00,in PCZY000,in LS_JZDH00,out LS_BAID00,in LS_YBZYH0,in '0',out PERRMSG; --SP_EXECUTE_SQL('SP_ZY_CDRGFS_XYBJK0_JHMK('||to_char(LS_YBJKID)||','||to_char(PZYID00)||','||to_char(PCZY000)||','||to_char(LS_JZDH00)||','||to_char(LS_BAID00)||',''0'''||')'); --SP_ZY_CDRGFS_XYBJK0_JHMK(LS_YBJKID,PZYID00,PCZY000,LS_JZDH00,LS_BAID00,LS_YBZYH0,'0',PERRMSG); if PERRMSG is null then --成功 --写入data数据 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,substrb(FSZDM0,1,50),ZDMC00,substrb(VALUE0,1,50),null,1,null from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=1 and MXJKBH is null; --各种列表数据 for C_BASY in (select FSZDM0,ZDMC00,MXJKBH from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=1 and MXJKBH is not null) loop LS_INDEX0 := 0; --列表数据内数据个数(按序号) for C_BASY_INDEX in (select XH0001 from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=C_BASY.MXJKBH group by XH0001) loop LS_JSOSTR:=' '; --组合数据列表 for C_BASY_LIST in (select VALUE0,PXXH00,FSZDM0 from ZY_BASYFS where ID0000=LS_BAID00 and JKBH00=C_BASY.MXJKBH and XH0001=C_BASY_INDEX.XH0001) loop if LS_JSOSTR = ' ' then LS_JSOSTR:=LS_JSOSTR||'"'||C_BASY_LIST.FSZDM0||'":"'||trim(C_BASY_LIST.VALUE0)||'"'; else LS_JSOSTR:=LS_JSOSTR||',"'||C_BASY_LIST.FSZDM0||'":"'||trim(C_BASY_LIST.VALUE0)||'"'; end if; end loop; LS_JSOSTR:='{'||LS_JSOSTR||'}'; LS_INDEX0 := LS_INDEX0 + 1; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,C_BASY.FSZDM0,'data',C_BASY.FSZDM0,C_BASY.ZDMC00,null,null,'1',null,LS_JSOSTR from dual; end loop; if LS_INDEX0 = 0 then insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,C_BASY.FSZDM0,'data',C_BASY.FSZDM0,C_BASY.ZDMC00,null,null,'1',null,'' from dual; end if; end loop; end if; elsif PJKCJBM in ('YBJK_CDRG_0001') then --住院C-DRG住院病案数据作废sm04.07.04.10 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'request','request','TRUE',null,1,null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'zylsh0','医保住院流水号',LS_YBZYH0,null,1,null from dual; insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'cardno','卡号',LS_YBKH00,null,1,null from dual; end if; if PCOMMIT='Y' then commit; 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;