-- Start of DDL Script for Procedure SD_HOSPITAL.SP_ZY_NEWYBJK_YBJKRZ -- Generated 2020-08-05 16:52:14 from SD_HOSPITAL@ESTAR-HRP 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 --输出:错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2019.10.22 created by ZYSF-20191022-004 --zhangyc 2019.10.23 增加从请求报文中获取姓名 by ZYSF-20191023-001 --zhangyc 2019.10.24 新医保接口改造 by ZYSF-20191024-002 --zhangyc 2019.10.25 入院登记、入院登记冲销 by ZYSF-20191025-001 --zhangyc 2019.10.27 住院接口修改 by ZYSF-20191028-002 --qiulf 2019.10.28 增加病案首页发送 by ZYSF-20191028-001 --zhangyc 2019.10.29 住院费用结算修改 by ZYSF-20191030-001 --zhangyc 2019.10.30 修改住院重新报错 by ZYSF-20191030-003 --zhangyc 2019.10.30 修改YBDZZT 医保对账状态 1:对账成功 0:对账失败 null未对账 by ZYSF-20191030-005 --qiulf 2019.10.31 增加病案首页冲销 by ZYSF-20191031-003 --zhangyc 2019.11.11 新医保接口优化 by ZYSF-20191111-001 --zhangyc 2019.11.19 修改医保卡号赋值错误 by ZYSF-20191119-002 --zhangyc 2019.12.04 增加入参AAC002(身份证号)by ZYSF-20191205-002 --zhangyc 2019.12.11 接口优化 by ZYSF-20191211-004 --zhangyc 2019.12.13 修改aka063、bke046 取值方法、处方日期为空默认为当天 by ZYSF-20191214-001 --qiulf 2019.12.13 修改病案首页发送为空JSON的问题 by ZYSF-20191214-002 --qiulf 2019.12.16 1、排序字段选择错误造成报文列表内容出错,把排序字段PHXH00要改成XH0001 2、ZY_BASYFS增加一个YBJKID字段来记录医保接口ID by ZYSF-20191216-001 --zhangyc 2019.12.16 修改发票名称过长报错 by ZYSF-20191217-001 --zhangyc 2019.12.21 增加解析结算截止日期:JSJZRQ赋值给bkc014 by ZYSF-20191221-002 --qiulf 2019.12.24 病案首页发送列表为空不增加默认列 by ZYSF-20191223-001 --zhangyc 2019.12.24 增加从表XT_YYXX00 获取医保授权码和密码 by ZYSF-20191225-002 --zhangyc 2019.12.28 修正BKE301、bke302 by ZYSF-20191230-001 --zhangyc 2019.12.30 修改诊断太长报错BKE088 by ZYSF-20191230-004 --zhangyc 2019.12.31 修正BKA542_MC写入太短 by ZYSF-20191231-001 --zhangyc 2020.01.10 修改出院日期AKC194用函数SF_ZY_HQRYCYRQ 参数控制ZY_NHBRSFFSCYDJRQ控制 by ZYSF-20200107-001 --zhangyc 2020.01.13 如果LS_AAC002为空并且该病人身份证号不为空时,AAC002按身份证赋值 by ZYSF-20200113-001 --zhangyc 2020.01.14 病人诊断为空时费用明细上传需要发送"zdlist": [] 诊断参数BQ_YBCYSFBXLRCYZD by ZYSF-20200114-002 --zhangyc 2020.02.18 修改参数SF_MZSFYSZJHM=N时,bkc006或bkc007发送空值 by ZYSF-20200217-002 --zhangyc 2020.03.03 增加amc020,amc026,amc028,amc029,bmc041 取值LS_SYFMRQ,LS_SYSSLB,LS_TESL00,LS_JHSYSS,LS_SYHYTS by ZYSF-20200303-001 --zhangyc 2020.03.04 增加LS_BZBMLB=A:生育病种 代码转化 by ZYSF-20200304-001 --zhangyc 2020.03.06 增加获取怀孕天数:ZY_BRXXB0.HYTS00 by ZYSF-20200306-001 --zhangyc 2020.03.20 厦门新医保接口改造:bkf237:医保科室编码 akf001:his挂号科室 、bke042:his流水号取挂号ID(挂号、明细上传、费用结算保存一致)、退费冲销增加节点aka130 医疗类别 bke042 his流水号 bkee70:his退费流水号 by ZYSF-20200323-002 --zhangyc 2020.03.25 aka070剂型空着默认000(无) by ZYSF-20200326-002 --zhangyc 2020.04.01 由于厦门医保未返回:统筹基金总额bkc102顾增加参数TCJJQZFS=Y取统筹基金总额bkc102 =N取统筹基金bkc045 by ZYSF-20200402-002 --zhangyc 2020.04.21 nvl(A.SFXMID,trim(A.XMBH00))-->nvl(to_char(A.SFXMID),trim(A.XMBH00)) by ZYSF-20200422-001 --zhangyc 2020.05.21 卡识别码根据参数设置获取 by MZSF-20200521-001 --qiulf 2020.05.26 增加厦门医保工伤登记 by ZYSF-20200525-005 --zhangyc 2020.06.06 增加功能编码YBJK_ZYSF_RYTX00:入院提醒功能 by ZYSF-20200610-001 --zhangyc 2020.06.11 按最新医保文档,增加参数yyksbmfslx控制(akf001、bkf237)发送值,默认:akf001:医保编码bkf237:院内编码 by ZYSF-20200611-001 --zhangyc 2020.06.12 日志表增加AAC066、AAC066_MC、BKE042、BKEE70、BKE050、BKE299、BKC160、BKC134、BKE856、BKC053、BKC054 by ZYSF-20200612-002 -- --------- ---------- ------- LS_COUNT0 number(12,2); LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_FUNID varchar2(100);--功能编码 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 varchar2(50);--病人姓名 LS_YBKH00 BM_BRXXB0.YBKH00%type; --医保卡号 LS_YBID00 BM_BRXXB0.YBID00%type; --医保ID LS_BRZJBH BM_BRXXB0.BRZJBH%type; --病人证件号码 LS_YBKSBM BM_BRXXB0.YBKSBM%type; --医保卡识别码 LS_BRCSRQ BM_BRXXB0.BRCSRQ%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_MZZYBZ varchar2(1);--门诊住院标识 0:门诊 1:住院 LS_TSBZBH varchar2(50);--病情编码 LS_JZDH00 ZY_JZB000.JZDH00%type;--结账单号 LS_YBDJH0 ZY_JZB000.YBDJH0%type;--医保单据号 LS_CXJZDH ZY_JZB000.JZDH00%type;--冲销结账单号 LS_MKLXMC SF_YBJKRZ.MKLXMC%type;--模块类型名称 LS_AKA078 varchar2(50);--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊 LS_BKE241 varchar2(50);--数据来源 LS_BKE298 varchar2(50);--HIS收费单据流水号 LS_AKA130 varchar2(50);--医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院 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_XB0000 ZY_BRXXB0.XB0000%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_DQBQMC BM_BMBM00.BMMC00%type;--挂号科室名称 LS_DQKS00 ZY_BRXXB0.DQKS00%type;--当前科室编码 LS_DQKSMC BM_BMBM00.BMMC00%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_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(30);--特殊病种编码 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_BKE284 varchar2(50);--身份认证类型 身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证 LS_BKE078 varchar2(50); --离院方式 LS_BKE299 varchar2(20);--医保病案流水号 LS_AKC192 varchar2(50);--实际门诊/入院日期 LS_AAE030 varchar2(50);--择日住院起始日期 LS_AAE031 varchar2(50);--择日住院截止日期 LS_AKF001 varchar2(50);--标准科室编码 LS_AKF002 varchar2(50);--标准科室名称 LS_AAE072 varchar2(50);--医保单据号 LS_AKC194 varchar2(50);--出院日期yyyymmddhhmmss LS_BKF237 varchar2(50);--his内部科室编码(医保科室编码) LS_BKF238 varchar2(50);--his内部科室名称 LS_AAC004 varchar2(10);--性别 1:男 2:女 9:未知 --接口请求入参参数 IN_CARDNO varchar2(50);--医保卡号 IN_YBID00 varchar2(30);--医保ID IN_BRXM00 varchar2(50);--病人姓名 IN_AAC002 varchar2(50);--身份证号 IN_RYRQ00 varchar2(30);--入院日期 IN_RYSJ00 varchar2(30);--入院时间 IN_RYDJRQ varchar2(30);--入院登记日期 IN_RYDJSJ varchar2(30);--入院登记时间 IN_ZYQSRQ varchar2(30);--择日住院起始日期 IN_ZYJZRQ varchar2(30);--择日住院截止日期 IN_RYLB00 varchar2(30);--入院类别 IN_RYKSMC varchar2(50);--入院科室 IN_YSZJHM varchar2(50);--医生证件号 IN_GSDJH0 varchar2(50);--工伤登记号 IN_DBZBM0 varchar2(50);--单病种编码 IN_KSBM00 varchar2(50);--科室编码 IN_YBZYH0 varchar2(30);--医保住院号号 IN_YBDJH0 varchar2(30);--医保单据号 IN_JSJZRQ varchar2(30);--结算截止日期 LS_BRLBBH varchar2(10);--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 LS_YBZXLB IC_YBBRLB.YBZXLB%type;--医保中心名称 LS_TSBZFL BM_TSBZB0.TSBZFL%type;--病种分类 0:特殊病种 1:生育病种 2:单病种 LS_YYID00 ZY_YBJKRZ.YYID00%type; --医院ID LS_INDEX0 number(5); --下标 LS_MZSFYSZJHM XT_XTCS00.VALUE0%type; --医生姓名是否改为医生证件号参数 LS_YBHDJE BM_DBZDEB.YBHDJE%type;--单病种定额 LS_DBZMC0 BM_DBZDEB.DBZMC0%type;--单病种名称 LS_BZBMLB BM_DBZDEB.BZBMLB%type;--病种类别 0:单病种 1:精准扶贫 A:生育病种 LS_JHSYSS ZY_BRXXB0.JHSYSS%type;--计划生育手术 BM_TYZD00.ZDMC00=计划生育手术类别 LS_SYSSLB ZY_BRXXB0.SYSSLB%type;--手术生育类别 BM_TYZD00.ZDMC00=手术生育类别 LS_SYFMRQ ZY_BRXXB0.SYFMRQ%type;--分娩日期 LS_TESL00 ZY_BRXXB0.TESL00%type;--胎儿数量 LS_SYHYTS varchar2(10); --怀孕天数 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_BKC006 varchar2(50);--医疗服务人员姓名 LS_BKC007 varchar2(50);--医疗服务人员证件号码 LS_TYZDCS_AAZ501 varchar2(50);--通用字典卡识别码参数 LS_FUNCMC BM_TYCJBM.FUNCMC%type; --新医保功能点编码 LS_GSYBBM BM_TYCJBM.GSYBBM%type; --新医保工伤功能点编码 LS_aae011 varchar2(50); --工伤登记人姓名 LS_YYKSBMFSLX varchar2(50);--新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0 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 --医保发票是否使用编号 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; ---医保收费结算时,处方明细信息中的医生姓名是否改为医生证件号 Y:是 N:否 默认为N begin select trim(value0) into LS_MZSFYSZJHM from XT_XTCS00 where name00='SF_MZSFYSZJHM'; exception when others then LS_MZSFYSZJHM:='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_TYZDCS_AAZ501:=substrb(SF_SF_TYZD00('医保新接口参数设置','aaz501'),1,50);--卡识别码(通用字典参数) if LS_TYZDCS_AAZ501 in ('Y','N') then LS_TYZDCS_AAZ501:=''; end if; LS_YYKSBMFSLX:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','yyksbmfslx'),1,50),'0');--新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0 IN_CARDNO:='';--医保卡号 IN_YBID00:='';--医保ID IN_BRXM00:='';--病人姓名 IN_RYRQ00:='';--入院日期 IN_RYSJ00:='';--入院时间 IN_RYDJRQ:='';--入院登记日期 IN_RYDJSJ:='';--入院登记时间 IN_ZYQSRQ:='';--择日住院起始日期 IN_ZYJZRQ:='';--择日住院截止日期 IN_RYLB00:='';--入院类别 IN_RYKSMC:='';--入院科室 IN_DBZBM0:='';--单病种编码 IN_KSBM00:='';--科室编码 select SQ_ZY_YBJKRZ_YBJKID.nextval into LS_YBJKID from dual; PYBJKID:=LS_YBJKID; LS_JKCJBM:=PJKCJBM; LS_COUNT0:=0; 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:='50';--数据来源:50:收费终端 51:自助终端 52:医生工作站 53:移动支付 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'; --离院方式bke078:01:医嘱离院02:医嘱转院03:医嘱转社区卫生服务机构/乡镇卫生院04:非医嘱离院05:死亡09:其他 LS_BRLBBH:='0';--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 LS_TSBZFL:='';--病种分类 0:特殊病种 1:生育病种 2:单病种 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 门诊超限全自费 --厦门医保 bke042:his流水号 挂号、明细上传、结算保存一致 if nvl(PZYID00,0)>0 and LS_HISLSHQZFS not in ('Y') then LS_BKE042:=PZYID00; end if; begin select substrb(CJMC00,1,30)CJMC00,substrb(FUNCMC,1,100),substrb(GSYBBM,1,100) into LS_YBJKMC, LS_FUNCMC,LS_GSYBBM from BM_TYCJBM where CJBM00=LS_JKCJBM; exception when others then LS_YBJKMC:=null; LS_FUNCMC:=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,A.YYID00 into LS_USR000,LS_PWD000,LS_YYID00 from BM_BMBM00 A,XT_YYXX00 B where A.YYID00=B.YYID00 and A.BMBH00=PCZYKS0; exception when others then LS_USR000:='';--医保接口_登录用户名 LS_PWD000:='';--医保接口_登录密码 LS_YYID00:='0';--医院ID end; end if; if LS_YYID00 is null or LS_YYID00 in ('0') then LS_YYID00:=SF_SF_GETYYID00();--医院ID end if; --根据YYID取值 if LS_USR000 is null then begin select B.YBYHBM,B.YBYHMM into LS_USR000,LS_PWD000 from XT_YYXX00 B where B.YYID00=LS_YYID00 ; 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.YBKSBM,A.BRCSRQ into LS_YBKH00, LS_YBID00,LS_BRZJBH,LS_BRXM00,LS_YBKSBM,LS_BRCSRQ 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.XB0000,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,E.YBZXLB,C.BMMC00 as DQBQMC, D.BMMC00 as DQKSMC, A.JHSYSS,A.SYSSLB,A.SYFMRQ,A.TESL00,A.HYTS00 into LS_XB0000,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_YBZXLB,LS_DQBQMC,LS_DQKSMC, LS_JHSYSS,LS_SYSSLB,LS_SYFMRQ,LS_TESL00,LS_SYHYTS from ZY_BRXXB0 A,BM_BMBM00 C,BM_BMBM00 D,IC_YBBRLB E where 1=1 and A.DQBQ00 = C.BMBH00 and A.DQKS00 = D.BMBH00 and A.FBBH00 = E.FBBH00 and A.YBLB00 = E.YBLB00 and A.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); --医生证件编码 begin Select substrb(ZWXM00,1,50),substrb(YSZJHM,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_FUNCMC;--功能编码 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; LS_aae011:=trim(substrb(SF_ZY_GETXMLNOTE('DJRXM0',LS_HISCS0),1,50));--工伤登记人姓名 end if; --请求入参报文解析--begin-- LS_MKLXMC:=substrb(SF_ZY_GETXMLNOTE('MKLXMC',LS_HISCS0),1,50); --MKLXMC:模块名称 IN_CARDNO:=trim(substrb(SF_ZY_GETXMLNOTE('CARDNO',LS_HISCS0),1,30));--CARDNO:请求入参卡号 if IN_CARDNO='0' then IN_CARDNO:=''; end if; IN_YBID00:=trim(substrb(SF_ZY_GETXMLNOTE('YBID00',LS_HISCS0),1,30));--YBID00:请求入参医保ID if IN_YBID00='0' then IN_YBID00:=''; end if; IN_BRXM00:=trim(substrb(SF_ZY_GETXMLNOTE('BRXM00',LS_HISCS0),1,50));--BRXM00:病人姓名 if trim(LS_BRXM00) is null then LS_BRXM00:=IN_BRXM00; end if; IN_AAC002:=trim(substrb(SF_ZY_GETXMLNOTE('AAC002',LS_HISCS0),1,50));--身份证号 IN_RYRQ00:=trim(substrb(SF_ZY_GETXMLNOTE('RYRQ00',LS_HISCS0),1,30));--RYRQ00:入院日期 IN_RYSJ00:=trim(substrb(SF_ZY_GETXMLNOTE('RYSJ00',LS_HISCS0),1,30));--RYSJ00:入院时间 IN_RYDJRQ:=trim(substrb(SF_ZY_GETXMLNOTE('RYDJRQ',LS_HISCS0),1,30));--RYDJRQ:入院登记日期 IN_RYDJSJ:=trim(substrb(SF_ZY_GETXMLNOTE('RYDJSJ',LS_HISCS0),1,30));--RYDJSJ:入院登记时间 IN_ZYQSRQ:=trim(substrb(SF_ZY_GETXMLNOTE('ZYQSRQ',LS_HISCS0),1,30));--ZYQSRQ:择日住院起始日期 IN_ZYJZRQ:=trim(substrb(SF_ZY_GETXMLNOTE('ZYJZRQ',LS_HISCS0),1,30));--ZYJZRQ:择日住院截止日期 IN_RYLB00:=trim(substrb(SF_ZY_GETXMLNOTE('RYLB00',LS_HISCS0),1,30));--RYLB00:入院类别 IN_RYKSMC:=trim(substrb(SF_ZY_GETXMLNOTE('RYKSMC',LS_HISCS0),1,50));--RYKSMC:入院科室 IN_DBZBM0:=trim(substrb(SF_ZY_GETXMLNOTE('DBZBM0',LS_HISCS0),1,50));--DBZBM0:单病种编码 IN_KSBM00:=trim(substrb(SF_ZY_GETXMLNOTE('KSBM00',LS_HISCS0),1,50));--KSBM00:科室编码 IN_YBZYH0:=trim(substrb(SF_ZY_GETXMLNOTE('YBZYH0',LS_HISCS0),1,30));--YBZYH0:医保住院号 IN_YBDJH0:=trim(substrb(SF_ZY_GETXMLNOTE('YBDJH0',LS_HISCS0),1,30));--YBDJH0:医保单据号 IN_YSZJHM:=trim(substrb(SF_ZY_GETXMLNOTE('YSZJHM',LS_HISCS0),1,50));--医生证件号 LS_TSBZBH:=trim(substrb(SF_ZY_GETXMLNOTE('TSBZBH',LS_HISCS0),1,30)); --病种编码 LS_MXLSH0:=trim(substrb(SF_ZY_GETXMLNOTE('MXLSH0',LS_HISCS0),1,50));--明细流水号 LS_XMFSBZ:=trim(substrb(SF_ZY_GETXMLNOTE('XMFSBZ',LS_HISCS0),1,50));--项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCFMX_TEMP00 LS_ID0000:=trim(substrb(SF_ZY_GETXMLNOTE('ID0000',LS_HISCS0),1,50));--中间表ID LS_SFYJS0:=trim(substrb(SF_ZY_GETXMLNOTE('SFYJS0',LS_HISCS0),1,50));--是否预结算 'Y':是预结算,'N':不是预结算 LS_JSTYPE:=trim(substrb(SF_ZY_GETXMLNOTE('JSTYPE',LS_HISCS0),1,50));--结算类型 0:正常结算 1:中途结算 2:年度结算 LS_JKLXBM:=trim(substrb(SF_ZY_GETXMLNOTE('JKLXBM',LS_HISCS0),1,50));--接口类型 -1无 0普通医保 1生育医保 2:工伤 3保健医保 IN_JSJZRQ:=trim(substrb(SF_ZY_GETXMLNOTE('JSJZRQ',LS_HISCS0),1,30));--结算截止日期(BKC014) if IN_JSJZRQ is not null then LS_BKC014:=IN_JSJZRQ;--实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期) end if; --获取卡识别码(基本信息表卡识别码为空请求报文中获取) if LS_YBKSBM is null then LS_YBKSBM:=substrb(SF_ZY_GETXMLNOTE('CARSBM',LS_HISCS0),1,50); end if; --解析报文中结账单号 begin LS_JZDH00:=to_number(SF_ZY_GETXMLNOTE('JZDH00',LS_HISCS0)); exception when others then LS_JZDH00:=0; end; --解析报文中冲销结账单号 begin LS_CXJZDH:=to_number(SF_ZY_GETXMLNOTE('CXJZDH',LS_HISCS0)); exception when others then LS_CXJZDH:=0; end; --请求入参报文解析--end-- LS_AAZ501:=LS_YBKSBM;---卡识别码 LS_BKZ543:=null;--二维码 --LS_AAZ500 社会保障卡号 if trim(IN_CARDNO) not in ('0') and trim(IN_CARDNO) is not null then LS_AAZ500:=trim(IN_CARDNO); 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; --LS_AAC002 医保ID或身份证 if trim(IN_YBID00) not in ('0') and trim(IN_YBID00) is not null then LS_AAC002:=trim(IN_YBID00); else if trim(LS_YBID00) not in ('0') and trim(LS_YBID00) is not null then LS_AAC002:=trim(LS_YBID00); end if; end if; --身份证或社保卡号 if trim(LS_AAC002) is null and trim(IN_AAC002) is not null then LS_AAC002:=trim(IN_AAC002); end if; --20200113 社会保障号为空,身份证不为空,发身份证号码 if (trim(LS_AAC002) is null or trim(LS_AAC002) in ('0')) and (trim(LS_BRZJBH) not in ('0') and trim(LS_BRZJBH) is not null) then LS_AAC002:=trim(LS_BRZJBH); end if; if LS_XB0000='男' then LS_AAC004:='1';--性别 1:男 2:女 9:未知 elsif LS_XB0000='女' then LS_AAC004:='2';--性别 1:男 2:女 9:未知 else LS_AAC004:='9';--性别 1:男 2:女 9:未知 end if; LS_AAC003:=trim(LS_BRXM00);--LS_AAC003 病人姓名 LS_AKC192:=nvl(IN_RYRQ00,to_char(sysdate,'YYYYMMDD'));--实际门诊/入院日期 LS_AKC192:=LS_AKC192||to_char(sysdate,'HH24MISS');--格式为:yyyymmddhh24miss LS_AAE030:=IN_ZYQSRQ; --择日住院起始日期 LS_AAE031:=IN_ZYJZRQ; --择日住院截止日期 if LS_YYKSBMFSLX='1' then --新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0 LS_AKF001:=substrb(nvl(LS_DQKS00,LS_DQBQ00),1,50); --院内编码 LS_BKF237:=substrb(nvl(IN_KSBM00,LS_YYKSBM),1,50);--医保编码 else LS_AKF001:=substrb(nvl(IN_KSBM00,LS_YYKSBM),1,50);--医保编码 LS_BKF237:=substrb(nvl(LS_DQKS00,LS_DQBQ00),1,50); --院内编码 end if; LS_AKF002:=substrb(nvl(IN_RYKSMC,LS_DQKSMC),1,50);--标准科室名称 LS_BKF238:=substrb(nvl(LS_DQKSMC,LS_DQBQMC),1,50);--his内部科室名称 --病种分类 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_DBZBM0 is not null then begin select YBHDJE,DBZMC0,BZBMLB into LS_YBHDJE,LS_DBZMC0,LS_BZBMLB from BM_DBZDEB where trim(DBZBM0)=LS_DBZBM0 and YBZXLB=SF_ZY_SFQYDBZJK(PZYID00); exception when others then LS_YBHDJE:=0; LS_DBZMC0:=null; LS_BZBMLB:=null; end; end if; if trim(LS_DBZBM0) is not null or trim(IN_DBZBM0) is not null or LS_TSBZFL in ('2') then --单病种优先级最高 LS_BRLBBH:='4';--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 else if LS_JKLXBM in ('1') or LS_TSBZFL in ('1') or LS_RYLB00 in ('生育','生育实时刷卡住院','机关事业生育实时刷卡','企业生育实时刷卡') or in_RYLB00 in ('生育','生育实时刷卡住院','机关事业生育实时刷卡','企业生育实时刷卡') or instrb(LS_RYLB00,'生育')>0 or instrb(in_RYLB00,'生育')>0 then LS_BRLBBH:='1';--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 elsif LS_JKLXBM in ('2') or LS_RYLB00 in ('工伤') or in_RYLB00 in ('工伤') or (IN_GSDJH0 is not null and IN_GSDJH0 <>'0') then LS_BRLBBH:='2';--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 elsif LS_RYLB00 in ('择日住院') or in_RYLB00 in ('择日住院') then LS_BRLBBH:='5';--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 end if; end if; --LS_BZBMLB 病种类别 0:单病种 1:精准扶贫 A:生育病种 if LS_BZBMLB in ('A') then LS_BRLBBH:='1';--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 end if; --LS_JKLXBM 接口类型 -1无 0普通医保 1生育医保 2:工伤 3保健医保 --入院类别:普通、家庭病床、择日住院、生育、工伤、生育实时刷卡住院、其他 --医疗就诊方式aka078: 10:门(急)诊 20:住院 40:药店购药 60:体检 81:生育门诊 82:生育住院 91:工伤门诊 92:工伤住院 LS_AKA078:=SF_ZY_GETYBSXZD(PZYID00,LS_MZZYBZ,'aka078',LS_TSBZBH,nvl(LS_BRLBBH,'0'),nvl(LS_DBZBM0,IN_DBZBM0)); --医疗就诊方式 --医疗类别aka130:11:普通门诊 12:急诊 13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 31:家庭病床 34:按病种住院 42:处方购药 43:非处方购药 A1:体检 52:生育住院 LS_AKA130:=SF_ZY_GETYBSXZD(PZYID00,LS_MZZYBZ,'aka130',LS_TSBZBH,nvl(LS_BRLBBH,'0'),nvl(LS_DBZBM0,IN_DBZBM0)); --医疗类别 --数据来源bke241: 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_BKE241:=SF_ZY_GETYBSXZD(PBRID00,LS_MZZYBZ,'bke241',LS_TSBZBH,nvl(LS_BRLBBH,'0'),nvl(LS_DBZBM0,IN_DBZBM0)); --身份认证类型bke284:01:读卡 02:融合码 06:医保码 20:医疗证 LS_BKE284:=SF_ZY_GETYBSXZD(PBRID00,LS_MZZYBZ,'bke284',LS_TSBZBH,nvl(LS_BRLBBH,'0'),nvl(LS_DBZBM0,IN_DBZBM0)); --离院方式bke078:01:医嘱离院02:医嘱转院03:医嘱转社区卫生服务机构/乡镇卫生院04:非医嘱离院05:死亡09:其他 LS_BKE078:=SF_ZY_GETYBSXZD(PBRID00,LS_MZZYBZ,'bke284',LS_TSBZBH,nvl(LS_BRLBBH,'0'),nvl(LS_DBZBM0,IN_DBZBM0)); --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'; LS_BKE078:='09';--离院方式bke078:01:医嘱离院02:医嘱转院03:医嘱转社区卫生服务机构/乡镇卫生院04:非医嘱离院05:死亡09:其他 elsif PJKCJBM in ('YBJK_TYSF_0021_2') or LS_JSTYPE in ('1') then --中途结算 LS_BKE286:='1'; LS_BKE078:='09';--离院方式bke078:01:医嘱离院02:医嘱转院03:医嘱转社区卫生服务机构/乡镇卫生院04:非医嘱离院05:死亡09:其他 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_TSBZBH;--特殊病种编码 end if; --实际门诊/入院日期 LS_AKC192:=LS_AKC192; -- LS_AKC194 varchar2(50);--出院日期yyyymmddhhmmss if LS_CYRQ00 is null or LS_CYRQ00 in ('20991231') then LS_AKC194:=to_char(sysdate,'YYYYMMDD'); else LS_AKC194:=LS_CYRQ00; end if; LS_AKC194:=substrb(SF_ZY_HQRYCYRQ(PZYID00,LS_AKC194,1),1,8);--出院日期转化 LS_AKC194:=LS_AKC194||to_char(sysdate,'HH24MISS');--出院日期格式转化(yyyymmddhhmmss) --如果入参数有传 单据号按前台赋值(AAE072:医保单据号) if trim(IN_YBDJH0) is not null and trim(IN_YBDJH0) not in ('0') then LS_AAE072:=trim(IN_YBDJH0); end if; LS_AAZ501:=nvl(LS_AAZ501,LS_TYZDCS_AAZ501);--卡识别码 --步骤1:插入日志主表 insert into ZY_YBJKRZ(YBJKID,YBJKBM,YBJKMC,JKCJBM,BRID00,ZYID00,ZYH000,CZRQ00,CZSJ00,CZY000,CZYXM0,CZYKS0, BRXM00,AAZ500,AAZ501,BKZ543,AAC002,HISCS0,JKQQCS,JKFHCS,MKLXMC,BKE286,BKE241,AKA078, AKA130,AAZ149,AKC190,BKE298,JZDH00,YYID00,BKE042,BKEE70) select LS_YBJKID,substrb(LS_FUNID,1,50),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_HISCS0,LS_JKQQCS,LS_JKFHCS,LS_MKLXMC,LS_BKE286,LS_BKE241,LS_AKA078, LS_AKA130,LS_AAZ149,LS_AKC190,LS_BKE298,LS_JZDH00,LS_YYID00,LS_BKE042,LS_BKEE70 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_ZYSF_RYTX00') then --入院提醒 --public_type true char 30 remind 提醒、audit 审核 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','data','public_type','事件方法','admission_registration',null,'1',null from dual; --Content 内容描述--begin-- --1 tran_serial_no true char32 交易流水号:生成方式:医疗机构编码+时间+随机数 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','tran_serial_no','交易流水号',to_char(sysdate,'YYYYMMDDHH24MISS')||LS_YBJKID,null,'1',null from dual; --2 operate_time true char16 操作时间格式:YYYYMMDDHHMMSS insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','operate_time','操作时间格式',to_char(sysdate,'YYYYMMDDHH24MISS'),null,'1',null from dual; --3 pc_no false char 20 个人编号/保险号 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','pc_no','个人编号/保险号',LS_AAC002,null,'1',null from dual; --4 patient_card_no true char 20 社保卡号 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','patient_card_no','社保卡号',LS_AAZ500,null,'1',null from dual; --5 patient_name true char 50 姓名 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','patient_name','姓名',LS_BRXM00,null,'1',null from dual; --6 hospital_no true char 32 住院流水号 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','hospital_no','住院流水号',LS_AKC190,null,'1',null from dual; --7 visit_no true char 32 HIS 住院登记号,参保人本次就诊唯一标识 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','visit_no','住院登记号',PZYH000,null,'1',null from dual; --8 medicine_type true char 2 医疗就诊方式 参见编码附件 aka130 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','medicine_type','医疗就诊方式',LS_AKA130,null,'1',null from dual; --9 patient_sex false char 1 性别 参见编码附件 aac004 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','patient_sex','性别',LS_AAC004,null,'1',null from dual; --10 patient_age false char10 年龄指患者的实足年龄,为患者出生后按照日历计算的历法年龄。 --年龄满 1 周岁的,以实足年龄的相应整数填写;年龄不足 1 周岁的,按照实足年龄的月龄填写,以分数形式表示:分数的整数部分代表 --实足月龄,分数部分分母为 30,分子为不足1 个月的天数,如“2 15/30 月”代表患儿实足年龄为 2 个月又 15 天 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','patient_age','年龄',SF_BQ_CSRQTONL(LS_BRCSRQ),null,'1',null from dual; --11 in_hospital_type true char 1 入院途径:参见编码附件 bke051 --BKE051 入院途径 1 急诊 BKE051 入院途径 2 门诊 BKE051 入院途径 3 其他医疗结构转入 BKE051 入院途径 9 其他 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','in_hospital_type','入院途径','9',null,'1',null from dual; --12 in_hospital_date true char 16 入院时间:YYYYMMDDHHMMSS insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','in_hospital_date','入院时间',LS_BKC014||LS_BKC171,null,'1',null from dual; --13 dept_code_in_hosp true char30 HIS 入院科室编码:医院内部科室编码 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','dept_code_in_hosp','入院科室编码',LS_AKF001,null,'1',null from dual; --14 dept_name_in_hosp true char30 HIS 入院科室名称:医院内部科室名称 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','dept_name_in_hosp','入院科室名称',LS_AKF002,null,'1',null from dual; --15 inpatient_area true char 20 病区 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','inpatient_area','病区',LS_DQBQMC,null,'1',null from dual; --16 number_beds true char 10 床位号;护士办理入院时候必填 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','number_beds','床位号',LS_RYCWH0,null,'1',null from dual; --17 allergies true char 200 过敏史 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data','content','allergies','过敏史','未填写',null,'1',null from dual; --诊断信息 for C_ZDXX in CUR_BRZDXX loop LS_JSOSTR:=''; if C_ZDXX.ZDLB00='1' then --1 门诊诊断 LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='01'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='2' then --2 入院诊断 LS_BKE301:='02'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='01'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='3' then --3 出院主要诊断 LS_BKE301:='03'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='01'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='4' then --4 出院其他诊断 LS_BKE301:='03'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='5' then --5 病理诊断 LS_BKE301:='04'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 else LS_BKE301:='03'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 end if; LS_BKE087:=substrb(trim(C_ZDXX.ZDM000),1,50); --诊断或症状编码 y 见icd-10或症状表编码 LS_BKE088:=substrb(trim(C_ZDXX.ZDMC00),1,100);--诊断或症状名称 y 见icd-10或症状表名称 LS_JSOSTR:=LS_JSOSTR||'{'; LS_JSOSTR:=LS_JSOSTR||'"diagnose_no"'||':'||'"'||trim(LS_BKE301)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"diagnose_type"'||':'||'"'||trim(LS_BKE302)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"diagnose_state"'||':'||'"'||'4'||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"diagnose_code"'||':'||'"'||trim(LS_BKE087)||'"'||','; LS_JSOSTR:=LS_JSOSTR||'"diagnose_name"'||':'||'"'||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; --1 success true 请求是否成功。 T 代表成功,F 代表失败 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'success','请求是否成功:T成功F:失败',null,null,'2',null from dual; --2 error_code false 错误编码 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'error_code','错误编码',null,null,'2',null from dual; --3 error_msg false 错误信息 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'error_msg','错误信息',null,null,'2',null from dual; /* --4 tran_serial_no true 交易流水号(唯一主键) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'tran_serial_no','交易流水号',null,null,'2',null from dual; */ --5 result false 业务具体结果(具体内容请参见 result 内容说明) insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'result','业务具体结果',null,null,'2',null from dual; --6 is_open_window false 是否弹窗 0 不弹窗 1 弹窗 默认 O insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'is_open_window','是否弹窗:0:不弹窗 1:弹窗',null,null,'2',null from dual; --7 window_open_way false 1 置顶 2 常规(常规(5 秒消失)) 默认 2 常规 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'window_open_way','1:置顶 2:常规',null,null,'2',null from dual; --8 window_size false 弹窗大小 800,600 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'window_size','弹窗大小',null,null,'2',null from dual; --9 window_url false 弹窗地址 insert into ZY_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000) select LS_YBJKID,SQ_ZY_YBJKMX_JKMXID.nextval,'data',null,'window_url','弹窗地址',null,null,'2',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_0022') 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(SJJGBM,1,50),substrb(SJJGMC,1,100),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; 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)='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)='aac003' then -- 姓名 varchar2(50) y 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:=''; 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)='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; 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 “出院结算”时必填 LS_JKFSZ0:=LS_AKC194; 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; 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 住院结算时必填 LS_JKFSZ0:=to_date(nvl(LS_CYDJRQ,to_char(sysdate,'YYYYMMDD')),'YYYYMMDD')-to_date(LS_RYRQ00,'YYYYMMDD')+1; 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 --1 放置宫内节育器 2 取出宫内节育器 3 流产术 4 引产术 5 结扎手术 6 结扎复通手术 9 其他 --取值(ZY_BRXXB.JHSYSS)=BM_TYZD00.ZDMC00=计划生育手术类别 LS_JKFSZ0:=LS_JHSYSS; 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 --取值(ZY_BRXXB.SYSSLB)=BM_TYZD00.ZDMC00=手术生育类别 --1 顺产 10 怀孕未满4个(妊娠)月流产 11 怀孕满4个(妊娠)月流产 12 怀孕满7个(妊娠)月流产 --2 流产 3 难产 4 剖腹产 5 怀孕三个月内流产 6 怀孕三个月以上流产 7 计划生育晚育 8 计划生育 LS_JKFSZ0:=LS_SYSSLB; 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 --取值(ZY_BRXXB.TESL00) LS_JKFSZ0:=LS_TESL00; 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 --取值(ZY_BRXXB.SYFMRQ) LS_JKFSZ0:=LS_SYFMRQ; 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 LS_JKFSZ0:=LS_SYHYTS; 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) 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_JKFSZ0:=LS_BKE241; 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; 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','收费人',LS_aae011,null,'1',null); end if; --费用明细上传流水开始 --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; --费用明细上传流水结束 elsif PJKCJBM in ('YBJK_TYTF_0024') then --住院费用冲销 if nvl(PBRID00,0)=0 then PZXZT00:=0;--输出:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的基本信息!'; return; end if; --获取YBDJH0:医保单据号 YBSM20:医保挂号号 begin select YBDJH0,nvl(substrb(YBZYH0,1,30),'0'),nvl(a.YBJKID,a.YBSM19) into LS_YBDJH0,LS_YBZYH0,LS_BKE298 from ZY_JZB000 a where ZYID00=PZYID00 and JZDH00=LS_JZDH00; exception when others then LS_YBDJH0:='0'; LS_YBZYH0:='0'; end; --如果入参数有传 医保挂号按前台赋值(AKC190:医保门诊挂号流水号/住院登记流水号) if trim(IN_YBZYH0) is not null and trim(IN_YBZYH0) not in ('0') then LS_AKC190:=trim(IN_YBZYH0); else LS_AKC190:=trim(LS_YBZYH0); end if; --如果入参数有传 单据号按前台赋值(AAE072:医保单据号) if trim(IN_YBDJH0) is not null and trim(IN_YBDJH0) not in ('0') then LS_AAE072:=trim(IN_YBDJH0); else LS_AAE072:=trim(LS_YBDJH0); end if; if LS_AAE072 is null and LS_AAE072 in ('0') then PZXZT00:=0;--输出:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的冲销医保单据号!'; return; end if; --插入主项节点功能编码(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(SJJGBM,1,50),substrb(SJJGMC,1,100),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; --医保发送变量赋值 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_AAC002); 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_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:=''; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; 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:=trim(LS_AAE072); 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 --数据来源:50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_JKFSZ0:=LS_BKE241; 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','退费人',LS_aae011,null,'1',null); end if; elsif PJKCJBM in ('YBJK_MXSC_0027','YBJK_MXSC_0027_1','YBJK_MXSC_0028') 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(SJJGBM,1,50),substrb(SJJGMC,1,100),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; 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:=trim(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:=''; 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)='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 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_JKFSZ0:=LS_BKE241; 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','上传人',LS_aae011,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或症状表名称 --0 肿瘤形态 1 门诊诊断 2 入院诊断 3 出院主要诊断 4 出院其他诊断 --5 病理诊断 6 院内感染 7 损伤中毒的外部因素 8 初步诊断 9 并发症 c 中医入院诊断 */ 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:=''; if C_ZDXX.ZDLB00='1' then --1 门诊诊断 LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='01'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='2' then --2 入院诊断 LS_BKE301:='02'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='01'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='3' then --3 出院主要诊断 LS_BKE301:='03'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='01'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='4' then --4 出院其他诊断 LS_BKE301:='03'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 elsif C_ZDXX.ZDLB00='5' then --5 病理诊断 LS_BKE301:='04'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 else LS_BKE301:='03'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断 LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等 end if; LS_BKE087:=substrb(trim(C_ZDXX.ZDM000),1,50); --诊断或症状编码 y 见icd-10或症状表编码 LS_BKE088:=substrb(trim(C_ZDXX.ZDMC00),1,100);--诊断或症状名称 y 见icd-10或症状表名称 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 --如果没有诊断信息生成空数组"zdlist":[] 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) select LS_YBJKID as YBJKID,LS_ID0000 as JKMXID,LS_YBJKID as BKE162,SQ_ZY_YBJKMX_JKMXID.nextval as BKEA97,trim(A.XMBH00) as BKE045,trim(A.XMMC00) as BKE046, nvl(A.FPXMBH,'13') as AKA063,trim(A.XMGG00) as AKA074,nvl(trim(A.JX0000),'000') as AKA070,trim(A.XMDW00) as AKA067,A.XMDJ00 as AKC225,A.XMSL00 as AKC226, A.XMJE00 as AKC227,nvl(trim(A.YPYL00),'1') as AKA071,trim(A.YPPL00) as AKA072,''as AKA073,nvl(trim(A.CZRQ00),LS_CZRQ00) as AKC221,trim(A.YPTS00) as AKC229, LS_AKF001 as AKF001,LS_AKF002 as AKF002,LS_BKF237 as BKF237,LS_BKF238 as BKF238, --trim(LS_KDYSXM) as BKC006, --医生姓名 --trim(LS_YSZJHM) as BKC007, --医生证件编码 nvl(trim(A.YSXM00),trim(LS_BKC006)) as BKC006, --医生姓名 nvl(trim(A.YSZJHM),trim(LS_BKC007)) as BKC007, --医生证件编码 trim(A.SFYB00) as BKEA96, 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(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:心理咨询师 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.YPYL00),'1'),1,20) as BKE509 --药量天数 from BM_ZYCFMX_TEMP00 A where ID0000=LS_ID0000; 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 and AKA063 is null; 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||'}'; 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') 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(SJJGBM,1,50),substrb(SJJGMC,1,100),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; --医保发送变量赋值 --医保发送变量赋值 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:='费用明细冲销'; 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 参见编码附件 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_JKFSZ0:=LS_BKE241; 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; end if; 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','作废人',LS_aae011,null,'1',null); end if; end loop; elsif PJKCJBM in ('YBJK_ZYDJ_0007') 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(SJJGBM,1,50),substrb(SJJGMC,1,100),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; --医保发送变量赋值 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_AAC002); 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:=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:=''; 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)='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 若为空,默认取系统时间 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_AAE030; 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 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_JKFSZ0:=LS_BKE241; 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_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 参见编码附件(生育住院时该字段为必填项) 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','登记人',LS_aae011,null,'1',null); end if; elsif PJKCJBM in ('YBJK_ZYDJ_0009') 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(SJJGBM,1,50),substrb(SJJGMC,1,100),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; --医保发送变量赋值 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_AAC002); 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:=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:=''; 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)='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 50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_JKFSZ0:=LS_BKE241; 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','作废人',LS_aae011,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)--从字典取值 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,100),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; --医保发送变量赋值 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)='aaz501' then --卡识别码 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:=trim(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:=''; update ZY_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00; end if; end loop; elsif PJKCJBM in ('YBJK_YBCX_0005') then --资格信息查询(f04.10.01.17),工伤身份识别(gs04.10.01.16) --插入主项节点功能编码(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(SJJGBM,1,50),substrb(SJJGMC,1,100),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; --医保发送变量赋值 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)='aaz501' then --卡识别码 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:=trim(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:=''; 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); 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) 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; --列表数据内数据个数(按序号) --1、排序字段选择错误造成报文列表内容出错,把排序字段PHXH00要改成XH0001 2、ZY_BASYFS增加一个YBJKID字段来记录医保接口ID by ZYSF-20191216-001 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; else PZXZT00:=0; PERRMSG:=substrb('执行新医保接口交互日志失败!原因:'||PERRMSG,1,200); return; 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 YBZYH1,YBBALSH01 into LS_AKC190,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; 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; / -- End of DDL Script for Procedure SD_HOSPITAL.SP_ZY_NEWYBJK_YBJKRZ