create or replace procedure SP_SF_NEWYBJK_YBJKRZ(
PJKCJBM in varchar2 ,--输入(不可空):接口场景编码
PBRID00 in number ,--输入(无值传0):BRID00
PGHID00 in number ,--输入(无值传0):门诊(GHID000)流水号
PGHH000 in varchar2 ,--输入(无值传0):门诊(GHH000)号
PCZY000 in number ,--输入(不可空):操作员编码
PCZYXM0 in varchar2 ,--输入(不可空):病人姓名
PCZYKS0 in number ,--输入(不可空):操作员科室
PQQCSID in varchar2 default '' ,--输入(可空):参数中间ID(HIS前台请求参数保存到中间表BM_ZFPTCS.JKQQCS)
PINCS00 in varchar2 default '' ,--输入(可空):请求参数
POTHER0 in varchar2 default '' ,--输入(可空):备用参数
PCOMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交
PZXZT00 out number ,--输出:执行状态 0:失败 1:成功
PYBJKID out varchar2 ,--输出:医保接口ID
PERRMSG out varchar2 --输出:错误信息
)
as
-- MODIFICATION HISTORY
-- Person Date Comments
--zhangyc 2019.10.22 created by MZSF-20191022-003
--zhangyc 2019.10.23 增加从请求报文中获取姓名 by MZSF-20191023-001
--zhangyc 2019.10.24 新医保接口改造 by MZSF-20191024-002
--zhangyc 2019.10.25 挂号接口以及其他接口 by MZSF-20191025-001
--zhangyc 2019.10.25 增加费用上传和费用结算功能 by MZSF-20191027-001
--zhangyc 2019.10.28 修改获取医院科室编码 by MZSF-20191028-002
--zhangyc 2019.10.29 修正特殊病种未取值 by MZSF-20191029-001
--zhangyc 2019.10.29 修正费用冲销时报错 by MZSF-20191029-002
--zhangyc 2019.10.30 增加交易对账功能 by MZSF-20191030-001
--zhangyc 2019.10.30 修改YBDZZT 医保对账状态 1:对账成功 0:对账失败 null未对账 by MZSF-20191030-002
--zhangyc 2019.11.11 修改费用冲销报错 by MZSF-20191112-002
--zhangyc 2019.11.30 修正参数LS_YBFPBH控制错误 by MZSF-20191130-001
--zhangyc 2019.12.04 增加取AAC002 by MZSF-20191203-004
--zhangyc 2019.12.10 去掉AKA078(50:特殊门诊) by MZSF-20191210-003
--zhangyc 2019.12.11 接口优化 by MZSF-20191211-003
--zhangyc 2019.12.13 修改aka063、bke046 取值方法、处方日期为空默认为当天 by MZSF-20191213-006
--zhangyc 2019.12.14 新医保接口统筹总额(bkc102:基金支付总额)、医保账户(bkc041:个人账户支付金额)、个人自付(bkc040:个人现金支付金额(实付现金)) 按医保返回为准 by MZSF-20191216-003
--zhagnyc 2019.12.20 增加交易对账HIS收费单据号取值 by MZSF-20191219-003
--zhangyc 2019.12.21 增加特殊病种获取通过参数mz_aka078_tsbz控制 by MZSF-20191221-001
--zhangyc 2019.12.31 修正BKA542_MC写入太短 by MZSF-20191231-002
--zhangyc 2020.01.13 修正"门诊费用退款" GHID00错误无法获取医保挂号科室编码 by MZSF-20200113-002
--zhangyc 2020.03.17 修改bkf237:医保科室编码 akf001:his挂号科室 by MZSF-20191119-001
--zhangyc 2020.03.17 厦门医保bke042:his流水号取挂号ID(挂号、明细上传、费用结算保存一致)以及 费用结算增加bke042、bka535 明细冲销增加aka078 by MZSF-20200316-001
--zhangyc 2020.03.19 门诊退费冲销增加节点aka130 医疗类别 bke042 his流水号 bkee70:his退费流水号 by MZSF-20200320-002
--zhangyc 2020.03.23 修正门诊退款时,重新挂号时,前台传入PGHID00 参数错误导致HISLSHQZFS=N 时,费用登记、费用明细上传报文节点中bke042(HIS流水号)不一致 by MZSF-20200323-002
--zhangyc 2020.03.25 aka070剂型空着默认000(无) by MZSF-20200326-003
--zhangyc 2020.04.01 如果挂号类别名称有包含“急诊”aka130=12 by MZSF-20200402-002
--zhangyc 2020.04.03 修正费用登记医保返回成功院内报错发起冲销是bke298同费用登记的发送的bke298不一致导致无法正常退费 by MZSF-20200403-001
--zhangyc 2020.04.07 修正公务员体检结算,入参挂号ID=0以及没有诊断报错 by MZSF-20200408-004
--zhangyc 2020.04.21 nvl(A.SFXMID,trim(A.XMBH00))-->nvl(to_char(A.SFXMID),trim(A.XMBH00))by MZSF-20200422-001
--zhangyc 2020.05.21 卡识别码根据参数设置获取 by MZSF-20200521-001
--zhangyc 2020.06.11 按最新医保文档,增加参数yyksbmfslx控制(akf001、bkf237)发送值,默认:akf001:医保编码bkf237:院内编码 by MZSF-20200611-006
--zhangyc 2020.06.12 日志表增加AAC066、AAC066_MC、BKE042、BKEE70、BKE050、BKE299、BKC160、BKC134、BKE856、BKC053、BKC054 by MZSF-20200612-003
--zhangyc 2020.06.20 aka071取YPYL00 by MZSF-20200620-003
--zhangyc 2020.06.22 医院科室通过函数取值SF_SF_GetYYKSBM by MZSF-20200620-002
--zhangyc 2020.08.03 费用明细上传、费用明细作废增加发送(行政区号:aab301)调用函数SF_SF_AAB301获取 by MZSF-20200803-003
--zhangyc 2020.08.12 通用退费(his收费单据流水号(bke298))、YBSM25(his流水号(bke042) by MZSF-20200812-002
--zhangyc 2020.08.21 根据挂号号,重新取挂号ID,以及旧医保结算,新医保冲销bke298重新赋值 by MZSF-20200821-001
--zhangyc 2020.09.02 修改akf001或bkf237 为空重新取值 by MZSF-20200902-003
--zhangyc 2020.09.09 BKE182 截取100 by MZSF-20200911-001
--zhangyc 2020.09.15 SF_SF_GetYYKSBM增加异常错误保护 by MZSF-20200915-003
--zhangyc 2020.09.17 交易对账增加节点aab301(参保地行政区划) by MZSF-20200909-003
--linbin 2020.09.22 当MZID00不为空时才将其赋值给bke042 MZSF-20200922-003
--zhangyc 2020.09.29 LS_bkf237-->trim(LS_bkf237),错误原因,体检病人挂号获取bkf237错误 by MZSF-20200929-004
--zhangyc 2020.10.15 增加单方面冲销以及交易冲正功能 by MZSF-20201013-001
--zhangyc 2020.11.02 增加费用结算退费功能 by MZSF-20201102-011
--zhangyc 2020.11.27 增加参数MZ_AKC192_BKC014_BKC171控制AKC192、BKC014、BKC171是否取挂号日期和时间 by MZSF-20201125-003
--zhangyc 2020.11.30 通用收费增加aab301 by MZSF-20201130-001
--linbin 2020.12.29 增加通用参数变量LS_SFYXKZD,当参数值为Y时不限制“未找到有效的诊断信息!”,如果诊断为空时zdlist发送[] by MZSF-20201211-001
--zhangyc 2021.01.05 平潭医保aab301发送350128 平潭卡 by MZSF-20210106-002
--zhangyc 2021.02.03 AKA071、AKA072、AKA073 长度截取 by MZSF-20210203-001
--zhangyc 2021.02.04 恢复代码挂号类别名称包含“急诊”aka130=12 by MZSF-20210204-002
--zhangyc 2021.02.23 整理报文增加bkeh83、bkeh05、bkeh06、bakxml by MZSF-20210223-003
--zhangyc 2021.03.10 SF_YBBRFSJE参数开启后选择结算表BM_SFCFMX_TEMP01取值增加条件 结算时JSBZ00=1,预结算:YJSBZ0=1 by MZSF-20210310-003
--zhangyc 2021.03.25 修改跨省异地挂号YDKS...以及BKE284=06 时 aac002如果ID0000符合身份证规则时传该值,不符合判断病人身份证 by MZSF-20210325-004
--zhangyc 2021.03.29 明细上传诊断列表数据根据参数MZ_zdlist_sfxyzd控制(YS_BRZDXX.SFXYZD:0:中医1:西医2:职业病) by MZSF-20210329-002
--linbin 2021.03.30 增加通用参数YSZJHMLY区分医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0 by MZSF-20210325-002
--zhangyc 2021.03.31 前台传参为空时导致通过SF_SF_GetYYKSBM 取医保科室的异常 by MZSF-20210331-001
--qiulf 2021.04.08 增加YBJK_DZPJ_0060,门诊电子票据上传 by MZSF-20210401-002
--xgm 2021.06.08 原需求MZSF-20201211-001未改好,诊断为空时zdlist[]需要传字段,值放空 by MZSF-20210608-001
-- --------- ---------- -------
LS_COUNT0 number(12,2);
LS_CZRQ00 char(8);
LS_CZSJ00 char(8);
LS_GHID00 number(10); --挂号ID
LS_FUNID varchar2(50);--功能编码
LS_BRXM00 SF_YBJKRZ.BRXM00%type; --病人姓名
LS_YBJKID SF_YBJKRZ.YBJKID%type; --医保接口ID
LS_YBJKBM SF_YBJKRZ.YBJKBM%type; --医保接口编码
LS_YBJKMC SF_YBJKRZ.YBJKMC%type; --医保接口名称
LS_JKCJBM SF_YBJKRZ.JKCJBM%type; --接口场景编码
LS_AAZ500 SF_YBJKRZ.AAZ500%type;--社会保障卡号
LS_AAZ501 SF_YBJKRZ.AAZ501%type;--卡识别码
LS_BKZ543 SF_YBJKRZ.BKZ543%type;--二维码
LS_AAC002 SF_YBJKRZ.AAC002%type;---证件号码(社会保障号)
LS_AAC003 varchar2(50);--病人姓名
LS_MKLXMC SF_YBJKRZ.MKLXMC%type;--模块类型名称
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_VALUE0 SF_YBJKMX.VALUE0%type;
LS_FSLXBZ SF_YBJKMX.VALUE0%type;--发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它
LS_JKFSZ0 SF_YBJKMX.JKFSZ0%type;--接口发送值
LS_JKFHZ0 SF_YBJKMX.JKFHZ0%type;--接口返回值
LS_QTQQCS BM_ZFPTCS.JKQQCS%type; --前台接口请求参数临时中间变量
LS_HISCS0 SF_YBJKRZ.HISCS0%type; --HIS前台请求参数
LS_JKQQCS SF_YBJKRZ.JKQQCS%type;--接口请求参数
LS_JKFHCS SF_YBJKRZ.JKFHCS%type;--接口返回参数
LS_USR000 BM_YGBM00.YBYHBM%type;--医保接口_登录用户名
LS_PWD000 BM_YGBM00.YBYHMM%type;--医保接口_登录密码
LS_CARDNO varchar2(50);--卡号
LS_MZZYBZ varchar2(1);--门诊住院标识 0:门诊 1:住院
LS_JZDH00 SF_JZB000.JZDH00%type;--结账单号
LS_CXJZDH SF_JZB000.JZDH00%type;--冲销结账单号
LS_YBDJH0 SF_JZB000.YBDJH0%type;--医保单据号
LS_TSBZBH varchar2(30);--特殊病种编码
LS_AKA078 varchar2(10);--医疗就诊方式
LS_BKE241 varchar2(10);--数据来源 50:收费终端 51:自助终端 52:医生工作站 53:移动支付
LS_BKE298 varchar2(50);--HIS收费单据流水号
LS_AKA130 varchar2(10);--医疗类别
LS_BKE286 varchar2(10);--结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算
LS_FYJSLX varchar2(50);--费用结算类型
LS_MXLSH0 varchar2(50);--明细流水号
LS_YBGHH0 varchar2(50);--医保挂号号
LS_XMFSBZ varchar2(50);--项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCF00_TEMP00
LS_ID0000 varchar2(50);--中间表ID
LS_AKC190 varchar2(30);--医保门诊挂号流水号/住院登记流水号
LS_AAE072 varchar2(30);--医保单据号
LS_GHKS00 SF_BRXXB0.GHKS00%type;--挂号科室编码
LS_GHKSMC BM_BMBM00.BMMC00%type;--挂号科室名称
LS_KDYS00 SF_BRXXB0.JZYS00%type;--开单医生编码
LS_KDYSXM BM_YGBM00.ZWXM00%type;--开单医生姓名
LS_YSZJHM BM_YGBM00.YSZJHM%type;--医生证件编码
LS_BKE042 varchar2(50);--his流水号
LS_BKC014 varchar2(8);--实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期)
LS_BKC171 varchar2(8);--实际就诊时间 住院指病人实际出院时间
LS_CFXMSL number(12,2);--明细项目数量
LS_AKB065 number(12,2);--医疗费总金额
LS_JSOSTR SF_YBJKMX.VALUE0%type;
LS_BKE301 varchar2(3); --诊断或症状类型 y 参见编码附件
LS_BKE302 varchar2(3); --诊断或症状序号 y 参见编码附件
LS_BKE087 varchar2(50); --诊断或症状编码 y 见icd-10或症状表编码
LS_BKE088 varchar2(100);--诊断或症状名称 y 见icd-10或症状表名称
LS_YBFPBH varchar2(10);--医保发票是否使用编号 Y:编码 N:明细
LS_AKA063 varchar2(50);--发票类别
LS_QDQZFS varchar2(50);--医保新接口费用清单取值方式 1:取SF_YBJKQD或ZY_YBJKQD 2:取SF_YBJKMX或ZY_YBJKMX 默认:1
LS_SFYJS0 varchar2(50);--是否预结算 'Y':是预结算,'N':不是预结算
LS_AAZ149 varchar2(30);--特殊病种编码
LS_YYKSBM BM_BMBM00.YYKSBM%type;--医院科室编码
LS_JKLXBM varchar2(50);--接口类型 -1无 0普通医保 1生育医保 2:工伤 3保健医保
LS_BKE284 varchar2(50);--身份认证类型 身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_MZID00 SF_JZB000.MZID00%type;--门诊iD
LS_AKC192 varchar2(20);--实际门诊/入院日期 格式:yyyymmddhh24miss
LS_akf001 varchar2(50);--标准科室编码(院内编码)
LS_akf002 varchar2(50);--标准科室名称(挂号科室名称)
LS_bkf237 varchar2(50);--his内部科室编码(医保科室编码)
LS_bkf238 varchar2(50);--his内部科室名称(医保科室名称)
--接口请求入参参数
IN_CARDNO varchar2(50);--医保卡号
IN_YBID00 varchar2(30);--医保ID
IN_BRXM00 varchar2(50);--病人姓名
IN_AAC002 varchar2(30);--身份证号
IN_DBZBM0 varchar2(50);--单病种编码
IN_KSBM00 varchar2(50);--科室编码
IN_YBGHH0 varchar2(30);--医保挂号号
IN_YBDJH0 varchar2(30);--医保单据号
LS_HISLSH varchar2(50);--HIS流水号
LS_YYID00 SF_YBJKRZ.YYID00%type; --医院ID
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_GHLB00 SF_BRXXB0.GHLB00%type;--挂号类别编号=BM_GHLBB0.LBBH00
LS_LBMC00 BM_GHLBB0.LBMC00%type;--挂号类别名称
LS_YSZJDJ BM_GHLBB0.YSZJDJ%type;--医师诊金等级接口编码
LS_BKA535 varchar2(10);--医师诊查费等级 110 普通医师 111 主治医师 112 副主任医师 113 主任医师 114 专家 120 普通医师[中医辩证] 121 主治医师[中医辩证] 122 副主任医师[中医辩证] 123 主任医师[中医辩证] 124 国医大师[中医辩证]
LS_CFLSHQZFS varchar2(10);--新医保接口费用结算处方项目数(itemcount)取值方式 Y:处方项目数 N:医保明细流水号个数 默认:N
LS_HISLSHQZFS varchar2(10);--新医保接口His流水号(bke042)取值方式 Y:系统序列号 N:挂号ID或住院ID 默认:N
LS_BKEE70 varchar2(50);--his 退费流水号 varchar2(50) y 对帐时使用
LS_BKA555 varchar2(50);--bka555 对账数据分类YBSM23 varchar2(3) y 参见编码附件(本地、省内、跨省等),“门诊超限全自费” 01 本市 02 省内异地 03 省外异地 99 门诊超限全自费
LS_CXZBZ0 varchar2(50);--超限制标志: (0:否 1:是)
LS_TYZDCS_AAZ501 varchar2(50);--通用字典卡识别码参数
LS_YYKSBMFSLX varchar2(50);--新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0
LS_XZQH00 BM_BRXXB0.XZQH00%type; --行政区号
LS_aab301 varchar2(10);--参保地行政区划
LS_YBSM19 SF_JZB000.YBSM19%type;--ybjkid 医保接口ID
LS_YBSM20 SF_JZB000.YBSM20%type;--akc190 医保挂号或医保住院号
LS_YBSM23 SF_JZB000.YBSM23%type;--bka555 对账分类01:本市02:省内异地03:省外异地99:门诊超限全自费
LS_YBSM24 SF_JZB000.YBSM24%type;--his收费单据流水号(bke298)
LS_YBSM25 SF_JZB000.YBSM25%type;--his流水号(bke042)
LS_JZBYBJKID SF_JZB000.YBJKID%type; --结账表医保接口ID
LS_YBBZBM BM_TSBZB0.YBBZBM%type; --医保病种编码
LS_YBSM01 SF_JZB000.YBSM01%type;--xzqh00/aab301 行政区号
LS_bae016 varchar2(50);--作废原因
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 对帐时使用
LS_GHRQ00 SF_BRXXB0.GHRQ00%type;--挂号日期
LS_GHSJ00 SF_BRXXB0.GHSJ00%type;--挂号时间
LS_YBSJSFRQMS varchar2(100);--新医保门诊(AKC192、BKC014、BKC171)是否取挂号日期和时间:格式(1:是0:否|有效天数0:当天,1:两天) 默认:0|1
LS_SFFSGHRQ varchar2(1); --新医保门诊是否发送挂号日期1:是0:否
LS_FSGHRQTS number(12) ; --新医保门诊发送挂号日期有效天数0:当天,1:两天
LS_YXTSNUM number(12) ; --有效天数临时变量
LS_SFYXKZD varchar2(50); --是否允许空诊断:医保新接口参数设置/AllowNullDiagnostics
LS_YBMC00 IC_YBBRLB.YBMC00%type;--医保中心类别
LS_BKEG23 SF_YBJKRZ.BKEG23%type; --是否账户抵扣
LS_BKA190 SF_YBJKRZ.BKA190%type; --是否共济扣款
LS_DYBZBM xt_ICD900.DYBZBM%type;--医保诊断对应编码
LS_DYJBMC xt_ICD900.DYJBMC%type;--医保诊断对应名称
LS_ZDBMBGCS varchar2(50); --change_zdbm_ssbm:新医保接口门诊和住院系统:诊断和手术编码是否转为医保编码发送 0:不转化 1:转成医保编码 默认:0
IN_BKE284 varchar2(10);--身份认证类型 身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_MZ_zdlist_sfxyzd varchar2(50); --门诊新医保明细上传诊断列表无需发送诊断类型(SFXYZD:0:中医1:西医2:职业病)多个值用|分隔,(如:1|2标识不发送西医和职业病诊断)默认:-1
LS_YBXZQH IC_YBBRLB.YBXZQH%type;--医保行政区号:351500:福建省保健办 350128:平潭 359900:省直(K) 350100:福州(A) 350300:莆田(B) 350500:泉州(C) 350200:厦门(D) 350600:漳州(E) 350800:龙岩(F) 350400: 三明(G) 350700:南平(H) 350900:宁德(J)
LS_YBSDLB IC_YBBRLB.YBSDLB%type;--医保属地类别;0本地、1省内、2省外(未定义的都默认为本地0)
LS_bke091 varchar2(20);--手术及操作编码
LS_bke092 varchar2(100);--手术及操作名称
LS_ZJHMLY varchar2(10);--医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0
LS_GHH000 varchar2(12); --挂号号
LS_DZPJFL varchar2(3); --电子票据分类 varchar2(3) y 01:入帐 02:入帐撤销
LS_PJH000 number;
cursor CUR_YBFSZX is
select YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ
from SF_YBJKMX where YBJKID=LS_YBJKID and FSLXBZ in ('1','3') order by JKMXID;
--诊断信息
cursor CUR_BRZDXX is
select aa.* from YS_BRZDXX aa
where 1=1
and aa.GHID00=LS_GHID00
and instrb('|'||LS_MZ_zdlist_sfxyzd||'|','|'||aa.sfxyzd||'|')<=0
order by ZZDBZ0;
--清单明细 SF_YBJKQD
cursor CUR_MXLIST is
select * from SF_YBJKQD
where YBJKID=LS_YBJKID
order by JKMXID;
begin
select SQ_SF_YBJKRZ_YBJKID.nextval into LS_YBJKID from dual;
LS_YBSJSFRQMS:='0|0';--新医保门诊(AKC192、BKC014、BKC171)是否取挂号日期和时间:格式(1:是0:否|有效天数0:当天,1:两天) 默认:0|1
LS_SFFSGHRQ:='0'; --新医保门诊是否发送挂号日期1:是0:否
LS_FSGHRQTS:=0; --新医保门诊发送挂号日期有效天数0:当天,1:两天
LS_MZ_zdlist_sfxyzd :=null; --门诊新医保明细上传诊断列表无需发送诊断类型(SFXYZD:0:中医1:西医2:职业病)多个值用|分隔,(如:1|2标识不发送西医和职业病诊断)默认:-1
LS_YBXZQH:=null;--医保行政区号:351500:福建省保健办 350128:平潭 359900:省直(K) 350100:福州(A) 350300:莆田(B) 350500:泉州(C) 350200:厦门(D) 350600:漳州(E) 350800:龙岩(F) 350400: 三明(G) 350700:南平(H) 350900:宁德(J)
LS_YBSDLB:=null;--医保属地类别;0本地、1省内、2省外(未定义的都默认为本地0)
LS_bke091:=null;--手术及操作编码
LS_bke092:=null;--手术及操作名称
if trim(PGHH000) is not null and trim(PGHH000) not in ('0') then
LS_GHH000:=substrb(trim(PGHH000),1,12); --挂号号
else
LS_GHH000:=null; --挂号号
end if;
--医保发票是否使用编号 Y:编码 N:明细
begin
select substrb(trim(VALUE0),1,10) into LS_YBFPBH from XT_XTCS00 where name00 in ('ZY_YBFPBH');
exception
when others then
LS_YBFPBH:='N';
end;
--LS_QDQZFS YBQDMXFSLX:医保新接口费用清单取值方式 1:取SF_YBJKQD或ZY_YBJKQD 2:取SF_YBJKMX或ZY_YBJKMX 默认:1
LS_QDQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','YBQDMXFSLX'),1,10),'1');
--LS_CFLSHQZFS FYJSCFXMSQZFS:新医保接口费用结算处方项目数(itemcount)取值方式 Y:处方项目数 N:医保明细流水号个数 默认:N
LS_CFLSHQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','FYJSCFXMSQZFS'),1,10),'N');
--LS_HISLSHQZFS HISLSHQZFS:新医保接口His流水号(bke042)取值方式 Y:系统序列号 N:挂号ID或住院ID 默认:N
LS_HISLSHQZFS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','HISLSHQZFS'),1,10),'N');
LS_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
LS_YBSJSFRQMS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','MZ_AKC192_BKC014_BKC171'),1,50),'0,0');--新医保门诊(AKC192、BKC014、BKC171)是否取挂号日期和时间:格式(1:是0:否|有效天数0:当天,1:两天) 默认:0|0
LS_SFYXKZD:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','AllowNullDiagnostics'),1,10),'N');--是否允许空诊断参数,当参数值为Y时不限制“未找到有效的诊断信息!”,如果诊断为空时zdlist发送[]
LS_ZDBMBGCS:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','change_zdbm_ssbm'),1,50),'0');--change_zdbm_ssbm:新医保接口门诊和住院系统:诊断和手术编码是否转为医保编码发送 0:不转化 1:转成医保编码 默认:0
LS_SFFSGHRQ:=substrb(SF_SF_RETURNINDEXEH(LS_YBSJSFRQMS,'|', 1),1,1);--新医保门诊是否发送挂号日期1:是0:否
if LS_SFFSGHRQ='1' then --1:发送挂号日期和时间
begin
LS_FSGHRQTS:=to_number(SF_SF_RETURNINDEXEH(LS_YBSJSFRQMS,'|', 2));--新医保门诊发送挂号日期有效天数0:当天,1:两天
exception
when others then
LS_FSGHRQTS:=0;
end;
end if;
--MZ_zdlist_sfxyzd:门诊新医保明细上传诊断列表无需发送诊断类型(SFXYZD:0:中医1:西医2:职业病)多个值用|分隔,(如:1|2标识不发送西医和职业病诊断)默认:-1
LS_MZ_zdlist_sfxyzd:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','MZ_zdlist_sfxyzd'),1,50),'-1');
--医生证件号码来源 0:取BM_YGBM00.YSZJHM 1:取BM_YGBM00.SFZBH0 默认0
LS_ZJHMLY:=nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','YSZJHMLY'),1,10),'0');
IN_CARDNO:='';--医保卡号
IN_YBID00:='';--医保ID
IN_BRXM00:='';--病人姓名
IN_DBZBM0:='';--单病种编码
IN_KSBM00:='';--科室编码
IN_YBGHH0:='';--医保挂号号
IN_YBDJH0:='';--医保单据号
LS_GHID00:=PGHID00; --挂号ID
PYBJKID:=LS_YBJKID;
LS_JKCJBM:=PJKCJBM;
LS_MZZYBZ:='0';--门诊住院标识 0:门诊 1:住院
PZXZT00:=0; --执行状态 0:失败 1:成功
LS_CZRQ00:=to_char(sysdate,'YYYYMMDD');
LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS');
LS_QTQQCS:=null;--前台接口请求参数临时中间变量
LS_HISCS0:=null;--HIS前台请求参数
LS_JKQQCS:=null;--接口请求参数
LS_JKFHCS:=null;--接口返回参数
LS_YBKSBM:=null; --医保卡识别码
LS_USR000:='';--医保接口_登录用户名(测试用)
LS_PWD000:='';--医保接口_登录密码(测试用)
LS_TSBZBH:='';--特殊病种编码
LS_AKA078:='10';--医疗就诊方式
LS_BKE241:='50';--数据来源50:收费终端 51:自助终端 52:医生工作站 53:移动支付
LS_BKE298:=LS_YBJKID;--HIS收费单据流水号
LS_AKA130:='11';--医疗类别
LS_MXLSH0:=null;--明细流水号
LS_YBGHH0:=null;--医保挂号号
LS_XMFSBZ:='N';--项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCFMX_TEMP00
LS_ID0000:=null;--中间表ID
LS_AKC190:=null;--医保门诊挂号流水号/住院登记流水号
LS_BKE042:=LS_YBJKID;--his流水号
LS_BKC014:=to_char(sysdate,'YYYYMMDD');--实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期)
LS_BKC171:=to_char(sysdate,'HH24MISS');--实际就诊时间 住院指病人实际出院时间
LS_CFXMSL:=0;--明细项目数量
LS_AKB065:=0;--医疗费总金额
LS_CXJZDH:=0;--冲销结账单号
LS_AKC192:=to_char(sysdate,'yyyymmddhh24miss');--实际门诊/入院日期 格式:yyyymmddhh24miss
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:='失败作废';--作废原因
begin
select substrb(CJMC00,1,30)CJMC00,substrb(FUNCMC,1,50) into LS_YBJKMC, LS_YBJKBM from BM_TYCJBM where CJBM00=LS_JKCJBM;
exception
when others then
LS_YBJKMC:=null;
LS_YBJKBM:=null;
end;
--获取前端请求的参数
if PQQCSID is not null then
begin
select JKQQCS into LS_QTQQCS from BM_ZFPTCS where DDLSH0=PQQCSID;
exception
when others then
LS_QTQQCS:=null;
end;
end if;
if LS_QTQQCS is not null then
LS_HISCS0:=substrb(LS_QTQQCS,1,2000);
else
LS_HISCS0:=substrb(PINCS00,1,2000);
end if;
--获取医保用户名和名
begin
select A.YBYHBM,A.YBYHMM into LS_USR000, LS_PWD000 from BM_YGBM00 A where A.YGBH00=PCZY000;
exception
when others then
LS_USR000:='';--医保接口_登录用户名
LS_PWD000:='';--医保接口_登录密码
end;
--员工编码未维护授权码和密码根据部门科室编码从XT_YYXX00获取
if PCZYKS0>0 and LS_USR000 is null then
begin
select B.YBYHBM,B.YBYHMM,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;
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 PBRID00>0 then
begin
select A.YBKH00,A.YBID00,A.BRZJBH,A.BRXM00,A.YBKSBM,E.YBZXLB,A.XZQH00,E.YBMC00,E.YBXZQH,E.YBSDLB
into LS_YBKH00, LS_YBID00,LS_BRZJBH,LS_BRXM00,LS_YBKSBM,LS_YBZXLB,LS_XZQH00,LS_YBMC00,LS_YBXZQH,LS_YBSDLB
from BM_BRXXB0 A,IC_YBBRLB E
where A.BRID00=PBRID00
and A.YBLB00=E.YBLB00
and A.FBBH00=E.FBBH00;
exception
when others then
PZXZT00:=0; --执行状态 0:失败 1:成功
end;
end if;
LS_FUNID:=LS_YBJKBM;--功能编码
LS_MKLXMC:=substrb(SF_SF_GETXMLNOTE('MKLXMC',LS_HISCS0),1,50); --MKLXMC:模块名称
IN_CARDNO:=trim(substrb(SF_SF_GETXMLNOTE('CARDNO',LS_HISCS0),1,30));--CARDNO:请求入参卡号
if IN_CARDNO='0' then IN_CARDNO:=''; end if;
IN_YBID00:=trim(substrb(SF_SF_GETXMLNOTE('YBID00',LS_HISCS0),1,30));--YBID00:请求入参医保ID
if IN_YBID00='0' then IN_YBID00:=''; end if;
IN_BRXM00:=trim(substrb(SF_SF_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_SF_GETXMLNOTE('AAC002',LS_HISCS0),1,30));--身份证号
--IN_RYKSMC:=trim(substrb(SF_SF_GETXMLNOTE('RYKSMC',LS_HISCS0),1,50));--RYKSMC:入院科室
--IN_DBZBM0:=trim(substrb(SF_SF_GETXMLNOTE('DBZBM0',LS_HISCS0),1,50));--DBZBM0:单病种编码
IN_KSBM00:=trim(substrb(SF_SF_GETXMLNOTE('KSBM00',LS_HISCS0),1,50));--KSBM00:科室编码
LS_TSBZBH:=trim(substrb(SF_SF_GETXMLNOTE('TSBZBH',LS_HISCS0),1,30));--解析报文中特殊病种编码
LS_MXLSH0:=trim(substrb(SF_SF_GETXMLNOTE('MXLSH0',LS_HISCS0),1,50));--解析报文中 明细流水号
IN_YBGHH0:=trim(substrb(SF_SF_GETXMLNOTE('YBGHH0',LS_HISCS0),1,30));--YBGHH0:医保挂号号
IN_YBDJH0:=trim(substrb(SF_SF_GETXMLNOTE('YBDJH0',LS_HISCS0),1,30));--YBDJH0:医保单据号
LS_XMFSBZ:=trim(substrb(SF_SF_GETXMLNOTE('XMFSBZ',LS_HISCS0),1,50));--解析报文中 LS_XMFSBZ 项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCFMX_TEMP00
LS_ID0000:=trim(substrb(SF_SF_GETXMLNOTE('ID0000',LS_HISCS0),1,50));--解析报文中 中间表ID
LS_SFYJS0:=trim(substrb(SF_SF_GETXMLNOTE('SFYJS0',LS_HISCS0),1,50));--LS_SFYJS0 --是否预结算 'Y':是预结算,'N':不是预结算
LS_JKLXBM:=nvl(substrb(SF_SF_GETXMLNOTE('JKLXBM',LS_HISCS0),1,50),'0');--接口类型 -1无 0普通医保 1生育医保 2:工伤 3保健医保
LS_HISLSH:=substrb(SF_SF_GETXMLNOTE('HISLSH',LS_HISCS0),1,50);--HIS流水号()
--LS_CXZBZ0 varchar2(50);--超限制标志: (0:否 1:是)
LS_CXZBZ0:=nvl(substrb(SF_SF_GETXMLNOTE('CXZBZ0',LS_HISCS0),1,50),'0');--超限制标志: (0:否 1:是)
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_BKE284:=trim(substrb(SF_SF_GETXMLNOTE('BKE284',LS_HISCS0),1,10));--身份认证类型 身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
--解析报文中结账单号
begin
select to_number(SF_SF_GETXMLNOTE('JZDH00',LS_HISCS0)) into LS_JZDH00 from dual;
exception
when others then
LS_JZDH00:=0;
end;
--解析报文中冲销结账单号
begin
select to_number(SF_SF_GETXMLNOTE('CXJZDH',LS_HISCS0)) into LS_CXJZDH from dual;
exception
when others then
LS_CXJZDH:=0;
end;
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') or 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;
--LS_AAC003 病人姓名
LS_AAC003:=trim(LS_BRXM00);
--病种分类 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;
--类别编码:0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院
if LS_TSBZFL in ('2') then --单病种优先级最高
LS_BRLBBH:='4';--4:单病种
else
if LS_JKLXBM in ('1') or LS_TSBZFL in ('1') then
LS_BRLBBH:='1';--1:生育
elsif LS_JKLXBM in ('2') then
LS_BRLBBH:='2';--2:工伤
else
LS_BRLBBH:='0';--0:普通
end if;
end if;
--医疗就诊方式aka078: 10:门(急)诊 20:住院 40:药店购药 60:体检 81:生育门诊 82:生育住院 91:工伤门诊 92:工伤住院 50:特殊门诊(漳州地区)
LS_AKA078:=SF_SF_GETYBSXZD(PBRID00,LS_MZZYBZ,'aka078',LS_TSBZBH,nvl(LS_BRLBBH,'0'),'');
--医疗类别aka130:11:普通门诊 12:急诊 13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 31:家庭病床 34:按病种住院 42:处方购药 43:非处方购药 A1:体检 52:生育住院
LS_AKA130:=SF_SF_GETYBSXZD(PBRID00,LS_MZZYBZ,'aka130',LS_TSBZBH,nvl(LS_BRLBBH,'0'),'');
--数据来源bke241: 50:收费终端 51:自助终端 52:医生工作站 53:移动支付
LS_BKE241:=SF_SF_GETYBSXZD(PBRID00,LS_MZZYBZ,'bke241',LS_TSBZBH,nvl(LS_BRLBBH,'0'),'');
--身份认证类型bke284:01:读卡 02:融合码 06:医保码 20:医疗证
LS_BKE284:=SF_SF_GETYBSXZD(PBRID00,LS_MZZYBZ,'bke284',LS_TSBZBH,nvl(LS_BRLBBH,'0'),'');
--结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算
if PJKCJBM in ('YBJK_TYSF_0020_1','YBJK_TYSF_0021_1','YBJK_MXSC_0026_1') or LS_SFYJS0 in ('Y') then --门诊收费预结算、住院收费预结算
LS_BKE286:='0';
elsif PJKCJBM in ('YBJK_TYSF_0021_2') then --住院预结算
LS_BKE286:='1';
else
LS_BKE286:='2';
end if;
LS_AAZ149:=LS_TSBZBH;--特殊病种编码
LS_AKC190:=IN_YBGHH0;--医保门诊挂号流水号/住院登记流水号
LS_AAE072:=IN_YBDJH0;--医保单据号
if in_AAZ500 is not null and in_AAZ500 not in ('0') then --医保卡号[aaz500]
LS_AAZ500:=in_AAZ500;
end if;
if in_AAC003 is not null then --姓名[aac003]:
LS_AAC003:=in_AAC003;
end if;
LS_AAZ501:=nvl(LS_AAZ501,LS_TYZDCS_AAZ501);--卡识别码
--获取行政区号
LS_aab301:=substrb(SF_SF_AAB301(PBRID00,LS_XZQH00,LS_AAZ500),1,10);
--平潭医保 aab301转为350128 平潭卡
if instrb(LS_YBMC00,'平潭')>0 then
LS_aab301:='350128';--350128:平潭卡
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;
--根据挂号ID查下是否存在挂号记录,未找到根据挂号查找
if LS_MKLXMC in ('门诊费用退款') and PBRID00>0 then
select count(1) into LS_COUNT0 from SF_BRXXB0 A where A.GHID00=LS_GHID00 and a.BRID00=PBRID00;
if nvl(LS_COUNT0,0)=0 and trim(PGHH000) is not null and trim(PGHH000) not in ('0') then
begin
select GHID00,GHLB00 into LS_GHID00,LS_GHLB00 from SF_BRXXB0 A where A.GHH000=rpad(PGHH000,12,' ') and a.BRID00=PBRID00;
exception
when others then
LS_GHID00:=PGHID00;
end;
end if;
LS_GHID00:=nvl(LS_GHID00,PGHID00);
end if;
--根据挂号ID查下是否存在挂号记录,未找到根据挂号查找
if LS_GHID00=0 and PBRID00>0 and trim(PGHH000) is not null and trim(PGHH000) not in ('0') then
begin
select GHID00,GHLB00 into LS_GHID00,LS_GHLB00 from SF_BRXXB0 A where A.GHH000=rpad(PGHH000,12,' ') and a.BRID00=PBRID00;
exception
when others then
LS_GHID00:=PGHID00;
end;
LS_GHID00:=nvl(LS_GHID00,PGHID00);
end if;
--2020.08.21 结算之前的费用,请求报文中费用登记和明细上传,GHID00 不一样 GHH000一样,导致 通用登记和明细上传不一致LS_BKE042不一致(厦门地区校验)
if PBRID00>0 and trim(PGHH000) is not null and trim(PGHH000) not in ('0') then
begin
select GHID00,GHLB00 into LS_GHID00,LS_GHLB00 from SF_BRXXB0 A where A.GHH000=rpad(PGHH000,12,' ') and a.BRID00=PBRID00;
exception
when others then
LS_GHID00:=PGHID00;
end;
end if;
--获取挂号类别名称
if LS_GHID00>0 and PBRID00>0 then
begin
select B.LBMC00,B.YSZJDJ,a.GHKS00,C.BMMC00,A.GHRQ00,A.GHSJ00,trim(A.GHH000)GHH000
into LS_LBMC00,LS_YSZJDJ,LS_GHKS00,LS_GHKSMC,LS_GHRQ00,LS_GHSJ00,LS_GHH000
from SF_BRXXB0 A,BM_GHLBB0 B,BM_BMBM00 C
where A.GHLB00=B.LBBH00 and a.GHKS00=C.BMBH00 and A.GHID00=LS_GHID00 and A.BRID00=PBRID00;
exception
when others then
LS_LBMC00:='';
LS_YSZJDJ:='';
LS_GHRQ00:=to_char(sysdate,'YYYYMMDD');
LS_GHSJ00:=to_char(sysdate,'HH24MISS');
end;
end if;
if instrb(LS_GHKSMC,'公务员')>0 then
LS_AKA078:='60';--60:体检
LS_AKA130:='A3';
end if;
--bka535:医师诊查费等级 110 普通医师 111 主治医师 112 副主任医师 113 主任医师 114 专家 120 普通医师[中医辩证] 121 主治医师[中医辩证] 122 副主任医师[中医辩证] 123 主任医师[中医辩证] 124 国医大师[中医辩证]
if instrb(LS_LBMC00,'主治医师')>0 then
LS_BKA535:='111';
elsif instrb(LS_LBMC00,'副主任医师')>0 then
LS_BKA535:='112';
elsif instrb(LS_LBMC00,'主任医师')>0 then
LS_BKA535:='113';
elsif instrb(LS_LBMC00,'专家')>0 then
LS_BKA535:='114';
elsif instrb(LS_LBMC00,'普通医师[中医辩证]')>0 then
LS_BKA535:='120';
elsif instrb(LS_LBMC00,'主治医师[中医辩证]')>0 then
LS_BKA535:='121';
elsif instrb(LS_LBMC00,'副主任医师[中医辩证]')>0 then
LS_BKA535:='122';
elsif instrb(LS_LBMC00,'主任医师[中医辩证]')>0 then
LS_BKA535:='123';
elsif instrb(LS_LBMC00,'国医大师[中医辩证]')>0 then
LS_BKA535:='124';
else
LS_BKA535:='110';
end if;
--医师诊金等级接口编码
if LS_YSZJDJ is not null then
LS_BKA535:=LS_YSZJDJ;
end if;
--挂号类别名称包含急诊,AKA130 医疗类别 12 急诊
if instrb(LS_LBMC00,'急诊')>0 then
LS_AKA130:='12';
end if;
--厦门医保 bke042:his流水号 挂号、明细上传、结算保存一致
if LS_GHID00>0 and LS_HISLSHQZFS not in ('Y') then
LS_BKE042:=LS_GHID00;
end if;
--超限制标志: (0:否 1:是) AKA130:医疗类别 (1A 门诊超限全自费)
if LS_CXZBZ0 in ('1') then
LS_AKA130:='1A';--:1A 门诊超限全自费
end if;
if PJKCJBM in ('YBJK_YBDZ_0000','YBJK_TYTF_0023') then --医保交易对帐、门诊费用冲销
if LS_JZDH00>0 and PBRID00>0 then
begin
select trim(a.YBDJH0) as YBDJH0,nvl(substrb(nvl(a.YBGHH0,a.YBSM20),1,30),'0') as YBGHH0,a.MZID00 as MZID00, a.YBJKID,
nvl(a.YBJKID,a.YBSM19)as YBSM19,trim(a.YBSM20) as YBSM20,trim(a.YBSM23) as YBSM23,trim(a.YBSM24) as YBSM24,trim(a.YBSM25) as YBSM25,
trim(a.YBSM01)YBSM01
into LS_YBDJH0,LS_YBGHH0,LS_MZID00,LS_JZBYBJKID,LS_YBSM19,LS_YBSM20,LS_YBSM23,LS_YBSM24,LS_YBSM25,LS_YBSM01
from SF_JZB000 a where BRID00=PBRID00 and JZDH00=LS_JZDH00;
exception
when others then
LS_YBSM19:=null;--ybjkid 医保接口ID
LS_YBSM20:=null;--akc190 医保挂号或医保住院号
LS_YBSM23:=null;--bka555 对账分类01:本市02:省内异地03:省外异地99:门诊超限全自费
LS_YBSM24:=null;--his收费单据流水号(bke298)
LS_YBSM25:=null;--his流水号(bke042)
LS_YBDJH0:='0'; --医保单据号
LS_YBGHH0:='0'; --医保挂号
LS_MZID00:=0; --门诊ID
end;
--bke298:HIS收费单据流水号(YBSM19)
if LS_YBSM19 is not null then
LS_BKE298:=substrb(LS_YBSM19,1,50);
end if;
--如果结账表YBSM24=bke298直接赋值
if LS_YBSM24 is not null then
LS_BKE298:=substrb(LS_YBSM24,1,50);--YBSM24=bke298
end if;
--bka555 对账数据分类YBSM23 varchar2(3) y 参见编码附件(本地、省内、跨省等),“门诊超限全自费” 01 本市 02 省内异地 03 省外异地 99 门诊超限全自费
LS_BKA555:=substrb(LS_YBSM23,1,20);
if LS_YBSM25 is not null then
LS_BKE042:=substrb(LS_YBSM25,1,20);--his流水号(bke042)
end if;
end if;
--超限制标志: (0:否 1:是) BKA555:对帐数据分类 (99 门诊超限全自费)
if LS_CXZBZ0 in ('1') and LS_BKA555 is null then
LS_BKA555:='99';--:99:门诊超限全自费
end if;
--如果入参数有传 医保挂号按前台赋值(AKC190:医保门诊挂号流水号/住院登记流水号)
if trim(IN_YBGHH0) is not null and trim(IN_YBGHH0) not in ('0') then
LS_AKC190:=trim(IN_YBGHH0);
else
LS_AKC190:=trim(LS_YBGHH0);
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;
--如果结算未成功LS_BKE298直接取前台传入值
if LS_HISLSH is not null then
LS_BKE298:=LS_HISLSH;
end if;
if PJKCJBM in ('YBJK_TYTF_0023') then --YBJK_TYTF_0023 :门诊费用冲销
--当MZID00不为空时才将其赋值给bke042 MZSF-20200922-003
if LS_MZID00 is not null and ( LS_MZID00>0 and LS_HISLSHQZFS not in ('Y') or LS_YBSM25 is null ) then
LS_BKE042:=LS_MZID00; --his流水号(bke042)
end if;
--2020.08.21 旧医保结算新医保冲销,BKE298无值,新医保限制该值不能为空,随便赋值
if LS_BKE298 is null then
LS_BKE298:=LS_YBJKID;
end if;
end if;
end if;
--获取特殊病种对应的医保病种编码
if trim(LS_AAZ149) is not null then
begin
select YBBZBM into LS_YBBZBM from BM_TSBZB0 where BH0000=trim(LS_AAZ149);
exception
when others then
LS_YBBZBM:=null;
end;
if trim(LS_YBBZBM) is not null then
LS_AAZ149:=substrb(trim(LS_YBBZBM),1,30);
end if;
end if;
--2020.10.15 医保单方面冲销--begin--
--if in_CXTYPE in ('100','110','120','130') then --100: 费用明细冲销 110: 费用结算冲正 120: 入院登记冲销 130:费用冲销
if in_AAZ500 is not nulL and in_AAZ500 not in ('0') then --医保卡号[aaz500]
LS_AAZ500:=in_AAZ500;
end if;
if in_aac002 is not null then --身份证号[aac002]
LS_aac002:=in_aac002;
end if;
if in_AAC003 is not null then --姓名[aac003]:
LS_AAC003:=in_AAC003;
end if;
if in_AKC190 is not null and in_AKC190 not in ('0') then --医保挂挂号或住院流水号[akc190]
LS_AKC190:=substrb(in_AKC190,1,30);
end if;
if in_BKE297 is not null then --医保明细流水号[bke297]
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;
if in_AAE072 is not null then --医保收费流水号[aae072]:
LS_AAE072:=substrb(in_AAE072,1,30);
end if;
if in_bke042 is not null then --his流水号[bke042]:
LS_bke042:=substrb(in_bke042,1,50);
end if;
if in_bke298 is not null then --his收费单据流水号[bke298]
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;
--end if;
--2020.10.15 医保方面冲销--End-
--2020.11.27 根据挂号日期和时间转化--begin---
if trim(LS_GHRQ00) is not null and trim(LS_GHRQ00) not in ('0','20991231') and LS_SFFSGHRQ='1' then --1:发送挂号日期和时间
begin
LS_YXTSNUM:=to_date(LS_CZRQ00,'YYYYMMDD')-to_date(LS_GHRQ00,'YYYYMMDD'); --有效天数临时变量
exception
when others then
LS_YXTSNUM:=0;
LS_FSGHRQTS:=-1;
end;
if LS_YXTSNUM<=LS_FSGHRQTS then --当前时间-挂号日期<=系统设置的有效时间
LS_BKC014:=LS_GHRQ00; --实际就诊日期 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期)
if LS_GHSJ00 is not null then
LS_BKC171:=rpad(substrb(LS_GHSJ00,1,2)||substrb(LS_GHSJ00,4,2)||substrb(LS_GHSJ00,7,2),6,'0'); --实际就诊时间 住院指病人实际出院时间
end if;
LS_AKC192:=LS_BKC014||LS_BKC171;--实际门诊/入院日期 格式:yyyymmddhh24miss
end if;
end if;
--2020.11.27 根据挂号日期和时间转化--end---
--2021.03.22--跨省异地、医保凭证 aac002判断--begin--
if substrb(trim(LS_AKC190),1,4) in ('YDKS') or IN_BKE284 in ('06') then
if SP_SF_CHECKSFZH(trim(LS_AAC002)) not in (1) then --1:身份证号码通过校验(通过身份证校验通过后,个人管理码赋值为身份证号)
if SP_SF_CHECKSFZH(trim(LS_BRZJBH))=1 then
LS_AAC002:=trim(LS_BRZJBH);
end if;
end if;
end if;
--2021.03.22--跨省异地、医保凭证 aac002判断--end--
--IC_YBBRLB.YBXZQH 医保行政区号,如果字典该字段有维护值,aab301按该值发送
if trim(LS_YBXZQH) is not null then
LS_aab301:=substrb(LS_YBXZQH,1,10);
end if;
--步骤1:插入日志主表
insert into SF_YBJKRZ(YBJKID,YBJKBM,YBJKMC,JKCJBM,BRID00,GHID00,GHH000,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,AAE072,
BKE284,BKEG23,BKA190)
select LS_YBJKID,LS_YBJKBM,LS_YBJKMC,LS_JKCJBM,PBRID00,LS_GHID00,nvl(LS_GHH000,PGHH000),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,LS_AAE072,
LS_BKE284,LS_BKEG23,LS_BKA190
from dual;
--接口公共参数--begin--
--插入主项节点功能编码(main)
--发送报文节点-------->FSLXBZ:(发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它)<--------
--usr 登录用户名 varchar2(50) y
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'usr','登录用户名',LS_USR000,null,'1',null from dual;
--pwd 密码 varchar2(32) y (md5加密)
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'pwd','密码',LS_PWD000,null,'1',null from dual;
--funid 功能点id varchar2(32) y
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'funid','功能编码',LS_FUNID,null,'1',null from dual;
------->接口返回节点-------->FSLXBZ:(发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它)<--------
--flag 校验标志(0-未通过 1-已通过) number(1)
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'flag','校验标志(0:未通过 1:已通过)',null,null,'2',null from dual;
--cause 未通过原因说明 varchar2(500) n
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'main',null,'cause','未通过原因说明',null,null,'2',null from dual;
------->接口返回节点-------->FSLXBZ:(发送类型标志 1:发送 2:返回 3:发送和返回共用 0:其它)<--------
--接口公共参数--end--
if PJKCJBM in ('YBJK_YBDZ_0004') then --医保冲正交易
--funid 原交易功能代码 varchar2(50) y 可被冲正的交易 通用收费(yb04.07.01.04)
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'funid','原交易功能代码',in_funid,null,'1',null from dual;
--aka078 医疗就诊方式 varchar2(3) y 参见编码附件
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aka078','医疗就诊方式',LS_AKA078,null,'1',null from dual;
--akc190 医保流水号 varchar2(20) n 医保门诊挂号流水号/住院登记流水号
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保门诊挂号流水号或住院登记流水号',LS_akc190,null,'1',null from dual;
--aae072 医保收费流水号 varchar2(20) n
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aae072','医保收费流水号',LS_AAE072,null,'1',null from dual;
--bke042 his流水号 varchar2(50) y his门诊流水号或住院流水号
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bke042','his流水号',LS_BKE042,null,'1',null from dual;
--bke298 his收费单据流水号 varchar2(50) y His收费单据流水号
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bke298','his收费单据流水号',LS_bke298,null,'1',null from dual;
--aab301 参保地行政区划 varchar2(6) n 两定机构必填
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aab301','参保地行政区划',LS_aab301,null,'1',null from dual;
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 SF_JZB000 a where BRID00=PBRID00 and JZDH00=LS_JZDH00;
exception
when others then
LS_BKE298:='';
LS_BKA555:='';
end;
end if;
--超限制标志: (0:否 1:是) BKA555:对帐数据分类 (99 门诊超限全自费)
if LS_CXZBZ0 in ('1') and LS_BKA555 is null then
LS_BKA555:='99';--:99:门诊超限全自费
end if;
*/
if LS_YBSM01 is not null then
LS_aab301:=substrb(LS_YBSM01,1,10);
end if;
--aka078 医疗就诊方式 varchar2(3)
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aka078','医疗就诊方式',LS_AKA078,null,'1',null from dual;
--akc190 医保流水号 varchar2(20)
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'akc190','医保流水号',LS_AKC190,null,'1',null from dual;
--aae072 医保收费流水号 varchar2(20)
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aae072','医保收费流水号',LS_AAE072,null,'1',null from dual;
--bke298 his收费流水号 varchar2(50)
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bke298','his收费流水号',LS_BKE298,null,'1',null from dual;
--bka555 对账数据分类 varchar2(3) y 参见编码附件(本地、省内、跨省等),“门诊超限全自费” 不参与对帐
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'bka555','对账数据分类',nvl(LS_BKA555,'01'),null,'1',null from dual;
--aab301 参保地行政区划
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,'aab301','参保地行政区划',nvl(LS_aab301,'350100'),null,'1',null from dual;
elsif PJKCJBM in ('YBJK_TYSF_0020','YBJK_TYSF_0020_1','YBJK_TYSF_0020_2') then --门诊收费
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZSF00,null
from BM_YBJKZD where MZSF00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
if PJKCJBM in ('YBJK_TYSF_0020_2') then --门诊收费结算(新页面)
select count(*) NUM, nvl(sum(XMJE00),0) AMOUNT into LS_CFXMSL,LS_AKB065 from VW_SF_FYXX00_TEMPMX
where ID0000=LS_ID0000 and BRID00=PBRID00 and SFFSYB='1';
else
if LS_XMFSBZ='Y' then -- 项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCFMX_TEMP00 结算时JSBZ00=1,预结算:YJSBZ0=1
select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from BM_SFCFMX_TEMP01 where ID0000=LS_ID0000 and ((LS_BKE286 in ('0') and YJSBZ0=1) or (LS_BKE286 not in ('0') and JSBZ00=1 )) ;
else
select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from BM_SFCFMX_TEMP00 where ID0000=LS_ID0000;
end if;
end if;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y
LS_JKFSZ0:=trim(LS_AAZ500);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 省交易时必填
LS_JKFSZ0:=trim(LS_AAC002);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y
LS_JKFSZ0:=trim(LS_AAC003);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_JKFSZ0:=LS_BKE284;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='ectoken' then --令牌
LS_JKFSZ0:='';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka130' then -- 医疗类别 varchar2(3) y 参见编码附件
--医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院
LS_JKFSZ0:=LS_AKA130;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号
LS_JKFSZ0:=LS_AKC190;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke298' then -- his收费单据流水号 varchar2(50) y HIS收费单据流水号
LS_JKFSZ0:=LS_BKE298;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aaz149' then -- 病种编码 varchar2(16) n 参见编码附件门诊上传特殊病种、住院上传单病种
LS_JKFSZ0:=LS_AAZ149;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke286' then -- 结算标识 varchar2(3) n 参见编码附件
--结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算
LS_JKFSZ0:=LS_BKE286;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bkc014' then -- 实际就诊日期 number(8) y 门诊为实际就诊日期,住院为实际出院日期(或中途结算日期)
LS_JKFSZ0:=LS_BKC014;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bkc171' then -- 实际就诊时间 number(6) n 住院指病人实际出院时间
LS_JKFSZ0:=LS_BKC171;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc194' then -- 出院日期 number(14) n 格式: yyyymmddhhmmss “出院结算”时必填
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke078' then -- 离院方式 varchar2(3) y 参见编码附件
--离院方式 1 医嘱离院 2 医嘱转院 3 医嘱转社区卫生服务机构/乡镇卫生院 4 非医嘱离院 5 死亡 9 其他
LS_JKFSZ0:='9';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='itemcount' then -- 处方项目数 number(4) y
--医保明细流水号个数(厦门医保)
if LS_CFLSHQZFS not in ('Y') then
LS_JKFSZ0:=1; --医保明细流水号个数(HIS系统暂时都是单次上传明细,单次结算所以个数都是1)
else
LS_JKFSZ0:=LS_CFXMSL;
end if;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc227' then -- 医疗费总金额 number(12,4) y
LS_JKFSZ0:=LS_AKB065;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke058' then -- 住院天数 number(4,1) n 住院结算时必填
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='amc029' then -- 计划生育手术类别 varchar2(3) n
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='amc026' then -- 生育类别 varchar2(3) n
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='amc028' then -- 胎儿数 number(3) n
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='amc020' then -- 计划生育手术或生育日期 number(8) n
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bmc041' then -- 怀孕天数 number(3) n
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_BKE241;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号
LS_JKFSZ0:=LS_BKE042;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bka535' then -- 医师诊查费等级 110 普通医师 111 主治医师 112 副主任医师 113 主任医师 114 专家 120 普通医师[中医辩证] 121 主治医师[中医辩证] 122 副主任医师[中医辩证] 123 主任医师[中医辩证] 124 国医大师[中医辩证]
LS_JKFSZ0:=LS_BKA535;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aab301' then -- 参保地行政区划
LS_JKFSZ0:=LS_aab301;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
--费用明细上传流水开始
--bke297 医保明细流水号 varchar2(20)
LS_JSOSTR:=LS_JSOSTR||'{';
LS_JSOSTR:=LS_JSOSTR||'"bke297"'||':'||'"'||trim(LS_MXLSH0)||'"'||'';
LS_JSOSTR:=LS_JSOSTR||'}';
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'cflist','data','cflist','费用明细上传流水',null,null,'1',null,LS_JSOSTR from dual;
--费用明细上传流水结束
--2020.10.22 通用收费预结算bke284=06时转成01 发送
--LS_BKE286 结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算
if LS_BKE286='0' then
update SF_YBJKMX set JKFSZ0='01' where YBJKID=LS_YBJKID and ZDBM00='bke284';
end if;
elsif PJKCJBM in ('YBJK_TYTF_0023') then --YBJK_TYTF_0023 :门诊费用冲销
if nvl(PBRID00,0)=0 then
PZXZT00:=0;--输出:执行状态 0:失败 1:成功
PERRMSG:='未找到有效的基本信息!';
return;
end if;
--获取YBDJH0:医保单据号 YBSM20:医保挂号号(费用结算发送bke298冲销的时候bke298要发费用结算时)
begin
--select trim(a.YBDJH0),nvl(substrb(nvl(a.YBGHH0,a.YBSM20),1,30),'0'),MZID00,nvl(a.YBJKID,a.YBSM19) into LS_YBDJH0,LS_YBGHH0,LS_MZID00,LS_BKE298
select nvl(substrb(nvl(a.YBGHH0,a.YBSM20),1,30),'0'),MZID00 into LS_YBGHH0,LS_MZID00
from SF_JZB000 a where BRID00=PBRID00 and JZDH00=LS_JZDH00;
exception
when others then
--LS_YBDJH0:='0';
LS_YBGHH0:='0';
LS_MZID00:=0;
end;
--如果入参数有传 医保挂号按前台赋值(AKC190:医保门诊挂号流水号/住院登记流水号)
if trim(IN_YBGHH0) is not null and trim(IN_YBGHH0) not in ('0') and LS_AKC190 is null then
LS_AKC190:=trim(IN_YBGHH0);
else
LS_AKC190:=trim(LS_YBGHH0);
end if;
--重新取挂号信息表医保挂号号
if LS_MZID00>0 and (LS_AKC190 is null or LS_AKC190 in ('0')) then
begin
select trim(YBGHH0) into LS_AKC190 from SF_BRXXB0 a where BRID00=PBRID00 and GHID00=LS_MZID00;
exception
when others then
LS_AKC190:=null;
end;
end if;
--当MZID00不为空时才将其赋值给bke042 MZSF-20200922-003
if LS_MZID00>0 and LS_HISLSHQZFS not in ('Y') then
LS_BKE042:=LS_MZID00; --his流水号(bke042)
end if;
if in_AKC190 is not null and in_AKC190 not in ('0') then --医保挂挂号或住院流水号[akc190]
LS_AKC190:=substrb(in_AKC190,1,30);
end if;
/*
--如果入参数有传 单据号按前台赋值(AAE072:医保单据号)
if trim(IN_YBDJH0) is not null and trim(IN_YBDJH0) not in ('0') and LS_AAE072 is null 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;
if LS_MZID00>0 and LS_HISLSHQZFS not in ('Y') then
LS_BKE042:=LS_MZID00;
end if;
--如果结算未成功LS_BKE298直接取前台传入值
if LS_HISLSH is not null then
LS_BKE298:=LS_HISLSH;
end if;
*/
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZSFCX,null
from BM_YBJKZD where MZSFCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号
LS_JKFSZ0:=trim(LS_AAZ500);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac002' then --证件号码(社会保障号)
LS_JKFSZ0:=trim(LS_AAC002);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名
LS_JKFSZ0:=trim(LS_AAC003);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_JKFSZ0:=LS_BKE284;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='ectoken' then --令牌
LS_JKFSZ0:='';
update SF_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 SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka130' then --aka130 医疗类别
LS_JKFSZ0:=LS_AKA130;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc190' then --医保流水号(医保挂号)
LS_JKFSZ0:=LS_AKC190;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aae072' then --医保收费流水号(医保结账单号)
LS_JKFSZ0:=trim(LS_AAE072);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke298' then --his收费流水号
LS_JKFSZ0:=LS_BKE298;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke241' then --数据来源
LS_JKFSZ0:=LS_BKE241;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号
LS_JKFSZ0:=LS_BKE042;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bkee70' then -- his 退费流水号 varchar2(50) y 对帐时使用
LS_JKFSZ0:=LS_BKEE70;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aab301' then -- 参保地行政区划
LS_JKFSZ0:=LS_aab301;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
elsif PJKCJBM in ('YBJK_MXSC_0026','YBJK_MXSC_0026_1','YBJK_MXSC_0026_2') then --门诊费用明细上传
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZMXSC,null
from BM_YBJKZD where MZMXSC in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
if LS_GHID00>0 then
begin
select trim(a.YBGHH0)YBGHH0,a.GHKS00,b.BMMC00,b.YYKSBM,a.JZYS00,C.ZWXM00,decode(LS_ZJHMLY,'1',C.SFZBH0,C.YSZJHM)YSZJHM,trim(A.GHH000)GHH000
into LS_YBGHH0,LS_GHKS00,LS_GHKSMC,LS_YYKSBM,LS_KDYS00,LS_KDYSXM,LS_YSZJHM,LS_GHH000
from SF_BRXXB0 a,BM_BMBM00 B ,BM_YGBM00 C
where a.GHKS00=b.BMBH00 and a.JZYS00=C.YGBH00 and A.GHID00=LS_GHID00 and a.BRID00=PBRID00;
exception
when others then
LS_GHKS00:='';
LS_GHKSMC:='';
LS_YBGHH0:='';
LS_GHH000:='';
end;
if trim(PGHH000) is null or trim(PGHH000) in ('0') then
LS_GHH000:=LS_GHH000;
else
LS_GHH000:=trim(PGHH000);
end if;
begin
LS_YYKSBM:=substrb(SF_SF_GetYYKSBM(PBRID00,trim(LS_GHH000),0),1,20); --医院科室取值
exception
when others then
LS_YYKSBM:=null;
end;
if LS_YYKSBMFSLX='1' then --新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0
LS_akf001:=LS_GHKS00;--院内科室编码
LS_bkf237:=trim(substrb(LS_YYKSBM,1,50));--医保科室编码
if LS_bkf237 is null and LS_akf001 is not null then
begin
select substrb(trim(b.YYKSBM),1,50) into LS_bkf237 from BM_BMBM00 B where B.BMBH00=LS_akf001;
exception
when others then
LS_bkf237:='';
end;
end if;
LS_bkf237:=trim(substrb(nvl(LS_YYKSBM,LS_GHKS00),1,50));--医保科室编码
else
LS_bkf237:=LS_GHKS00;--院内科室编码
LS_akf001:=trim(substrb(LS_YYKSBM,1,50));--医保科室编码
if LS_akf001 is null and LS_bkf237 is not null then
begin
select substrb(trim(b.YYKSBM),1,50) into LS_akf001 from BM_BMBM00 B where B.BMBH00=LS_bkf237;
exception
when others then
LS_akf001:='';
end;
end if;
LS_akf001:=trim(substrb(nvl(LS_YYKSBM,LS_GHKS00),1,50));--医保科室编码
end if;
LS_akf002:=substrb(LS_GHKSMC,1,50);--标准科室名称(挂号科室名称)
LS_bkf238:=substrb(LS_GHKSMC,1,50);--his内部科室名称(医保科室名称)
end if;
--如果入参未传入医保挂号号,取收费病人信息表的医保挂号
if LS_AKC190 is null and LS_YBGHH0 is not null and LS_YBGHH0 not in ('0') then
LS_AKC190:=LS_YBGHH0;
end if;
if PJKCJBM in ('YBJK_MXSC_0026_2') then --门诊收费结算明细上传(新页面)
select count(*) NUM, nvl(sum(XMJE00),0) AMOUNT into LS_CFXMSL,LS_AKB065 from VW_SF_FYXX00_TEMPMX
where ID0000=LS_ID0000 and BRID00=PBRID00 and SFFSYB='1';
else
if LS_XMFSBZ='Y' then -- 项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCFMX_TEMP00
select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from BM_SFCFMX_TEMP01 where ID0000=LS_ID0000 and ((LS_BKE286 in ('0') and YJSBZ0=1) or (LS_BKE286 not in ('0') and JSBZ00=1 ));
else
select count(1),sum(XMJE00) into LS_CFXMSL,LS_AKB065 from BM_SFCFMX_TEMP00 where ID0000=LS_ID0000;
end if;
end if;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y
LS_JKFSZ0:=trim(LS_AAZ500);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y
LS_JKFSZ0:=trim(LS_AAC003);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n
LS_JKFSZ0:=trim(LS_AAC002);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_JKFSZ0:=LS_BKE284;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='ectoken' then --令牌
LS_JKFSZ0:='';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号
LS_JKFSZ0:=LS_AKC190;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号
LS_JKFSZ0:=LS_BKE042;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='itemcount' then -- 明细项目数量 number(4) y
LS_JKFSZ0:=LS_CFXMSL;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akb065' then -- 医疗费总金额 number(16,2) y
LS_JKFSZ0:=LS_AKB065;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_BKE241;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke286' then -- 结算标识 varchar2(3) n 参见编码附件 0:预结算 1:中途结算 2:门诊结算/出院结算
LS_JKFSZ0:=LS_BKE286;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aab301' then -- 参保地行政区划
LS_JKFSZ0:=LS_aab301;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
--诊断明细开始
/*
bke301 诊断或症状类型 varchar2(3) y 参见编码附件 01:门诊 02:入院03:出院04:病理诊断
bke302 诊断或症状序号 varchar2(3) y 参见编码附件 01:主要、主病 02:次要、主症、其它 03:第三等
bke087 诊断或症状编码 varchar2(50) y 见icd-10或症状表编码
bke088 诊断或症状名称 varchar2(100) y 见icd-10或症状表名称
--'3'主要,'4'其他;中医'1'疾病,'2'症候
*/
select count(*) into LS_COUNT0 from YS_BRZDXX where GHID00=LS_GHID00;
if nvl(LS_COUNT0,0)<=0 then
if instrb(LS_GHKSMC,'公务员')>0 or LS_SFYXKZD='Y' then
LS_COUNT0:=0;
else
PZXZT00:=0;--输出:执行状态 0:失败 1:成功
PERRMSG:='未找到有效的诊断信息!';
return;
end if;
end if;
if nvl(LS_COUNT0,0)>0 then
for C_ZDXX in CUR_BRZDXX loop
LS_JSOSTR:='';
if C_ZDXX.ZZDBZ0='1' then --'3'主要,'4'其他;中医'1'疾病,'2'症候
LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断
LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等
elsif C_ZDXX.ZZDBZ0='2' then --'3'主要,'4'其他;中医'1'疾病,'2'症候
LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断
LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等
elsif C_ZDXX.ZZDBZ0='3' then --'3'主要,'4'其他;中医'1'疾病,'2'症候
LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断
LS_BKE302:='01'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等
elsif C_ZDXX.ZZDBZ0='4' then --'3'主要,'4'其他;中医'1'疾病,'2'症候
LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断
LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等
elsif C_ZDXX.ZZDBZ0='5' then --'3'主要,'4'其他;中医'1'疾病,'2'症候
LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断
LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等
else
LS_BKE301:='01'; --bke301:01:门诊 02:入院 03:出院 04:病理诊断
LS_BKE302:='02'; --bke302:01:主要、主病 02:次要、主症、其它 03:第三等
end if;
if LS_ZDBMBGCS='1' then --诊断编码参数开启=1后转化
begin
select DYBZBM,DYJBMC into LS_DYBZBM,LS_DYJBMC from xt_ICD900 B where B.ICD900=C_ZDXX.ICD900 and nvl(SYBZ00,'1')='1';
exception
when others then
LS_DYBZBM:=C_ZDXX.ICD900;
LS_DYJBMC:=C_ZDXX.ZDMC00;
end;
LS_BKE087:=substrb(nvl(LS_DYBZBM,C_ZDXX.ICD900),1,50); --诊断或症状编码 y 见icd-10或症状表编码
LS_BKE088:=substrb(nvl(LS_DYJBMC,C_ZDXX.ZDMC00),1,100);--诊断或症状名称 y 见icd-10或症状表名称
else
LS_BKE087:=substrb(trim(C_ZDXX.ICD900),1,50); --诊断或症状编码 y 见icd-10或症状表编码
LS_BKE088:=substrb(trim(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||'"bke091"'||':'||'"'||trim(LS_bke091)||'"'||','; --手术及操作编码
LS_JSOSTR:=LS_JSOSTR||'"bke092"'||':'||'"'||trim(LS_bke092)||'"'||''; --手术及操作名称
LS_JSOSTR:=LS_JSOSTR||'}';
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'zdlist','data','zdlist','诊断明细',null,null,'1',null,LS_JSOSTR from dual;
end loop;
else --如果没有诊断信息生成空数组"zdlist":[]
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||'"bke091"'||':'||'"'||trim(LS_bke091)||'"'||','; --手术及操作编码
LS_JSOSTR:=LS_JSOSTR||'"bke092"'||':'||'"'||trim(LS_bke092)||'"'||''; --手术及操作名称
LS_JSOSTR:=LS_JSOSTR||'}';
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'zdlist','data','zdlist','诊断明细',null,null,'1',null,LS_JSOSTR from dual;
end if;
--诊断明细结束
/*
bke162 his处方号 bkea97 his处方明细流水号 bke045 收费项目编码
bke046 收费项目名称 aka063 发票项目类别 aka074 规格型号
aka070 剂型 aka067 单位 akc225 单价 akc226 数量
akc227 金额 aka071 每次用量 aka072 使用频次
aka073 给药途径 akc221 处方日期 akc229 执行天数
akf001 科室编码 akf002 科室名称 bkf237 his内部科室编码
bkf238 his内部科室名称 bkc006 医疗服务人员姓名 bkc007 医疗服务人员证件号码
bkea96 限制范围类别 bka001 是否医保项目 bkeaa0 处方外流标志
bkeaa1 处方开具医疗机构 bkeaa2 处方执行医疗机构 bkeaa3 处方外流对应流水号
*/
--插入到中间表SF_YBJKQD
if PJKCJBM in ('YBJK_MXSC_0026_2') then --门诊收费结算明细上传(新页面)通过视图VW_SF_FYXX00_TEMPMX取值
insert into SF_YBJKQD(YBJKID,JKMXID,BKE162,BKEA97,BKE045,BKE046,AKA063,AKA074,AKA070,AKA067,AKC225,AKC226,
AKC227,AKA071,AKA072,AKA073,AKC221,AKC229,AKF001,AKF002,BKF237,BKF238,BKC006,BKC007,BKEA96,
BKA001,BKEAA0,BKEAA1,BKEAA2,BKEAA3,BKE181,BKE182,BKEC27,BKC541,BKE506,BKE507,BKE508,BKE509,
BKEH83,BKEH05,BKEH06,BAKXML)
select
LS_YBJKID as YBJKID,
LS_ID0000 as JKMXID,
LS_YBJKID as BKE162, --his处方号 varchar2(20)
SQ_SF_YBJKMX_JKMXID.nextval as BKEA97, --his处方明细流水号 varchar2(50)
trim(A.XMBH00) as BKE045, --收费项目编码 varchar2(20)
trim(A.XMMC00) as BKE046, --收费项目名称 varchar2(100)
nvl(trim(A.FPXMBH),'13') as AKA063, --发票项目类别 varchar2(3)
substrb(trim(A.XMGG00),1,20) as AKA074,--规格型号 varchar2(50)
nvl(trim(A.JX0000),'000') as AKA070, --剂型 varchar2(3)
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)
substrb(trim(A.QYZL00),1,10) as AKA071, --每次用量 number(5,2)
substrb(trim(A.YPPL00),1,10) as AKA072, --使用频次 varchar2(5)
substrb(trim(A.GYTJ00),1,50) as AKA073, --给药途径 varchar2(50)
nvl(trim(A.CZRQ00),LS_CZRQ00) as AKC221,--处方日期 number(8)
nvl(trim(A.YLTS00),'1') as AKC229, --执行天数 number(4,1)
LS_akf001 as AKF001, --科室编码 varchar2(50)
LS_akf002 as AKF002, --科室名称 varchar2(50)
LS_bkf237 as BKF237, --his内部科室编码 varchar2(50)
LS_bkf238 as BKF238, --his内部科室名称 varchar2(50)
trim(LS_KDYSXM) as bkc006, --医疗服务人员姓名
trim(LS_YSZJHM) as bkc007, --医疗服务人员证件号码
trim(A.SFYB00) as bkea96, --限制范围类别 varchar2(3)
substrb(A.SFYB00,1,2) as bka001, --是否医保项目 varchar(2) y y-是 n-否
'N' as bkeaa0, --处方外流标志 varchar2(3) y Y-外流项目、N-非外流项目 (1)处方开具医疗机构如果有处方外流需求的,需要标识外流项目和非外流项目 如果没有外流需求的,默认设置为非外流项目
null as bkeaa1, --处方开具医疗机构 varchar2(40) y 开具处方时默认填入,处方执行时由流转平台
null as bkeaa2, --处方执行医疗机构 varchar2(40) n 处方执行医疗机构编号
null as bkeaa3, --处方外流对应流水号 varchar2(20) n 处方开具时归属的医保流水号
nvl(to_char(A.SFXMID),trim(A.XMBH00)) as BKE181,--HIS院内项目编码
substrb(trim(A.XMMC00),1,100) as BKE182, --HIS院内项目名称
nvl(trim(A.CZRQ00),LS_CZRQ00) as BKEC27,--记帐日期1、住院:明细对应记帐日期或执行日期,与日清单时间对应。2、门诊,该值等于【处方日期】目录与价格动态调整依据
'001' as BKC541,--医保服务人员类别:001:医师 002:护师(士) 003:药师(士) 004:技师 005:收费员 006:助理医师 007:心理咨询师
substrb(trim(A.DCYYDW),1,20) as BKE506,--单次用药单位
substrb(trim(A.QYZL00),1,20) as BKE507,--取药总量
substrb(trim(A.QYZLDW),1,20) as BKE508,--取药总量单位
substrb(nvl(trim(A.YLTS00),'1'),1,20) as BKE509, --药量天数
A.BKEH83,--国家标准对应编码
A.BKEH05,--医保备用1
A.BKEH06,--医保备用2
A.BAKXML--HIS备用字段(xml格式)后续扩展
from VW_SF_FYXX00_TEMPMX A where ID0000=LS_ID0000 and BRID00=PBRID00 and SFFSYB='1';
else
if LS_XMFSBZ='Y' then --项目选择发送 Y:BM_SFCFMX_TEMP01, N:BM_SFCF00_TEMP00
insert into SF_YBJKQD(YBJKID,JKMXID,BKE162,BKEA97,BKE045,BKE046,AKA063,AKA074,AKA070,AKA067,AKC225,AKC226,
AKC227,AKA071,AKA072,AKA073,AKC221,AKC229,AKF001,AKF002,BKF237,BKF238,BKC006,BKC007,BKEA96,
BKA001,BKEAA0,BKEAA1,BKEAA2,BKEAA3,BKE181,BKE182,BKEC27,BKC541,BKE506,BKE507,BKE508,BKE509,
BKEH83,BKEH05,BKEH06,BAKXML)
select
LS_YBJKID as YBJKID,
LS_ID0000 as JKMXID,
LS_YBJKID as BKE162, --his处方号 varchar2(20)
SQ_SF_YBJKMX_JKMXID.nextval as BKEA97, --his处方明细流水号 varchar2(50)
trim(A.XMBH00) as BKE045, --收费项目编码 varchar2(20)
trim(A.XMMC00) as BKE046, --收费项目名称 varchar2(100)
nvl(trim(A.FPXMBH),'13') as AKA063, --发票项目类别 varchar2(3)
substrb(trim(A.XMGG00),1,20) as AKA074,--规格型号 varchar2(50)
nvl(trim(A.JX0000),'000') as AKA070, --剂型 varchar2(3)
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)
substrb(trim(nvl(A.YPYL00,'1')),1,10) as aka071, --每次用量 number(5,2) n 药品类项目必填
substrb(trim(nvl(A.YPPL00,'9999')),1,10) as aka072, --使用频次 varchar2(5) n 药品类项目必填
substrb(trim(A.GYTJ00),1,50) as aka073, --给药途径 varchar2(5) n 药品类项目必填
nvl(trim(A.CZRQ00),LS_CZRQ00) as AKC221,--处方日期
nvl(trim(A.YLTS00),'1') 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,--医疗服务人员证件号码
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 处方开具时归属的医保流水号
substrb(nvl(to_char(A.SFXMID),trim(A.XMBH00)),1,50) as BKE181,--HIS院内项目编码 bke181 HIS 院内项目编码 varchar2(50)
substrb(trim(A.XMMC00),1,100) as BKE182, --bke182 HIS 院内项目名称 varchar2(100)
nvl(trim(A.CZRQ00),LS_CZRQ00) as BKEC27,--记帐日期1、住院:明细对应记帐日期或执行日期,与日清单时间对应。2、门诊,该值等于【处方日期】目录与价格动态调整依据
'001' as BKC541,--医保服务人员类别:001:医师 002:护师(士) 003:药师(士) 004:技师 005:收费员 006:助理医师 007:心理咨询师
substrb(trim(A.DCYYDW),1,20) as BKE506,--单次用药单位
substrb(trim(A.QYZL00),1,20) as BKE507,--取药总量
substrb(trim(A.QYZLDW),1,20) as BKE508,--取药总量单位
substrb(nvl(trim(A.YLTS00),'1'),1,20) as BKE509, --药量天数
A.BKEH83,--国家标准对应编码
A.BKEH05,--医保备用1
A.BKEH06,--医保备用2
A.BAKXML--HIS备用字段(xml格式)后续扩展
from BM_SFCFMX_TEMP01 A where ID0000=LS_ID0000 and ((LS_BKE286 in ('0') and YJSBZ0=1) or (LS_BKE286 not in ('0') and JSBZ00=1 ));
else
insert into SF_YBJKQD(YBJKID,JKMXID,BKE162,BKEA97,BKE045,BKE046,AKA063,AKA074,AKA070,AKA067,AKC225,AKC226,
AKC227,AKA071,AKA072,AKA073,AKC221,AKC229,AKF001,AKF002,BKF237,BKF238,BKC006,BKC007,BKEA96,
BKA001,BKEAA0,BKEAA1,BKEAA2,BKEAA3,BKE181,BKE182,BKEC27,BKC541,BKE506,BKE507,BKE508,BKE509,
BKEH83,BKEH05,BKEH06,BAKXML)
select
LS_YBJKID as YBJKID,
LS_ID0000 as JKMXID,
LS_YBJKID as BKE162, --his处方号 varchar2(20)
SQ_SF_YBJKMX_JKMXID.nextval as BKEA97, --his处方明细流水号 varchar2(50)
trim(A.XMBH00) as BKE045, --收费项目编码 varchar2(20)
trim(A.XMMC00) as BKE046, --收费项目名称 varchar2(100)
nvl(trim(A.FPXMBH),'13') as AKA063, --发票项目类别 varchar2(3)
substrb(trim(A.XMGG00),1,20) as AKA074,--规格型号 varchar2(50)
nvl(trim(A.JX0000),'000') as AKA070, --剂型 varchar2(3)
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.QYZL00) as aka071, --每次用量 number(5,2) n 药品类项目必填
substrb(trim(nvl(A.YPYL00,'1')),1,10) as aka071, --每次用量 number(5,2) n 药品类项目必填
substrb(trim(nvl(A.YPPL00,'9999')),1,10) as aka072, --使用频次 varchar2(5) n 药品类项目必填
substrb(trim(A.GYTJ00),1,10) as aka073, --给药途径 varchar2(5) n 药品类项目必填
nvl(trim(A.CZRQ00),LS_CZRQ00) as AKC221, --处方日期
nvl(trim(A.YLTS00),'1') 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,--医疗服务人员证件号码
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 处方开具时归属的医保流水号
substrb(nvl(to_char(A.SFXMID),trim(A.XMBH00)),1,50) as BKE181,--bke181 HIS 院内项目编码 varchar2(50)
substrb(trim(A.XMMC00),1,100) as BKE182, --bke182 HIS 院内项目名称 varchar2(100)
nvl(trim(A.CZRQ00),LS_CZRQ00) as BKEC27,--记帐日期1、住院:明细对应记帐日期或执行日期,与日清单时间对应。2、门诊,该值等于【处方日期】目录与价格动态调整依据
'001' as BKC541,--医保服务人员类别:001:医师 002:护师(士) 003:药师(士) 004:技师 005:收费员 006:助理医师 007:心理咨询师
substrb(trim(A.DCYYDW),1,20) as BKE506,--单次用药单位
substrb(trim(A.QYZL00),1,20) as BKE507,--取药总量
substrb(trim(A.QYZLDW),1,20) as BKE508,--取药总量单位
substrb(nvl(trim(A.YLTS00),'1'),1,20) as BKE509, --药量天数
A.BKEH83,--国家标准对应编码
A.BKEH05,--医保备用1
A.BKEH06,--医保备用2
A.BAKXML--HIS备用字段(xml格式)后续扩展
from BM_SFCFMX_TEMP00 A where ID0000=LS_ID0000;
end if;
/*
if LS_YBFPBH in ('Y') then --医保发票是否使用编号 Y:编码 N:明细
update SF_YBJKQD a set a.AKA063=(select b.BH0000 from BM_FPXM00 b where b.XMMC00=a.AKA063) where YBJKID=LS_YBJKID;
end if;
*/
end if;
--LS_QDQZFS 医保新接口费用清单取值方式 1:取SF_YBJKQD或ZY_YBJKQD 2:取SF_YBJKMX或ZY_YBJKMX 默认:1
if LS_QDQZFS not in ('1') then
--收费明细开始 SF_YBJKQD
for C_CFMX in CUR_MXLIST loop
LS_JSOSTR:='';
LS_JSOSTR:=LS_JSOSTR||'{';
LS_JSOSTR:=LS_JSOSTR||'"bke162"'||':'||'"'||trim(C_CFMX.bke162)||'"'||',';-- his处方号 varchar2(20) y
LS_JSOSTR:=LS_JSOSTR||'"bkea97"'||':'||'"'||trim(C_CFMX.bkea97)||'"'||',';-- his处方明细流水号 varchar2(50) y 院内系统每条收费项目唯一标识
LS_JSOSTR:=LS_JSOSTR||'"bke045"'||':'||'"'||trim(C_CFMX.bke045)||'"'||',';-- 收费项目编码 varchar2(20) y 医保对应项目编码
LS_JSOSTR:=LS_JSOSTR||'"bke046"'||':'||'"'||trim(C_CFMX.bke046)||'"'||',';-- 收费项目名称 varchar2(100) y
LS_JSOSTR:=LS_JSOSTR||'"aka063"'||':'||'"'||trim(C_CFMX.aka063)||'"'||','; -- 发票项目类别 varchar2(3) n 参见编码附件
LS_JSOSTR:=LS_JSOSTR||'"aka074"'||':'||'"'||trim(C_CFMX.aka074)||'"'||',';-- 规格型号 varchar2(50) y
LS_JSOSTR:=LS_JSOSTR||'"aka070"'||':'||'"'||trim(C_CFMX.aka070)||'"'||',';-- 剂型 varchar2(3) y 参见编码附件
LS_JSOSTR:=LS_JSOSTR||'"aka067"'||':'||'"'||trim(C_CFMX.aka067)||'"'||',';-- 单位 varchar2(20) y 参见规范编码附件V1.0
LS_JSOSTR:=LS_JSOSTR||'"akc225"'||':'||'"'||C_CFMX.akc225||'"'||',';-- 单价 number(12,4) y
LS_JSOSTR:=LS_JSOSTR||'"akc226"'||':'||'"'||C_CFMX.akc226||'"'||',';-- 数量 number(8) y
LS_JSOSTR:=LS_JSOSTR||'"akc227"'||':'||'"'||C_CFMX.akc227||'"'||',';-- 金额 number(12,4) y
LS_JSOSTR:=LS_JSOSTR||'"aka071"'||':'||'"'||trim(C_CFMX.aka071)||'"'||',';-- 每次用量 number(5,2) n 药品类项目必填
LS_JSOSTR:=LS_JSOSTR||'"aka072"'||':'||'"'||trim(C_CFMX.aka072)||'"'||',';-- 使用频次 varchar2(5) n 药品类项目必填,参见编码附件
LS_JSOSTR:=LS_JSOSTR||'"aka073"'||':'||'"'||trim(C_CFMX.aka073)||'"'||',';-- 给药途径 varchar2(50) n 药品类项目必填
LS_JSOSTR:=LS_JSOSTR||'"akc221"'||':'||'"'||trim(C_CFMX.akc221)||'"'||',';-- 处方日期 number(8) y 价调动态调整说明
LS_JSOSTR:=LS_JSOSTR||'"akc229"'||':'||'"'||trim(C_CFMX.akc229)||'"'||',';-- 执行天数 number(4,1) n
LS_JSOSTR:=LS_JSOSTR||'"akf001"'||':'||'"'||trim(C_CFMX.akf001)||'"'||',';-- 科室编码 varchar2(50) n 即资格管理系统中的“医疗机构科室id”
LS_JSOSTR:=LS_JSOSTR||'"akf002"'||':'||'"'||trim(C_CFMX.akf002)||'"'||',';-- 科室名称 varchar2(50) n 即资格管理系统中的“医院科室名称”
LS_JSOSTR:=LS_JSOSTR||'"bkf237"'||':'||'"'||trim(C_CFMX.bkf237)||'"'||',';-- his内部科室编码 varchar2(50) y 院内编码
LS_JSOSTR:=LS_JSOSTR||'"bkf238"'||':'||'"'||trim(C_CFMX.bkf238)||'"'||',';-- his内部科室名称 varchar2(50) y 院内定义
LS_JSOSTR:=LS_JSOSTR||'"bkc006"'||':'||'"'||trim(C_CFMX.bkc006)||'"'||',';-- 医疗服务人员姓名 varchar2(50) y 开处方医疗服务人员姓名
LS_JSOSTR:=LS_JSOSTR||'"bkc007"'||':'||'"'||trim(C_CFMX.bkc007)||'"'||',';-- 医疗服务人员证件号码 varchar2(18) y 开处方医疗服务人员证件号码
LS_JSOSTR:=LS_JSOSTR||'"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 SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'mxlist','data','mxlist','收费明细',null,null,'1',null,LS_JSOSTR from dual;
end loop;
--收费明细结束
end if;
if LS_SFFSGHRQ='1' then --新医保门诊是否发送挂号日期1:是0:否 参数开后,AKC221,BKEC27 不能超过LS_BKC014
update SF_YBJKQD set AKC221=LS_BKC014 where YBJKID=LS_YBJKID and AKC221>LS_BKC014 ;
update SF_YBJKQD set BKEC27=LS_BKC014 where YBJKID=LS_YBJKID and BKEC27>LS_BKC014;
end if;
elsif PJKCJBM in ('YBJK_MXZF_0029') then --门诊费用明细作废
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZMXCX,null
from BM_YBJKZD where MZMXCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号
LS_JKFSZ0:=LS_AKC190;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke297' then -- 医保明细流水号 varchar2(20) y
LS_JKFSZ0:=LS_MXLSH0;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bae016' then -- 作废原因 varchar2(100) y
LS_JKFSZ0:=LS_bae016;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_BKE241;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aab301' then -- 参保地行政区划
LS_JKFSZ0:=LS_aab301;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
elsif PJKCJBM in ('YBJK_MZDJ_0006') then --门诊挂号
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZGH00,null
from BM_YBJKZD where MZGH00 in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
if LS_GHID00>0 then
begin
select a.GHKS00,b.BMMC00,B.YYKSBM,trim(a.GHH000)as GHH000
into LS_GHKS00,LS_GHKSMC,LS_YYKSBM,LS_GHH000
from SF_BRXXB0 a,BM_BMBM00 B
where a.GHKS00=b.BMBH00 and A.GHID00=LS_GHID00 and a.BRID00=PBRID00;
exception
when others then
LS_GHKS00:='';
LS_GHKSMC:='';
LS_GHH000:='';
end;
if trim(PGHH000) is null or trim(PGHH000) in ('0') then
LS_GHH000:=LS_GHH000;
else
LS_GHH000:=trim(PGHH000);
end if;
begin
LS_YYKSBM:=substrb(SF_SF_GetYYKSBM(PBRID00,trim(LS_GHH000),0),1,20); --医院科室取值
exception
when others then
LS_YYKSBM:=null;
end;
if LS_YYKSBMFSLX='1' then --新医保医院科室编码类型0:(akf001:医保编码bkf237:院内编码)1:(akf001:院内编码bkf237:医保编码)默认值:0
LS_akf001:=LS_GHKS00;--院内科室编码
LS_bkf237:=trim(substrb(LS_YYKSBM,1,50));--医保科室编码
if LS_bkf237 is null and LS_akf001 is not null then
begin
select substrb(trim(b.YYKSBM),1,50) into LS_bkf237 from BM_BMBM00 B where B.BMBH00=LS_akf001;
exception
when others then
LS_bkf237:='';
end;
end if;
LS_bkf237:=trim(substrb(nvl(LS_YYKSBM,LS_GHKS00),1,50));--医保科室编码
else
LS_bkf237:=LS_GHKS00;--院内科室编码
LS_akf001:=trim(substrb(LS_YYKSBM,1,50));--医保科室编码
if LS_akf001 is null and LS_bkf237 is not null then
begin
select substrb(trim(b.YYKSBM),1,50) into LS_akf001 from BM_BMBM00 B where B.BMBH00=LS_bkf237;
exception
when others then
LS_akf001:='';
end;
end if;
LS_akf001:=trim(substrb(nvl(LS_YYKSBM,LS_GHKS00),1,50));--医保科室编码
end if;
LS_akf002:=substrb(LS_GHKSMC,1,50);--标准科室名称(挂号科室名称)
LS_bkf238:=substrb(LS_GHKSMC,1,50);--his内部科室名称(医保科室名称)
end if;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y
LS_JKFSZ0:=trim(LS_AAZ500);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 跨省交易时必填
LS_JKFSZ0:=trim(LS_AAC002);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y
LS_JKFSZ0:=trim(LS_AAC003);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_JKFSZ0:=LS_BKE284;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='ectoken' then --令牌
LS_JKFSZ0:='';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件, 填写规则参见表格尾部
LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka130' then -- 医疗类别 varchar2(3) y 参见编码附件,择日住院、家庭病床等通过此字段标识, 填写规则参见表格尾部
--医疗类别11:普通门诊 12:急诊、13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 52:生育住院
LS_JKFSZ0:=LS_AKA130;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号
LS_JKFSZ0:=LS_BKE042;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akf001' then -- 标准科室编码 varchar2(50) n “医疗机构科室id”
LS_JKFSZ0:=LS_akf001;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akf002' then -- 标准科室名称 varchar2(50) n “医院科室名称”
LS_JKFSZ0:=LS_akf002;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bkf237' then -- his内部科室编码 varchar2(50) y 院内编码(医保科室编码)
LS_JKFSZ0:=LS_bkf237;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bkf238' then -- his内部科室名称 varchar2(50) y 院内定义(医保科室名称)
LS_JKFSZ0:=LS_bkf238;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc069' then -- 急诊标志 varchar2(3) y 0 否,1 是
LS_JKFSZ0:='0';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc066' then -- 外伤标志 varchar2(3) y 0 否,1 是
LS_JKFSZ0:='0';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc192' then -- 实际门诊/入院日期 number(14) y 若为空,默认取系统时间
LS_JKFSZ0:=LS_AKC192;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aae030' then -- 择日住院起始日期 number(8) n
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aae031' then -- 择日住院截止日期 number(8) n
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_BKE241;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aaz501' then -- 卡识别码 varchar2(32) n “读卡”认证时必填
LS_JKFSZ0:=LS_AAZ501;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka042' then -- 住院类别 varchar2(3) n 参见编码附件(生育住院时该字段为必填项)
LS_JKFSZ0:='';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
elsif PJKCJBM in ('YBJK_MZDJ_0008') then --门诊挂号冲销
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZGHCX,null
from BM_YBJKZD where MZGHCX in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='aaz500' then -- 社会保障卡号 varchar2(20) y
LS_JKFSZ0:=trim(LS_AAZ500);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 跨省交易时必填
LS_JKFSZ0:=trim(LS_AAC002);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac003' then -- 姓名 varchar2(50) y
LS_JKFSZ0:=trim(LS_AAC003);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_JKFSZ0:=LS_BKE284;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='ectoken' then --令牌
LS_JKFSZ0:='';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aka078' then -- 医疗就诊方式 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_AKA078;--医疗就诊方式 10:门(急)诊 20:住院 81:生育门诊 82:生育住院91:工伤门诊 92:工伤住院 50:特殊门诊
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='akc190' then -- 医保流水号 varchar2(20) y 医保门诊挂号流水号/住院登记流水号
LS_JKFSZ0:=LS_AKC190;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke042' then -- his流水号 varchar2(50) y his门诊流水号或住院流水号
LS_JKFSZ0:=LS_BKE042;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke241' then -- 数据来源 varchar2(3) y 参见编码附件
LS_JKFSZ0:=LS_BKE241;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aab301' then -- 参保地行政区划
LS_JKFSZ0:=LS_aab301;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
--本功能主要应用于his建档时调用,参保人在医疗机构首次就诊时,需调用此服务进行身份认证,获取参保人基本信息。
--医保支持多渠道认证方式,目前仅开通读卡验证。其它刷脸、扫码及二维码等几种认证方式支持扩展,扩展的内容解释权归本地医保
elsif PJKCJBM in ('YBJK_YBDK_0001','YBJK_YBDK_0002','YBJK_YBDK_0003','YBJK_YBDK_0004') then --医保身份认证(f04.10.01.16)
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZGHSK,null
from BM_YBJKZD where MZGHSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号
LS_JKFSZ0:=trim(LS_AAZ500);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aaz501' then --卡识别码
LS_JKFSZ0:=LS_AAZ501;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bkz543' then --二维码
LS_JKFSZ0:=LS_BKZ543;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名
LS_JKFSZ0:=trim(LS_AAC003);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_JKFSZ0:=LS_BKE284;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='ectoken' then --令牌
LS_JKFSZ0:='';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aab301' then -- 参保地行政区划
LS_JKFSZ0:=LS_aab301;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
elsif PJKCJBM in ('YBJK_YBCX_0005') then --资格信息查询(f04.10.01.17)
--插入主项节点功能编码(data)--从字典取值
insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000)
select LS_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'data',null,substrb(SJJGBM,1,50),substrb(SJJGMC,1,100),null,null,MZGHSK,null
from BM_YBJKZD where MZGHSK in ('1','2','3') and nvl(SFYX00,'1')='1' and SJJGBM not in ('flag','cause') and JKBM00=1;
--医保发送变量赋值
for C_YBFS in CUR_YBFSZX loop
LS_JKFSZ0:='';--接口发送值
if lower(C_YBFS.ZDBM00)='aaz500' then --社会保障卡号
LS_JKFSZ0:=trim(LS_AAZ500);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aaz501' then --卡识别码
LS_JKFSZ0:=LS_AAZ501;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bkz543' then --二维码
LS_JKFSZ0:=LS_BKZ543;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac003' then --姓名
LS_JKFSZ0:=trim(LS_AAC003);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aac002' then -- 证件号码(社会保障号) varchar2(18) n 省交易时必填
LS_JKFSZ0:=trim(LS_AAC002);
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='bke284' then --身份认证类型 01:读卡 02:融合码 06:医保码 20:医疗证
LS_JKFSZ0:=LS_BKE284;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='ectoken' then --令牌
LS_JKFSZ0:='';
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
elsif lower(C_YBFS.ZDBM00)='aab301' then -- 参保地行政区划
LS_JKFSZ0:=LS_aab301;
update SF_YBJKMX set JKFSZ0=LS_JKFSZ0 where YBJKID=LS_YBJKID and ZDBM00=C_YBFS.ZDBM00;
end if;
end loop;
elsif PJKCJBM in ('YBJK_DZPJ_0060') then --门诊电子票据信息上传(yb04.13.01.25)
begin
select SF_SF_GETXMLNOTE('DZPJFL',LS_HISCS0) into LS_DZPJFL from dual;
exception
when others then
LS_DZPJFL:='01';
end;
select to_number(nvl(SF_SF_GETXMLNOTE('PJH000',LS_HISCS0),'0')) into LS_PJH000 from dual;
SP_SF_NEWYBJK_DZFPSC
(
LS_YBJKID,
LS_JZDH00,
LS_PJH000,
LS_DZPJFL,
PERRMSG
);
if PERRMSG is not null then
PZXZT00:=0;
return;
end if;
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;