-- Start of DDL Script for Function SD_HOSPITAL.SF_ZY_BSDZFP_MXLST -- Generated 2026-03-02 15:44:25 from SD_HOSPITAL@KFQYY CREATE OR REPLACE function sf_zy_bsdzfp_mxlst ( PCJLYBM varchar2 ,--厂家来源编码 BS:博思,YH:易惠。。。(待扩展) PJKCJBM varchar2 ,--接口场景编码 PZYID00 number ,--住院ID=ZY_BRXXB0.ZYID00 PJZDH00 number ,--结账单号=ZY_JZB000.JZDH00 PCXJZDH number ,--冲销结账单号=ZY_JZB000.CXJZDH PBZFPGS varchar2 ,--单病种发票 Y:病种发票 N:普通发票 Q:CDRG发票 D:DRG发票 PCZY000 number ,--操作员=BM_YGBM00.YGBH00 PCZYKS0 number ,--操作员科室=BM_YGBM00.BMBH00 PFHLXBH number ,--返回类型编码 1:chargeDetail 收费项目明细列表 2:listDetail 清单项目明细列表 3:otherInfo 其它扩展信息列表 4:otherMedicalList 其它医保信息列表 5:payChannelDetail 交费渠道列表 PINTSTR varchar2 ,--备用参数 xml编码格式传入 PHJJE00 number default 0 --合计金额 ) return clob is -- modification history -- Person Date Comments --zhangyc 2022.11.10 create by ZYSF-20221114-001 --zhangyc 2022.12.06 根据参数Invoices_CodeName_ChangeOpen=2 取BM_FPXM00:MZFPBM、MZFPMC、ZYFPBM、ZYFPMC by ZYSF-20221207-002 --zhangyc 2024.09.04 prescribeCode:处方编码取'XMBH'+项目编码或'YPNM'药品内码,博思费用明细会按prescribeCode汇总 by ZYSF-20240905-001 --zhangyc 2025.06.10 修正发送给医保总金额15409.97,结账表合计金额为15409.96,结账明细表汇总金额15409.97,导致博思校验报错 by ZYSF-20250610-002 --zhangyc 2025.11.13 listDetail:清单项目明细列表,通过函数SF_XT_YLFWJGXSXM_XMLSTR把医疗服务价格减收项目合并到主项上 by ZYSF-20251114-001 --zhangyc 2025.12.12 如果是重新结算调用游标CUR_listDetail_CXJS编码慢 by ZYSF-20251215-002 --zhangyc 2026.01.19 用通用字典参数listDetail_remark_null控制清单明细listDetail.remark是否发送空值【参数值=1为空】 by ZYSF-20260119-001 LS_JSONSTR clob; LS_TEMPJSON clob; LS_JFQDLBHJ number(12,2); --交费渠道列表 合计 LS_SFXMLBHJ number(12,2); --收费项目明细列表 合计 LS_TEPNUM number(12,2); --临时变量 LS_DJ_format varchar2(20);--单价格式化 LS_SL_format varchar2(20);--数量格式化 LS_JE_format varchar2(20);--金额格式化 LS_YBDJH0 varchar2(30);--医保单据号 LS_BRID00 number(12); LS_YBLB00 IC_YBBRLB.YBLB00%type; --医保分中心类别 LS_YBZXLB IC_YBBRLB.YBZXLB%type; --医保中心类别 LS_FBBH00 IC_YBBRLB.FBBH00%type; --费别编号 LS_TYZDCS_BSFPLX varchar2(10); --博思发票类型1:发票项目编号=BM_FPXM00.BH0000 0:发票项目ID=BM_FPXM00.FPXMID ,默认:1 LS_number_std_amt varchar2(100);--博思电子发票清单明细数量、单价、金额小数点保留位数格式化参数设置,用|隔开,(.9999标识保留4位) LS_SFDMQZ varchar2(10);--chargeCodeQzdm:收费项目代码增加前缀 LS_listDetail_remark_null varchar2(10);--单明细列表备注(listDetail.remark)是否为空 1:为空 LS_SpecialDisease_listDetail varchar2(10);--住院博思电子票据单病种或DRG是否发送清单项目明细节点listDetail, 1:发送 0:否 默认:0 LS_SFCXJS varchar2(1);--是否重新结算 0:否 1:是 LS_HQQDMXLX varchar2(1);--获取清单明细类型: 0:不查询清单明细 1:单病种清单明细 2:普通清单明细 LS_JZDH00 number(10);--结账单号 LS_ZYID00 number(10);--住院ID LS_CXJZDH number(10);--重新结算 LS_chargeCode varchar2(50);--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 LS_chargeName varchar2(100);--chargeName 收费项目名称 String 100 否 LS_sortNo number(12); --sortNo 序号 Integer 不限 否 序号 LS_remark varchar2(200);--remark 备注 String 200 否 Invoices_CodeName_ChangeOpen varchar2(10); --电子开票发票编码名称是否转化为第三方编码和名称(BM_FPXM00:MZFPBM、MZFPMC、ZYFPBM、ZYFPMC) 0:不开启 1:门诊开启 2:住院开启 3:门诊住院开启 默认:0 LS_SFFSBSFPBMMC varchar2(1); --是否发送博思发票编码和名称 1:是 0:否 LS_MZFPBM BM_FPXM00.MZFPBM%type;--门诊电子发票编码 LS_MZFPMC BM_FPXM00.MZFPMC%type;--门诊电子发票名称 LS_ZYFPBM BM_FPXM00.ZYFPBM%type;--住院电子发票编码 LS_ZYFPMC BM_FPXM00.ZYFPMC%type;--住院电子发票名称 LS_chargeDetail_sortNo varchar2(200);--序号 LS_chargeDetail_chargeCode varchar2(200);--收费项目代码 LS_chargeDetail_chargeName varchar2(200);--收费项目名称 LS_chargeDetail_unit varchar2(200);--计量单位 LS_chargeDetail_std number(14,4);--收费标准 LS_chargeDetail_number number(14,4);--数量 LS_chargeDetail_amt number(14,4);--金额 LS_chargeDetail_selfAmt number(14,4);--自费金额 LS_chargeDetail_remark varchar2(200);--备注 LS_JZMX00_SumXMJE number(12,2);--结账明细合计金额 LS_JZMX00_HJJECE number(12,2);--结账明细合计金额和合计金额差额 LS_listDetail_XMBH00 varchar2(100); --清单项目明细列表 XMBH00,--项目编码 LS_listDetail_name varchar2(200);--清单项目明细列表 name 药品名称 String 50 是 如药品名称,器材名称等 LS_listDetail_std number(14,6);--清单项目明细列表 std 单价 Number 14,6 是 LS_listDetail_number number(14,6);--清单项目明细列表 number 数量 Number 14,6 是 LS_listDetail_amt number(14,6);--清单项目明细列表 amt 金额 Number 14,6 是 LS_listDetail_selfAmt number(14,6);--清单项目明细列表 selfAmt 自费金额 Number 14,6 是 如无金额,填写0 LS_listDetail_listDetailNo varchar2(100); --清单项目明细列表 listDetailNo 明细流水号 String 60 否 明细流水号 LS_XMLSTR varchar2(4000) ;--xml LS_SFJSXM varchar2(10);--是否存在减收项目 0:不存在 1:存在 LS_JMXMBH varchar2(50);--减收项目编号 LS_JMHEJE number(12,4);--减收合计金额 LS_JMXMDJ number(12,4);--减收项目单价 LS_JMXMSL number(12,4);--减收项目数量 LS_ZXXMBH varchar2(50);--主项项目编号 LS_ZXHEJE number(12,4);--主项合计金额 LS_ZXXMDJ number(12,4);--主项项目单价 LS_ZXXMSL number(12,4);--主项项目数量 --1:chargeDetail 收费项目明细列表 cursor CUR_chargeDetail is select aa.XMBH00 as FPXMID, 1 as PXXH00,--sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 decode(LS_SFFSBSFPBMMC,'1',nvl(trim(bb.ZYFPBM),LS_SFDMQZ||decode(LS_TYZDCS_BSFPLX,'1',trim(bb.BH0000),BB.FPXMID)), LS_SFDMQZ||decode(LS_TYZDCS_BSFPLX,'1',trim(bb.BH0000),BB.FPXMID)) as chargeCode,--chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 decode(LS_SFFSBSFPBMMC,'1',nvl(trim(bb.ZYFPMC),trim(aa.XMMC00)),trim(aa.XMMC00)) as chargeName,--chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 '无' as unit,--unit 计量单位 String 20 否 sum(aa.XMJE00) as std,--std 收费标准 Number 14,2 是 1 as num,--number 数量 Number 14,2 是 sum(aa.XMJE00) as amt,--amt 金额 Number 14,2 是 sum(aa.XMJE00) as selfAmt, --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 '' as remark --备注 String 200 否 from ZY_JZMX00 aa,bm_fpxm00 bb where aa.xmbh00=bb.FPXMID and aa.JZDH00=PJZDH00 and aa.XMJE00<>0 group by aa.XMBH00,decode(LS_SFFSBSFPBMMC,'1',nvl(trim(bb.ZYFPBM),LS_SFDMQZ||decode(LS_TYZDCS_BSFPLX,'1',trim(bb.BH0000),BB.FPXMID)), LS_SFDMQZ||decode(LS_TYZDCS_BSFPLX,'1',trim(bb.BH0000),BB.FPXMID)), decode(LS_SFFSBSFPBMMC,'1',nvl(trim(bb.ZYFPMC),trim(aa.XMMC00)),trim(aa.XMMC00)) ; --病种清单 ( 单病种发票明细对应编码:DBZ01:单病种标准 DBZ02:超标床位费 DBZ03:除外耗材费 DBZ04:特需医疗服务费用) cursor CUR_BZFPMX is select decode(aa.XMBH00,'YBYL04','DBZ01','YBYL33','DBZ02','YBYL34','DBZ03','YBYL69','DBZ04',aa.XMBH00) chargeCode,--chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 aa.XMMC00 as chargeName,--chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 '无' as unit,--unit 计量单位 String 20 否 aa.XMJE00 as std,--std 收费标准 Number 14,2 是 1 as num,--number 数量 Number 14,2 是 aa.XMJE00 as amt,--amt 金额 Number 14,2 是 aa.XMJE00 as selfAmt, --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 '' as remark --备注 String 200 否 from zy_bzfpmx aa where aa.JZDH00=PJZDH00 and ZYID00=LS_ZYID00; --病种清单项目明细:listDetail cursor CUR_DBZ_listDetail is select aa.XMMC00 as name ,--name 药品名称 String 50 是 如药品名称,器材名称等 aa.XMJE00 as std,--std 单价 Number 14,6 是 1 as num ,--number 数量 Number 14,6 是 aa.XMJE00 as amt ,--amt 金额 Number 14,6 是 0 as selfAmt ,--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 aa.XMBH00 as listDetailNo,--listDetailNo 明细流水号 String 60 否 明细流水号 decode(aa.XMBH00,'YBYL04','DBZ01','YBYL33','DBZ02','YBYL34','DBZ03','YBYL69','DBZ04',aa.XMBH00) as chargeCode,--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值 aa.XMMC00 as chargeName, --chargeName 收费项目名称 String 100 否 '' as prescribeCode,--prescribeCode 处方编码 String 60 否 '' as listTypeCode,--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 '' as listTypeName,--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗 '' as code,--code 编码 String 50 否 如药品编码,有则填写 '' as form,--form 剂型 String 50 否 '' as specification,--specification 规格 String 50 否 '' as unit,--unit 计量单位 String 20 否 '' as receivableAmt,--receivableAmt 应收费用 Number 14,6 否 '' as medicalCareType,--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/ '' as medCareItemType,--medCareItemType 医保项目类型 String 100 否 '' as medReimburseRate,--medReimburseRate 医保报销比例 Number 3,2 否 '' as remark,--remark 备注 String 200 否 1 as sortNo,--sortNo 序号 Integer 不限 否 序号 '' as chrgtype--chrgtype 费用类型 String 50 否 from ZY_BZFPMX aa where aa.JZDH00=PJZDH00 and ZYID00=PZYID00 and XMJE00<>0; --普通清单项目明细:listDetail cursor CUR_listDetail is select '0' as flag00 ,--标志 0:项目 1:处方药品 2:申请表药品 'N' as SFYP00,--是否药品 Y:是 N:否 B.ZYID00 as ZYID00,--住院ID B.JZDH00 as JZDH00,--HIS结账单号 D.BH0000 as FPXMBH,--发票项目 D.FPXMID as FPXMID,--发票项目ID D.XMMC00 as FPXMMC,--发票项目名称 A.XMBH00 as XMBH00,--项目编码 B.JZDH00 as YWLSH, --ywlsh 是 string 业务流水号 substrb(A.XMMC00,1,50) as name,--name 药品名称 String 50 是 如药品名称,器材名称等 A.XMDJ00 as std,--std 单价 Number 14,6 是 sum(A.XMSL00) as num,--number 数量 Number 14,6 是 sum(A.HJJE00) as amt,--amt 金额 Number 14,6 是 sum(A.HJJE00) as selfAmt,--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 max(to_char(A.MXID00)) as listDetailNo,--listDetailNo 明细流水号 String 60 否 明细流水号 '' as chargeCode,--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 '' as chargeName,--chargeName 收费项目名称 String 100 否 max('XMBH'||to_char(A.XMBH00)) as prescribeCode,--prescribeCode 处方编码 String 60 否 '' as listTypeCode,--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 '' as listTypeName,--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 substrb(max(nvl(trim(C.BKEH83),TO_char(a.XMBH00))),1,50) as code,--code 编码 String 50 否 如药品编码,有则填写 '' as form,--form 剂型 String 50 否 -- substrb(max(trim(a.XMGG00)),1,50) as specification,--specification 规格 String 50 否 replace(substrb(max(a.XMGG00),1,50),'"','') as specification,--specification 规格 String 50 否 substrb(max(trim(a.XMDW00)),1,20) as unit,--unit 计量单位 String 20 否 '' as receivableAmt,--receivableAmt 应收费用 Number 14,6 否 '' as medicalCareType,--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 '' as medCareItemType,--medCareItemType 医保项目类型 String 100 否 '' as medReimburseRate,--medReimburseRate 医保报销比例 Number 3,2 否 '' as remark,--remark 备注 String 200 否 1 as PXXH00,--sortNo 序号 Integer 不限 否 序号 '' as chrgtype--chrgtype 费用类型 String 50 否 from ZY_FYMX00 A,ZY_BRFY00 B,BM_YYSFXM C,BM_FPXM00 D where A.DJH000 = B.DJH000 and A.XMBH00 = C.SFXMID and C.ZYFPID = D.FPXMID and A.XMBH00 < 9999999990 and B.ZYID00=LS_ZYID00 and B.JZDH00=LS_JZDH00 group by B.ZYID00,B.JZDH00,D.BH0000,D.FPXMID,D.XMMC00,A.XMBH00,A.XMMC00,A.XMDJ00 union all select '1' as flag00 ,--标志 0:项目 1:处方药品 2:申请表药品 'Y' as SFYP00,--是否药品 Y:是 N:否 A.ZYID00 as ZYID00,--住院ID A.JZDH00 as JZDH00,--HIS结账单号 F.BH0000 as FPXMBH,--发票项目 F.FPXMID as FPXMID,--发票项目ID F.XMMC00 as FPXMMC,--发票项目名称 C.YPNM00 as XMBH00,--项目编码 A.JZDH00 as YWLSH, --ywlsh 是 string 业务流水号 substrb(C.YPMC00,1,50) as name,--name 药品名称 String 50 是 如药品名称,器材名称等 C.LSDJ00 as std,--std 单价 Number 14,6 是 sum(C.YPZSL0) as num,--number 数量 Number 14,6 是 sum(round(C.LSDJ00*C.YPZSL0*100)/100) as amt,--amt 金额 Number 14,6 是 sum(round(C.LSDJ00*C.YPZSL0*100)/100) as selfAmt,--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 max(to_char(C.CFID00)) as listDetailNo,--listDetailNo 明细流水号 String 60 否 明细流水号 '' as chargeCode,--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 '' as chargeName,--chargeName 收费项目名称 String 100 否 max('YPNM'||to_char(C.YPNM00)) as prescribeCode,--prescribeCode 处方编码 String 60 否 '' as listTypeCode,--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 '' as listTypeName,--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 substrb(max(nvl(trim(E.BKEH83),TO_char(C.YPNM00))),1,50) as code,--code 编码 String 50 否 如药品编码,有则填写 '' as form,--form 剂型 String 50 否 substrb(max(trim(C.YPGG00)),1,50) as specification,--specification 规格 String 50 否 substrb(max(trim(C.CFDW00)),1,20) as unit,--unit 计量单位 String 20 否 '' as receivableAmt,--receivableAmt 应收费用 Number 14,6 否 '' as medicalCareType,--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 '' as medCareItemType,--medCareItemType 医保项目类型 String 100 否 '' as medReimburseRate,--medReimburseRate 医保报销比例 Number 3,2 否 '' as remark,--remark 备注 String 200 否 1 as PXXH00,--sortNo 序号 Integer 不限 否 序号 '' as chrgtype--chrgtype 费用类型 String 50 否 from ZY_BRFY00 A,YF_ZYCF00 B,YF_ZYCFMX C,BM_YPLB00 D,BM_YYSFXM E,BM_FPXM00 F where A.DJH000 = B.DJH000 and B.CFLSH0 = C.CFLSH0 and B.YPDLBH = D.LBBH00 and D.SFDM00 = E.SFXMID and E.ZYFPID = F.FPXMID and A.ZYID00 = LS_ZYID00 and A.JZDH00=LS_JZDH00 group by A.ZYID00,A.JZDH00,F.BH0000,F.FPXMID,F.XMMC00,C.YPNM00,C.YPMC00,C.LSDJ00 union all select '2' as flag00 ,--标志 0:项目 1:处方药品 2:申请表药品 'Y' as SFYP00,--是否药品 Y:是 N:否 A.ZYID00 as ZYID00,--住院ID A.JZDH00 as JZDH00,--HIS结账单号 F.BH0000 as FPXMBH,--发票项目 F.FPXMID as FPXMID,--发票项目ID F.XMMC00 as FPXMMC,--发票项目名称 B.YPNM00 as XMBH00,--项目编码 A.JZDH00 as YWLSH, --ywlsh 是 string 业务流水号 substrb(B.YPMC00,1,50) as name,--name 药品名称 String 50 是 如药品名称,器材名称等 B.LSDJ00 as std,--std 单价 Number 14,6 是 sum(B.YPZSL0) as num,--number 数量 Number 14,6 是 sum(round(B.LSDJ00*B.YPZSL0*100)/100) as amt,--amt 金额 Number 14,6 是 sum(round(B.LSDJ00*B.YPZSL0*100)/100) as selfAmt,--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 max(to_char(b.YPQLPC)) as listDetailNo,--listDetailNo 明细流水号 String 60 否 明细流水号 '' as chargeCode,--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 '' as chargeName,--chargeName 收费项目名称 String 100 否 max('YPNM'||to_char(B.YPNM00)) as prescribeCode,--prescribeCode 处方编码 String 60 否 '' as listTypeCode,--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 '' as listTypeName,--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 substrb(max(nvl(trim(E.BKEH83),TO_char(B.YPNM00))),1,50) as code,--code 编码 String 50 否 如药品编码,有则填写 '' as form,--form 剂型 String 50 否 substrb(max(trim(B.YPGG00)),1,50) as specification,--specification 规格 String 50 否 substrb(max(trim(B.QLDW00)),1,20) as unit,--unit 计量单位 String 20 否 '' as receivableAmt,--receivableAmt 应收费用 Number 14,6 否 '' as medicalCareType,--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 '' as medCareItemType,--medCareItemType 医保项目类型 String 100 否 '' as medReimburseRate,--medReimburseRate 医保报销比例 Number 3,2 否 '' as remark,--remark 备注 String 200 否 1 as PXXH00,--sortNo 序号 Integer 不限 否 序号 '' as chrgtype--chrgtype 费用类型 String 50 否 from ZY_BRFY00 A,YF_YZYPSQ B,BM_YPLB00 D,BM_YYSFXM E,BM_FPXM00 F where A.DJH000 = B.DJH000 and B.YPDLBH = D.LBBH00 and D.SFDM00 = E.SFXMID and E.ZYFPID = F.FPXMID and A.ZYID00 = LS_ZYID00 and A.JZDH00=LS_JZDH00 group by A.ZYID00,A.JZDH00,F.BH0000,F.FPXMID,F.XMMC00,B.YPNM00,B.YPMC00,B.LSDJ00 ; --普通清单项目明细(重新结算):listDetail cursor CUR_listDetail_CXJS is select '0' as flag00 ,--标志 0:项目 1:处方药品 2:申请表药品 'N' as SFYP00,--是否药品 Y:是 N:否 B.ZYID00 as ZYID00,--住院ID B.JZDH00 as JZDH00,--HIS结账单号 D.BH0000 as FPXMBH,--发票项目 D.FPXMID as FPXMID,--发票项目ID D.XMMC00 as FPXMMC,--发票项目名称 A.XMBH00 as XMBH00,--项目编码 B.JZDH00 as YWLSH, --ywlsh 是 string 业务流水号 substrb(A.XMMC00,1,50) as name,--name 药品名称 String 50 是 如药品名称,器材名称等 A.XMDJ00 as std,--std 单价 Number 14,6 是 sum(A.XMSL00) as num,--number 数量 Number 14,6 是 sum(A.HJJE00) as amt,--amt 金额 Number 14,6 是 sum(A.HJJE00) as selfAmt,--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 max(to_char(A.MXID00)) as listDetailNo,--listDetailNo 明细流水号 String 60 否 明细流水号 '' as chargeCode,--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 '' as chargeName,--chargeName 收费项目名称 String 100 否 max('XMBH'||to_char(A.XMBH00)) as prescribeCode,--prescribeCode 处方编码 String 60 否 '' as listTypeCode,--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 '' as listTypeName,--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 substrb(max(nvl(trim(C.BKEH83),TO_char(a.XMBH00))),1,50) as code,--code 编码 String 50 否 如药品编码,有则填写 '' as form,--form 剂型 String 50 否 substrb(max(trim(a.XMGG00)),1,50) as specification,--specification 规格 String 50 否 substrb(max(trim(a.XMDW00)),1,20) as unit,--unit 计量单位 String 20 否 '' as receivableAmt,--receivableAmt 应收费用 Number 14,6 否 '' as medicalCareType,--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 '' as medCareItemType,--medCareItemType 医保项目类型 String 100 否 '' as medReimburseRate,--medReimburseRate 医保报销比例 Number 3,2 否 '' as remark,--remark 备注 String 200 否 1 as PXXH00,--sortNo 序号 Integer 不限 否 序号 '' as chrgtype--chrgtype 费用类型 String 50 否 from ZY_FYMX00 A,ZY_BRFY00 B,BM_YYSFXM C,BM_FPXM00 D where A.DJH000 = B.DJH000 and A.XMBH00 = C.SFXMID and C.ZYFPID = D.FPXMID and A.XMBH00 < 9999999990 and B.ZYID00=LS_ZYID00 and B.JZDH00 in (select k.JZDH00 from ZY_JZB000 k where k.ZYID00=LS_ZYID00 start with k.JZDH00+0=PJZDH00 connect by prior k.CXJZDH=k.JZDH00 ) group by B.ZYID00,B.JZDH00,D.BH0000,D.FPXMID,D.XMMC00,A.XMBH00,A.XMMC00,A.XMDJ00 union all select '1' as flag00 ,--标志 0:项目 1:处方药品 2:申请表药品 'Y' as SFYP00,--是否药品 Y:是 N:否 A.ZYID00 as ZYID00,--住院ID A.JZDH00 as JZDH00,--HIS结账单号 F.BH0000 as FPXMBH,--发票项目 F.FPXMID as FPXMID,--发票项目ID F.XMMC00 as FPXMMC,--发票项目名称 C.YPNM00 as XMBH00,--项目编码 A.JZDH00 as YWLSH, --ywlsh 是 string 业务流水号 substrb(C.YPMC00,1,50) as name,--name 药品名称 String 50 是 如药品名称,器材名称等 C.LSDJ00 as std,--std 单价 Number 14,6 是 sum(C.YPZSL0) as num,--number 数量 Number 14,6 是 sum(round(C.LSDJ00*C.YPZSL0*100)/100) as amt,--amt 金额 Number 14,6 是 sum(round(C.LSDJ00*C.YPZSL0*100)/100) as selfAmt,--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 max(to_char(C.CFID00)) as listDetailNo,--listDetailNo 明细流水号 String 60 否 明细流水号 '' as chargeCode,--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 '' as chargeName,--chargeName 收费项目名称 String 100 否 max('YPNM'||to_char(C.YPNM00)) as prescribeCode,--prescribeCode 处方编码 String 60 否 '' as listTypeCode,--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 '' as listTypeName,--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 substrb(max(nvl(trim(E.BKEH83),TO_char(C.YPNM00))),1,50) as code,--code 编码 String 50 否 如药品编码,有则填写 '' as form,--form 剂型 String 50 否 substrb(max(trim(C.YPGG00)),1,50) as specification,--specification 规格 String 50 否 substrb(max(trim(C.CFDW00)),1,20) as unit,--unit 计量单位 String 20 否 '' as receivableAmt,--receivableAmt 应收费用 Number 14,6 否 '' as medicalCareType,--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 '' as medCareItemType,--medCareItemType 医保项目类型 String 100 否 '' as medReimburseRate,--medReimburseRate 医保报销比例 Number 3,2 否 '' as remark,--remark 备注 String 200 否 1 as PXXH00,--sortNo 序号 Integer 不限 否 序号 '' as chrgtype--chrgtype 费用类型 String 50 否 from ZY_BRFY00 A,YF_ZYCF00 B,YF_ZYCFMX C,BM_YPLB00 D,BM_YYSFXM E,BM_FPXM00 F where A.DJH000 = B.DJH000 and B.CFLSH0 = C.CFLSH0 and B.YPDLBH = D.LBBH00 and D.SFDM00 = E.SFXMID and E.ZYFPID = F.FPXMID and A.ZYID00 = LS_ZYID00 and A.JZDH00 in (select k.JZDH00 from ZY_JZB000 k where k.ZYID00=LS_ZYID00 start with k.JZDH00+0=PJZDH00 connect by prior k.CXJZDH=k.JZDH00 ) group by A.ZYID00,A.JZDH00,F.BH0000,F.FPXMID,F.XMMC00,C.YPNM00,C.YPMC00,C.LSDJ00 union all select '2' as flag00 ,--标志 0:项目 1:处方药品 2:申请表药品 'Y' as SFYP00,--是否药品 Y:是 N:否 A.ZYID00 as ZYID00,--住院ID A.JZDH00 as JZDH00,--HIS结账单号 F.BH0000 as FPXMBH,--发票项目 F.FPXMID as FPXMID,--发票项目ID F.XMMC00 as FPXMMC,--发票项目名称 B.YPNM00 as XMBH00,--项目编码 A.JZDH00 as YWLSH, --ywlsh 是 string 业务流水号 substrb(B.YPMC00,1,50) as name,--name 药品名称 String 50 是 如药品名称,器材名称等 B.LSDJ00 as std,--std 单价 Number 14,6 是 sum(B.YPZSL0) as num,--number 数量 Number 14,6 是 sum(round(B.LSDJ00*B.YPZSL0*100)/100) as amt,--amt 金额 Number 14,6 是 sum(round(B.LSDJ00*B.YPZSL0*100)/100) as selfAmt,--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 max(to_char(b.YPQLPC)) as listDetailNo,--listDetailNo 明细流水号 String 60 否 明细流水号 '' as chargeCode,--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 '' as chargeName,--chargeName 收费项目名称 String 100 否 max('YPNM'||to_char(B.YPNM00)) as prescribeCode,--prescribeCode 处方编码 String 60 否 '' as listTypeCode,--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 '' as listTypeName,--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 substrb(max(nvl(trim(E.BKEH83),TO_char(B.YPNM00))),1,50) as code,--code 编码 String 50 否 如药品编码,有则填写 '' as form,--form 剂型 String 50 否 substrb(max(trim(B.YPGG00)),1,50) as specification,--specification 规格 String 50 否 substrb(max(trim(B.QLDW00)),1,20) as unit,--unit 计量单位 String 20 否 '' as receivableAmt,--receivableAmt 应收费用 Number 14,6 否 '' as medicalCareType,--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 '' as medCareItemType,--medCareItemType 医保项目类型 String 100 否 '' as medReimburseRate,--medReimburseRate 医保报销比例 Number 3,2 否 '' as remark,--remark 备注 String 200 否 1 as PXXH00,--sortNo 序号 Integer 不限 否 序号 '' as chrgtype--chrgtype 费用类型 String 50 否 from ZY_BRFY00 A,YF_YZYPSQ B,BM_YPLB00 D,BM_YYSFXM E,BM_FPXM00 F where A.DJH000 = B.DJH000 and B.YPDLBH = D.LBBH00 and D.SFDM00 = E.SFXMID and E.ZYFPID = F.FPXMID and A.ZYID00 = LS_ZYID00 and A.JZDH00 in (select k.JZDH00 from ZY_JZB000 k where k.ZYID00=LS_ZYID00 start with k.JZDH00+0=PJZDH00 connect by prior k.CXJZDH=k.JZDH00 ) group by A.ZYID00,A.JZDH00,F.BH0000,F.FPXMID,F.XMMC00,B.YPNM00,B.YPMC00,B.LSDJ00 ; --3:otherInfo 其它扩展信息列表 --4:otherMedicalList 其它医保信息列表 cursor CUR_otherMedicalList is select a.JZDH00 as JZDH00,--HIS结账单号 a.BRID00 as BRID00,--病人ID a.JZDH00 as ywlsh, --ywlsh 是 string 业务流水号 1 as infoNo,--infoNo 序号 Integer 不限 是 认从1开始,每项数据序号值递增1,本次不允许重复 decode(a.ZFFS00,16,'01',20,'03','02') as infoName,--infoName 医保信息名称 String 100 是 如费用报销类型编码,可参考附录7医保报销类型列表 01 公务员报销 02 基本医疗报销 03 补充报销 04 其它(可以按需添加) a.JFJE00 as infoValue,--infoValue 医保信息值 String 100 是 如费用报销金额 '' as infoOther--infoOther 医保其它信息 String 100 否 如医保报销比例。 from ZY_BRJFB0 a where A.JZDH00=PJZDH00 and A.ZYID00=PZYID00 and a.ZFFS00 not in (1,2,8,18,24,25,26,28) and a.JFJE00<>0 ; --5:payChannelDetail 交费渠道列表 cursor CUR_payChannelDetail is select a.JZDH00 as JZDH00,--HIS结账单号 a.BRID00 as BRID00,--病人ID a.JZDH00 as ywlsh, --ywlsh 是 string 业务流水号 1 as infoNo,--infoNo 序号 Integer 不限 是 认从1开始,每项数据序号值递增1,本次不允许重复 decode(a.ZFFS00,1,'02',2,'03',8,'08',18,'12',19,'12',20,'12',24,'05',25,'04',26,'12',28,'12','11') as payChannelCode,--payChannelCode 交费渠道编码 String 10 是 (01:POS刷卡02:现金03:转账04:支付宝05:微信06:支票07:卡支付08:银联卡09:自助机缴费10:软POS11:医保支付12:预交金13:公众平台) a.JFJE00 as payChannelValue, --payChannelValue 交费渠道金额 Number 14,2 是 a.ZFFS00 as ZFFS00, --支付方式 a.ZFFSMC as ZFFSMC, --支付方式名称 a.JFJE00 as JFJE00 --缴费金额 from ZY_BRJFB0 a where A.JZDH00=PJZDH00 and A.ZYID00=PZYID00 and a.ZFFS00 not in (1,2,8,18,20,24,25,28)--扣除掉非医保补偿 and a.JFJE00<>0 ; begin LS_JSONSTR := null; LS_TEMPJSON:= null; LS_JFQDLBHJ:=0;--交费渠道列表 合计 LS_SFXMLBHJ:=0;--收费项目明细列表 合计 LS_JZMX00_SumXMJE:=0;--结账明细合计金额 LS_JZMX00_HJJECE:=0;--结账明细合计金额和合计金额差额 LS_TEPNUM:=0; LS_ZYID00:=nvl(PZYID00,0);--住院ID LS_JZDH00:=nvl(PJZDH00,0);--结账单号 LS_CXJZDH:=nvl(PCXJZDH,0);--重新结算 LS_SFCXJS:='0';--是否重新结算 0:否 1:是 LS_HQQDMXLX:='2';--获取清单明细类型: 0:不查询清单明细 1:单病种清单明细 2:普通清单明细 LS_number_std_amt:=substrb(trim(SF_SF_TYZD00('第三方电子发票平台接口','number_std_amt')),1,100); if LS_number_std_amt is not null then LS_SL_format:=substrb(SF_SF_RETURNINDEXEH(trim(LS_number_std_amt),'|', 1),1,20);--数量格式化(保留4位) LS_DJ_format:=substrb(SF_SF_RETURNINDEXEH(trim(LS_number_std_amt),'|', 2),1,20);--单价格式化(保留4位) LS_JE_format:=substrb(SF_SF_RETURNINDEXEH(trim(LS_number_std_amt),'|', 3),1,20);--金额格式化(保留2位) else LS_DJ_format:='999999990.9999';--单价格式化(保留4位) LS_SL_format:='999999990.99';--数量格式化(保留4位) LS_JE_format:='999999990.99';--金额格式化(保留2位) end if; LS_TYZDCS_BSFPLX:=substrb(SF_SF_TYZD00('第三方电子发票平台接口','chargeCode'),1,10); --博思发票类型1:发票项目编号=BM_FPXM00.BH0000 0:发票项目ID=BM_FPXM00.FPXMID ,默认:1 LS_SFDMQZ:=trim(substrb(SF_SF_RETURNINDEXEH(substrb(trim(SF_SF_TYZD00('第三方电子发票平台接口','chargeCodeQzdm')),1,100),'|', 2),1,10));--chargeCodeQzdm:收费项目代码增加前缀 LS_listDetail_remark_null:=nvl(substrb(SF_SF_RETURNINDEXEH(SF_SF_TYZD00('第三方电子发票平台接口','listDetail_remark_null'),'|', 2),1,10),'0');--单明细列表备注(listDetail.remark)是否为空 1:为空 LS_SpecialDisease_listDetail:=substrb( trim(SF_SF_TYZD00('第三方电子发票平台接口','SpecialDisease_listDetail')),1,10);--住院博思电子票据单病种或DRG是否发送清单项目明细节点listDetail, 1:发送 0:否 默认:0 begin select a.BRID00,substrb(trim(a.YBDJH0),1,30) YBDJH0, b.YBLB00,b.YBZXLB,b.FBBH00 into LS_BRID00,LS_YBDJH0,LS_YBLB00,LS_YBZXLB,LS_FBBH00 from ZY_JZB000 A,IC_YBBRLB B where a.FBBH00=b.FBBH00 and a.YBLB00=b.YBLB00 and A.JZDH00=PJZDH00 and A.ZYID00=PZYID00; exception when others then return LS_JSONSTR; end; LS_SFFSBSFPBMMC:='0'; --是否发送博思发票编码和名称 1:是 0:否 --Invoices_CodeName_ChangeOpen:电子开票发票编码名称是否转化为第三方编码和名称(BM_FPXM00:MZFPBM、MZFPMC、ZYFPBM、ZYFPMC) 0:不开启 1:门诊开启 2:住院开启 3:门诊住院开启 默认:0 Invoices_CodeName_ChangeOpen:=nvl(substrb(SF_SF_TYZD00('第三方电子发票平台接口','Invoices_CodeName_ChangeOpen'),1,10),'0'); if Invoices_CodeName_ChangeOpen in ('2','3') then LS_SFFSBSFPBMMC:='1'; --是否发送博思发票编码和名称 1:是 0:否 end if; --获取清单明细类型: 0:不查询清单明细 1:单病种清单明细 2:普通清单明细 if PBZFPGS in ('Y','D') then --Y:病种发票 N:普通发票 Q:CDRG发票 D:DRG发票-- if LS_SpecialDisease_listDetail='1' then LS_HQQDMXLX:='1'; else LS_HQQDMXLX:='0'; end if; else LS_HQQDMXLX:='2'; end if; if nvl(LS_CXJZDH,0)>0 then LS_SFCXJS:='1';--是否重新结算 0:否 1:是 LS_JZDH00:=LS_CXJZDH; else LS_SFCXJS:='0';--是否重新结算 0:否 1:是 end if; if PFHLXBH=1 then --1:chargeDetail 收费项目明细列表--begin-- LS_sortNo:=1; if PBZFPGS in ('Y','D') then --Y:病种发票 N:普通发票 Q:CDRG发票 D:DRG发票 for REC in CUR_BZFPMX loop LS_TEMPJSON:=''; LS_chargeCode:=substrb(LS_SFDMQZ||REC.chargeCode,1,50);--chargeCode 收费项目代码 LS_chargeName:=substrb(REC.chargeName,1,100);--chargeName 收费项目名称 String 100 否 if LS_SFFSBSFPBMMC in ('1') and PBZFPGS in ('Y') then --是否发送博思发票编码和名称 1:是 0:否 and Y:病种发票 begin select substrb(trim(aa.JKDZBM),1,30) as ZYFPBM,substrb(trim(aa.JKDZMC),1,50) as ZYFPMC into LS_ZYFPBM,LS_ZYFPMC from BM_YBSXZD aa where aa.JKBM00 =-1 and aa.SXBM00='dbzbs_invoices_contrast' and aa.VALUE0=REC.chargeCode; exception when others then LS_ZYFPBM :=null;--住院电子发票编码 LS_ZYFPMC :=null;--住院电子发票名称 end; if LS_ZYFPBM is not null then LS_chargeCode:=substrb(LS_ZYFPBM,1,50);--chargeCode 收费项目代码 end if; if LS_ZYFPMC is not null then LS_chargeName:=substrb(LS_ZYFPMC,1,100);--chargeName 收费项目名称 end if; end if; if LS_SFFSBSFPBMMC in ('1') and PBZFPGS in ('D') then --是否发送博思发票编码和名称 1:是 0:否 and D:DRG发票 begin select substrb(trim(aa.JKDZBM),1,30) as ZYFPBM,substrb(trim(aa.JKDZMC),1,50) as ZYFPMC into LS_ZYFPBM,LS_ZYFPMC from BM_YBSXZD aa where aa.JKBM00 =-1 and aa.SXBM00='drgbs_invoices_contrast' and aa.VALUE0=REC.chargeCode; exception when others then LS_ZYFPBM :=null;--住院电子发票编码 LS_ZYFPMC :=null;--住院电子发票名称 end; if LS_ZYFPBM is not null then LS_chargeCode:=substrb(LS_ZYFPBM,1,50);--chargeCode 收费项目代码 end if; if LS_ZYFPMC is not null then LS_chargeName:=substrb(LS_ZYFPMC,1,100);--chargeName 收费项目名称 end if; end if; LS_TEMPJSON:='{' ||'"sortNo":'||'"'||LS_sortNo||'",'--sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||LS_chargeCode||'",'--chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||LS_chargeName||'",'--chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.std,LS_JE_format))||'",'--std 收费标准 Number 14,2 是 ||'"number":'||'"'||trim(to_char(REC.num,LS_JE_format))||'",'--number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.amt,LS_JE_format))||'",'--amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.selfAmt,LS_JE_format))||'",'--selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||REC.remark||'",'--remark 备注 String 200 否 ||'"unit":'||'"'||REC.unit||'"'--unit 计量单位 String 20 否 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; LS_sortNo:=nvl(LS_sortNo,0)+1; end loop; else --2025.06.10 由于结账明细表合计金额为15409.97同结账表合计15409.96 不一致导致报错 begin select sum(aa.XMJE00) into LS_JZMX00_SumXMJE from ZY_JZMX00 aa,bm_fpxm00 bb where aa.xmbh00=bb.FPXMID and aa.JZDH00=PJZDH00 and aa.XMJE00<>0; exception when others then LS_JZMX00_SumXMJE:=0;--结账明细合计金额 end; if nvl(PHJJE00,0)<>0 and nvl(LS_JZMX00_SumXMJE,0)<>0 then LS_JZMX00_HJJECE:=nvl(PHJJE00,0)-nvl(LS_JZMX00_SumXMJE,0);--结账明细合计金额和合计金额差额 end if; LS_SFXMLBHJ:=0;--收费项目明细列表 合计 LS_sortNo:=1; for REC in CUR_chargeDetail loop LS_TEMPJSON:=''; LS_chargeDetail_sortNo :=substrb(LS_sortNo,1,200);--序号 LS_chargeDetail_chargeCode :=substrb(REC.chargeCode,1,200);--收费项目代码 LS_chargeDetail_chargeName :=substrb(REC.chargeName,1,200);--收费项目名称 LS_chargeDetail_unit :=substrb(REC.unit,1,200);--计量单位 if REC.FPXMID in (3) and nvl(LS_JZMX00_HJJECE,0)<>0 and nvl(REC.amt,0)>0 then --草药费 LS_chargeDetail_std :=nvl(REC.std,0)+nvl(LS_JZMX00_HJJECE,0);--收费标准 LS_chargeDetail_number :=nvl(REC.num,0);--数量 LS_chargeDetail_amt :=nvl(REC.amt,0)+nvl(LS_JZMX00_HJJECE,0);--金额 LS_chargeDetail_selfAmt :=nvl(REC.selfAmt,0)+nvl(LS_JZMX00_HJJECE,0);--自费金额 else LS_chargeDetail_std :=nvl(REC.std,0);--收费标准 LS_chargeDetail_number :=nvl(REC.num,0);--数量 LS_chargeDetail_amt :=nvl(REC.amt,0);--金额 LS_chargeDetail_selfAmt :=nvl(REC.selfAmt,0);--自费金额 end if; LS_chargeDetail_remark :=substrb(REC.remark,1,200);--备注 LS_TEMPJSON:='{' ||'"sortNo":'||'"'||LS_chargeDetail_sortNo||'",'--sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||LS_chargeDetail_chargeCode||'",'--chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||LS_chargeDetail_chargeName||'",'--chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(LS_chargeDetail_std,LS_JE_format))||'",'--std 收费标准 Number 14,2 是 ||'"number":'||'"'||trim(to_char(LS_chargeDetail_number,LS_JE_format))||'",'--number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(LS_chargeDetail_amt,LS_JE_format))||'",'--amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(LS_chargeDetail_selfAmt,LS_JE_format))||'",'--selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||LS_chargeDetail_remark||'",'--remark 备注 String 200 否 ||'"unit":'||'"'||LS_chargeDetail_unit||'"'--unit 计量单位 String 20 否 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; LS_sortNo:=nvl(LS_sortNo,0)+1; LS_SFXMLBHJ:=nvl(LS_SFXMLBHJ,0)+nvl(LS_chargeDetail_amt,0); end loop; end if; LS_JSONSTR:='['||LS_JSONSTR||']'; --1:chargeDetail 收费项目明细列表--end-- --2:listDetail 清单项目明细列表--begin-- elsif PFHLXBH=2 then LS_sortNo:=1; --LS_HQQDMXLX 获取清单明细类型: 0:不查询清单明细 1:单病种清单明细 2:普通清单明细 if LS_HQQDMXLX='0' then LS_JSONSTR:=null; ----单病种清单明细----begin---- elsif LS_HQQDMXLX='1' then --Y:病种发票 N:普通发票 Q:CDRG发票 D:DRG发票-- for REC in CUR_DBZ_listDetail loop LS_TEMPJSON:=''; LS_chargeCode:=substrb(LS_SFDMQZ||REC.chargeCode,1,50);--chargeCode 收费项目代码 LS_chargeName:=substrb(REC.chargeName,1,100);--chargeName 收费项目名称 String 100 否 if LS_SFFSBSFPBMMC in ('1') and PBZFPGS in ('Y') then --是否发送博思发票编码和名称 1:是 0:否 and Y:病种发票 begin select substrb(trim(aa.JKDZBM),1,30) as ZYFPBM,substrb(trim(aa.JKDZMC),1,50) as ZYFPMC into LS_ZYFPBM,LS_ZYFPMC from BM_YBSXZD aa where aa.JKBM00 =-1 and aa.SXBM00='dbzbs_invoices_contrast' and aa.VALUE0=REC.chargeCode; exception when others then LS_ZYFPBM :=null;--住院电子发票编码 LS_ZYFPMC :=null;--住院电子发票名称 end; if LS_ZYFPBM is not null then LS_chargeCode:=substrb(LS_ZYFPBM,1,50);--chargeCode 收费项目代码 end if; if LS_ZYFPMC is not null then LS_chargeName:=substrb(LS_ZYFPMC,1,100);--chargeName 收费项目名称 end if; end if; if LS_SFFSBSFPBMMC in ('1') and PBZFPGS in ('D') then --是否发送博思发票编码和名称 1:是 0:否 and D:DRG发票 begin select substrb(trim(aa.JKDZBM),1,30) as ZYFPBM,substrb(trim(aa.JKDZMC),1,50) as ZYFPMC into LS_ZYFPBM,LS_ZYFPMC from BM_YBSXZD aa where aa.JKBM00 =-1 and aa.SXBM00='drgbs_invoices_contrast' and aa.VALUE0=REC.chargeCode; exception when others then LS_ZYFPBM :=null;--住院电子发票编码 LS_ZYFPMC :=null;--住院电子发票名称 end; if LS_ZYFPBM is not null then LS_chargeCode:=substrb(LS_ZYFPBM,1,50);--chargeCode 收费项目代码 end if; if LS_ZYFPMC is not null then LS_chargeName:=substrb(LS_ZYFPMC,1,100);--chargeName 收费项目名称 end if; end if; if LS_listDetail_remark_null='1' then LS_remark:=''; else LS_remark:=substrb(REC.remark,1,200); end if; LS_TEMPJSON:='{' ||'"name":'||'"'||REC.name||'",'--name 药品名称 String 50 是 如药品名称,器材名称等 ||'"std":'||'"'||trim(to_char(REC.std,LS_DJ_format))||'",'--std 单价 Number 14,6 是 ||'"number":'||'"'||trim(to_char(REC.num,LS_SL_format))||'",'--number 数量 Number 14,6 是 ||'"amt":'||'"'||trim(to_char(REC.amt, LS_JE_format))||'",'--amt 金额 Number 14,6 是 ||'"selfAmt":'||'"'||trim(to_char(REC.selfAmt,LS_JE_format))||'",'--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 ||'"listDetailNo":'||'"'||REC.listDetailNo||'",'--listDetailNo 明细流水号 String 60 否 明细流水号 ||'"chargeCode":'||'"'||LS_chargeCode||'",'--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值 ||'"chargeName":'||'"'||LS_chargeName||'",'--chargeName 收费项目名称 String 100 否 ||'"prescribeCode":'||'"'||REC.prescribeCode||'",'--prescribeCode 处方编码 String 60 否 ||'"listTypeCode":'||'"'||REC.listTypeCode||'",'--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 ||'"listTypeName":'||'"'||REC.listTypeName||'",'--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗 ||'"code":'||'"'||REC.code||'",'--code 编码 String 50 否 如药品编码,有则填写 ||'"form":'||'"'||REC.form||'",'--form 剂型 String 50 否 ||'"specification":'||'"'||REC.specification||'",'--specification 规格 String 50 否 ||'"unit":'||'"'||REC.unit||'",'--unit 计量单位 String 20 否 ||'"receivableAmt":'||'"'||trim(to_char(REC.receivableAmt,LS_JE_format))||'",'--receivableAmt 应收费用 Number 14,6 否 ||'"medicalCareType":'||'"'||REC.medicalCareType||'",'--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/ ||'"medCareItemType":'||'"'||REC.medCareItemType||'",'--medCareItemType 医保项目类型 String 100 否 ||'"medReimburseRate":'||'"'||REC.medReimburseRate||'",'--medReimburseRate 医保报销比例 Number 3,2 否 ||'"remark":'||'"'||LS_remark||'",'--remark 备注 String 200 否 ||'"sortNo":'||'"'||LS_sortNo||'",'--sortNo 序号 Integer 不限 否 序号 ||'"chrgtype":'||'"'||REC.chrgtype||'"'--chrgtype 费用类型 String 50 否 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; LS_sortNo:=LS_sortNo+1; end loop; ----单病种清单明细----end---- else ----普通清单明细----begin---- --获取医疗服务价格减收项目xml begin Select SF_XT_YLFWJGXSXM_XMLSTR('1',LS_BRID00,LS_ZYID00,PJZDH00,'') xmlstr into LS_XMLSTR from dual; exception when others then LS_XMLSTR:=null;-- end; --LS_XMLSTR:180000044890.000.00001.00002020019.0019.00001.0000 if LS_XMLSTR is not null then LS_SFJSXM :=trim(substrb(SF_XT_GETXMLSTR('SFJSXM',LS_XMLSTR),1,10));--是否存在减收项目 0:不存在 1:存在 LS_JMXMBH :=trim(substrb(SF_XT_GETXMLSTR('JMXMBH',LS_XMLSTR),1,50));--减收项目编号 LS_JMHEJE :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('JMHEJE',LS_XMLSTR),1,10));--减收合计金额 LS_JMXMDJ :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('JMXMDJ',LS_XMLSTR),1,10));--减收项目单价 LS_JMXMSL :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('JMXMSL',LS_XMLSTR),1,10));--减收项目数量 LS_ZXXMBH :=trim(substrb(SF_XT_GETXMLSTR('ZXXMBH',LS_XMLSTR),1,50));--主项项目编号 LS_ZXHEJE :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('ZXHEJE',LS_XMLSTR),1,10));--主项合计金额 LS_ZXXMDJ :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('ZXXMDJ',LS_XMLSTR),1,10));--主项项目单价 LS_ZXXMSL :=SF_SF_STRTONUM(substrb(SF_XT_GETXMLSTR('ZXXMSL',LS_XMLSTR),1,10));--主项项目数量 end if; LS_sortNo:=1; if LS_SFCXJS in ('1') then --重新结算 ----普通清单明细--重新结算--begin---- for REC in CUR_listDetail_CXJS loop LS_listDetail_XMBH00 :=substrb(REC.XMBH00,1,200);--清单项目明细列表 XMBH00,--项目编码 LS_listDetail_name :=substrb(REC.name,1,200);--name 药品名称 String 50 是 如药品名称,器材名称等 LS_listDetail_std :=REC.std;--清单项目明细列表 std 单价 Number 14,6 是 LS_listDetail_number :=REC.num;--清单项目明细列表 number 数量 Number 14,6 是 LS_listDetail_amt :=REC.amt;--清单项目明细列表 amt 金额 Number 14,6 是 LS_listDetail_selfAmt :=REC.selfAmt;--清单项目明细列表 selfAmt 自费金额 Number 14,6 是 如无金额,填写0 LS_listDetail_listDetailNo:=substrb(REC.listDetailNo,1,200); --listDetailNo 明细流水号 String 60 否 明细流水号 --chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 if LS_TYZDCS_BSFPLX='1' then LS_chargeCode:=REC.FPXMBH; else LS_chargeCode:=REC.FPXMID; end if; LS_chargeCode:=substrb(LS_SFDMQZ||LS_chargeCode,1,50);--chargeCode 收费项目代码 LS_chargeName:=substrb(REC.FPXMMC,1,100);--chargeName 收费项目名称 String 100 否 if LS_SFFSBSFPBMMC in ('1') then --是否发送博思发票编码和名称 1:是 0:否 begin select trim(aa.MZFPBM) as MZFPBM,trim(aa.MZFPMC) as MZFPMC,trim(aa.ZYFPBM) as ZYFPBM,trim(aa.ZYFPMC) as ZYFPMC into LS_MZFPBM,LS_MZFPMC,LS_ZYFPBM,LS_ZYFPMC from BM_FPXM00 aa where aa.FPXMID =REC.FPXMID; exception when others then LS_MZFPBM :=null;--门诊电子发票编码 LS_MZFPMC :=null;--门诊电子发票名称 LS_ZYFPBM :=null;--住院电子发票编码 LS_ZYFPMC :=null;--住院电子发票名称 end; if LS_ZYFPBM is not null then LS_chargeCode:=substrb(LS_ZYFPBM,1,50);--chargeCode 收费项目代码 end if; if LS_ZYFPMC is not null then LS_chargeName:=substrb(LS_ZYFPMC,1,100);--chargeName 收费项目名称 end if; end if; --remark 备注 String 200 否 if LS_listDetail_remark_null='1' then LS_remark:=''; else if LS_FBBH00=3 then if LS_YBDJH0='0' or LS_YBDJH0 is null then LS_remark :='自费'; else LS_remark:=substrb(SF_BM_XMYBLBMC(LS_YBLB00,LS_YBZXLB,LS_FBBH00,REC.XMBH00,REC.SFYP00),1,200); end if; else LS_remark :='自费'; end if; end if; --医疗服务价格减收项目,清单明细转化--begin-- if LS_SFJSXM='1' and REC.flag00='0' then --是否存在减收项目 0:不存在 1:存在 if LS_listDetail_XMBH00=LS_JMXMBH then --清单项目明细列表 XMBH00,--项目编码 LS_listDetail_std :=LS_JMXMDJ;--清单项目明细列表 std 单价 Number 14,6 是 =JMXMDJ 减收项目单价 LS_listDetail_number :=LS_JMXMSL;--清单项目明细列表 number 数量 Number 14,6 是=JMXMSL 减收项目数量 LS_listDetail_amt :=LS_JMHEJE;--清单项目明细列表 amt 金额 Number 14,6 是=JMHEJE 减收合计金额 LS_listDetail_selfAmt :=LS_JMHEJE;--清单项目明细列表 selfAmt 自费金额 Number 14,6 是 如无金额,填写0 end if; if LS_listDetail_XMBH00=LS_ZXXMBH then --清单项目明细列表 XMBH00,--项目编码 LS_listDetail_std :=LS_ZXXMDJ;--清单项目明细列表 std 单价 Number 14,6 是 =ZXXMDJ:主项项目单价 LS_listDetail_number :=LS_ZXXMSL;--清单项目明细列表 number 数量 Number 14,6 是=ZXXMSL:主项项目数量 LS_listDetail_amt :=LS_ZXHEJE;--清单项目明细列表 amt 金额 Number 14,6 是=ZXHEJE:主项合计金额 LS_listDetail_selfAmt :=LS_ZXHEJE;--清单项目明细列表 selfAmt 自费金额 Number 14,6 是 如无金额,填写0 end if; end if; --医疗服务价格减收项目,清单明细转化--end-- LS_TEMPJSON:=''; LS_TEMPJSON:='{' ||'"name":'||'"'||LS_listDetail_name||'",'--name 药品名称 String 50 是 如药品名称,器材名称等 ||'"std":'||'"'||trim(to_char(LS_listDetail_std,LS_DJ_format))||'",'--std 单价 Number 14,6 是 ||'"number":'||'"'||trim(to_char(LS_listDetail_number,LS_SL_format))||'",'--number 数量 Number 14,6 是 ||'"amt":'||'"'||trim(to_char(LS_listDetail_amt, LS_JE_format))||'",'--amt 金额 Number 14,6 是 ||'"selfAmt":'||'"'||trim(to_char(LS_listDetail_selfAmt,LS_JE_format))||'",'--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 ||'"listDetailNo":'||'"'||LS_listDetail_listDetailNo||'",'--listDetailNo 明细流水号 String 60 否 明细流水号 ||'"chargeCode":'||'"'||LS_chargeCode||'",'--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 ||'"chargeName":'||'"'||LS_chargeName||'",'--chargeName 收费项目名称 String 100 否 ||'"prescribeCode":'||'"'||REC.prescribeCode||'",'--prescribeCode 处方编码 String 60 否 ||'"listTypeCode":'||'"'||REC.listTypeCode||'",'--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 ||'"listTypeName":'||'"'||REC.listTypeName||'",'--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 ||'"code":'||'"'||REC.code||'",'--code 编码 String 50 否 如药品编码,有则填写 ||'"form":'||'"'||REC.form||'",'--form 剂型 String 50 否 ||'"specification":'||'"'||REC.specification||'",'--specification 规格 String 50 否 ||'"unit":'||'"'||REC.unit||'",'--unit 计量单位 String 20 否 ||'"receivableAmt":'||'"'||trim(to_char(REC.receivableAmt,LS_JE_format))||'",'--receivableAmt 应收费用 Number 14,6 否 ||'"medicalCareType":'||'"'||REC.medicalCareType||'",'--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 ||'"medCareItemType":'||'"'||REC.medCareItemType||'",'--medCareItemType 医保项目类型 String 100 否 ||'"medReimburseRate":'||'"'||REC.medReimburseRate||'",'--medReimburseRate 医保报销比例 Number 3,2 否 ||'"remark":'||'"'||LS_remark||'",'--remark 备注 String 200 否 ||'"sortNo":'||'"'||LS_sortNo||'",'--sortNo 序号 Integer 不限 否 序号 ||'"chrgtype":'||'"'||REC.chrgtype||'"'--chrgtype 费用类型 String 50 否 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; LS_sortNo:=nvl(LS_sortNo,0)+1; end loop; ----普通清单明细--重新结算--end---- else ----普通清单明细----begin---- for REC in CUR_listDetail loop LS_listDetail_XMBH00 :=substrb(REC.XMBH00,1,200);--清单项目明细列表 XMBH00,--项目编码 LS_listDetail_name :=substrb(REC.name,1,200);--name 药品名称 String 50 是 如药品名称,器材名称等 LS_listDetail_std :=REC.std;--清单项目明细列表 std 单价 Number 14,6 是 LS_listDetail_number :=REC.num;--清单项目明细列表 number 数量 Number 14,6 是 LS_listDetail_amt :=REC.amt;--清单项目明细列表 amt 金额 Number 14,6 是 LS_listDetail_selfAmt :=REC.selfAmt;--清单项目明细列表 selfAmt 自费金额 Number 14,6 是 如无金额,填写0 LS_listDetail_listDetailNo:=substrb(REC.listDetailNo,1,200); --listDetailNo 明细流水号 String 60 否 明细流水号 --chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 if LS_TYZDCS_BSFPLX='1' then LS_chargeCode:=REC.FPXMBH; else LS_chargeCode:=REC.FPXMID; end if; LS_chargeCode:=substrb(LS_SFDMQZ||LS_chargeCode,1,50);--chargeCode 收费项目代码 LS_chargeName:=substrb(REC.FPXMMC,1,100);--chargeName 收费项目名称 String 100 否 if LS_SFFSBSFPBMMC in ('1') then --是否发送博思发票编码和名称 1:是 0:否 begin select trim(aa.MZFPBM) as MZFPBM,trim(aa.MZFPMC) as MZFPMC,trim(aa.ZYFPBM) as ZYFPBM,trim(aa.ZYFPMC) as ZYFPMC into LS_MZFPBM,LS_MZFPMC,LS_ZYFPBM,LS_ZYFPMC from BM_FPXM00 aa where aa.FPXMID =REC.FPXMID; exception when others then LS_MZFPBM :=null;--门诊电子发票编码 LS_MZFPMC :=null;--门诊电子发票名称 LS_ZYFPBM :=null;--住院电子发票编码 LS_ZYFPMC :=null;--住院电子发票名称 end; if LS_ZYFPBM is not null then LS_chargeCode:=substrb(LS_ZYFPBM,1,50);--chargeCode 收费项目代码 end if; if LS_ZYFPMC is not null then LS_chargeName:=substrb(LS_ZYFPMC,1,100);--chargeName 收费项目名称 end if; end if; --remark 备注 String 200 否 if LS_listDetail_remark_null='1' then LS_remark:=''; else if LS_FBBH00=3 then if LS_YBDJH0='0' or LS_YBDJH0 is null then LS_remark :='自费'; else LS_remark:=substrb(SF_BM_XMYBLBMC(LS_YBLB00,LS_YBZXLB,LS_FBBH00,REC.XMBH00,REC.SFYP00),1,200); end if; else LS_remark :='自费'; end if; end if; --医疗服务价格减收项目,清单明细转化--begin-- if LS_SFJSXM='1' and REC.flag00='0' then --是否存在减收项目 0:不存在 1:存在 if LS_listDetail_XMBH00=LS_JMXMBH then --清单项目明细列表 XMBH00,--项目编码 LS_listDetail_std :=LS_JMXMDJ;--清单项目明细列表 std 单价 Number 14,6 是 =JMXMDJ 减收项目单价 LS_listDetail_number :=LS_JMXMSL;--清单项目明细列表 number 数量 Number 14,6 是=JMXMSL 减收项目数量 LS_listDetail_amt :=LS_JMHEJE;--清单项目明细列表 amt 金额 Number 14,6 是=JMHEJE 减收合计金额 LS_listDetail_selfAmt :=LS_JMHEJE;--清单项目明细列表 selfAmt 自费金额 Number 14,6 是 如无金额,填写0 end if; if LS_listDetail_XMBH00=LS_ZXXMBH then --清单项目明细列表 XMBH00,--项目编码 LS_listDetail_std :=LS_ZXXMDJ;--清单项目明细列表 std 单价 Number 14,6 是 =ZXXMDJ:主项项目单价 LS_listDetail_number :=LS_ZXXMSL;--清单项目明细列表 number 数量 Number 14,6 是=ZXXMSL:主项项目数量 LS_listDetail_amt :=LS_ZXHEJE;--清单项目明细列表 amt 金额 Number 14,6 是=ZXHEJE:主项合计金额 LS_listDetail_selfAmt :=LS_ZXHEJE;--清单项目明细列表 selfAmt 自费金额 Number 14,6 是 如无金额,填写0 end if; end if; --医疗服务价格减收项目,清单明细转化--end-- LS_TEMPJSON:=''; LS_TEMPJSON:='{' ||'"name":'||'"'||LS_listDetail_name||'",'--name 药品名称 String 50 是 如药品名称,器材名称等 ||'"std":'||'"'||trim(to_char(LS_listDetail_std,LS_DJ_format))||'",'--std 单价 Number 14,6 是 ||'"number":'||'"'||trim(to_char(LS_listDetail_number,LS_SL_format))||'",'--number 数量 Number 14,6 是 ||'"amt":'||'"'||trim(to_char(LS_listDetail_amt, LS_JE_format))||'",'--amt 金额 Number 14,6 是 ||'"selfAmt":'||'"'||trim(to_char(LS_listDetail_selfAmt,LS_JE_format))||'",'--selfAmt 自费金额 Number 14,6 是 如无金额,填写0 ||'"listDetailNo":'||'"'||LS_listDetail_listDetailNo||'",'--listDetailNo 明细流水号 String 60 否 明细流水号 ||'"chargeCode":'||'"'||LS_chargeCode||'",'--chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 ||'"chargeName":'||'"'||LS_chargeName||'",'--chargeName 收费项目名称 String 100 否 ||'"prescribeCode":'||'"'||REC.prescribeCode||'",'--prescribeCode 处方编码 String 60 否 ||'"listTypeCode":'||'"'||REC.listTypeCode||'",'--listTypeCode 药品类别编码 String 50 否 如药品分类编码01,有则填写 ||'"listTypeName":'||'"'||REC.listTypeName||'",'--listTypeName 药品类别名称 String 50 否 如药品分类名称,抗生素类抗感染药物 ||'"code":'||'"'||REC.code||'",'--code 编码 String 50 否 如药品编码,有则填写 ||'"form":'||'"'||REC.form||'",'--form 剂型 String 50 否 ||'"specification":'||'"'||REC.specification||'",'--specification 规格 String 50 否 ||'"unit":'||'"'||REC.unit||'",'--unit 计量单位 String 20 否 ||'"receivableAmt":'||'"'||trim(to_char(REC.receivableAmt,LS_JE_format))||'",'--receivableAmt 应收费用 Number 14,6 否 ||'"medicalCareType":'||'"'||REC.medicalCareType||'",'--medicalCareType 医保药品分类 String 1 否 1:无自负/甲2:有自负/乙3:全自负/丙 ||'"medCareItemType":'||'"'||REC.medCareItemType||'",'--medCareItemType 医保项目类型 String 100 否 ||'"medReimburseRate":'||'"'||REC.medReimburseRate||'",'--medReimburseRate 医保报销比例 Number 3,2 否 ||'"remark":'||'"'||LS_remark||'",'--remark 备注 String 200 否 ||'"sortNo":'||'"'||LS_sortNo||'",'--sortNo 序号 Integer 不限 否 序号 ||'"chrgtype":'||'"'||REC.chrgtype||'"'--chrgtype 费用类型 String 50 否 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; LS_sortNo:=nvl(LS_sortNo,0)+1; end loop; ----普通清单明细----end---- end if; end if; if LS_JSONSTR is not null then LS_JSONSTR:='['||LS_JSONSTR||']'; else LS_JSONSTR:='[]';--清单发送空 end if; --2:listDetail 清单项目明细列表--end-- elsif PFHLXBH=3 then --3:otherInfo 其它扩展信息列表--begin-- LS_JSONSTR :=SF_ZY_BSDZFP_OTHERINFO(PZYID00,PJZDH00); LS_JSONSTR:='['||LS_JSONSTR||']'; --3:otherInfo 其它扩展信息列表--end-- elsif PFHLXBH=4 then --4:otherMedicalList 其它医保信息列表--begin-- LS_sortNo:=1; for REC in CUR_otherMedicalList loop LS_TEMPJSON:=''; LS_TEMPJSON:='{' ||'"infoNo":'||'"'||LS_sortNo||'",'--infoNo 序号 Integer 不限 是 认从1开始,每项数据序号值递增1,本次不允许重复 ||'"infoName":'||'"'||REC.infoName||'",'--infoName 医保信息名称 String 100 是 如费用报销类型编码,可参考附录7医保报销类型列表 ||'"infoValue":'||'"'||trim(to_char(REC.infoValue,LS_JE_format))||'",'--infoValue 医保信息值 String 100 是 如费用报销金额 ||'"infoOther":'||'"'||REC.infoOther||'"'--infoOther 医保其它信息 String 100 否 如医保报销比例。 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; LS_sortNo:=nvl(LS_sortNo,0)+1; end loop; LS_JSONSTR:='['||LS_JSONSTR||']'; --4:otherMedicalList 其它医保信息列表--end-- elsif PFHLXBH=5 then --5:payChannelDetail 交费渠道列表--begin-- LS_JFQDLBHJ:=0;--临时 LS_sortNo:=1; for REC in CUR_payChannelDetail loop LS_TEMPJSON:=''; LS_TEMPJSON:='{' ||'"infoNo":'||'"'||LS_sortNo||'",'--infoNo 序号 Integer 不限 是 认从1开始,每项数据序号值递增1,本次不允许重复 ||'"payChannelCode":'||'"'||REC.payChannelCode||'",'--payChannelCode 交费渠道编码 String 10 是 ||'"payChannelValue":'||'"'||trim(to_char(REC.payChannelValue,LS_JE_format))||'"'--payChannelValue 交费渠道金额 Number 14,2 是 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; LS_sortNo:=nvl(LS_sortNo,0)+1; LS_JFQDLBHJ:=nvl(LS_JFQDLBHJ,0)+nvl(REC.JFJE00,0); end loop; --由于博思校验payChannelDetail 合计金额要等于 totalAmt 如果不等于会报 业务执行异常:交费渠道合计金额不等于开票总金额 --模拟生成一条报文 12 预交金 LS_TEPNUM:=nvl(PHJJE00,0)-nvl(LS_JFQDLBHJ,0); if LS_TEPNUM<>0 then --合计金额 if nvl(LS_JFQDLBHJ,0)=0 then LS_sortNo:=1; else LS_sortNo:=LS_sortNo+1; end if; LS_TEMPJSON:='{' ||'"infoNo":'||'"'||LS_sortNo||'",'--infoNo 序号 Integer 不限 是 认从1开始,每项数据序号值递增1,本次不允许重复 ||'"payChannelCode":'||'"'||'12'||'",'--payChannelCode 交费渠道编码 String 10 是 ||'"payChannelValue":'||'"'||trim(to_char(LS_TEPNUM,LS_JE_format))||'"'--payChannelValue 交费渠道金额 Number 14,2 是 ||'}'; if LS_JSONSTR is not null then LS_JSONSTR:=LS_JSONSTR||','||LS_TEMPJSON; else LS_JSONSTR:=LS_TEMPJSON; end if; end if; --5:payChannelDetail 交费渠道列表--end-- LS_JSONSTR:='['||LS_JSONSTR||']'; end if; return LS_JSONSTR; end; / -- End of DDL Script for Function SD_HOSPITAL.SF_ZY_BSDZFP_MXLST