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;