CREATE OR REPLACE PROCEDURE SP_TCMHERB_JXZHCL ( Popflag in varchar2, --操作类别 1不覆盖操作 2覆盖操作 Pxzczid in number, --TCMHERB_LIST_DLD_DET表的xzczid值 Pmdcode in varchar2, --TCMHERB_LIST_DLD_DET表的med_list_codg值 Pczy000 in number default 0, --操作员 Pczyks0 in number default 0, --操作员科室 Pcommit in varchar2 default 'N', --是否提交 Y是N否 Pycshow in varchar2 default '0', --出现异常是否显示 0不显示,1显示 Pxmlstr in varchar2 default '', --统一的备用入参,以xml格式编码 Pzxcgbz out number, --执行成功标志 1成功 0失败 Ptsxx00 out varchar2, --执行结果提示信息,成功的情况下也可能有警告信息 Pxxxx00 out varchar2, --执行结果详细信息,成功的情况下也可能有警告信息,一般用来显示参数等指标 Poutstr out varchar2 --统一的备用出参,以xml格式编码 ) -- MODIFICATION HISTORY -- Person Date Comments -- jlg 2022.02.11 created 国家医保平台中药饮片目录下载明细表解析转换处理过程 GGMK9EX-20220210-001 as ls_CZRQ00 char(8); ls_CZSJ00 char(8); ls_CZRQSJ char(16); ls_Count0 number(10); Ecustom exception; VRowMX TCMHERB_LIST_DLD_DET%rowtype; --新医保目录更新明细表 VRowRZ GEN_LIST_DLD_LOG%rowtype; --新医保目录更新操作记录表 ls_YBGXRQ BM_YBSFXM.YBGXRQ%type; --医保更新日期 ls_PTFPBH BM_YBFPXM.PTFPBH%type; --国家医保平台发票项目类别 ls_XMMC00 BM_YBSFXM.XMMC00%type; --项目名称 ls_YPJX00 BM_YBSFXM.YPJX00%type; --剂型 ls_XMDW00 BM_YBSFXM.XMDW00%type; --单位-->最小计价单位 ls_ZFBL00 BM_YBSFXM.ZFBL00%type; --是否有效 ls_SFYX00 BM_YBSFXM.SFYX00%type; --自付比例 @@jlg暂无法从何取值 ls_SFYBXM BM_YBSFXM.SFYBXM%type; --是否医保项目 Y是 N否 @@jlg暂无法从何取值 ls_YBLB00 BM_YBSFXM.YBLB00%type; --医保类别 (无对应项) 0医保项目,1部分自费医保项目,2非医保项目,3补充的非医保项目4甲类药品 5乙类药品 6民族药品 7非医保药品 ls_PYSM00 BM_YBSFXM.PYSM00%type; --拼音首码 ls_WBSM00 BM_YBSFXM.WBSM00%type; --五笔首码 ls_GXXLH0 BM_YBSFXM.GXXLH0%type; --更新序列号 ls_SFSX00 BM_YBSFXM.SFSX00%type; --收费上限 (无对应下) ls_SCCJ00 BM_YBSFXM.SCCJ00%type; --生产厂家 ls_YPGG00 BM_YBSFXM.YPGG00%type; --规格型号 ls_BZ0000 BM_YBSFXM.BZ0000%type; --备注说明 ls_CPID00 BM_YBSFXM.CPID00%type; --医保最高单价(大单位) ls_ZXJJDW BM_YBSFXM.ZXJJDW%type; --医保最高单价(小单位) ls_CJR000 BM_YBSFXM.CJR000%type; --医保产品ID号 (无对应项) ls_CFBL00 BM_YBSFXM.CFBL00%type; --最小计价单位 ls_YBZGDJ BM_YBSFXM.YBZGDJ%type; --拆分比例(倍率) ls_YBZGDJ1 BM_YBSFXM.YBZGDJ1%type; --创建人 ls_YBJSDJ BM_YBSFXM.YBJSDJ%type; --医保结算单价(大单位) ls_YBJSDJ1 BM_YBSFXM.YBJSDJ1%type; --医保结算单价(小单位) ls_BKEH83 BM_YBSFXM.BKEH83%type; --医保国家标准编码 ls_VER000 BM_YBSFXM.VER000%type; --版本号 begin Pzxcgbz:=0; ls_CZRQ00 := to_char(sysdate,'YYYYMMDD'); ls_CZSJ00 := to_char(sysdate,'HH24:MI:SS'); ls_CZRQSJ := ls_CZRQ00||ls_CZSJ00; select * into VRowRZ from GEN_LIST_DLD_LOG where xzczid = Pxzczid; if sql%notfound then return; end if; select * into VRowMX from TCMHERB_LIST_DLD_DET where xzczid = Pxzczid and med_list_codg = Pmdcode; if sql%notfound then return; end if; --如果不覆盖操作,则已转换的不处理 if Popflag = 1 and VRowMX.ZHCLBZ ='1' then Pzxcgbz:=1; return; end if; ls_YBGXRQ := replace(VRowMX.updt_time,'-',''); --医保更新日期 ls_XMMC00 := VRowMX.sin_drug_name; --项目名称 ls_PTFPBH := '03'; --医保发票项目 01西药 02成药 03草药 ls_YPJX00 := substr(VRowMX.tcmherb_cat,1,50); --剂型 ls_XMDW00 := substr(null,1,20); --单位-->最小计价单位 ls_SFYX00 := (case when (VRowMX.vali_flag = '0' or VRowMX.vali_flag = 'N') then 'N' else 'Y' end); --是否有效 ls_ZFBL00 := 1; --自付比例 @@jlg暂无法从何取值 ls_SFYBXM := 'Y'; --是否医保项目 Y是 N否 @@jlg暂无法从何取值 ls_YBLB00 := '4'; --医保类别 (无对应项) 0医保项目,1部分自费医保项目,2非医保项目,3补充的非医保项目4甲类药品 5乙类药品 6民族药品 7非医保药品 ls_PYSM00 := substr(SF_XT_GETPYSM(ls_XMMC00),1,10); --拼音首码 ls_WBSM00 := substr(SF_XT_GETWBSM(ls_XMMC00),1,10); --五笔首码 ls_GXXLH0 := 0; --更新序列号 ls_SFSX00 := null; --收费上限 (无对应下) ls_SCCJ00 := substrb(null,1,100); --生产厂家 ls_YPGG00 := substrb(VRowMX.tcmherb_cat,1,50); --规格型号 --ls_BZ0000 := substrb(VRowMX.efcc_atd,1,250); --备注说明 ls_BZ0000 := substrb(trim(VRowMX.NAT_INSU_PAY_POL),1,250); --备注说明-- why20220602 ls_YBZGDJ := 0; --医保最高单价(大单位) ls_YBZGDJ1:= 0; --医保最高单价(小单位) ls_CPID00 := null; --医保产品ID号 (无对应项) ls_ZXJJDW := substrb(null,1,10); --最小计价单位 ls_CFBL00 := null; --拆分比例(倍率) ls_CJR000 := VRowRZ.gxczy0; --创建人 ls_YBJSDJ := null; --医保结算单价(大单位) ls_YBJSDJ1:= null; --医保结算单价(小单位) ls_BKEH83 := substr(VRowMX.med_list_codg,1,50); --药监本位码 ls_VER000 := substr(VRowMX.ver,1,20); --版本号 --执行插入或修改BM_YBSFXM字典表 SP_XM_YBSFXM_INSUPD( Pxzczid, Pmdcode, ls_YBGXRQ, ls_PTFPBH, ls_XMMC00, ls_YPJX00, ls_XMDW00, ls_ZFBL00, ls_SFYX00, ls_SFYBXM, ls_YBLB00, ls_PYSM00, ls_WBSM00, ls_GXXLH0, ls_SFSX00, ls_SCCJ00, ls_YPGG00, ls_BZ0000, ls_CPID00, ls_ZXJJDW, ls_CJR000, ls_CFBL00, ls_YBZGDJ, ls_YBZGDJ1, ls_YBJSDJ, ls_YBJSDJ1, ls_BKEH83, ls_VER000, Pczy000, Pczyks0, Pcommit, Pycshow, Pxmlstr, Pzxcgbz, Ptsxx00, Pxxxx00, Poutstr ); --此记录更新为 ‘已转换’ update TCMHERB_LIST_DLD_DET set ZHCLBZ = '1' where xzczid = Pxzczid and med_list_codg = Pmdcode; --对应日志表更新为 ‘HIS提取未完成’ update GEN_LIST_DLD_LOG set HSTQBZ = '2' where xzczid = Pxzczid ; if Pcommit ='Y' then commit; end if; Pzxcgbz:=1; exception when no_data_found then if Pycshow = '1' then raise_application_error(-20001,substrb('没有找到数据!*'||sqlerrm,1,240)); else Ptsxx00:= substrb('没有找到数据!*'||sqlerrm,1,240); end if; when Ecustom then if Pycshow = '1' then raise_application_error(-20010,substrb(Ptsxx00||'!*',1,240)); end if; when others then if Pycshow = '1' then raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240)); else Ptsxx00:= substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240); end if; end;