prompt [住院][易惠博思电子发票]JSON报文 SF_ZY_BSDJPJ_JSONSTR create or replace function SF_ZY_BSDJPJ_JSONSTR ( PCJLYBM varchar2 default 'YH', --厂家来源编码 BS:博思,YH:易惠。。。(待扩展) PJKCJBM varchar2 default '', --接口场景编码 PZYID00 number, --住院ID=ZY_BRXXB0.ZYID00 PJZDH00 number, --结账单号=ZY_JZB000.JZDH00 PCZY000 number default 0, --操作员=BM_YGBM00.YGBH00 PCZYKS0 number default 0, --操作员科室=BM_YGBM00.BMBH00 PFHLXBH number, --返回类型编码 0:完整请求报文 1:chargeDetail 收费项目明细列表 2:listDetail 清单项目明细列表 3:otherInfo 其它扩展信息列表 4:otherMedicalList 其它医保信息列表 5:payChannelDetail 交费渠道列表 PINTSTR varchar2 default '' --备用参数 xml编码格式传入 ) -- Person Date Comments -- zhangyc 2020.12.07 create by [住院][易惠博思电子发票]报文组成 by ZYSF9-20201207-003 -- zhangyc 2020.12.09 增加to_char(xxx,'999999990.99')否报文会显示为.xxx by ZYSF9-20201210-001 -- zhangyc 2020.12.11 处理单病种发票 by ZYSF9-20201211-001 -- zhangyc 2020.12.16 payee、author、checker如果前台有传值按前台处理 by ZYSF9-20201216-004 -- zhangyc 2020.12.17 把变量LS_chargeDetail 扩展到4000 by ZYSF9-20201217-001 -- zhangyc 2021.02.05 chargeCode:收费项目代码增加前缀 by ZYSF9-20210204-001 -- zhangyc 2021.03.16 placeCode如果前台有传值按前台处理 by ZYSF9-20210316-002 -- zhangyc 2021.04.12 根据参数控制number_std_amt 数量、单价、金额保留位数 by ZYSF9-20210412-001 -- jlg 2021.07.01 重新排版下函数 ZYSF9-20210701-001 -- jlg 2021.07.21 判断病种发票格式时,去掉dbzbm0的条件 ZYSF9-20210720-004 -- chenHeyi 2021.12.20 增加CDRG发票格式 ZYSF9-20211216-001 -- chenHeyi 2022.01.07 CDRG组别 放至明细chargeDetail的remark中 ZYSF9-20220104-002 -- jlg 2022.04.06 将'LS_number_std_amt'改回为'number_std_amt' ZYSF9-20220330-002 -- chenHeyi 2022.04.14 增加leaveCategory 出院科室名称字段、leaveCategoryCode 出院科室编码,medCareAreaCode医保行政区划 ZYSF9-20220408-003 -- chenHeyi 2022.05.13 根据字典参数BSDZFP_checker,BSDZFP_inHospitalDate,BSDZFP_outHospitalDate,调整复核人,入院日期,出院日期的取值 ZYSF9-20220513-001 -- chenHeyi 2022.07.04 字典参数BSDZFP_outHospitalDate=2时,outHospitalDate取CYDJRQ ZYSF9-20220701-002 -- chenHeyi 2022.09.16 增加拆分发票报文分支 ZYSF9-20220822-001 return clob is LS_FHXX00 clob; LS_JSONSTR clob; LS_JSQDMX clob; LS_QDMXJSON clob; LS_DJ_format varchar2(20); --单价格式化 LS_SL_format varchar2(20); --数量格式化 LS_JE_format varchar2(20); --金额格式化 LS_BZFPGS varchar2(10); --病种发票格式 Y:病种发票 N:普通发票 CDRG:CDRG发票 LS_totalAmt number(12,2); --开票总金额 LS_chargeDetail varchar2(4000); --chargeDetail 收费项目明细列表 LS_otherMedicalList varchar2(4000); --otherMedicalList其它医保信息列表 LS_payChannelDetail varchar2(4000); --payChannelDetail 交费渠道列表 LS_otherInfo varchar2(4000); --otherInfo 其它扩展信息列表 LS_CZYXM0 varchar2(50); --操作员姓名 LS_payee varchar2(50); --收费员 LS_author varchar2(50); --票据编制人 LS_checker varchar2(50); --票据复核人 LS_placeCode varchar2(50); --开票点编码(胸卡号) LS_SFDMQZ varchar2(10); --chargeCodeQzdm:收费项目代码增加前缀 LS_number_std_amt varchar2(100); --博思电子发票清单明细数量、单价、金额小数点保留位数格式化参数设置,用|隔开,(.9999标识保留4位) LS_BSDZFP_checker BM_TYZD00.MC0000%type; --字典参数BSDZFP_checker LS_inHospitalDate varchar2(50); --入院日期 LS_outHospitalDate varchar2(50); --出院日期 LS_BSDZFP_inHospitalDate BM_TYZD00.MC0000%type; --字典参数BSDZFP_inHospitalDate,博思电子发票入院日期取值方式;0取入院日期,1取实际入院日期;默认为0 LS_BSDZFP_outHospitalDate BM_TYZD00.MC0000%type; --字典参数BSDZFP_outHospitalDate,博思电子发票出院日期取值方式;0取出院日期,1取实际出院日期;默认为0 ls_CFFPFB XT_XTCS00.VALUE0%type; ls_FBBH00 ZY_JZB000.FBBH00%type; ls_FZPJH0 ZY_JZB000.PJH000%type; ls_SFCFFP varchar2(10); --是否拆分发票 0否1是 ls_COUNTS number(5); --2:listDetail 清单项目明细列表 cursor CUR_listDetail is select aa.*,rownum as sortNo from VW_ZY_listDetail aa where aa.JZDH00=PJZDH00 and ((nvl(PZYID00,0)=0 and 1=1) or (nvl(PZYID00,0)>0 and aa.ZYID00=PZYID00)); cursor CUR_electronic_bill is select aa.* from VW_ZY_op_electronic_bill aa where aa.JZDH00=PJZDH00 and ((nvl(PZYID00,0)=0 and 1=1) or (nvl(PZYID00,0)>0 and aa.ZYID00=PZYID00)); begin LS_FHXX00:=''; LS_JSONSTR:=''; LS_QDMXJSON:=''; LS_chargeDetail:=''; --chargeDetail 收费项目明细列表 LS_otherMedicalList:=''; --otherMedicalList其它医保信息列表 LS_payChannelDetail:=''; --payChannelDetail 交费渠道列表 LS_otherInfo:=''; --otherInfo 其它扩展信息列表 LS_BZFPGS:='N'; --病种发票格式 Y:病种发票 N:普通发票 LS_SFDMQZ:=trim(substrb(SF_SF_RETURNINDEXEH(substrb(trim(SF_SF_TYZD00('第三方电子发票平台接口','chargeCodeQzdm')),1,100),'|', 2),1,10));--chargeCodeQzdm:收费项目代码增加前缀 LS_BSDZFP_checker:=nvl(substrb(trim(SF_SF_TYZD00('第三方电子发票平台接口','BSDZFP_checker')),1,100),'0'); LS_BSDZFP_inHospitalDate:=nvl(substrb(trim(SF_SF_TYZD00('第三方电子发票平台接口','BSDZFP_inHospitalDate')),1,100),'0'); LS_BSDZFP_outHospitalDate:=nvl(substrb(trim(SF_SF_TYZD00('第三方电子发票平台接口','BSDZFP_outHospitalDate')),1,100),'0'); select trim(nvl(max(VALUE0),'N')) into ls_CFFPFB from XT_XTCS00 where NAME00='ZY_KZMZFBBRCFFP'; --控制某种费别(离休)病人拆分发票(按是否医保来分)VALUE0=(BM_BRFBB0.FBBH00)默认为-1 --博思电子发票清单明细数量、单价、金额小数点保留位数格式化参数设置,用|隔开,(.9999标识保留4位) 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_SL_format:='999999990.9999';--数量格式化(保留4位) LS_DJ_format:='999999990.9999';--单价格式化(保留4位) LS_JE_format:='999999990.99'; --金额格式化(保留2位) end if; if nvl(PCZY000,0)>0 then begin select substrb(ZWXM00,1,50)CZYXM0,trim(XKH000)XKH000 into LS_CZYXM0,LS_placeCode from BM_YGBM00 aa where YGBH00 =PCZY000; exception when others then LS_CZYXM0:=null; LS_placeCode:=null; end; end if; if LS_CZYXM0 is not null then LS_payee:=LS_CZYXM0; --收费员 LS_author:=LS_CZYXM0; --票据编制人 LS_checker:=LS_CZYXM0;--票据复核人 end if; select FBBH00,PJH000 into ls_FBBH00,ls_FZPJH0 from ZY_JZB000 where JZDH00=PJZDH00; --取是否拆分发票标识 ls_SFCFFP:='0'; if instrb(','||trim(ls_CFFPFB)||',',','||to_char(ls_FBBH00)||',')>0 and (ls_FBBH00 not in (1,3)) then select count(1) into ls_COUNTS from ZY_PJSYQK where PLBH00=3 and substr(PJXH00,1,1)<>'-' and PJZT00 in ('0','2') and SFBCF0 in ('1','2') and FZPJH0=ls_FZPJH0; ls_COUNTS:=nvl(ls_COUNTS,0); if ls_COUNTS=2 then ls_SFCFFP:='1'; end if; end if; if ls_SFCFFP='1' then LS_FHXX00:=SF_ZY_BSDJPJCFFP_JSONSTR(PCJLYBM,PJKCJBM,PZYID00,PJZDH00,PCZY000,PCZYKS0,PFHLXBH,PINTSTR); else --2:listDetail 清单项目明细列表--begin-- if PFHLXBH in (0,2) then for REC in CUR_listDetail loop LS_JSQDMX:=''; LS_JSQDMX:='{' ||'"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_SFDMQZ||REC.chargeCode||'",' --chargeCode 收费项目代码 String 50 否 填写业务系统内部编码值,由医疗平台配置对照,如:床位费、检查费 ||'"chargeName":'||'"'||REC.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":'||'"'||REC.remark||'",' --remark 备注 String 200 否 ||'"sortNo":'||'"'||REC.sortNo||'",' --sortNo 序号 Integer 不限 否 序号 ||'"chrgtype":'||'"'||REC.chrgtype||'"' --chrgtype 费用类型 String 50 否 ||'}'; if LS_QDMXJSON is not null then LS_QDMXJSON:=LS_QDMXJSON||','||LS_JSQDMX; else LS_QDMXJSON:=LS_JSQDMX; end if; end loop; LS_QDMXJSON:='['||LS_QDMXJSON||']'; if PFHLXBH in (2) then LS_FHXX00:=LS_QDMXJSON; end if; end if; --2:listDetail 清单项目明细列表--end-- --0:全部报文--begin-- if PFHLXBH in (0) then for REC in CUR_electronic_bill loop if REC.ffbzbm is not null then --REC.dbzbm0 is not null or: 注释本条件 ZYSF9-20210720-004 LS_BZFPGS:='Y';--病种发票格式 Y:病种发票 N:普通发票 CDRG:CDRG发票 else if REC.YBSM09 is not null and REC.YBSM10 in ('01','02','03') then --病种发票格式 Y:病种发票 N:普通发票 CDRG:CDRG发票 ZYSF9-20211216-001 LS_BZFPGS:='CDRG'; elsif REC.PTBCTS > 0 and REC.YBSM10='07' then --精神科按床位天数结算病例 LS_BZFPGS:='JSKBL'; else LS_BZFPGS:='N';--病种发票格式 Y:病种发票 N:普通发票 CDRG:CDRG发票 end if; end if; --开票总金额 if LS_BZFPGS='Y' then LS_totalAmt:=REC.BZHJJE;--开票总金额 else if LS_BZFPGS='CDRG' then LS_totalAmt:=REC.CDRGJE;--开票总金额 ZYSF9-20211216-001 elsif LS_BZFPGS='JSKBL' then LS_totalAmt:=REC.JSKZJE;--精神科按床位天数结算病例总金额 else LS_totalAmt:=REC.totalAmt;--开票总金额 end if; end if; if LS_BSDZFP_checker='1' then LS_checker:=''; else LS_checker:=nvl(LS_checker,REC.checker); end if; if LS_BSDZFP_inHospitalDate='1' then LS_inHospitalDate:=REC.SJRYRQ; else LS_inHospitalDate:=REC.inHospitalDate; end if; if LS_BSDZFP_outHospitalDate='1' then LS_outHospitalDate:=REC.SJCYRQ; elsif LS_BSDZFP_outHospitalDate='2' then LS_outHospitalDate:=REC.CYDJRQ; else LS_outHospitalDate:=REC.outHospitalDate; end if; LS_JSONSTR:='{' ||'"ywlsh":'||'"'||REC.ywlsh||'",' --ywlsh 业务流水号 string 是 ||'"busType":'||'"'||REC.busType||'",' --busType 业务标识 String 20 (01:住院 02 门诊 03 急诊 04 门特 05 体检中心 06 挂号 07 住院预交金 08 体检预交金) ||'"busNo":'||'"'||REC.busNo||'",' --busNo 业务流水号 String 50 是 单位内部唯一 ||'"payer":'||'"'||REC.payer||'",' --payer 患者姓名 String 100 是 ||'"busDateTime":'||'"'||REC.busDateTime||'",' --busDateTime 业务发生时间 String 17 是 格式:yyyyMMddHHmmssSSS ||'"placeCode":'||'"'||nvl(LS_placeCode,REC.placeCode)||'",' --placeCode 开票点编码 String 50 是 直接填写业务系统内部编码值,由医疗平台配置对照 ||'"payee":'||'"'||nvl(LS_payee,REC.payee)||'",' --payee 收费员 String 50 是 ||'"author":'||'"'||nvl(LS_author,REC.author)||'",' --author 票据编制人 String 100 是 如收费员与开票人员为同一人,则值与payee相同 ||'"checker":'||'"'||LS_checker||'",' --checker 票据复核人 ||'"totalAmt":'||'"'||trim(to_char(LS_totalAmt,LS_JE_format))||'",' --totalAmt 开票总金额 Number 14,2 是 ||'"payerType":'||'"'||REC.payerType||'",' --payerType 交款人类型 String 1 是 交款人类型:1 个人 2 单位 ||'"cardType":'||'"'||REC.cardType||'",' --cardType 卡类型 String 10 是 (1101 身份证号码 1102 社会保障卡号 3101 诊疗卡/就诊卡 4101 居民户口簿 5101 京通卡) ||'"cardNo":'||'"'||REC.cardNo||'",' --cardNo 卡号 String 50 是 根据卡类型填写 ||'"medCareAreaCode":'||'"'||REC.medCareAreaCode||'",' --medCareAreaCode 医保行政区划码 String 50 是 ||'"patientNo":'||'"'||REC.patientNo||'",' --patientNo 患者就诊编号 String 20 是 患者每次就诊一次就生成的一个新的编号。(患者登记号) ||'"sex":'||'"'||REC.sex||'",' --sex 性别 String 2 是 ||'"age":'||'"'||REC.age||'",' --age 年龄 String 10 是 ||'"idCardNo":'||'"'||REC.idCardNo||'",' --idCardNo 患者身份证号码 String 20 否 ||'"tel":'||'"'||REC.tel||'",' --tel 患者手机号码 String 13 否 患者手机号(如需要用于电子票归集、电子票据短信通知,必填) ||'"email":'||'"'||REC.email||'",' --email 患者邮箱地址 String 100 否 患者邮箱地址(如需用于电子票归集、电子票据邮箱通知,必填) ||'"medicalInstitution":'||'"'||REC.medicalInstitution||'",' --medicalInstitution 医疗机构类型 String 60 否 ||'"medCareInstitution":'||'"'||REC.medCareInstitution||'",' --medCareInstitution 医保机构编码 String 60 否 医保机构的唯一编码 ||'"medCareTypeCode":'||'"'||REC.medCareTypeCode||'",' --medCareTypeCode 医保类型编码 String 60 否 ||'"medicalCareType":'||'"'||REC.medicalCareType||'",' --medicalCareType 医保类型名称 String 60 否 由城镇职工基本医疗保险、城镇居民基本医疗保险、新型农村合作医疗、其它医疗保险等构成 ||'"medicalInsuranceID":'||'"'||REC.medicalInsuranceID||'",' --medicalInsuranceID 患者医保编号 String 60 否 参保人在医保系统中的唯一标识(医保号) ||'"consultationDate":'||'"'||REC.consultationDate||'",' --consultationDate 就诊日期 String 10 否 患者就医时间格式:yyyyMMdd ||'"category":'||'"'||REC.category||'",' --category 就诊科室 String 200 否 ||'"patientCategoryCode":'||'"'||REC.patientCategoryCode||'",' --patientCategoryCode 就诊科室编码 String 60 否 ||'"categoryCode":'||'"'||REC.CategoryCode||'",' --categoryCode 入院科室编码 String 60 否 ||'"leaveCategory":'||'"'||REC.leaveCategory||'",' --leaveCategory 出院科室名称 String 200 否 ||'"leaveCategoryCode":'||'"'||REC.leaveCategoryCode||'",' --leaveCategoryCode 出院科室编码 String 60 否 ||'"patientId":'||'"'||REC.patientId||'",' --patientId 患者唯一ID String 50 否 患者在业务系统中的唯一标识ID,类似身份证号码。 ||'"caseNumber":'||'"'||REC.caseNumber||'",' --caseNumber 病历号 String 50 否 ||'"specialDiseasesName":'||'"'||REC.specialDiseasesName||'",' --specialDiseasesName 特殊病种名称 String 200 否 ||'"accountPay":'||'"'||trim(to_char(REC.accountPay,LS_JE_format))||'",' --accountPay 个人账户支付 Number 14,2 是 按政策规定用个人账户支付参保人的医疗费用(含基本医疗保险目录范围内和目录范围外的费用); ||'"fundPay":'||'"'||trim(to_char(REC.fundPay,LS_JE_format))||'",' --fundPay 医保统筹基金支付 Number 14,2 是 患者本次就医所发生的医疗费用中按规定由基本医疗保险统筹基金支付的金额; ||'"otherfundPay":'||'"'||trim(to_char(REC.otherfundPay,LS_JE_format))||'",' --otherfundPay 其它医保支付 Number 14,2 是 患者本次就医所发生的医疗费用中按规定由大病保险、医疗救助、公务员医疗补助、大额补充、企业补充等基金或资金支付的金额; ||'"ownPay":'||'"'||trim(to_char(REC.ownPay,LS_JE_format))||'",' --ownPay 自费金额 Number 14,2 是 患者本次就医所发生的医疗费用中按照有关规定不属于基本医疗保险目录范围而全部由个人支付的费用; ||'"selfConceitedAmt":'||'"'||trim(to_char(REC.selfConceitedAmt,LS_JE_format))||'",' --selfConceitedAmt 个人自负 Number 14,2 是 医保患者起付标准内个人支付费用; ||'"selfPayAmt":'||'"'||trim(to_char(REC.selfPayAmt,LS_JE_format))||'",' --selfPayAmt 个人自付 Number 14,2 是 患者本次就医所发生的医疗费用中由个人负担的属于基本医疗保险目录范围内自付部分的金额;开展按病种、病组、床日等打包付费方式且由患者定额付费的费用。该项为个人所得税大病医疗专项附加扣除信;息项如无金额,填写0 ||'"selfCashPay":'||'"'||trim(to_char(REC.selfCashPay,LS_JE_format))||'",' --selfCashPay 个人现金支付 Number 14,2 是 个人通过现金、银行卡、微信、支付宝等渠道支付的金额; ||'"cashPay":'||'"'||trim(to_char(REC.cashPay,LS_JE_format))||'",' --cashPay 现金预交款金额 Number 14,2 否 ||'"chequePay":'||'"'||trim(to_char(REC.chequePay,LS_JE_format))||'",' --chequePay 支票预交款金额 Number 14,2 否 ||'"transferAccountPay":'||'"'||trim(to_char(REC.transferAccountPay,LS_JE_format))||'",' --transferAccountPay 转账预交款金额 Number 14,2 否 ||'"cashRecharge":'||'"'||trim(to_char(REC.cashRecharge,LS_JE_format))||'",' --cashRecharge 补交金额(现金) Number 14,2 否 ||'"chequeRecharge":'||'"'||trim(to_char(REC.chequeRecharge,LS_JE_format))||'",' --chequeRecharge 补交金额(支票) Number 14,2 否 ||'"transferRecharge":'||'"'||trim(to_char(REC.transferRecharge,LS_JE_format))||'",' --transferRecharge 补交金额(转账) Number 14,2 否 ||'"cashRefund":'||'"'||trim(to_char(REC.cashRefund,LS_JE_format))||'",' --cashRefund 退还金额(现金) Number 14,2 否 ||'"chequeRefund":'||'"'||trim(to_char(REC.chequeRefund,LS_JE_format))||'",' --chequeRefund 退交金额(支票) Number 14,2 否 ||'"transferRefund":'||'"'||trim(to_char(REC.transferRefund,LS_JE_format))||'",' --transferRefund 退交金额(转账) Number 14,2 否 ||'"ownAcBalance":'||'"'||trim(to_char(REC.ownAcBalance,LS_JE_format))||'",' --ownAcBalance 个人账户余额 Number 14,2 否 ||'"reimbursementAmt":'||'"'||trim(to_char(REC.reimbursementAmt,LS_JE_format))||'",' --reimbursementAmt 报销总金额 Number 14,2 否 医保结算后返回的总金额 ||'"balancedNumber":'||'"'||REC.balancedNumber||'",' --balancedNumber 结算号 String 100 否 医保结算后生成的号码/入账唯一值 ||'"alipayCode":'||'"'||REC.alipayCode||'",' --alipayCode 患者支付宝账户 String 100 否 患者如果使用支付宝结算,可传入患者的支付宝UserID,用于电子票据归集到支付宝发票管家 ||'"weChatOrderNo":'||'"'||REC.weChatOrderNo||'",' --weChatOrderNo 微信支付订单号 String 100 否 微信结算时,可传入患者支付成功的订单号,用来发微信服务通知 ||'"weChatMedTransNo":'||'"'||REC.weChatMedTransNo||'",' --weChatMedTransNo 微信医保支付订单号 String 100 否 医保患者使用微信医保支付结算时,填写对应的微信医保支付的订单号 ||'"openID":'||'"'||REC.openID||'",' --openID 微信公众号或小程序用户ID String 60 否 ||'"eBillRelateNo":'||'"'||REC.eBillRelateNo||'",' --eBillRelateNo 业务票据关联号 String 32 否 ||'"remark":'||'"'||REC.remark||'",' --remark 备注 String 200 否 ||'"hospitalNo":'||'"'||REC.hospitalNo||'",' --hospitalNo 患者住院号【住院】门诊用病历号 ||'"visitNo":'||'"'||REC.visitNo||'",' --visitNo 住院就诊编号【住院】 ||'"patiendId":'||'"'||REC.patiendId||'",' --patiendId 患者唯一ID=bm_brxxb0.brid00 ||'"inHospitalDate":'||'"'||LS_inHospitalDate||'",' --inHospitalDate 住院日期【住院】 ||'"outHospitalDate":'||'"'||LS_outHospitalDate||'",' --outHospitalDate 出院日期【住院】 ||'"isArrears":'||'"'||REC.isArrears||'",' --isArrears 是否可流通【住院】0-否、1-是(如欠费情况根 据医院业务要求该票据是 否可流通) ||'"arrearsReason":'||'"'||REC.arrearsReason||'",' --arrearsReason 不可流通原因 ||'"ybzhye":'||'"'||trim(to_char(REC.ybzhye,LS_JE_format))||'",' --ybzhye 医保账户余额 ||'"ptmzlj":'||'"'||trim(to_char(REC.ptmzlj,LS_JE_format))||'",' --ptmzlj 普通门诊累计 ||'"tsmzlj":'||'"'||trim(to_char(REC.tsmzlj,LS_JE_format))||'",' --tsmzlj 特殊门诊累计 ; --列表值 LS_chargeDetail:=substrb(REC.chargeDetail,1,4000); --chargeDetail 收费项目明细列表 LS_otherMedicalList:=substrb(REC.otherMedicalList,1,4000); --otherMedicalList其它医保信息列表 LS_payChannelDetail:=substrb(REC.payChannelDetail,1,4000); --payChannelDetail 交费渠道列表 LS_otherInfo:=substrb(REC.otherInfo,1,4000); --otherInfo 其它扩展信息列表 --显示单病种发票格式,不显示清单 LS_BZFPGS:='Y';--病种发票格式 Y:病种发票 N:普通发票 if LS_BZFPGS='Y' then --listDetail 清单项目明细列表 LS_QDMXJSON:='[]'; --chargeDetail 收费项目明细列表(DBZ01:单病种标准 DBZ02:超标床位费 DBZ03:除外耗材费 DBZ04:特需医疗服务费 LS_chargeDetail:=''; --DBZ01:单病种标准 LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'1'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'DBZ01'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'单病种标准'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.bzdebz,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.bzdebz,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.bzdebz,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --DBZ02:超标床位费 LS_chargeDetail:=LS_chargeDetail||','; --加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'2'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'DBZ02'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'超标床位费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.bzcbcw,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.bzcbcw,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.bzcbcw,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --DBZ03:除外耗材费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'3'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'DBZ03'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'除外耗材费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.bzcwhc,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.bzcwhc,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.bzcwhc,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --DBZ04:特需医疗服务费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'4'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'DBZ04'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'特需医疗服务费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.bztsyl,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.bztsyl,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.bztsyl,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); LS_chargeDetail:='['||LS_chargeDetail||']';--拼接[] end if; --CDRG发票 ZYSF9-20211216-001 if LS_BZFPGS='CDRG' then --listDetail 清单项目明细列表 LS_QDMXJSON:='[]'; --chargeDetail 收费项目明细列表(CDRG01:CDRG标准费用 CDRG02:可报高值耗材费 CDRG03:超标床位费 CDRG04:超标高值耗材费 CDRG05:另收高值药品费) LS_chargeDetail:=''; --CDRG01:CDRG标准费用 LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'1'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG01'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'标准费用'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.YBYL39,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.YBYL39,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.YBYL39,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||REC.YBSM09||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG02:可报高值耗材费 LS_chargeDetail:=LS_chargeDetail||','; --加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'2'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG02'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'可报高值耗材费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.YBYL43,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.YBYL43,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.YBYL43,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG03:超标床位费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'3'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG03'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'超标床位费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.YBYL44,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.YBYL44,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.YBYL44,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG04:超标高值耗材费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'4'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG04'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'超标高值耗材费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.YBYL45,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.YBYL45,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.YBYL45,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG05:另收高值药品费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'5'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG05'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'另收高值药品费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.CBYPF0,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.CBYPF0,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.CBYPF0,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); LS_chargeDetail:='['||LS_chargeDetail||']';--拼接[] end if; --精神科按床位天数结算病例 if LS_BZFPGS='JSKBL' then --listDetail 清单项目明细列表 LS_QDMXJSON:='[]'; --chargeDetail 收费项目明细列表(CDRG01:CDRG标准费用 CDRG02:可报高值耗材费 CDRG03:超标床位费 CDRG04:超标高值耗材费 CDRG05:另收高值药品费) LS_chargeDetail:=''; --CDRG01:CDRG标准费用 LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'1'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG01'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'标准费用'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.BZFY00,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.BZFY00,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.BZFY00,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||'精神科'||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG02:可报高值耗材费 LS_chargeDetail:=LS_chargeDetail||','; --加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'2'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG02'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'可报高值耗材费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.YBYL43,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.YBYL43,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.YBYL43,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG03:超标床位费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'3'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG03'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'超标床位费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.YBYL44,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.YBYL44,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.YBYL44,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG04:超标高值耗材费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'4'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG04'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'超标高值耗材费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.YBYL45,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.YBYL45,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.YBYL45,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); --CDRG05:另收高值药品费 LS_chargeDetail:=LS_chargeDetail||',';--加个‘,’ LS_chargeDetail:=substrb(LS_chargeDetail||'{' ||'"sortNo":'||'"'||'5'||'",' --sortNo 序号 Integer 不限 是 默认从1开始,每个收费项目序号值递增1,本次不允许重复 ||'"chargeCode":'||'"'||'CDRG05'||'",' --chargeCode 收费项目代码 String 50 是 填写业务系统内部编码值,由医疗平台配置对照 ||'"chargeName":'||'"'||'另收高值药品费'||'",' --chargeName 收费项目名称 String 100 是 填写业务系统内部项目名称 ||'"std":'||'"'||trim(to_char(REC.CBYPF0,LS_JE_format))||'",' --std 收费标准 Number 14,2 是 ||'"number":'||'"'||'1'||'",' --number 数量 Number 14,2 是 ||'"amt":'||'"'||trim(to_char(REC.CBYPF0,LS_JE_format))||'",' --amt 金额 Number 14,2 是 ||'"selfAmt":'||'"'||trim(to_char(REC.CBYPF0,LS_JE_format))||'",' --selfAmt 自费金额 Number 14,2 是 如无金额,填写0 ||'"remark":'||'"'||''||'",' --remark 备注 String 200 否 ||'"unit":'||'"'||''||'"' --unit 计量单位 String 20 否 ||'}',1,4000); LS_chargeDetail:='['||LS_chargeDetail||']';--拼接[] end if; --拼接Llist(chargeDetail 收费项目明细列表) LS_JSONSTR:=LS_JSONSTR||'"chargeDetail":'||''||LS_chargeDetail||','; --chargeDetail 收费项目明细列表 String 不限 是 JSON --拼接Llist(listDetail 清单项目明细列表) LS_JSONSTR:=LS_JSONSTR||'"listDetail":'||''||LS_QDMXJSON||','; --listDetail 清单项目明细列表 String JSON (明细太多数据直接取视图:VW_ZY_listDetail) --拼接Llist(otherMedicalList 其它医保信息列表) LS_JSONSTR:=LS_JSONSTR||'"otherMedicalList":'||''||LS_otherMedicalList||','; --otherMedicalList 其它医保信息列表 String 不限 否 JSON --拼接Llist(payChannelDetail 交费渠道列表) LS_JSONSTR:=LS_JSONSTR||'"payChannelDetail":'||''||LS_payChannelDetail||','; --payChannelDetail 交费渠道列表 String 不限 是(01 POS刷卡 02 现金03 转账04 支付宝05 微信06 支票07 卡支付08 银联卡09 自助机缴费10 软POS11 医保支付12 预交金13 公众平台) --拼接Llist(otherInfo 其它扩展信息列表) LS_JSONSTR:=LS_JSONSTR||'"otherInfo":'||''||LS_otherInfo||''; --otherInfo 其它扩展信息列表 String 不限 否 JSON LS_JSONSTR:=LS_JSONSTR||'}'; end loop; LS_FHXX00:=LS_JSONSTR; end if; end if;-- if ls_SFCFFP='0' end --0:全部报文--end-- return LS_FHXX00; end; /