create or replace procedure SP_BQ_GETBRXX( PBRID00 IN OUT NUMBER , --病人ID PZYHGHH IN OUT varCHAR2 , --住院号 PZYGHID OUT NUMBER , --住院ID PXM0000 OUT VARCHAR2 , --姓名 PXB0000 OUT VARCHAR2 , --性别 PCH0000 OUT VARCHAR2 , --床号 PBQMC00 OUT VARCHAR2 , --病区名称 PCSRQ00 OUT VARCHAR2 , --出生日期 PZYYE00 OUT NUMBER , --住院帐户余额 PFBMC00 OUT VARCHAR2 , --费别名称 PFBBH00 OUT VARCHAR2 , --费别编号 PYBMC00 OUT VARCHAR2 , --医保公费名称 PYBBRLB OUT VARCHAR2 , --医保病人类别 PYBLB00 OUT VARCHAR2 , --医保类别 PRYLB00 OUT VARCHAR2 --入院类别 ) AS -- MODifICATION HisTORY -- Person Date Comments -- zhaoxz 2017.04.18 修改可用余额入参 BQHS9.0-20170405-003 -- linyx 2020.09.25 修改fbbh00的取值,取zy_brxxb0.fbbh00,不然会出现病人本次选择的自费住院,而显示成医保 for BQHS9.0-20200918-001 Vcounter NUMBER(5); Vbrid00 BM_BRXXB0.BRID00%TYPE; --病人id VZYH000 ZY_BRXXB0.ZYH000%TYPE; --住院号 Verrmsg varchar2(255); --错误提示变量 Vparams varchar2(188); --参数 Ecustom exception; --错误变量 BEGIN --输入的是挂号号或住院号,查找病人信息***************************************------------- IF (PZYHGHH IS NOT NULL) THEN VZYH000:=PZYHGHH; SELECT COUNT(distinct BRID00) INTO Vcounter FROM ZY_BRXXB0 WHERE ZYH000=VZYH000; IF Vcounter=1 THEN SELECT Z.BRID00,Z.ZYID00,Z.XM0000,B.BMMC00, TO_CHAR(TO_DATE(CSRQ00,'YYYYMMDD'),'YYYY.MM.DD'),Z.XB0000,RYCWH0,RYLB00,FBBH00,z.ybzxlb,z.YBBRLB INTO VBRID00, PZYGHID,PXM0000, PBQMC00, PCSRQ00, PXB0000, PCH0000,PRYLB00,PFBBH00,PYBLB00,PYBBRLB FROM ZY_BRXXB0 Z,BM_BMBM00 B WHERE ZYID00=(SELECT MAX(ZYID00) FROM ZY_BRXXB0 WHERE ZYH000=VZYH000 ) and Z.DQBQ00=B.BMBH00; ELSIF Vcounter=0 THEN Verrmsg:='住院号不存在'; RAISE Ecustom; ELSE Verrmsg:='相同的住院号被分配给多个病人!'; RAISE Ecustom; END IF; ELSE VBRID00:=PBRID00; END IF; --取YBZXLB,YBBRLB,FBBH SELECT decode(b.YBJGJC,c.BRLBJC,b.YBJGJC,b.YBJGJC||'('||c.BRLBJC||')') into PYBMC00 FROM BM_BRXXB0 a,IC_YBBRLB b,BM_YBBRLB c WHERE A.BRID00=VBRID00 and B.YBLB00=a.YBLB00 and B.FBBH00=a.FBBH00 and c.YBZXLB=b.YBZXLB and a.YBBRLB=c.YBBRLB; Verrmsg:='病人费别表找不到费别为"'||PFBBH00||'"的纪录'; SELECT FBMC00 INTO PFBMC00 FROM BM_BRFBB0 F WHERE FBBH00=PFBBH00; --查找住院病人信息 SELECT COUNT(YKZYE0) INTO Vcounter FROM ZY_BRZHXX WHERE ROWNUM=1 and BRID00=VBRID00 and JFLBID IN (SELECT JFLBID FROM BM_BRJFLB WHERE SYBZ00='1')and SFDJ00='0'; IF Vcounter=0 THEN PZYYE00:=0; ELSE PZYYE00:=SF_BQ_KYJE00(PZYGHID,VBRID00,2); END IF; PBRID00:=VBRID00; EXCEPTION when no_data_found then raise_application_error(-20001,substrb(Verrmsg||'!*'||sqlerrm||','||Vparams,1,220)); when Ecustom then raise_application_error(-20010,substrb(Verrmsg||'!*'||Vparams,1,220)); when others then raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*'||Vparams,1,220)); END SP_BQ_GETBRXX;