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;