prompt N0.008 SF_SF_GETMZCFCZZT 获取门诊处方操作状态函数 create or replace function SF_SF_GETMZCFCZZT ( Pghid00 in number, --挂号ID Pcflsh0 in varchar2 --处方流水号 ) -- MODIFICATION HISTORY -- Person Date Comments -- jlg 2024.07.30 created 获取门诊处方操作状态函数 MZSF9-20240719-002 return varchar2 is Vcfzt00 char(1); Vbcxbz0 char(1); --被冲销标志 0未被冲销 1有被冲销 Vbccfzt char(1); --被冲销原单的处方状态 Vcount0 number(5); Vcfzje0 YF_MZCF00.CFZJE0%type; Vcflsh0 YF_MZCF00.CFLSH0%type; Vbccfh0 YF_MZCF00.BCCFH0%type; Vcfczzt varchar2(20); --a新开 0提交药房 1记账 2发药 3退药申请单 4退费申请单 begin select nvl(max(a.CFZT00),'0'),nvl(max(a.CFZJE0),0),nvl(max(BCCFH0),'0') into Vcfzt00,Vcfzje0,Vbccfh0 from YF_MZCF00 a where a.CFLSH0= Pcflsh0; if Vcfzje0 >= 0 then --正单,要看是否有对应的冲销负单 select count(*) into Vcount0 from YF_MZCF00 where GHID00 = Pghid00 and BCCFH0 = Pcflsh0 and CFZT00 <>'3'; if Vcfzt00 = 'a' then Vcfczzt := 'a'; elsif Vcfzt00 = '0' then Vcfczzt := '0'; elsif Vcfzt00 = '1' and Vcount0=0 then Vcfczzt := '1'; elsif Vcfzt00 in ('2','4') and Vcount0 =0 then Vcfczzt := '2'; else Vcfczzt := ''; end if; elsif Vcfzje0 < 0 then --负单记录的, 提交药房状态的,那需要查看原单的CFZT00 select nvl(max(a.CFZT00),'0') into Vbccfzt from YF_MZCF00 a where a.CFLSH0=Vbccfh0; if Vcfzt00 = '0' and Vbccfzt in ('2','4') then Vcfczzt := '3'; elsif Vcfzt00 = '0' and Vbccfzt = '1' then Vcfczzt := '4'; else Vcfczzt := ''; end if; end if; return Vcfczzt; end; / show error;