create or replace procedure SP_ZS_YPYZFZDIANZIBINGLI
(
    P_YZID00  in  number,--医嘱ID
    P_QYRQ00  in  char,--起用日期
    P_QYSJ00  in  char,--起用时间
    P_PXSJ00  in  char,--排序时间
    P_LRRXM0  in  char,--录入人姓名
    P_ZYH000  in  ZY_BRXXB0.ZYH000%type,--住院号
    P_CZY000  in  number default 0,    --操作员
    P_YEXM00  in  char,  --婴儿姓名

    V_ERROR0  out number,--是否库存不足：0：没有错误，1：某些药品库存不足，2：其他错误
    V_KCBZYP  out varchar2 --库存不足的药品信息给出提示。
)as
-- MODIFICATION HISTORY
-- Person      Date        Comments
-- yangy      2008.06.24   医嘱复制没有复制bq_ypyzmx表的dmbz00字段的值
-- chenqw     2009.01.07   复制的医嘱应默认为现在的药房
-- chenqw     2009.04.13   要求不同病人间的医嘱也能复制
-- yangy      2009.04.24   医嘱复制可以不考虑库存下限。 --有参数控制
-- CSF        2009.12.30   增加单个药品默认药房的处理
--阮炳辉      2013.09.04   复制医嘱药房也要复制 for DZBL-20130823-002
-- xuxm       2014.01.10   住院医嘱启用首几功能后，如模板引用或路径引用的医嘱，需要默认首0 for DZBL-20140109-004
-- xuxm       2014.04.02   用法大类为“输液”或者“注射”类的药品，1、从医嘱模板中引用出来的医嘱做修改：首日次数需默认为1（首1） for DZBL-20140326-001
-- xuxm       2014.04.11   （急）医嘱界面，如果医生将之前开的药品医嘱复制过来或者这个药品医嘱是从医嘱模板里引用出来的，但是这个药品在药房已经停用了，应该做相应提示：“该药品已经停用”。for DZBL-20140402-004
-- xuxm       2014.04.22   增加协定处方名称 for DZBL-20140410-005
-- xuxm       2014.04.22   医嘱界面，1、复制粘贴出来的中草药（临嘱），用药日是空的，修改：应该默认为第二天(按起用时间算起第二天) for DZBL-20140505-003
-- dsm        2014.05.09   相关业务表写入YSZID0 for BQ-20140509-001
-- xuxm       2014.06.12   产科病人，将其他病人的医嘱复制过来，然后在医嘱界面【母婴】类别选择“某某之婴”，进行粘贴，问题：那几条医嘱并没有粘贴在“某某之婴”类别下，选择“全部”类别却可以看到。详细见附件 for DZBL-20140611-001
-- xuxm       2014.07.02   复制以及从模板中引用出来的医嘱，也需判断是否预扣库存不足。（跟正常开医嘱一样，需做相应提示） for DZBL-20140619-003
-- xuxm       2014.07.07   因Q5H的频次不在频次表定义具体的时间点，而是直接根据启用时间来推算出后面的具体时间点，故该频次在医嘱录入时，不需要录入首日次数。 for DZBL-20140703-007
-- xuxm       2014.10.17   入径病人，医嘱管理界面，从其他病人复制粘贴过来的医嘱（如果跟路径模板中的医嘱一致的话），提交时应该与路径模板中的医嘱自动对应起来，目前没有，请做修改 for DZBL-20141010-002
-- 阮炳辉     2014.12.11   重命名调用的过程和视图(加_ZYDZBL) DZBL-20141210-007
-- xuxm       2015.02.02   医嘱界面，复制药房已经暂停使用的中药，没有做相应提示。 for DZBL-20150127-001
-- xuxm       2015.03.02   医嘱界面，草药医嘱实际有库存复制的时候提示库存不足。 for DZBL-20150303-009
--zhuyj       2015.03.02   医嘱界面，优化草药医嘱提示库存不足。 for DZBL-20151125-005
--wzy         2016.08.01   医嘱界面，库存不足的情况过滤直接粘帖 for ZYDZBL-20160420-002
-- wuzy       2018.06.06   过程加上日志 SP_TransLog for ZYDZBL-20180531-002
-- huanglw    2018.10.11   复制医嘱时，若用法为“冲服”过滤掉代煎数量  for ZYDZBL-20181010-001
-- zouqc      2019.11.18   复制医嘱要带上用药日期 for  ZYDZBL-20191118-004
-- zouqc      2020.05.09   ZYDZBL-20200402-001  YZLY00字段取值为1
-- zouqc      2021.01.26   跨院区的药品复制粘贴，药房应选择所在院区的药房 for ZYDZBL-20210120-003
--cuigz       20210720  增加医嘱明细表复制黏贴ZFFSBZ字段
    V_ZYID00 ZY_BRXXB0.ZYID00%type;--住院ID
    V_YPLBBH BQ_YPYZ00.YPLBBH%type;--药品类别编号
    V_BQH000 BQ_YPYZ00.BQH000%type;--病区号
    V_KSH000 BQ_YPYZ00.KSH000%type;--科室号
    V_YZID00 BQ_YPYZ00.YZID00%type;--医嘱ID
    V_YFBMBH XT_YPFWFX.YFBMBH%type; --领药药房
    V_COUNT1 number;--记数器1
    V_COUNT2 number;--记数器2
    V_COUNT3  number;--记数器3
    V_COUNT4  number;--记数器4
    V_YFBMBH3 XT_YPFWFX.YFBMBH%type;--领药药房
    V_YZFZKCXX char(1); --药品医嘱复制是否考虑库存下限  Y:是 N:否 默认为：Y
    V_YZFZSRCSMR  char(1); --药品医嘱复制用法大类为“输液”或者“注射”类的药品首日次数默认1  Y:是 N:否 默认为：N

    V_YSZID0 BQ_YPYZ00.YSZID0%type;
    V_PDYFYKKC char(1);--判断药房预扣药房库存
    AS_YHMSG0 varchar(4000);
    AS_SYSMSG varchar(4000);
    ZRZC number;
    --西药需要复制粘帖的医嘱内容
    cursor CUR_ZS_YPYZMX is
    select A.*
    from  BQ_YPYZMX A,
          VW_BQ_YFYPSC_ZYDZBL B,
         -- XT_YPFWFX C
         YF_YPKCXX C
    where A.YZID00 = P_YZID00
      and A.YPNM00 = B.YPNM00--药品内码
      --and c.YPLBBH = v_yplbbh--药品类别
      --and c.SLBMBH = v_bqh000--申请病区
      --and c.MRBZ00 = 'Y'     --默认药房
      and C.YPNM00 = A.YPNM00--药品内码
      and C.YFBMBH = B.YFBMBH --药房部门
      and C.YFBMBH=V_YFBMBH
      and C.ZTBZ00='0'--正常使用的药品
      and ((V_YZFZKCXX='N' and B.SJKCSL > 0) or (V_YZFZKCXX='Y' and B.KCSL00 > 0))
      and (A.LYL000*A.Z2J000)<=C.YKKCSL;--库存充足才药品
    --中药当前需要粘帖的医嘱内容
    cursor CUR_ZS_YPYZMX_ZY is
    select A.*
    from  BQ_YPYZMX A, YF_YPKCXX C
    where A.YZID00 = P_YZID00
    and C.YFBMBH=V_YFBMBH
    and C.ZTBZ00='0'
    and C.YPNM00 = A.YPNM00--药品内码
    and (LYL000*Z2J000)<=YKKCSL;--不粘帖库存不足的药物
    --已经停用的药品查询
    cursor CUR_ZS_KCBZYP is
    select X.YPNM00 YPNM00,Y.YPMC00 YPMC00
    from BQ_YPYZMX X, BM_YD0000 Y
    where X.YZID00 = P_YZID00 and X.YPNM00=Y.YPNM00
    and X.YPNM00 not in
    (select a.YPNM00
    from  BQ_YPYZMX A,
          VW_BQ_YFYPSC_ZYDZBL b
    where A.YZID00 = P_YZID00
      and A.YPNM00 = B.YPNM00--药品内码
      and B.YFBMBH = V_YFBMBH--药房部门
      and A.YPNM00 in(select YPNM00 from YF_YPKCXX A where YFBMBH=V_YFBMBH and ZTBZ00='0')
      and ((V_YZFZKCXX='N' and B.SJKCSL > 0) or (V_YZFZKCXX='Y' and B.KCSL00 > 0)));
  --判断药品当天的预扣库存
  --领药量(发药单位,临时医嘱用)*住院发药/基本单位转换率(默认药房)>预扣库存数量(剂量单位) 库存不足标准
  --库存不足或已停用药品查询
 cursor CUR_ZS_YPYZMX_YKKC is
 select A.*
   from BQ_YPYZMX A where YZID00=P_YZID00 and V_PDYFYKKC='Y'
    and A.YPNM00 in(select B.YPNM00 from YF_YPKCXX B
  where A.YPNM00=B.YPNM00
     and ((LYL000 * Z2J000) > YKKCSL or  ZTBZ00='1')
    and B.YFBMBH=V_YFBMBH);

