CREATE OR REPLACE PROCEDURE SP_ZS_YJYZFZDIANZIBINGLI ( p_yzmxid number,--医嘱明细ID p_qyrq00 char,--起用日期 p_qysj00 char,--起用时间 p_pxsj00 char,--排序时间 p_lrrxm0 char, --录入人姓名 p_zyh000 in ZY_BRXXB0.ZYH000%type,--住院号 p_czy000 in number default 0, --操作员编号 p_yexm00 char )as -- MODIFICATION HISTORY -- Person Date Comments -- chenqw 2009.04.13 要求不同病人间的医嘱也能复制 -- xuxm 2013.10.30 DZBL-20131030-004 撤销的医嘱复制的时候要去掉(取消) -- 阮炳辉 2013.11.06 DZBL-20131031-004 医嘱管理界面,复制的手术医嘱,无法同步显示到手术申请 -- 黄渠 2014.02.17 DZBL-20131227-001 医嘱界面如果新开手术医嘱,手术医嘱的状态为“未提交”状态,但医嘱界面复制黏贴出来的手术医嘱,在手术申请界面的状态为“已提交”状态。 -- xuxm 2014.06.12 产科病人,将其他病人的医嘱复制过来,然后在医嘱界面【母婴】类别选择“某某之婴”,进行粘贴,问题:那几条医嘱并没有粘贴在“某某之婴”类别下,选择“全部”类别却可以看到。详细见附件 for DZBL-20140611-001 -- xuxm 2014.10.17 入径病人,医嘱管理界面,从其他病人复制粘贴过来的医嘱(如果跟路径模板中的医嘱一致的话),提交时应该与路径模板中的医嘱自动对应起来,目前没有,请做修改 for DZBL-20141010-002 -- 阮炳辉 2014.12.11 重命名调用的过程和视图(加_ZYDZBL) DZBL-20141210-007 -- wuzy 2018.06.05 过程加上日志 SP_TransLog for ZYDZBL-20180531-002 -- huanglw 2019.01.25 过程加上性别判断 -- zouqc 2020.05.09 ZYDZBL-20200402-001 YZLY00字段取值为1 -- huangzw 2020.09.30 ZYDZBL-20200929-005 医嘱管理,复制出来的医嘱的yszid0没有值,请修复。 -- zouqc 2021.03.15 ZYDZBL-20210128-008 跨院区的医嘱复制出来重新判断执行科室 -- xuxm 2022.09.27 ZYDZBL-20220920-001 需求内容:复制医嘱时,当执行科室包含当前登入科室时,默认执行科室为当前系统登入科室 -- jianghs 2023.06.30 ZYDZBL-20230621-002 for 复制医嘱是,ZFFSBZ也要一起复制 -- xuxm 2023.08.01 ZYDZBL-20230725-006 【操作】病人存在多次住院,跨科引用历史描述性医嘱,执行科室会显示原科室 v_zyid00 ZY_BRXXB0.ZYID00%type;--住院ID v_bqh000 BQ_YPYZ00.BQH000%type;--病区号 v_ksh000 BQ_YPYZ00.KSH000%type;--科室号 v_yzmxid BQ_YJYZ00.YZMXID%type;--医嘱明细ID v_ssdh00 SS_YW0000.SSDH00%type;--手术单号 v_ryzdmc ZY_BRXXB0.RYZDMC%type;--入院诊断名称 v_zxks00 BQ_YJYZ00.ZXKS00%type;--执行科室 v_yyid00 BM_BMBM00.YYID00%type;--医院ID v_count number(8);--计数器 as_YHMSG0 varchar(4000); as_SYSMSG varchar(4000); zrzc number; ljid number; v_xb0000 zy_brxxb0.xb0000%type;--性别 v_zlxmid bq_yjyz00.zlxmid%type;--诊疗项目ID VERRMSG varchar2(255); --错误提示变量 ECUSTOM exception; --错误变量 v_yszid0 BQ_YPYZ00.YSZID0%type; V_COUNT1 number;--记数器1 begin SP_TRANSLOG(sysdate,'SP_ZS_YJYZFZDIANZIBINGLI',p_czy000,0, 'SP_ZS_YJYZFZDIANZIBINGLI:p_yzmxid:'||To_Char(p_yzmxid)||'p_qyrq00:'||p_qyrq00 ||'p_qysj00:'||p_qysj00||'p_pxsj00:'||p_pxsj00||'p_lrrxm0:'||p_lrrxm0); --取住院ID select max(ZYID00) into v_zyid00 from ZY_BRXXB0 where ZYH000 = p_zyh000; select ZLXMID,ZXKS00 into v_zlxmid,v_zxks00 from BQ_YJYZ00 where YZMXID = p_yzmxid; --取病人当前科室、当前病区 select DQBQ00,DQKS00,RYZDMC,XB0000,YYID00 into v_bqh000,v_ksh000,v_ryzdmc,v_xb0000,v_yyid00 from ZY_BRXXB0 ,BM_BMBM00 where ZYID00 = v_zyid00 and DQKS00=BMBH00; select count(1) into V_COUNT1 from BM_BMBM00 where YYID00=(select YYID00 from BM_BMBM00 where BMBH00=v_ksh000) and BMBH00=v_zxks00; if V_COUNT1='0' then--复制过来的医嘱的执行科室不在本院区,则重新获取执行科室 v_zxks00:=''; select count(1) into V_COUNT1 from VW_XT_KSZXXM_ZXKS_ZYDZBL where ZLXMID=v_zlxmid and YYID00=v_yyid00 and rownum=1; if V_COUNT1<>'0' then --select ZXKSBH into v_zxks00 from VW_XT_KSZXXM_ZXKS_ZYDZBL where ZLXMID=v_zlxmid and YYID00=v_yyid00 and rownum=1; select ZXKSBH INTO v_zxks00 from (select ZXKSBH from VW_XT_KSZXXM_ZXKS_ZYDZBL where ZLXMID=v_zlxmid order by decode(ZXKSBH,v_zxks00,0) asc) where rownum=1; end if; if v_zxks00 is null then --如果没有配置执行科室,则获取本科室作为执行科室 v_zxks00:=v_ksh000; end if; end if; if p_yexm00 is not null or p_yexm00<>'' then select YEXB00 into v_xb0000 from BQ_JSXX00 where zyid00=v_zyid00 and yexm00=p_yexm00 and rownum=1; end if; v_count:=0; if v_xb0000='男' or v_xb0000='男性' then select count(*) into v_count from BM_ZLZD00 t where ZLXMID =v_zlxmid and t.xbxz00='2'; end if; if v_xb0000='女' or v_xb0000='女性' then select count(*) into v_count from BM_ZLZD00 t where ZLXMID =v_zlxmid and t.xbxz00='1'; end if; if v_count>0 then if v_xb0000='男' or v_xb0000='男性' then VERRMSG:='该项目只限女性使用'; end if; if v_xb0000='女' or v_xb0000='女性' then VERRMSG:='该项目只限男性使用'; end if; raise ECUSTOM; end if; --取YZMXID select SQ_BQ_YZMX00_YZMXID.NextVal into v_yzmxid FROM DUAL WHERE ROWNUM=1; -- select YSZID0 into v_yszid0 from ZY_BRXXB0 where ZYID00 = V_ZYID00; insert into Bq_Yjyz00( YZMXID, YJDJH0, ZYID00, YEXM00, YZLB00, CLBZ00, PXSJ00, ZLXMID, ZLXMJC, ZXKS00, KZYS00, LRRQ00, LRSJ00, LRRXM0, HDRXM0, QYRQ00, QYSJ00, TZRQ00, TZSJ00, TQRQ00, TQSJ00, TZYS00, TZRXM0, TS0000, BQH000, KSH000, PCID00, MCSL00, DW0000, PCMC00, YZZT00, TQFS00, YZCLLB, BZ0000, ZFBL00, YBLB00, YZLY00, YSZID0, ZFFSBZ, BWID00, BWBH00, BWMC00 ) select v_yzmxid,--YZMXID, NULL,--yjdjh0, V_ZYID00, P_YEXM00, YZLB00, CLBZ00, P_PXSJ00, ZLXMID, replace(ZLXMJC,'(取消)','') , V_ZXKS00, 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, TS0000, v_bqh000, v_ksh000, PCID00, MCSL00, DW0000, PCMC00, '7',--yzZT00, TQFS00, YZCLLB, BZ0000, ZFBL00, YBLB00, '1', v_yszid0, ZFFSBZ, BWID00, BWBH00, BWMC00 from BQ_YJYZ00 where YZMXID = p_yzmxid; update BQ_YJYZ00 set ZXKS00=V_KSH000 where (ZLXMID=0 or YZLB00='9') and YZMXID = V_YZMXID ; --自动生成附加费用 SP_BQ_YJFJFY_ZYDZBL(v_yzmxid,0); select count(1) into v_count from SS_YW0000 where yzmxid=p_yzmxid; --复制手术 20131106 阮炳辉 if v_count>0 then select SQ_SS_YW0000_SSDH00.nextval into v_ssdh00 from dual; insert into SS_YW0000 (SSDH00, MZZYBZ, ZYHGHH, SSZT00, SQYS00, SQZD00, SQBQSM, BZ0000, SQKS00, SQR000, CZY000, SRKSLB, YYBZ00, YYSSRQ, YYSSSJ, JZBZ00, YZMXID, SSYS00, SSYSXM, SSZS00, SSZSXM, MZBH00, MZMC00, GLDJMC, SSKS00, SSTC00, SQBQ00, GRQK00, MZYS00, MZYSXM, SQRQ00, SQSJ00, SSQSRQ, SSQSSJ, CZRQ00 ) select v_ssdh00, '1', p_zyh000, '9', p_czy000, nvl(SQZD00,v_ryzdmc), '', '', v_ksh000, p_czy000, p_czy000, sf_ss_yw0000_srkslb ('9'), 'Y', to_char(sysdate,'YYYYMMDD'), to_char(sysdate,'HH24:MI:SS'), JZBZ00, v_yzmxid, SSYS00, SSYSXM, SSZS00, SSZSXM, MZBH00, MZMC00, GLDJMC, SSKS00, SSTC00, v_bqh000, '', MZYS00, MZYSXM, TO_CHAR (SYSDATE, 'YYYYMMDD'), to_char(sysdate, 'HH24:MI:SS'), to_char(sysdate,'YYYYMMDD'), to_char(sysdate,'HH24:MI:SS'), to_char(sysdate, 'YYYYMMDDHH24:MI:SS') from SS_YW0000 where YZMXID=p_yzmxid; insert into SS_YWMX00 (ID0000, SSDH00, SFZSS0, SSBH00, SSDJMC, SSXMJC, QKDJMC, BWMC00 ) select sq_ss_ssywmx_id0000.NEXTVAL, v_ssdh00, SFZSS0, SSBH00, SSDJMC, SSXMJC, QKDJMC, BWMC00 from SS_YWMX00 where ssdh00=(select ssdh00 from SS_YW0000 where yzmxid=p_yzmxid); end if; select count(*) into v_count from VW_ZY_LJZRZC_ZYDZBL where ZYID00=V_ZYID00 and JSFS00 = '执行中'; if v_count > 0 then --如果是路径病人 select ljid00,zrzcid into ljid,zrzc from VW_ZY_LJZRZC_ZYDZBL where ZYID00=V_ZYID00 and JSFS00 = '执行中'; select count(*) into v_count from VW_ZS_LJJHYZXX_ZYDZBL where zyid00=V_ZYID00 and KSRQ00<=to_char(sysdate, 'YYYYMMDD' ) and zrzcid=zrzc and ZLXMID in (select ZLXMID from BQ_YJYZ00 where YZMXID = p_yzmxid ) ; if v_count = 0 then --病人医嘱新增到路径医嘱表 SP_ZY_LJ_YZADDTOLJYZ_DT_ZYDZBL SP_ZY_LJ_YZADDTOLJYZ_DT_ZYDZBL(V_ZYID00,v_yzmxid,1,as_YHMSG0,as_SYSMSG); update lj_yzmx00 set ljid00=ljid where wbyzid=v_yzmxid; else --病人医嘱关联到到路径医嘱表 SP_ZY_LJ_YZRELATETOLJYZ_ZYDZBL SP_ZY_LJ_YZRELATETOLJYZ_ZYDZBL(V_ZYID00,v_yzmxid,1,as_YHMSG0,as_SYSMSG); end if; end if; exception when ecustom then raise_application_error(-20010,VERRMSG); when others then raise_application_error(-20009,substrb(NVL(SQLERRM, '原因不明出错')||'!*',1,220)); --||'SP_BQ_YJYZFZ:p_yzmxid:'||To_Char(p_yzmxid)||'p_qyrq00:'||p_qyrq00 --||'p_qysj00:'||p_qysj00||'p_pxsj00:'||p_pxsj00||'p_lrrxm0:'||p_lrrxm0 end;