prompt 艾隆摆药机接口xml报文 SF_SF_ALBYJK_XMLSTR
create or replace function SF_SF_ALBYJK_XMLSTR
(
PCJLYBM varchar2 default 'AL', --厂家来源编码 AL:艾隆
PJKCJBM varchar2 default '', --接口场景编码
PBRID00 number, --病人ID=BM_BRXXB0.BRID00
PJZDH00 number, --结账单号=ZY_JZB000.JZDH00
PCFLSH0 varchar2, --处方流水号
PFHLXBH number default 0, --返回类型编码 0:完整请求报文
PINTSTR varchar2 default '' --备用参数 xml编码格式传入
)
-- Person Date Comments
--linzetao 2021.05.31 create by MZSF9-20210531-001
--linzetao 2021.07.29 修正单个处方有多个药品时报文只会生成一个药品的问题 MZSF9-20210729-003
return clob is
LS_FHXX00 clob;
LS_XMLSTR clob;
LS_YPXX00 clob;
LS_CFLSH0 varchar2(100);
i number(5);
LS_PJXH00 SF_PJSYQK.PJXH00%type;
--2:listDetail 清单项目明细列表
cursor CUR_CFMX00 is
select rownum as MedID,a.* from VW_SF_BYJK00_MZCF00 a where PresNO=LS_CFLSH0;
begin
LS_FHXX00 := '';
LS_XMLSTR := '';
LS_CFLSH0 := '';
i := 0;
--病人id或结账单号或处方流水号为空直接返回
if PBRID00 <= 0 or PJZDH00 <= 0 or PCFLSH0 is null then
return LS_FHXX00;
end if;
select max(decode(nvl(b.WBPJXH,'0'),'0',b.PJXH00,b.WBPJXH)) into LS_PJXH00
from SF_JZB000 a,SF_PJSYQK b
where a.PJH000=b.FZPJH0 and b.PJZT00='0' and a.BRID00=PBRID00 and a.JZDH00=PJZDH00;
--没有发票号直接返回
if LS_PJXH00 is null or LS_PJXH00='0' then
return LS_FHXX00;
end if;
loop
i := i+1;
LS_CFLSH0 := SF_XT_RETURNINDEXEH(PCFLSH0, ',',i);
--没有处方流水号跳出循环
if LS_CFLSH0 is null then
exit;
end if;
--LS_YPXX00 := '';
for c_cfmx in CUR_CFMX00 loop
LS_YPXX00 := ''||LS_PJXH00||''
||''||c_cfmx.MedID||''
||''||c_cfmx.MedOnlyCode||''
||''||c_cfmx.MedAMT||''
||''||c_cfmx.MedPack||''
||''||c_cfmx.MedUnitPack||''
||''||c_cfmx.Medunit||''
||''||c_cfmx.MedOutTime||''
||''||c_cfmx.PresType||''
||''||c_cfmx.WindowNo||''
||''||c_cfmx.PatientID||''
||''||c_cfmx.PatientName||''
||''||c_cfmx.PatientSex||''
||''||c_cfmx.PatientAge||''
||''||c_cfmx.PatientBirth||''
||''||c_cfmx.Diagnosis||''
||''||c_cfmx.WardNo||''
||''||c_cfmx.WardName||''
||''||c_cfmx.MedPerDos||''
||''||c_cfmx.MedUsage||''
||''||c_cfmx.MedPerDay||''
||''||c_cfmx.DoctorName||''
||''||c_cfmx.PresNO||''
||''||c_cfmx.MedUnitPrice||''
||''||c_cfmx.MedTotalPrice||''
||''||c_cfmx.MedConvercof||''
||''||c_cfmx.Remark||''
||''||c_cfmx.YFCode||''
||''||c_cfmx.MedName||''
||''||c_cfmx.MedFactory||''
||''||c_cfmx.Remark2||''
||''||c_cfmx.Remark3||''
||''||c_cfmx.Remark4||'';
LS_XMLSTR := LS_XMLSTR||''||LS_YPXX00||'';
end loop;
end loop;
LS_XMLSTR := ''||LS_XMLSTR||'';
--LS_XMLSTR := ''||LS_XMLSTR;
LS_FHXX00 := LS_XMLSTR;
return LS_FHXX00;
end;
/
show error;