begin
  SP_TRANSLOG(sysdate,'SP_ZS_YPYZFZDIANZIBINGLI',P_CZY000,0,
            'SP_ZS_YPYZFZDIANZIBINGLI:P_YZID00:'||To_Char(P_YZID00)||'P_ZYH000:'||P_ZYH000);
    V_ERROR0:=0;
    V_KCBZYP:='';
    --取住院ID
    select nvl(max(trim(VALUE0)),'Y') into V_YZFZKCXX from XT_XTCS00 where NAME00='ZS_YZFZKLKCXX';
    select nvl(max(trim(VALUE0)),'N') into V_YZFZSRCSMR from XT_XTCS00 where NAME00='ZS_YZFZSRCSMR';
    select nvl(max(trim(VALUE0)),'N') into V_PDYFYKKC from XT_XTCS00 where NAME00='ZS_PDYFYKKC';
    select max(ZYID00) into V_ZYID00 from ZY_BRXXB0 where ZYH000 = P_ZYH000;
    select YPLBBH into V_YPLBBH from BQ_YPYZ00 where YZID00 = P_YZID00;
    --取病人当前科室、当前病区
    select DQBQ00,DQKS00,YSZID0 into V_BQH000,V_KSH000,V_YSZID0
      from ZY_BRXXB0 where ZYID00 = V_ZYID00;
    --取默认药房
    begin
    select YFBMBH into V_YFBMBH from BQ_YPYZ00 where YZID00=P_YZID00;
        exception
            when NO_DATA_FOUND then
                V_YFBMBH := 0;
    end;
  --判断药品库存是否高于下限的条数
  select count(1) into V_COUNT1
  from  BQ_YPYZMX A,
        VW_BQ_YFYPSC_ZYDZBL B
  where A.YZID00 = P_YZID00
    and A.YPNM00 = B.YPNM00--药品内码?
    --AND B.YFBMBH = V_YFBMBH--药房部门
    --AND A.YPNM00 IN(SELECT YPNM00 FROM YF_YPKCXX A WHERE YFBMBH=V_YFBMBH AND ZTBZ00='0')
    and  exists (select 1 from YF_YPKCXX M,XT_YPFWFX N
          where  M.YPNM00=A.YPNM00 and M.YFBMBH=N.YFBMBH and SLBMBH=V_BQH000   and ZTBZ00='0')
    and ((V_YZFZKCXX='N' and B.SJKCSL > 0) or (V_YZFZKCXX='Y' and B.KCSL00 > 0));
  select count(1) into V_COUNT2 from BQ_YPYZMX where YZID00 = P_YZID00;
  --比较条数
  if V_COUNT1<V_COUNT2 then
      V_ERROR0:=1;
  end if;
  --按单个药品判断，库存足够药品数目最多的药房
  if(V_YPLBBH <> '2') then
      if  V_COUNT1 < V_COUNT2 then
        --判断药品库存是否高于下限的条数
        begin
          select * into V_YFBMBH3,V_COUNT3 from (
            select YFBMBH,max(COUNT1) COUNT1 from (
              select C.YFBMBH,count(*)  COUNT1
                from BQ_YPYZMX A,
                  VW_BQ_YFYPSC_ZYDZBL B,
                  YF_YPKCXX C
              where A.YZID00 = P_YZID00
                and A.YPNM00 = B.YPNM00--药品内码
                and B.YFBMBH = C.YFBMBH--药房部门编号
                and B.YPNM00=C.YPNM00
                and C.BQKDYF='Y'
                and C.ZTBZ00='0'
               -- and b.KCSL00 > 0  --库存高于下限
                and ((V_YZFZKCXX='N' and B.SJKCSL > 0) or (V_YZFZKCXX='Y' and B.KCSL00 > 0) )--库存高于下限
              group by C.YFBMBH)
            group by YFBMBH )
          where ROWNUM=1;
        exception
          when others then
            V_YFBMBH3:=0;
        end;
      end if;
      if V_YFBMBH3>0 then
        V_YFBMBH:=V_YFBMBH3;
        V_COUNT1:=V_COUNT3;
        --比较条数
        if V_COUNT1 < V_COUNT2 then
            V_ERROR0:=1;
        end if;
      end if;
    else
        V_COUNT1 := 1;
       select  YFBMBH into V_YFBMBH
         from ( select M.YFBMBH  from YF_YPKCXX M,XT_YPFWFX N
                where M.YFBMBH=N.YFBMBH and SLBMBH=V_BQH000   and ZTBZ00='0' and   M.YPNM00
                     in (select A.YPNM00   from BQ_YPYZMX A
                          where YZID00 = P_YZID00 and A.YPNM00=M.YPNM00  and A.YPLBBH=N.YPLBBH)
                order by MRBZ00 desc, PX0000)
      where ROWNUM<=1;
    end if;
    --如果获取到的药房不属于这个院区，则通过病区号重新获取
    select count(1) into V_COUNT4 from XT_YPFWFX where SLBMBH=V_BQH000 and YFBMBH=V_YFBMBH;
      if V_COUNT4=0 then
        select  YFBMBH into V_YFBMBH
         from ( select M.YFBMBH  from YF_YPKCXX M,XT_YPFWFX N
                where M.YFBMBH=N.YFBMBH and SLBMBH=V_BQH000   and ZTBZ00='0' and   M.YPNM00
                     in (select A.YPNM00   from BQ_YPYZMX A
                          where YZID00 = P_YZID00 and A.YPNM00=M.YPNM00  and A.YPLBBH=N.YPLBBH)
                order by MRBZ00 desc, PX0000)
      where ROWNUM<=1;
      end if;
   --在开医嘱的过程中是否存在库存不足或暂停的药品
   if(V_PDYFYKKC='Y') then
         V_COUNT3:=0;
         for REC in CUR_ZS_YPYZMX_YKKC loop
             --V_KCBZYP:=V_KCBZYP||REC.YPMC00||',';
             V_COUNT3:=V_COUNT3+1;
        end loop;
        if V_COUNT3 > 0 then
           V_ERROR0:=1;
           --V_COUNT1:=0;
      end if;
   end if;

    --取医嘱ID
   if V_COUNT1>0 then
    select SQ_BQ_YZMX00_YZMXID.nextval into V_YZID00 from DUAL where ROWNUM=1;
    --插入药品医嘱主表
    insert into BQ_YPYZ00(
                         YZID00,--NUMBER(12)  , --ID号，序列号(分组号)
                         ZYID00,--NUMBER(10)  , --住院ID
                         YEXM00,--CHAR(10)    , --婴儿姓名
                         YPLBBH,--CHAR(1)     , --药品大类编号‘0’西药‘1’成药‘2’草药
                         DMBZ00,--CHAR(1)     , --'0'正常 '1'毒麻神经
                         CLBZ00,--CHAR(1)     , --长期/临时标志'0'-临时，'1'-长期
                         PXSJ00,--CHAR(8)     , --排序时间(医嘱根据启用日期+排序时间排序)
                         KZYS00,--NUMBER(5)   , --开嘱医生
                         LRRQ00,--CHAR(8)     , --录入日期
                         LRSJ00,--CHAR(8)     , --录入时间
                         LRRXM0,--CHAR(10)    , --录入人姓名
                         HDRXM0,--CHAR(10)    , --核对人姓名
                         QYRQ00,--CHAR(8)     , --启用日期
                         QYSJ00,--CHAR(8)     , --启用时间
                         TZRQ00,--CHAR(8)     , --停止日期
                         TZSJ00,--CHAR(8)     , --停止时间
                         TQRQ00,--CHAR(8)     , --提取日期
                         TQSJ00,--CHAR(8)     , --提取时间
                         TZYS00,--NUMBER(5)   , --停止医生
                         TZRXM0,--CHAR(10)    , --停止人姓名
                         ZQS000,--NUMBER(3)   , --(短嘱)周期数
                         ZQCD00,--NUMBER(2)   , --周期长度(周的长度只能为1)
                         ZQDW00,--CHAR(4)     , --(短嘱)周期单位
                         ZQCYTS,--NUMBER(5)   , --一个周期草药贴数(仅供草药用)2.18
                         JYCS00,--NUMBER(1)   , --(中药)煎药次数
                         BQH000,--NUMBER(5)   , --病区号
                         KSH000,--NUMBER(5)   , --科室号
                         YFBMBH,--NUMBER(5)   , --(药房)执行科室
                         PCID00,--NUMBER(4)   , --频次ID
                         PCMC00,--CHAR(20)    , --药品用法频次名称
                         YFID00,--CHAR(3)     , --药品用法ID
                         YPYFMC,--CHAR(20)    , --药品用法名称
                         YYZF00,--CHAR(40)    , --用药嘱咐(饭前，饭后等)
                         YZZT00,--CHAR(1)     , --医嘱状态‘0’新开‘1’已核对‘2’已提取‘3’停止‘4’撤消‘5’暂停‘6’疑问

                         YZMXSM,--NUMBER(2)   , --医嘱明细(同组)数目(由触发器保证)
                         BZID00,--NUMBER(6)   , --病症ID号(主要用于毒麻处方)
                         BZ0000, --CHAR(10)      --备注
                         YSZID0,
                         SRCS00,                  --首日次数
                         CFMC00,  --CHAR(10)  ,处方名称
             YYRQ00, --用药日期
                         YZLY00
                         )
                 select
                       V_YZID00,
                       V_ZYID00,
                       P_YEXM00,
                       YPLBBH,
                       DMBZ00,
                       CLBZ00,
                       P_PXSJ00,
                       P_CZY000,
                       to_char(sysdate,'YYYYMMDD'),
                       to_char(sysdate,'HH24:MI:SS'),
                       P_LRRXM0,
                       null,--hdrxm0,
                       P_QYRQ00,
                       P_QYSJ00,
                       null,--tzrq00,
                       null,--tzsj00,
                       null,--tqrq00,
                       null,--tqsj00,
                       null,--tzys00,
                       null,--tzrxm0,
                       ZQS000,
                       ZQCD00,
                       ZQDW00,
                       ZQCYTS,
                       decode(ypyfmc,'冲服',0, JYCS00),
                       V_BQH000,
                       V_KSH000,
                       V_YFBMBH,
                       PCID00,
                       PCMC00,
                       YFID00,
                       YPYFMC,
                       YYZF00,
                       '7',--yzzt00,
                       null,--yzmxsm,
                       BZID00,
                       BZ0000,V_YSZID0,
                       decode(CLBZ00,'0',(select decode(trim(VALUE0),'Y',0,-1)   from XT_XTCS00 where NAME00 = 'ZS_SYSRCS'),-1),
                       CFMC00,
                       YYRQ00,
                       '1'
    from BQ_YPYZ00 where YZID00 = P_YZID00;

    --插入药品医嘱明细表
    if(V_YPLBBH<>'2') then
      if(V_YZFZSRCSMR='Y') then
       update BQ_YPYZ00 set SRCS00=1 where YZID00=V_YZID00 and CLBZ00='0' and YFID00 in( select YFID00 from BM_YPYF00 where YFLBID in(1,2)) ;
      end if;
     --特殊频次限制首日次数填写
     update BQ_YPYZ00 set SRCS00=-1
      where YZID00=V_YZID00 and CLBZ00='0'
        and  exists (select 1  from XT_XTCS00 where NAME00 = 'ZS_SZJYPCSRSRCS '
        and VALUE0 like '%|'||PCID00||'|%' ) ;
        for REC in CUR_ZS_YPYZMX loop
          insert into BQ_YPYZMX(
                           YZID00,  --医嘱ID(分组号)
                           YZMXID,  --ID号，序列号(分组号)
                           YPNM00,  --药品内部编号
                           SFDZGG,  --'0'是,'1'否

                           YPMC00,  --药品名称
                           YPGG00,  --药品规格
                           PSID00,  --皮试ID             对应MZ_PS0000表

                           PSMC00,  --皮试名称(冗余)
                           MCSL00,  --每次数量(剂量单位的每次剂量)
                           JLDW00,  --剂量单位(J)(冗余)
                           LYL000,  --领药量(发药单位,临时、用药医嘱使用)
                           ZYFYDW,  --住院发药单位(Z)(住院药房维护)(冗余)
                           Z2J000,  --住院发药/基本单位转换率(默认药房)
                           XMYFMC,  --草药细目用法名称
                           TQFS00,  --提取方式'0'正常提取，不收费'1'正常提取，收费'2'不提取，不收费

                           YZCLLB,  --'正常','嘱托','基数药','自备','门诊处理','领药','出院带药'
                           BZ0000,  --备注
                           ZFBL00,  --自付比率
                           YBLB00,  --医保类别
                           QZFSID,   --取整方式
                           DMBZ00,    --毒麻标志
                           ZFFSBZ    --自费发送标志
                           )
                           values
                       --select
                       (
                           V_YZID00,--YZID00
                           SQ_BQ_YZMX00_YZMXID.nextval,--YZMXID,
                           REC.YPNM00,
                           REC.SFDZGG,
                           REC.YPMC00,
                           REC.YPGG00,
                           REC.PSID00,
                           REC.PSMC00,
                           REC.MCSL00,
                           REC.JLDW00,
                           REC.LYL000,
                           REC.ZYFYDW,
                           REC.Z2J000,
                           REC.XMYFMC,
                           REC.TQFS00,
                           REC.YZCLLB,
                           REC.BZ0000,
                           REC.ZFBL00,
                           REC.YBLB00,
                           REC.QZFSID,
                           REC.DMBZ00,
                           REC.ZFFSBZ);
          select count(*) into V_COUNT1
            from VW_ZY_LJZRZC_ZYDZBL
           where ZYID00=V_ZYID00 and JSFS00 = '执行中';
          if V_COUNT1 > 0 then --如果是路径病人
          select ZRZCID into ZRZC from VW_ZY_LJZRZC_ZYDZBL
           where ZYID00=V_ZYID00 and JSFS00 = '执行中';
          select count(*) into V_COUNT1 from VW_ZS_LJJHYZXX_ZYDZBL
           where ZYID00=V_ZYID00 and KSRQ00<=to_char(sysdate, 'YYYYMMDD' )
            and ZRZCID=ZRZC and YPNM00=REC.YPNM00;
            if V_COUNT1 = 0 then
               --病人医嘱新增到路径医嘱表   SP_ZY_LJ_YZADDTOLJYZ_DT_ZYDZBL
               SP_ZY_LJ_YZADDTOLJYZ_DT_ZYDZBL(V_ZYID00,V_YZID00,0,AS_YHMSG0,AS_SYSMSG);
            else
               --病人医嘱关联到到路径医嘱表   SP_ZY_LJ_YZRELATETOLJYZ_ZYDZBL
                SP_ZY_LJ_YZRELATETOLJYZ_ZYDZBL(V_ZYID00,V_YZID00,0,AS_YHMSG0,AS_SYSMSG);
            end if;
          end if;
     end loop;
   else
         update BQ_YPYZ00 set YYRQ00= to_char(sysdate+1,'YYYYMMDD')
          where YZID00=V_YZID00 and CLBZ00='1' ;
         for REC in CUR_ZS_YPYZMX_ZY loop
           insert into BQ_YPYZMX(
                           YZID00,  --医嘱ID(分组号)
                           YZMXID,  --ID号，序列号(分组号)
                           YPNM00,  --药品内部编号
                           SFDZGG,  --'0'是,'1'否
                           YPMC00,  --药品名称
                           YPGG00,  --药品规格
                           PSID00,  --皮试ID             对应MZ_PS0000表

                           PSMC00,  --皮试名称(冗余)
                           MCSL00,  --每次数量(剂量单位的每次剂量)
                           JLDW00,  --剂量单位(J)(冗余)
                           LYL000,  --领药量(发药单位,临时、用药医嘱使用)
                           ZYFYDW,  --住院发药单位(Z)(住院药房维护)(冗余)
                           Z2J000,  --住院发药/基本单位转换率(默认药房)
                           XMYFMC,  --草药细目用法名称
                           TQFS00,  --提取方式'0'正常提取，不收费'1'正常提取，收费'2'不提取，不收费

                           YZCLLB,  --'正常','嘱托','基数药','自备','门诊处理','领药','出院带药'
                           BZ0000,  --备注
                           ZFBL00,  --自付比率
                           YBLB00,  --医保类别
                           QZFSID,   --取整方式
                           DMBZ00,    --毒麻标志
                           ZFFSBZ    --自费发送标志
                           )
                       values
                          (V_YZID00,--YZID00
                           SQ_BQ_YZMX00_YZMXID.nextval,--YZMXID,
                           REC.YPNM00,
                           REC.SFDZGG,
                           REC.YPMC00,
                           REC.YPGG00,
                           REC.PSID00,
                           REC.PSMC00,
                           REC.MCSL00,
                           REC.JLDW00,
                           REC.LYL000,
                           REC.ZYFYDW,
                           REC.Z2J000,
                           REC.XMYFMC,
                           REC.TQFS00,
                           REC.YZCLLB,
                           REC.BZ0000,
                           REC.ZFBL00,
                           REC.YBLB00,
                           REC.QZFSID,
                           REC.DMBZ00,
                           REC.ZFFSBZ);
                  select count(*) into V_COUNT1 from VW_ZY_LJZRZC_ZYDZBL
                   where ZYID00=V_ZYID00 and JSFS00 = '执行中';
                  if V_COUNT1 > 0 then --如果是路径病人
                    select ZRZCID into zrzc from VW_ZY_LJZRZC_ZYDZBL
                     where ZYID00=V_ZYID00 and JSFS00 = '执行中';
                    select count(*) into V_COUNT1 from VW_ZS_LJJHYZXX_ZYDZBL
                     where ZYID00=V_ZYID00 and KSRQ00<=to_char(sysdate, 'YYYYMMDD' )
                      and ZRZCID=ZRZC and YPNM00=REC.YPNM00;
                    if V_COUNT1 = 0 then
                       --病人医嘱新增到路径医嘱表   SP_ZY_LJ_YZADDTOLJYZ_DT_ZYDZBL
                       SP_ZY_LJ_YZADDTOLJYZ_DT_ZYDZBL(V_ZYID00,V_YZID00,0,AS_YHMSG0,AS_SYSMSG);
                    else
                       --病人医嘱关联到到路径医嘱表   SP_ZY_LJ_YZRELATETOLJYZ_ZYDZBL
                        SP_ZY_LJ_YZRELATETOLJYZ_ZYDZBL(V_ZYID00,V_YZID00,0,AS_YHMSG0,AS_SYSMSG);
                    end if;
                  end if;
         end loop;
     end if;
    --自动生成附加费用
    SP_BQ_YPFJFY_ZYDZBL(V_YZID00,0);
   end if;
    V_COUNT3:=0;
    if V_ERROR0=1 then
      V_KCBZYP:='(';
      /*for REC in CUR_ZS_KCBZYP loop
      V_KCBZYP:=V_KCBZYP||REC.YPMC00||',';
      V_COUNT3:=V_COUNT3+1;
      end loop;*/

       for REC in CUR_ZS_YPYZMX_YKKC loop
               V_KCBZYP:=V_KCBZYP||REC.YPMC00||',';
               V_COUNT3:=V_COUNT3+1;
          end loop;
      --close CUR_ZS_KCBZYP;
      V_KCBZYP:=SUBSTR(V_KCBZYP,1,(LENGTH(V_KCBZYP)-1));
      V_KCBZYP:=V_KCBZYP||')';

    end if;
    if V_COUNT3=0 then
      V_KCBZYP:='';
      V_ERROR0:=0;
    end if;
exception
    when others then
        RAISE_APPLICATION_ERROR(-20002,SUBSTRB(NVL(sqlerrm, '原因不明出错')||'！*',1,220));
end;
