CREATE OR REPLACE PROCEDURE SP_YJ_HSZNSHJKRZ_ZY ( IN_YBJKID in varchar2 ,--输入:医保接口ID(为空或为0重新生成) IN_JKCJBM in varchar2 ,--输入(不可空):接口场景编码 IN_BRID00 in number ,--输入(无值传0):BRID00 IN_ZYID00 in number ,--输入(无值传0):住院ID IN_ZYH000 in varchar2 ,--输入(无值传0):住院号 IN_CZY000 in number ,--输入(不可空):操作员编码 IN_CZYXM0 in varchar2 ,--输入(不可空):操作员姓名 IN_CZYKS0 in number ,--输入(不可空):操作员科室 IN_QQCSID in varchar2 default '' ,--输入(可空):参数中间ID IN_XMLSTR in varchar2 default '' ,--输入(可空):请求参数(XML) IN_OTHER0 in varchar2 default '' ,--输入(可空):备用参数 IN_COMMIT in varchar2 default 'N' ,--输入:是否提交事务 Y:提交 N:不提交 OUT_ZXZT00 out number ,--输出:执行状态 0:失败 1:成功 OUT_XMLSTR out varchar2 ,--输出:出参(XML) OUT_ERRMSG out varchar2 --输出:错误信息 ) -- MODIFICATION HISTORY -- Person Date Comments -- chenHeyi 2025.05.08 create YJ-20250512-001 -- chenHeyi 2025.05.12 手麻系统需要传入IDLIST SSMZ-20250513-001 -- chenHeyi 2025.05.13 病区系统 传入IDLIST BQ-20250513-001 -- =========== =========== ======================================================================= as row_YW0000 YJ_YW0000%rowtype; ls_YJDJH0 varchar2(50); ls_ZLDCCF YJ_YW0000.ZLDCCF%type; ls_KDKSBH YJ_YW0000.KDKSBH%type; ls_KDKSMC BM_BMBM00.BMMC00%type; LS_COUNT1 number(12,2); LS_COUNT2 number(12,2); ls_chargeDate varchar2(50); ls_hosCode varchar2(50); ls_orgCode varchar2(50); ls_currDeptCode varchar2(50); ls_feeDetail clob; --报文:费用明细 ls_feeDetail_single clob; ls_orderDetail clob; --报文:门诊处方明细 ls_orderDetail_single clob; ls_params clob; ls_params_mx clob; ls_methodName clob; ls_RequestJSON clob; ls_ERRTMP varchar2(150); ls_currWardCode varchar2(50); ls_YJKSBH YJ_YW0000.YJKSBH%type; ls_ISCF varchar2(50); --0非处方(医技),1处方 ls_CFLSH0 varchar2(50); ls_ERRTMP varchar2(150); ls_XTDM00 varchar2(20); --登录系统代码 ls_MAXID0 varchar2(50); ls_IDLIST varchar2(4000); cursor CUR_feeDetail is select to_char(a.ID0000) as feeId, to_char(b.SFXMID) as itemCode, b.XMMC00 as itemName, b.BKEH83 as insuranceCode, b.GJBZMC as insuranceName, to_char(c.fpxmid) as itemTypeCode, c.XMMC00 as itemTypeName, a.SL0000*a.SFCS00 as amount,a.JJJE00 as price,a.JJJE00*a.SL0000*a.SFCS00 as fee, (select XKH000 from BM_YGBM00 where YGBH00=d.KDYS00) as orderDoctorCode, d.KDKSBH as orderDeptCode,d.YJKSBH as executeDeptCode,to_char(a.YJDJH0) as receiptNum, decode(d.ZFFSBZ,'Y','0',decode(a.YBBZ00,'Y','1','0')) as isIns, '1' as isMaZui, b.DW0000 as chargeUnit, d.YSZID0 as teamCode, '1' as currDrordFlag, to_char(a.ID0000) as orderId from YJ_YWJJ00 a ,BM_YYSFXM b, BM_FPXM00 c,YJ_YW0000 d where a.YJDJH0=d.YJDJH0 and a.SFXMID=b.SFXMID and a.CXBZ00='Z' and b.ZYFPID=c.FPXMID and d.BRID00=IN_BRID00 and d.ZYGHID=IN_ZYID00 and (a.YJDJH0=ls_YJDJH0 or instrb( ','||ls_IDLIST||',' ,','||a.YJDJH0||',')>0) union all select 'C'||to_char(a.CFID00) as feeId, to_char(b.YPNM00) as itemCode, b.YPMC00 as itemName, b.GJBZBM as insuranceCode, b.GJBZMC as insuranceName, to_char(c.SFDM00) as itemTypeCode, c.SFXMMC as itemTypeName, a.YPZSL0 as amount,a.LSDJ00 as price,a.HJJE00 as fee, ---a.LSDJ00 (select XKH000 from BM_YGBM00 where YGBH00=d.YSGZH0) as orderDoctorCode, ls_KDKSBH as orderDeptCode,nvl(ls_YJKSBH,ls_KDKSBH) as executeDeptCode,to_char(a.CFLSH0) as receiptNum, decode(a.ZFFSBZ,'Y','0',decode(a.ZFBL00,1,0,'1')) as isIns,'1' as isMaZui, a.CFDW00 as chargeUnit, d.YSZID0 as teamCode, '1' as currDrordFlag, 'C'||to_char(a.CFID00) as orderId from YF_ZYCFMX a,BM_YD0000 b, BM_YPLB00 c, YF_ZYCF00 d where trim(a.CFLSH0)=d.CFLSH0 and a.YPNM00=b.YPNM00 and a.YPDLBH=c.LBBH00 and a.CXBZ00='Z' and instrb( ','||ls_ZLDCCF||',' , ','||ls_IDLIST||',')>0 and d.ZYID00 = IN_ZYID00 ; cursor CUR_orderDetail is select to_char(a.ID0000) as orderId, b.bh0000 as orderItemCode, b.XMMC00 as orderItemName, '0' as signValidity, d.KDKSBH as orderDeptCode, f.XKH000 as orderDoctorCode, a.SL0000*a.SFCS00 as amount, b.DW0000 as amountUnit, a.SL0000*a.SFCS00 as total,b.DW0000 as totalUnita ,'QD' as frequency from YJ_YWJJ00 a ,BM_YYSFXM b, BM_FPXM00 c,YJ_YW0000 d,BM_BMBM00 e,BM_YGBM00 f where a.YJDJH0=d.YJDJH0 and a.SFXMID=b.SFXMID and a.CXBZ00='Z' and b.ZYFPID=c.FPXMID and d.KDKSBH=e.BMBH00 and d.KDYS00=f.YGBH00 and d.BRID00=IN_BRID00 and d.ZYGHID=IN_ZYID00 and (a.YJDJH0=ls_YJDJH0 or instrb( ','||ls_IDLIST||',' ,','||a.YJDJH0||',')>0) union all select 'C'||to_char(a.CFID00) as orderId, b.ypbm00 as orderItemCode, b.YPMC00 as orderItemName, '1' as signValidity, ls_KDKSBH as orderDeptCode,f.XKH000 as orderDoctorCode, a.CSL000 as amount, a.JLDW00 as amountUnit, a.YPZSL0 as total, a.CFDW00 as totalUnita ,nvl(upper(replace(a.PCMC00,'.')),'QD') as frequency from YF_ZYCFMX a,BM_YD0000 b, BM_YPLB00 c, YF_ZYCF00 d, BM_YGBM00 f where a.CFLSH0=d.CFLSH0 and a.YPNM00=b.YPNM00 and a.YPDLBH=c.LBBH00 and a.CXBZ00='Z' and d.YSGZH0=f.YGBH00 and instrb( ','||ls_ZLDCCF||',' ,','||a.CFLSH0||',')>0 and d.ZYID00 = IN_ZYID00 ; cursor CUR_feeDetail_CF is select 'C'||to_char(a.CFID00) as feeId, to_char(b.YPNM00) as itemCode, b.YPMC00 as itemName, b.GJBZBM as insuranceCode, b.GJBZMC as insuranceName, to_char(c.SFDM00) as itemTypeCode, c.SFXMMC as itemTypeName, a.YPZSL0 as amount, a.LSDJ00 as price,a.HJJE00 as fee, (select XKH000 from BM_YGBM00 where YGBH00=d.YSGZH0) as orderDoctorCode, d.DQKS00 as orderDeptCode,d.DQKS00 as executeDeptCode,to_char(a.CFLSH0) as receiptNum, decode(a.ZFFSBZ,'Y','0',decode(a.ZFBL00,1,0,'1')) as isIns,'1' as isMaZui, a.CFDW00 as chargeUnit, d.YSZID0 as teamCode, '1' as currDrordFlag, 'C'||to_char(a.CFID00) as orderId from YF_ZYCFMX a,BM_YD0000 b, BM_YPLB00 c, YF_ZYCF00 d where a.CFLSH0=d.CFLSH0 and a.YPNM00=b.YPNM00 and a.YPDLBH=c.LBBH00 and a.CXBZ00='Z' and trim(a.CFLSH0)= ls_CFLSH0 and d.ZYID00 = IN_ZYID00; cursor CUR_orderDetail_CF is select 'C'||to_char(a.CFID00) as orderId, to_char(b.YPNM00) as orderItemCode, b.YPMC00 as orderItemName, '1' as signValidity, d.DQKS00 as orderDeptCode,f.XKH000 as orderDoctorCode, a.CSL000 as amount, a.JLDW00 as amountUnit, a.YPZSL0 as total, a.CFDW00 as totalUnita ,nvl(upper(replace(a.PCMC00,'.')),'QD') as frequency from YF_ZYCFMX a,BM_YD0000 b, BM_YPLB00 c, YF_ZYCF00 d, BM_YGBM00 f where a.CFLSH0=d.CFLSH0 and a.YPNM00=b.YPNM00 and a.YPDLBH=c.LBBH00 and a.CXBZ00='Z' and d.YSGZH0=f.YGBH00 and trim(a.CFLSH0)= ls_CFLSH0 and d.ZYID00 = IN_ZYID00 ; cursor CUR_feeDetail_BQ is select to_char(a.ID0000) as feeId, to_char(b.SFXMID) as itemCode, b.XMMC00 as itemName, b.BKEH83 as insuranceCode, b.GJBZMC as insuranceName, to_char(c.fpxmid) as itemTypeCode, c.XMMC00 as itemTypeName, a.CS0000 as amount,a.SFJE00 as price,a.SFJE00*a.CS0000 as fee, (select XKH000 from BM_YGBM00 where ZWXM00=a .LRRXM0 and rownum=1) as orderDoctorCode, a.KDKS00 as orderDeptCode,a.ZXKS00 as executeDeptCode,to_char(ls_MAXID0) as receiptNum, decode(a.ZFFSBZ,'Y','1','0') as isIns, '1' as isMaZui, b.DW0000 as chargeUnit, a.YSZID0 as teamCode, '1' as currDrordFlag, to_char(a.ID0000) as orderId from BQ_JZXM00 a ,BM_YYSFXM b, BM_FPXM00 c where a.SFXMID=b.SFXMID and b.ZYFPID=c.FPXMID and a.ZYID00 = IN_ZYID00 and instrb(','||ls_IDLIST||',' , ','||a.ID0000||',')>0; cursor CUR_orderDetail_BQ is select to_char(a.ID0000) as orderId, to_char(b.SFXMID) as orderItemCode, b.XMMC00 as orderItemName, decode(a.CLBZ00,'0','1','0') as signValidity, a.KDKS00 as orderDeptCode, (select XKH000 from BM_YGBM00 where ZWXM00=a .LRRXM0 and rownum=1) as orderDoctorCode, a.CS0000 as amount, b.DW0000 as amountUnit, a.SFJE00*a.CS0000 as total,b.DW0000 as totalUnita ,'QD' as frequency from BQ_JZXM00 a ,BM_YYSFXM b, BM_FPXM00 c where a.SFXMID=b.SFXMID and b.ZYFPID=c.FPXMID and a.ZYID00 = IN_ZYID00 and instrb(','||ls_IDLIST||',' , ','||a.ID0000||',')>0; begin ls_feeDetail:=null; ls_feeDetail_single:=null; ls_orderDetail:=null; ls_orderDetail_single:=null; ls_params:=null; ls_params_mx:=null; ls_methodName:=null; ls_XTDM00:=SF_XT_GETXMLSTR('XTDM00',IN_XMLSTR); --BQ用 ls_MAXID0:=SF_XT_GETXMLSTR('MAXID0',IN_XMLSTR); --BQ用 ls_IDLIST:=SF_XT_GETXMLSTR('IDLIST',IN_XMLSTR); --BQ用 ls_YJDJH0:=SF_XT_GETXMLSTR('YJDJH0',IN_XMLSTR); ls_chargeDate:=to_char(sysdate,'YYYY-MM-dd hh24:mm:ss'); ls_hosCode:= SF_XT_TYZDMC('火树医保智能审核系统接口','hosCode'); ls_orgCode:= SF_XT_TYZDMC('火树医保智能审核系统接口','orgCode'); select to_char(DQBQ00),to_char(DQKS00) into ls_currWardCode, ls_currDeptCode from ZY_BRXXB0 a where a.ZYID00=IN_ZYID00; LS_COUNT1 := 0; LS_COUNT2 := 0; ls_ISCF:=SF_XT_GETXMLSTR('ISCF',IN_XMLSTR); if ls_ISCF='1' then ls_CFLSH0:=SF_XT_GETXMLSTR('CFLSH0',IN_XMLSTR); --feeDetail for REC_fee in CUR_feeDetail_CF loop ls_feeDetail_single:=null; ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'feeId',REC_fee.feeId,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemCode',REC_fee.itemCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemName',REC_fee.itemName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insuranceCode',REC_fee.insuranceCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insuranceName',REC_fee.insuranceName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemTypeCode',REC_fee.itemTypeCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemTypeName',REC_fee.itemTypeName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'chargeDate',ls_chargeDate,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'amount',trim(to_char(REC_fee.amount,'999999990.99')),'0'); --- ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'price',to_char(REC_fee.price),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'price',trim(to_char(REC_fee.price,'999999990.99')),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'fee',trim(to_char(REC_fee.fee,'999999990.99')),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currWardCode',to_char(ls_currWardCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currDeptCode',to_char(ls_currDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'teamCode',to_char(REC_fee.teamCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderDoctorCode',to_char(REC_fee.orderDoctorCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderDeptCode',to_char(REC_fee.orderDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'executeDeptCode',to_char(REC_fee.executeDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderId',REC_fee.orderId,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'receiptNum',REC_fee.receiptNum,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'isIns',REC_fee.isIns,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'isMaZui',REC_fee.isMaZui,'1'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'bakFeeId','','0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'chargeUnit',REC_fee.chargeUnit,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currDrordFlag',REC_fee.currDrordFlag,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insProCode','','0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insProName','','0'); ls_feeDetail := SF_XT_GETJSONSTR(ls_feeDetail,null,ls_feeDetail_single,'1'); ls_feeDetail_single := '{'||ls_feeDetail_single||'}'; LS_COUNT1 := LS_COUNT1+1; insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'feeDetail','feeDetail','feeDetail','费用明细',null,null,'1',null,ls_feeDetail_single,LS_COUNT1,IN_JKCJBM from dual; end loop; --feeDetail end --orderDetail for REC_orderDetail in CUR_orderDetail_CF loop ls_orderDetail_single:=null; ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderId',REC_orderDetail.orderId,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderParentId','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderItemCode',REC_orderDetail.orderItemCode,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderItemName',REC_orderDetail.orderItemName,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'signValidity',REC_orderDetail.signValidity,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDate',ls_chargeDate,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'stopDate','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'groupNo','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'signMain','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderStatus','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderType','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDeptCode',to_char(REC_orderDetail.orderDeptCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDoctorCode',to_char(REC_orderDetail.orderDoctorCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'spec','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'dose','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'doseUnit','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'amount',trim(to_char(REC_orderDetail.amount,'999999990.99')),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'amountUnit',to_char(REC_orderDetail.amountUnit),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'total',trim(to_char(REC_orderDetail.total,'999999990.99')),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'totalUnita',to_char(REC_orderDetail.totalUnita),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'curryMedSign','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'frequency',to_char(REC_orderDetail.frequency),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'medWay','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'form','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'startDate',ls_chargeDate,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'endDate','','0'); ---ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'medWay','','0'); ls_orderDetail := SF_XT_GETJSONSTR(ls_orderDetail,null,ls_orderDetail_single,'1'); ls_orderDetail_single := '{'||ls_orderDetail_single||'}'; LS_COUNT2 := LS_COUNT2+1; insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00, JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'orderDetail','orderDetail','orderDetail','处方明细', null,null,'1',null,ls_orderDetail_single,LS_COUNT2,IN_JKCJBM from dual; end loop; --orderDetail end else if ls_XTDM00 = '9' then --feeDetail for REC_fee in CUR_feeDetail_BQ loop ls_feeDetail_single:=null; ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'feeId',REC_fee.feeId,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemCode',REC_fee.itemCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemName',REC_fee.itemName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insuranceCode',REC_fee.insuranceCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insuranceName',REC_fee.insuranceName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemTypeCode',REC_fee.itemTypeCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemTypeName',REC_fee.itemTypeName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'chargeDate',ls_chargeDate,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'amount',trim(to_char(REC_fee.amount,'999999990.99')),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'price',trim(to_char(REC_fee.price,'999999990.99')),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'fee',trim(to_char(REC_fee.fee,'999999990.99')),'0'); -- ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'price',to_char(REC_fee.price),'0'); --- ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'fee',to_char(REC_fee.fee),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currWardCode',to_char(ls_currWardCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currDeptCode',to_char(ls_currDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'teamCode',to_char(REC_fee.teamCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderDoctorCode',to_char(REC_fee.orderDoctorCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderDeptCode',to_char(REC_fee.orderDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'executeDeptCode',to_char(REC_fee.executeDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderId',REC_fee.orderId,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'receiptNum',REC_fee.receiptNum,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'isIns',REC_fee.isIns,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'isMaZui',REC_fee.isMaZui,'1'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'bakFeeId','','0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'chargeUnit',REC_fee.chargeUnit,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currDrordFlag',REC_fee.currDrordFlag,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insProCode','','0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insProName','','0'); ls_feeDetail := SF_XT_GETJSONSTR(ls_feeDetail,null,ls_feeDetail_single,'1'); ls_feeDetail_single := '{'||ls_feeDetail_single||'}'; LS_COUNT1 := LS_COUNT1+1; insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'feeDetail','feeDetail','feeDetail','费用明细',null,null,'1',null,ls_feeDetail_single,LS_COUNT1,IN_JKCJBM from dual; end loop; --feeDetail end --orderDetail for REC_orderDetail in CUR_orderDetail_BQ loop ls_orderDetail_single:=null; ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderId',REC_orderDetail.orderId,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderParentId','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderItemCode',REC_orderDetail.orderItemCode,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderItemName',REC_orderDetail.orderItemName,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'signValidity',REC_orderDetail.signValidity,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDate',ls_chargeDate,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'stopDate','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'groupNo','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'signMain','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderStatus','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderType','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDeptCode',to_char(REC_orderDetail.orderDeptCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDoctorCode',to_char(REC_orderDetail.orderDoctorCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderWardCode',to_char(ls_currWardCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'spec','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'dose','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'doseUnit','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'amount',trim(to_char(REC_orderDetail.amount,'999999990.99')),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'amountUnit',to_char(REC_orderDetail.amountUnit),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'total',trim(to_char(REC_orderDetail.total,'999999990.99')),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'totalUnita',to_char(REC_orderDetail.totalUnita),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'curryMedSign','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'frequency',to_char(REC_orderDetail.frequency),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'medWay','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'form','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'startDate',ls_chargeDate,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'endDate','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'medWay','','0'); ls_orderDetail := SF_XT_GETJSONSTR(ls_orderDetail,null,ls_orderDetail_single,'1'); ls_orderDetail_single := '{'||ls_orderDetail_single||'}'; LS_COUNT2 := LS_COUNT2+1; insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00, JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'orderDetail','orderDetail','orderDetail','处方明细', null,null,'1',null,ls_orderDetail_single,LS_COUNT2,IN_JKCJBM from dual; end loop; --orderDetail end else select * into row_YW0000 from YJ_YW0000 where YJDJH0=ls_YJDJH0 and BRID00=IN_BRID00; ls_KDKSBH:=row_YW0000.KDKSBH; ls_YJKSBH:=row_YW0000.YJKSBH; select BMMC00 into ls_KDKSMC from BM_BMBM00 where BMBH00=ls_KDKSBH; --feeDetail for REC_fee in CUR_feeDetail loop ls_feeDetail_single:=null; ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'feeId',REC_fee.feeId,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemCode',REC_fee.itemCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemName',REC_fee.itemName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insuranceCode',REC_fee.insuranceCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insuranceName',REC_fee.insuranceName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemTypeCode',REC_fee.itemTypeCode,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'itemTypeName',REC_fee.itemTypeName,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'chargeDate',ls_chargeDate,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'amount',trim(to_char(REC_fee.amount,'999999990.99')),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'price',trim(to_char(REC_fee.price,'999999990.99')),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'fee',trim(to_char(REC_fee.fee,'999999990.99')),'0'); -- ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'price',to_char(REC_fee.price),'0'); --- ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'fee',to_char(REC_fee.fee),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currWardCode',to_char(ls_currWardCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currDeptCode',to_char(ls_currDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'teamCode',to_char(REC_fee.teamCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderDoctorCode',to_char(REC_fee.orderDoctorCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderDeptCode',to_char(REC_fee.orderDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'executeDeptCode',to_char(REC_fee.executeDeptCode),'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'orderId',REC_fee.orderId,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'receiptNum',REC_fee.receiptNum,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'isIns',REC_fee.isIns,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'isMaZui',REC_fee.isMaZui,'1'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'bakFeeId','','0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'chargeUnit',REC_fee.chargeUnit,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'currDrordFlag',REC_fee.currDrordFlag,'0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insProCode','','0'); ls_feeDetail_single := SF_XT_GETJSONSTR(ls_feeDetail_single,'insProName','','0'); ls_feeDetail := SF_XT_GETJSONSTR(ls_feeDetail,null,ls_feeDetail_single,'1'); ls_feeDetail_single := '{'||ls_feeDetail_single||'}'; LS_COUNT1 := LS_COUNT1+1; insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'feeDetail','feeDetail','feeDetail','费用明细',null,null,'1',null,ls_feeDetail_single,LS_COUNT1,IN_JKCJBM from dual; end loop; --feeDetail end --orderDetail for REC_orderDetail in CUR_orderDetail loop ls_orderDetail_single:=null; ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderId',REC_orderDetail.orderId,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderParentId','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderItemCode',REC_orderDetail.orderItemCode,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderItemName',REC_orderDetail.orderItemName,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'signValidity',REC_orderDetail.signValidity,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDate',ls_chargeDate,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'stopDate','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'groupNo','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'signMain','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderStatus','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderType','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDeptCode',to_char(REC_orderDetail.orderDeptCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderDoctorCode',to_char(REC_orderDetail.orderDoctorCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'orderWardCode',to_char(ls_currWardCode),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'spec','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'dose','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'doseUnit','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'amount',trim(to_char(REC_orderDetail.amount,'999999990.99')),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'amountUnit',to_char(REC_orderDetail.amountUnit),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'total',trim(to_char(REC_orderDetail.total,'999999990.99')),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'totalUnita',to_char(REC_orderDetail.totalUnita),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'curryMedSign','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'frequency',to_char(REC_orderDetail.frequency),'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'medWay','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'form','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'startDate',ls_chargeDate,'0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'endDate','','0'); ls_orderDetail_single := SF_XT_GETJSONSTR(ls_orderDetail_single,'medWay','','0'); ls_orderDetail := SF_XT_GETJSONSTR(ls_orderDetail,null,ls_orderDetail_single,'1'); ls_orderDetail_single := '{'||ls_orderDetail_single||'}'; LS_COUNT2 := LS_COUNT2+1; insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00, JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'orderDetail','orderDetail','orderDetail','处方明细', null,null,'1',null,ls_orderDetail_single,LS_COUNT2,IN_JKCJBM from dual; end loop; --orderDetail end end if; end if; --params ls_params_mx:=null; ls_params_mx := SF_XT_GETJSONSTR(ls_params_mx,'pid',to_char(IN_ZYID00),'0'); ls_params_mx := SF_XT_GETJSONSTR(ls_params_mx,'hosCode',to_char(ls_hosCode),'0'); ls_params_mx := SF_XT_GETJSONSTR(ls_params_mx,'orgCode',to_char(ls_orgCode),'0'); ls_params_mx := SF_XT_GETJSONSTR(ls_params_mx,'sceneCode','08','0'); ls_params_mx := SF_XT_GETJSONSTR(ls_params_mx,'empNo',to_char(IN_CZY000),'0'); insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00, JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'params','params','params','发传送参数', null,null,'1',null,ls_params_mx,1,IN_JKCJBM from dual; --ZY_YBJKMX不拼feeDetail,prescriptionDetail 放前端组拼 ls_params:='"params":[{'||ls_params_mx||',' ||'"feeDetail":['||ls_feeDetail||'],' ||'"orderDetail":['||ls_orderDetail||']}]'; --params end --methodName 接口编号 ls_methodName:= SF_XT_GETJSONSTR(ls_methodName,'methodName','Z001','0'); insert into ZY_YBJKMX(YBJKID,JKMXID, JDBM00, ZJDBM0, ZDBM00, ZDMC00, JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0,XSXH00,CJBM00) select IN_YBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'methodName','methodName','methodName','发传送参数', null,null,'1',null,ls_methodName,1,IN_JKCJBM from dual; ls_RequestJSON:='{'||ls_methodName||','||ls_params||'}'; --修改请求报文 update ZY_YBJKRZ set QQDATA=ls_RequestJSON where YBJKID=IN_YBJKID;--请求报文 if IN_COMMIT='Y' then commit; end if; OUT_ZXZT00:=1; --输出:执行状态 0:失败 1:成功 OUT_ERRMSG:=null; --输出:错误信息 exception when no_data_found then OUT_ZXZT00:=0; OUT_ERRMSG:=substrb('火树智能审核接口交互生成失败!原因:'||sqlerrm,1,200); rollback; when others then OUT_ZXZT00:=0; OUT_ERRMSG:=substrb('火树智能审核接口交互生成失败!原因:'||sqlerrm,1,200); rollback; end;