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;