CREATE OR REPLACE PROCEDURE SP_WEB_EMR_DRG_UPLOAD_OBTAIN( PJKRZID in varchar2 ,--入参:接口日志ID=BM_JKRZ00.JKRZID PJKLXBM in varchar2 ,--入参:接口类型编码:YLmachine:自助机 YLwebservice:服务 TYJKwebservice:通用接口服务 PZDBH00 in varchar2 ,--入参:终端编码 PFUNCBM in varchar2 ,--入参:请求方法(编码) PFUNCMC in varchar2 ,--入参:请求方法(名称) PJKQQLX in varchar2 ,--入参:接口类型(HL7、XML) PJKQQCS in varchar2 ,--入参:接口请求参数 PINXML1 in varchar2 ,--入参:备用参数01 PINXML2 in varchar2 ,--入参:备用参数02 PINXML3 in varchar2 ,--入参:备用参数03 PZXZT00 out varchar2 ,--出参:返还状态 1:成功 0:失败 PJKFHLX out varchar2 ,--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB PRECNUM out varchar2 ,--出参:返回记录数据 PJKFHCS out varchar2 ,--出参:接口返回参数 PERRMSG out varchar2 --出参:错误信息,NULL表示正确 ) as --MODIFICATION HISTORY --Person Date Comments --zhangyc 2021.09.14 created 获取DRG上传相关费用明细:SP_WEB_EMR_DRG_UPLOAD_OBTAIN --zhangyc 2021.10.15 增加限制已经出院结算直接报错 -- --------- ---------- --------------------- LS_RECNUM number(10);--记录数 LS_COUNT0 number(12,2); --临时变量 LS_TEMNUM number(12,2); --临时变量 LS_LengNum number(12,2); --临时变量 LS_MSGSTR varchar2(100); --错误位置信息 LS_CZRQ00 char(8); --操作日期 LS_CZSJ00 char(8); --操作时间 LS_MAXNUM number(12); --最大长度 LS_XMLSTR varchar2(4000); --xml字符 LS_SQLSTR varchar2(4000);--Sql字符 LS_ZXZT00 varchar2(1);--出参:返还状态 1:成功 0:失败 LS_YNYGBH BM_TYCJMX.YNYGBH%type;--院内员工编码=bm_ygbm00.ygbh00 LS_SFQY00 BM_TYCJMX.SFQY00%type;--是否启用:1启用,0关闭 LS_HISKEY BM_TYCJMX.HISKEY%type;--接口请求HISKEY LS_JKYXRQ BM_TYCJMX.JKYXRQ%type;--接口有效日期(格式:yyyymmdd) LS_MZZYBZ BM_JKRZ00.MZZYBZ%type;--门诊住院表 0:门诊 1:住院 LS_JKFHCS BM_JKRZ00.JKFHCS%type;--返回参数值 LS_FHRQ00 BM_JKRZ00.FHRQ00%type;--返回操作日期 LS_FHSJ00 BM_JKRZ00.FHSJ00%type;--返回操作时间 LS_JKCODE BM_JKRZ00.JKCODE%type;--接口返回码 LS_JKFHLX BM_JKRZ00.JKFHLX%type;--接口返回类型 1:直接返回报文 2:中间表取值BM_JKRZMX 3:其它表取值 8:取QQCLOB LS_CJLYBM BM_JKRZ00.CJLYBM%type;--厂家来源编码 LS_QDCJBM BM_JKRZ00.QDCJBM%type;--渠道编码 LS_QQCLOB BM_JKRZ00.QQCLOB%type;--请求报文CLOB类型 LS_FHCLOB BM_JKRZ00.FHCLOB%type;--返回报文CLOB类型 LS_CYZ000 number(5);--员工编码 LS_ZYID00 number(10);--住院ID LS_BRID00 number(10);--病人id LS_DDLSH0 varchar2(30);--订单流水号 LS_mxlistNum number(10); --明细数量 LS_ZDlistNum number(10); --诊断数量 LS_FYData BM_JKRZ00.FHCLOB%type;--费用主项数据 LS_QDData BM_JKRZ00.FHCLOB%type;--费用明细数据 LS_ZDData BM_JKRZ00.FHCLOB%type;--诊断明细数据 LS_EXESQL varchar2(1000); --请求参数 in_hiskey varchar2(30);--接口请求HISKEY in_cjlybm varchar2(10);--厂家来源编码 YH:易惠 YX:医信 YL:医联 in_qdcjbm varchar2(10);--渠道编码 in_zdbh00 varchar2(50);--终端编号 in_czy000 varchar2(5); --操作员编码 in_commit varchar2(1); --是否提交事务(Y或N):有HIS系统直接提交事务 N:由第三方控制事务 in_zyh000 varchar2(20);--住院号 in_zyid00 varchar2(20);--住院ID in_startdate varchar2(8);--开始日期 in_enddate varchar2(8);--结束日期 RYGBM BM_YGBM00%rowtype; --员工信息 RBRXX BM_BRXXB0%rowtype; --病人信息 RZYXX ZY_BRXXB0%rowtype; --住院病人 RYBLB IC_YBBRLB%rowtype; --医保类别 LS_DRGLSH ZY_BRXXB0.DRGLSH%type;--drglsh:DRG分组流水号 LS_DRG_CODE ZY_BRXXB0.DRG_CODE%type;--drg_code:DRG组编码 LS_DRG_NAME ZY_BRXXB0.DRG_NAME%type;--drg_name:DRG组名称 LS_BATCHNUM ZY_BRXXB0.BATCHNUM%type;--batchnum:批次号 LS_DRGZFE ZY_BRXXB0.DRGZFE%type;--drgzfe:DRG付费标准 LS_DRG_STATUS ZY_BRXXB0.DRG_STATUS%type;--DRG同步状态:(0:撤销病案,1:病案上传,2:撤销明细,3:上传明细,4:分组查询,5:项目结算) LS_CSNBID varchar2(100); --参数内部ID(可为空值) LS_OTHERS varchar2(100); --输入其它参数 LS_ERRMSG varchar2(400); --出错信息 LS_SYSMSG varchar2(400); --出错信息 LS_ID0000 number(12); LS_QSDJH0 ZY_BRFY00.DJH000%type;--起始单据号 LS_ZZDJH0 ZY_BRFY00.DJH000%type;--终止单据号 LS_QSRQ00 ZY_BRFY00.CZRQ00%type;--起始日期 LS_ZZRQ00 ZY_BRFY00.CZRQ00%type;--截至日期 LS_FLAG00 varchar2(1);--标志 '0':SP_ZY_ZYSF00_YBJK00调用,'1':SP_ZY_ZYSF00_YBJK01调用,'2':SP_ZY_NPYBFS_YBJK00调用,'3'SP_ZY_ZYSFYB_RQDFS0 调用'4':SP_ZY_ZYSFYB_YJS000调用 LS_YEXM00 ZY_JZB000.YEXM00%type;--in char default '全部', --婴儿姓名 LS_DBZBM0 ZY_JZB000.DBZBM0%type;--in varchar2 default '' ,--单病种编码 LS_SFXYB0 varchar2(1);--in varchar2 default '0' ,--是否新医保 0:否 1:是 LS_FKJSLX ZY_JZB000.FKJSLX%type;--in varchar2 default '' ,--分开结算类型 空值正常结算 FYCF_ZF:拆分_自费 FYCF_YB:拆分_医保 FYCF_YE:拆分_婴儿 FYCF_MQ:拆分_母亲 FYCF_SND:拆分_上年度 FYCF_BND:拆分_本年度 LS_FKJZDH ZY_JZB000.FKJZDH%type;--in number default 0 ,--分开结算单号 LS_FKLSH0 ZY_JZB000.FKLSH0%type;--in varchar2 default '' ,--分开结算流水号 LS_FKJZJE ZY_JZB000.FKJZJE%type;--in number default 0 ,--分开结算金额 LS_INTXML varchar2(200);--in varchar2 default '' --备用参数xml LS_fzxbh0 varchar2(10);--分中心编码 LS_AKA130 varchar2(10);--医疗类别 begin LS_MsgStr:='变量初始化赋值'; PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PJKFHLX:='1';--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB PRECNUM:='0';--出参:返回记录数据 PJKFHCS:='';--出参:接口返回参数 PERRMSG:='';--出参:错误信息,NULL表示正确 LS_ZXZT00:='0';--出参:返还状态 1:成功 0:失败 LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_COUNT0:=0;--临时变量 LS_LengNum:=0; --临时变量 LS_MAXNUM:=4000;--最大长度 LS_XMLSTR:=''; --xml字符 LS_QQCLOB:=null;--请求报文CLOB类型 LS_FHCLOB:=null;--返回报文CLOB类型 LS_CYZ000:=0;--员工编码 LS_BRID00:=0;--病人ID LS_TEMNUM:=0;--临时变量 LS_RECNUM:=0;--记录数 LS_JKFHLX:='1';--接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB LS_FYData:=null;--费用主项数据 LS_QDData:=null;--费用明细数据 LS_ZDData:=null;--诊断明细数据 LS_MZZYBZ:='1';--门诊住院表 0:门诊 1:住院 LS_mxlistNum:=0; --明细数量 LS_ZDlistNum:=0; --诊断数量 LS_EXESQL:=''; LS_DDLSH0:='HTY'||LS_CZRQ00||PJKRZID;--订单流水号 --步骤1:解析请求入参数 LS_MsgStr:='步骤1:解析请求入参数'; in_hiskey:=trim(substrb(SF_SF_GETXMLNOTE('hiskey',PJKQQCS),1,30)); --hiskey:接口请求HISKEY in_cjlybm:=trim(substrb(SF_SF_GETXMLNOTE('cjlybm',PJKQQCS),1,10)); --cjlybm:厂家来源编码 YH:易惠 YX:医信 YL:医联 in_qdcjbm:=trim(substrb(SF_SF_GETXMLNOTE('qdcjbm',PJKQQCS),1,10)); --qdcjbm:渠道编码 in_zdbh00:=trim(substrb(SF_SF_GETXMLNOTE('zdbh00',PJKQQCS),1,50)); --zdbh00:终端编号 in_czy000:=trim(substrb(SF_SF_GETXMLNOTE('czy000',PJKQQCS),1,5)); --czy000:操作员编码 in_commit:=trim(substrb(SF_SF_GETXMLNOTE('commit',PJKQQCS),1,50)); --commit:是否提交事务(Y或N):有HIS系统直接提交事务 N:由第三方控制事务 in_zyh000:=trim(substrb(SF_SF_GETXMLNOTE('zyh000',PJKQQCS),1,20)); --zyh000:住院号 in_zyid00:=trim(substrb(SF_SF_GETXMLNOTE('zyid00',PJKQQCS),1,20)); --zyid00:住院ID in_startdate:=trim(substrb(SF_SF_GETXMLNOTE('startdate',PJKQQCS),1,8)); --startdate:开始日期 in_enddate:=trim(substrb(SF_SF_GETXMLNOTE('enddate',PJKQQCS),1,8)); --enddate:结束日期 LS_MsgStr:='请求入参数校验'; if in_cjlybm is null then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='请求报文中[厂家来源编码:cjlybm]不能为空!';--出参:错误信息,NULL表示正确 return; end if; ---获取通用场景明细BM_TYCJMX参数 LS_MsgStr:='获取通用场景明细BM_TYCJMX参数'; select count(1) into LS_COUNT0 from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM=nvl(in_cjlybm,'TY') and QDCJBM=nvl(in_qdcjbm,'TY'); begin if nvl(LS_COUNT0,0)>0 then select YNYGBH,SFQY00,HISKEY,JKYXRQ into LS_YNYGBH,LS_SFQY00,LS_HISKEY,LS_JKYXRQ from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM=nvl(in_cjlybm,'TY') and QDCJBM=nvl(in_qdcjbm,'TY'); else select YNYGBH,SFQY00,HISKEY,JKYXRQ into LS_YNYGBH,LS_SFQY00,LS_HISKEY,LS_JKYXRQ from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM='TY' and QDCJBM='TY'; end if; exception when others then LS_YNYGBH:=null;--院内员工编码=bm_ygbm00.ygbh00 LS_SFQY00:=null;--是否启用:1启用,0关闭 LS_HISKEY:=null;--接口请求HISKEY LS_JKYXRQ:=null;--接口有效日期(格式:yyyymmdd) end; --校验是否开启以及有效时间 if LS_SFQY00 not in ('1') and LS_SFQY00 is not null then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='接口编码:['||PFUNCBM||']接口名称:['||PFUNCMC||'],未开启,请联系管理员!';--错误信息 return; end if; if LS_JKYXRQ is not null and LS_CZRQ00>LS_JKYXRQ then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='接口编码:['||PFUNCBM||']接口名称:['||PFUNCMC||'],已过期,有效期:['||LS_JKYXRQ||'],请联系管理员!';--出参:错误信息,NULL表示正确 return; end if; --步骤2:入参数编码转化 LS_MsgStr:='步骤2:入参数编码转化'; begin LS_CYZ000:=to_number(nvl(in_czy000,0));--员工编码 exception when others then LS_CYZ000:=0; end; begin LS_ZYID00:=to_number(nvl(in_zyid00,0));--住院ID exception when others then LS_ZYID00:=0; end; if in_zyh000 is null and in_zyid00 in ('0') then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='请求报文中[住院号(zyh000)和住院id(zyid00)]不能同时为空!';--出参:错误信息,NULL表示正确 return; end if; if nvl(LS_ZYID00,0)=0 and in_zyh000 is not null then begin select max(ZYID00) into LS_ZYID00 from ZY_BRXXB0 aa where ZYH000 =rpad(in_zyh000,12,' '); exception when others then LS_ZYID00:=0; end; end if; LS_MsgStr:='查找住院病人信息'; begin select * into RZYXX from ZY_BRXXB0 aa where ZYID00 =LS_ZYID00; select * into RYBLB from IC_YBBRLB where FBBH00 = RZYXX.FBBH00 and YBLB00 = RZYXX.YBLB00; exception when others then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的住院病人信息,请确认该病人是否已建档!'; return; end; LS_ZYID00:=RZYXX.ZYID00; LS_BRID00:=RZYXX.BRID00; if nvl(LS_ZYID00,0)=0 then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的住院病人信息,请确认该病人是否已建档!'; return; end if; if nvl(LS_BRID00,0)>0 then begin select * into RBRXX from BM_BRXXB0 aa where BRID00 =LS_BRID00; exception when others then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的病人信息!BRID00='||LS_BRID00; return; end; end if; --获取操作员 LS_MsgStr:='获取操作员'; if nvl(LS_CYZ000,0)=0 and in_zdbh00 is not null then begin select YGBH00 into LS_CYZ000 from VW_SST_YGBMDYXX where ZZJBH0=in_zdbh00; exception when others then LS_CYZ000:=0; end; end if; if nvl(LS_CYZ000,0)=0 and nvl(LS_YNYGBH,0) not in (0) then LS_CYZ000:=nvl(LS_YNYGBH,0); end if; --步骤3:数据校验 LS_MsgStr:='步骤3:数据校验'; if nvl(LS_BRID00,0)=0 then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='未找到有效的基本信息!';--出参:错误信息,NULL表示正确 return; end if; if nvl(LS_CYZ000,0)=0 then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='未找到有效操作员信息!';--出参:错误信息,NULL表示正确 return; end if; --步骤4:基本信息字典 LS_MsgStr:='步骤4:基本信息字典'; begin select * into RYGBM from BM_YGBM00 aa where YGBH00 =LS_CYZ000; exception when others then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的员工信息!YGBH00='||LS_CYZ000; return; end; if RZYXX.BRZT00 in ('4','5','9') then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='获取费用明细失败,原因:该病人的状态为已出院!'; return; else select sum(A.HJJE00) into LS_COUNT0 from ZY_BRFY00 A where A.ZYID00=RZYXX.ZYID00 and A.JZDH00+0=0; if nvl(LS_COUNT0,0)<=0 then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='获取费用明细失败,原因:未找到有效费用明细!'; return; end if; end if; LS_DRGLSH:=RZYXX.drglsh;--drglsh:DRG分组流水号 LS_DRG_CODE:=RZYXX.drg_code;--drg_code:DRG组编码 LS_DRG_NAME:=RZYXX.drg_name;--drg_name:DRG组名称 LS_BATCHNUM:=RZYXX.batchnum;--batchnum:批次号 LS_DRGZFE:=RZYXX.drgzfe;--drgzfe:DRG付费标准 LS_DRG_STATUS:=RZYXX.DRG_STATUS;--DRG同步状态:(0:撤销病案,1:病案上传,2:撤销明细,3:上传明细,4:分组查询,5:项目结算) begin select min(DJH000)QSDJH0,max(DJH000)ZZDJH0 into LS_QSDJH0,LS_ZZDJH0 from ZY_BRFY00 where ZYID00 =LS_ZYID00 and JZDH00=0; exception when others then LS_QSDJH0:=0;--起始单据号 LS_ZZDJH0:=0;--终止单据号 end; LS_QSDJH0:=nvl(LS_QSDJH0,0);--起始单据号 LS_ZZDJH0:=nvl(LS_ZZDJH0,0);--终止单据号 LS_QSRQ00:=RZYXX.RYRQ00;--起始日期 LS_ZZRQ00:=to_char(sysdate,'YYYYMMDD');--截至日期 LS_FLAG00:='1';--标志 '0':SP_ZY_ZYSF00_YBJK00调用,'1':SP_ZY_ZYSF00_YBJK01调用,'2':SP_ZY_NPYBFS_YBJK00调用,'3'SP_ZY_ZYSFYB_RQDFS0 调用'4':SP_ZY_ZYSFYB_YJS000调用 LS_YEXM00:='全部';--婴儿姓名 LS_DBZBM0:=RZYXX.DBZBM0;--单病种编码 LS_SFXYB0:='1';--是否新医保 0:否 1:是 LS_FKJSLX:='';--分开结算类型 空值正常结算 FYCF_ZF:拆分_自费 FYCF_YB:拆分_医保 FYCF_YE:拆分_婴儿 FYCF_MQ:拆分_母亲 FYCF_SND:拆分_上年度 FYCF_BND:拆分_本年度 LS_FKJZDH:=0;--分开结算单号 LS_FKLSH0:='';--分开结算流水号 LS_FKJZJE:=0;--分开结算金额 LS_INTXML:='';--备用参数xml LS_ERRMSG:=''; LS_SYSMSG:=''; if RZYXX.FBBH00=1 then LS_fzxbh0:='000000';--分中心编码 elsif RZYXX.FBBH00=3 then LS_fzxbh0:=substrb(SF_SF_AAB301(RBRXX.BRID00,RBRXX.XZQH00,RBRXX.YBKH00),1,10); else LS_fzxbh0:='999999';--分中心编码 end if; --医疗类别aka130:11:普通门诊 12:急诊 13:门诊慢(特)病种 16:急诊观留床 21:普通住院 29:择日住院 31:家庭病床 34:按病种住院 42:处方购药 43:非处方购药 A1:体检 52:生育住院 LS_AKA130:=nvl(SF_SF_GETYBSXZD(RBRXX.BRID00,'1','aka130',RZYXX.DBZBM0,'0',''),'21'); --执行业务过程 if RZYXX.FBBH00=3 then LS_EXESQL:='begin SP_ZY_YBJK00_FJ0000(:v1,:v2,:v3,:v4,:v5,:v6,:v7,:v8,:v9,:v10,:v11,:v12,:v13,:v14,:v15,:v16,:v17,:v18,:v19,:v20); end;'; execute immediate LS_EXESQL using in out LS_QSDJH0,in out LS_ZZDJH0,in 0,in out LS_ZYID00, in LS_QSRQ00,in LS_ZZRQ00,in RYBLB.YBMC00,out LS_ID0000, in LS_FLAG00,out LS_ERRMSG,out LS_SYSMSG,in LS_YEXM00,in LS_DBZBM0,in LS_DDLSH0, in LS_SFXYB0,in LS_FKJSLX,in LS_FKJZDH,in LS_FKLSH0,in LS_FKJZJE, in LS_INTXML; else LS_EXESQL:='begin SP_ZY_YBJK00_DATA(:v1,:v2,:v3,:v4,:v5,:v6,:v7,:v8,:v9,:v10,:v11,:v12); end;'; execute immediate LS_EXESQL using in LS_DDLSH0,in '',in 'DRG',in LS_BRID00, in LS_ZYID00,in RZYXX.ZYH000,in 0,in LS_CSNBID, in LS_OTHERS,in LS_YEXM00,out LS_ID0000,out LS_ERRMSG; end if; if LS_ERRMSG is not null then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:=LS_ERRMSG; return; end if; --整理报文 LS_FYData:=null;--费用主项数据 LS_QDData:=null;--费用明细数据 LS_ZDData:=null;--诊断明细数据 LS_RECNUM:=0; --处方数量 LS_mxlistNum:=0; --明细数量 LS_ZDlistNum:=0; --诊断数量 --清单明细 for RQD in (select * from ZY_YBFSMX where ID0000=LS_ID0000 and ZYID00=LS_ZYID00) loop LS_QDData:=LS_QDData||''; LS_QDData:=LS_QDData||SF_XT_XMLJSON('serialno',nvl(LS_mxlistNum,0)+1,0,0,null,null);--serialno 显示序号 LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmbh00',substrb(trim(RQD.XMBH00),1,50),0,0,null,null);--xmbh00 医保药品/耗材/项目编码 LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmmc00',substrb(trim(RQD.XMMC00),1,100),0,0,null,null);--xmmc00 医保药品/耗材/项目名称 LS_QDData:=LS_QDData||SF_XT_XMLJSON('yyxmbh',substrb(nvl(to_char(RQD.SFXMID),trim(RQD.XMBH00)),1,50),0,0,null,null);--yyxmbh 医院药品/耗材/项目编码 LS_QDData:=LS_QDData||SF_XT_XMLJSON('yyxmmc',substrb(trim(RQD.XMMC00),1,100),0,0,null,null);--yyxmmc 医院药品/耗材/项目名称 LS_QDData:=LS_QDData||SF_XT_XMLJSON('cdrgxm','无',0,0,null,null);--cdrgxm DRG药品/耗材/项目编码 LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmjx00','000',0,0,null,null);--xmjx00 项目剂型 LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmgg00',nvl(substrb(trim(RQD.XMGG00),1,20),'无'),0,0,null,null);--xmgg00 项目规格 LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmdw00',nvl(substrb(trim(RQD.XMDW00),1,20),'无'),0,0,null,null);--xmdw00 项目单位 LS_QDData:=LS_QDData||SF_XT_XMLJSON('sccs00','/',0,0,null,null);--sccs00 生产厂商 默认为”/” LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmdj00',trim(to_char(RQD.XMDJ00,'999999990.9999')),0,0,null,null);--xmdj00 项目单价 LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmsl00',trim(to_char(RQD.XMSL00,'999999990.99')),0,0,null,null);--xmsl00 项目数量 LS_QDData:=LS_QDData||SF_XT_XMLJSON('xmje00',trim(to_char(RQD.XMJE00,'999999990.99')),0,0,null,null);--xmje00 项目金额 LS_QDData:=LS_QDData||SF_XT_XMLJSON('zfbl00',nvl(RQD.ZFBL00,0),0,0,null,null);--zfbl00 自付比例 LS_QDData:=LS_QDData||SF_XT_XMLJSON('ypyl00',SF_SF_STRTONUM(substrb(nvl(trim(RQD.YPYL00),'1'),1,3)),0,0,null,null);--ypyl00 每次用量 LS_QDData:=LS_QDData||SF_XT_XMLJSON('yppl00',nvl(trim(RQD.YPPL00),'9999'),0,0,null,null);--yppl00 使用频次 LS_QDData:=LS_QDData||SF_XT_XMLJSON('ypyf00','无',0,0,null,null);--ypyf00 用法 LS_QDData:=LS_QDData||SF_XT_XMLJSON('ypts00',trim(RQD.YPTS00),0,0,null,null);--ypts00 执行天数 LS_QDData:=LS_QDData||SF_XT_XMLJSON('cfys00',RQD.YSXM00,0,0,null,null);--cfys00 处方医生 LS_QDData:=LS_QDData||SF_XT_XMLJSON('yszjh0',RQD.YSZJHM,0,0,null,null);--yszjh0 处方医生证件号码 LS_QDData:=LS_QDData||''; LS_mxlistNum:=nvl(LS_mxlistNum,0)+1; end loop; --费用主项数据-- LS_FYData:=LS_FYData||SF_XT_XMLJSON('mxlistnum',LS_mxlistNum,0,0,null,null);--mxlistnum 明细数量 LS_FYData:=LS_FYData||SF_XT_XMLJSON('zylsh0',trim(RZYXX.YBZYH0),0,0,null,null);--zylsh0 医保住院号(门诊号/报销号)  LS_FYData:=LS_FYData||SF_XT_XMLJSON('djlsh0',LS_DDLSH0,0,0,null,null);--djlsh0 医保单据流水号 LS_FYData:=LS_FYData||SF_XT_XMLJSON('yy_zylsh0',trim(RZYXX.ZYH000),0,0,null,null);--yy_zylsh0 HIS门诊号(住院号) if SP_SF_CHECKSFZH(trim(RBRXX.BRZJBH))=1 and length(RBRXX.BRZJBH)=18 then LS_FYData:=LS_FYData||SF_XT_XMLJSON('sfzhao',trim(RBRXX.BRZJBH),0,0,null,null);--sfzhao 身份证件号 else LS_FYData:=LS_FYData||SF_XT_XMLJSON('sfzhao',trim(RBRXX.YBID00),0,0,null,null);--sfzhao 身份证件号 end if; LS_FYData:=LS_FYData||SF_XT_XMLJSON('cardno',trim(RBRXX.YBKH00),0,0,null,null);--cardno 社保卡号 LS_FYData:=LS_FYData||SF_XT_XMLJSON('xming0',trim(RBRXX.BRXM00),0,0,null,null);--xming0 姓名 --xbiebm 性别编码 1:男:2:女 9:未知 if RZYXX.XB0000='男' then LS_FYData:=LS_FYData||SF_XT_XMLJSON('xbie00','1',0,0,null,null);--xbie00 性别 elsif RZYXX.XB0000='女' then LS_FYData:=LS_FYData||SF_XT_XMLJSON('xbie00','2',0,0,null,null);--xbie00 性别 else LS_FYData:=LS_FYData||SF_XT_XMLJSON('xbie00','9',0,0,null,null);--xbie00 性别 end if; LS_FYData:=LS_FYData||SF_XT_XMLJSON('brnl00',SF_YS_CSRQTONL(RZYXX.CSRQ00),0,0,null,null);--brnl00 年龄 LS_FYData:=LS_FYData||SF_XT_XMLJSON('yllb00',LS_AKA130,0,0,null,null);--yllb00 医疗类别 LS_FYData:=LS_FYData||SF_XT_XMLJSON('fwwdbh','',0,0,null,null);--fwwdbh 服务机构编号 LS_FYData:=LS_FYData||SF_XT_XMLJSON('yybah0','',0,0,null,null);--yybah0 病案号 LS_FYData:=LS_FYData||SF_XT_XMLJSON('wdxzqh','',0,0,null,null);--wdxzqh 服务网点行政区划 LS_FYData:=LS_FYData||SF_XT_XMLJSON('xzqh00',LS_fzxbh0,0,0,null,null);--xzqh00 参保人行政区划 LS_FYData:=LS_FYData||SF_XT_XMLJSON('ryrq00',RZYXX.RYRQ00,0,0,null,null);--ryrq00 入院日期 if RZYXX.cydjrq in ('20991231') then LS_FYData:=LS_FYData||SF_XT_XMLJSON('cyrq00','',0,0,null,null);--cyrq00 出院日期 else LS_FYData:=LS_FYData||SF_XT_XMLJSON('cyrq00',RZYXX.cydjrq,0,0,null,null);--cyrq00 出院日期 end if; LS_FYData:=LS_FYData||SF_XT_XMLJSON('cfxms0',LS_mxlistNum,0,0,null,null);--cfxms0 处方项目数 LS_FYData:=LS_FYData||SF_XT_XMLJSON('sfrq00',to_char(sysdate,'YYYYMMDD'),0,0,null,null);--sfrq00 费用发生日期 LS_FYData:=LS_FYData||SF_XT_XMLJSON('scr000',RYGBM.ZWXM00,0,0,null,null);--scr000 上传人 LS_FYData:=LS_FYData||SF_XT_XMLJSON('scsj00',to_char(sysdate,'YYYYMMDD'),0,0,null,null);--scsj00 上传时间 格式yyyymmdd间隔,如“20140302” LS_FYData:=LS_FYData||SF_XT_XMLJSON('drglsh',RZYXX.drglsh,0,0,null,null);--drglsh DRG分组流水号 --LS_FYData:=LS_FYData||''||LS_mxlistNum||''; --明细数量 --清单明细 if LS_QDData is not null then LS_FYData:=LS_FYData||LS_QDData; end if; --诊断明细 if LS_ZDData is not null then LS_FYData:=LS_FYData||LS_ZDData; end if; LS_FYData:=LS_FYData||SF_XT_XMLJSON('hisddh',LS_DDLSH0,0,0,null,null); --hisddh:HIS订单号 LS_FYData:=''||LS_FYData||''; LS_JKFHCS:=null;--返回参数值 LS_ZXZT00:='1';--出参:返还状态 1:成功 0:失败 LS_FHRQ00:=to_char(sysdate,'YYYYMMDD');--返回操作日期 LS_FHSJ00:=to_char(sysdate,'HH24:MI:SS');--返回操作时间 LS_FHCLOB:=LS_FYData;--返回报文CLOB类型 LS_JKFHLX:='9';--接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB LS_JKCODE:='successful';--接口返回码(错误:failure 成功:successful) --步骤8:组合返回报文 LS_MsgStr:='步骤8:组合返回报文'; --步骤9:修改中间表BM_JKRZ00 LS_MsgStr:='步骤9:修改中间表BM_JKRZ00'; update BM_JKRZ00 set ZXZT00=LS_ZXZT00, --状态标志 0:失败 1:成功 MZZYBZ=LS_MZZYBZ, --门诊住院标志 0:门诊 1:住院 BRID00=LS_BRID00, --病人ID DJH000=0, --单据号 CZY000=RYGBM.YGBH00,--操作员编码 CZYXM0=RYGBM.ZWXM00,--操作员姓名 DDLSH0=LS_DDLSH0,--订单流水号 CJLYBM=IN_CJLYBM, --厂家来源编码 QDCJBM=IN_QDCJBM, --渠道编码 FHRQ00=LS_FHRQ00, --返回操作日期 FHSJ00=LS_FHSJ00, --返回操作时间 JKFHLX=LS_JKFHLX, --接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB JKCODE=LS_JKCODE, --接口返回码(错误:failure 成功:successful) JKFHCS=LS_JKFHCS, --返回参数值 FHCLOB=LS_FHCLOB --返回报文CLOB类型 where JKRZID=PJKRZID; --步骤10:过程出参赋值 LS_MsgStr:='步骤10:过程出参赋值'; PZXZT00:=LS_ZXZT00;--出参:返还状态 1:成功 0:失败 PJKFHLX:=LS_JKFHLX;--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB PRECNUM:=LS_RECNUM;--出参:返回记录数据 PJKFHCS:=LS_JKFHCS;--出参:接口返回参数 exception when no_data_found then PERRMSG:=substr('获取DRG上传相关费用明细失败!'||'位置:['||LS_MSGSTR||']原因:'||sqlerrm,1,255); PZXZT00:='0';--出参:返还状态 1:成功 0:失败 rollback; when others then PERRMSG:=substr('获取DRG上传相关费用明细失败!'||'位置:['||LS_MSGSTR||']原因:'||sqlerrm,1,255); PZXZT00:='0';--出参:返还状态 1:成功 0:失败 rollback; end;