CREATE OR REPLACE FUNCTION SF_SS_GZHCJK_XMLSTR_GYFYTB ( -- PYWJJID number, PYJDJH0 number , --PTYPE00 varchar2, --类型 PSFSF00 VARCHAR2, --是否收费 PSFDJH0 number default null, --收费单据号 PFHLXBH number default 0, --返回类型编码 0:完整请求报文 PINTSTR varchar2 default '' --1:His界面诊疗项目耗材收费数据同步到SPD;2:His单个耗材收费数据同步到SPD;5:高值耗材收费 ) -- Person Date Comments -- linshu 2022.02.23 增加入参PSFDJH0; for SSMZ9EX-20220223-001 return clob is LS_FHXX00 clob; LS_XMLSTR clob; LS_CFXX00 clob; LS_CFLSH0 varchar2(100); LS_PRE000 varchar2(100); --参数首部 LS_SUF000 varchar2(100); --后缀 LS_CGBZ00 varchar2(2); --是否成功 i number(5); LR_gzhcjk vw_ss_gzhcjk%rowtype; LR_PSFSF00 VARCHAR2(4); -- cursor c_GZHCJK is select * from ss_gzhcjk a where a.yjdjh0 = PYJDJH0; LS_TM0000 SS_GZHCJK.TM0000%TYPE; LS_YJDJH0 YJ_YW0000.CXDJH0%TYPE; LS_YWJJID YJ_YWJJ00.ID0000%TYPE; begin LS_XMLSTR:=''; LS_CGBZ00:='-1'; --if c_GZHCJK%rowcount = 0 then -- return '{"code":-1,"message":"没有找到数据"}'; --end if; LS_PRE000:='{"code":'; LS_SUF000:='}'; --select * into LR_gzhcjk from vw_ss_gzhcjk where ID0000 = PYWJJID and YJDJH0 = PYJDJH0; for LR_gzhcjk in ( select * from vw_ss_gzhcjk where YJDJH0 = PYJDJH0 ) loop if PSFSF00 = '1' then LS_TM0000 := to_char(LR_gzhcjk.tm0000); else SELECT CXDJH0 into LS_YJDJH0 FROM YJ_YW0000 WHERE YJDJH0 = PYJDJH0; select CXID00 into LS_YWJJID FROM YJ_YWJJ00 WHERE YJDJH0 = PYJDJH0 AND ID0000 = LR_gzhcjk.Id0000; SELECT TM0000 into LS_TM0000 from SS_GZHCJK WHERE YJDJH0 = LS_YJDJH0 AND JJID00 = LS_YWJJID; end if; select DECODE(PSFSF00,1,'10',2,'00') into LR_PSFSF00 from dual; LS_XMLSTR:=LS_XMLSTR||''||LR_gzhcjk.HCTYPE||'' --类型 ||''||LR_gzhcjk.yjksbh||'' --执行科室 ||''||LR_gzhcjk.bmmc00||'' --执行科室名称 ||''||to_char(PSFDJH0)||'' --收费单据号 ||''||to_char(LS_TM0000)||'' --条形码 ||''||to_char(LR_gzhcjk.sfxmid)||'' --商品编号 ||''||to_char(LR_gzhcjk.SFJE00)||'' --商品单价 ||''||to_char(abs(LR_gzhcjk.sl0000))||'' --医嘱数量 ||''||to_char(LR_gzhcjk.brid00)||'' --病人ID ||''||LR_gzhcjk.brxm00||'' --病人名称 ||''||to_char(LR_gzhcjk.kdys00)||'' --医生编码 ||''||LR_gzhcjk.kdysxm||'' --医生名称 ||''||to_char(LR_gzhcjk.kdys00)||''--开单医生编码 ||''||LR_gzhcjk.kdysxm||'' --开单医生名称 ||''||to_char(LR_gzhcjk.kdys00)||''--开停医嘱人编码 ||''||LR_gzhcjk.kdysxm||'' --开停医嘱人名称 ||''||''||'' --医嘱套编号 ||''||LR_PSFSF00||'' --医嘱状态 ||''||LR_gzhcjk.kdysxm||'' --开单科室名称 ||''||to_char(LR_gzhcjk.kdksbh)||'' --开单科室编码 ---2022.05.27修改过程修正开单科室编号 ||''||LR_gzhcjk.kdksmc||'' --开单科室名称 ---2022.05.27修改过程修正开单科室名称 ||''||LR_gzhcjk.mrn000||'' --病案号 ---2022.06.20 spd接口新增病案号字段(林术修改) ||''; end loop; if LS_XMLSTR IS NOT NULL then LS_CGBZ00:=0; end if; --LS_FHXX00:=LS_PRE000||LS_CGBZ00||'"message":' -- ||'"'||'' -- ||LS_XMLSTR -- ||'' -- ||'"'||LS_SUF000; LS_FHXX00:= '' ||LS_XMLSTR ||''; return LS_FHXX00; end;