prompt 12、病人基本信息表相关操作 SP_SF_BRXXB0_EDIT00 -- MODIFICATION HISTORY -- Person Date Comments -- xzw 2007.11.16 传递参数增加病人特殊属性类别 ; -- chenqw 2009.02.13 修改病人信息时也要修改BA_BRZYXX里的信息 -- chenqw 2009.04.30 取年龄用sf_sf_CsrqToNl_NUM -- xuzw 2009.09.23 增加传入参数字as_BRSZSF,as_BRSZS0,as_BRSZZ0,as_BRSZC0 -- xuzw 2009.10.22 家庭地址BRJTDZ = as_BRJTDZ->BRJTDZ = as_BRSZSF||as_BRSZS0||as_BRSZZ0||as_BRSZC0 -- qks 2009.11.26 省老年医院:BRCSRQ和BRZJBH已经有内容的病人,不允许前台修改,只能后台修改 -- qks 2010.05.30 闽清县医院允许BM_BRXXB0.BRJTDZ使用前台传入的家庭地址 -- zhangyc 2010.11.05 修改医院id取值(select SF_SF_GETYYID00() YYID00 from dual) -- zhangyc 2011.02.28 修正bug:修改病人信息时,是否优待为null无法保存 -- zhangwz 2011.03.10 门诊修改病人基本信息时同时修改未发处方的性别信息 by MZSF-20110224-001. -- zhangyc 2012.03.27 增加入参as_CSLX00 农合传送类型 S:实时结算 M:传送明细 by ZYSF-20120319-002 create or replace procedure SP_SF_BRXXB0_EDIT00 ( ad_BRID00 in number, --病人的唯一标识号,ID号 as_MRN000 in char, --病案号 as_BRBLH0 in char, --门诊病历号 as_BRGFZH in char, --病人公费证号 as_BRXM00 in char, --姓名 as_BRXB00 in char, --性别 as_BRXX00 in char, --血型 as_BRCSRQ in char, --出生日期 as_BRHYZK in char, --婚姻状况 as_BRZY00 in char, --职业 as_BRMZ00 IN char, --民族 as_BRGJ00 in char, --国籍 as_BRZJLX in char, --证件类型 as_BRZJBH in char, --证件编号 as_FBMC00 in char, --费别名称 as_BRDYFW in char, --地域范围;本市、外地) as_BRDH00 in char, --电话 as_BRJTDZ in varchar2, --家庭地址/通信地址 as_BRYB00 in char, --邮编 as_BRYB01 in char default ' ', --邮编 ad_TYDWID in number, --单位ID as_TYDWMC in varchar2, --单位名称 as_BRLXGX in char, --联系人关系 as_BRLXXM in char, --联系人姓名 as_BRLXDZ in varchar2, --联系人地址 as_BRLXDH in char, --联系人电话 as_BRZTQK in char, --职退情况 as_BRJKQK in varchar2, --健康状况 ad_CZY000 in number, --操作员ID as_CZYXM0 in char, --操作员姓名 as_BRLX00 in char, --病人类型,如:'普通病人' as_YBICKH in char, --医保卡号 as_YBID00 in char, --医保ID as_YBLB00 in char, --医保中心类别ID as_SFMZ00 in char, --是否门诊或住院操作'Y':门诊 ad_SFYD00 in char default '0', --是否优待 as_SFYXJB in char default '0', --是否优先 as_BRSZSF in varchar2 default '', --病人所在省份 as_BRSZS0 in varchar2 default '', --病人所在市(县、区) as_BRSZZ0 in varchar2 default '', --病人所在镇(办事处) as_BRSZC0 in varchar2 default '', --病人所在村 as_YHMSG0 out varchar, --存储过程提示的错误信息 as_SYSMSG out varchar, --系统提示的错误信息 as_TSSXMC in varchar2 default '普通', --病人特殊属性类别 as_CSLX00 in varchar2 default '' --农合病人传送类型:S:实时传送 M:传送明细 ) as ls_FBBH00 BM_BRFBB0.FBBH00%TYPE; ls_BRDBID BM_JZBRB0.JZBRID%TYPE; ls_COUNT0 NUMBER(5); ls_tydwid bm_brxxb0.tydwid%type; --特约单位ID ls_yyid00 XT_YYXX00.YYID00%TYPE; ls_cyyxxg XT_XTCS00.NAME00%TYPE; BEGIN --判断输入的门诊病历号是否合法 select count(*) into ls_COUNT0 from BM_BRXXB0 where BRBLH0 = as_BRBLH0 and BRBLH0 <> '0' and BRID00<>ad_BRID00; if ls_COUNT0 > 0 then as_YHMSG0:='门诊病历号重复,请重新输入病人的病历号!'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; end if; ls_tydwid:=ad_TYDWID; select FBBH00 into ls_FBBH00 from BM_BRFBB0 where FBMC00 = as_FBMC00; if ad_TYDWID is null and as_TYDWMC is not null then begin select dwid00 into ls_tydwid from bm_tydwb0 where dwmc00=as_TYDWMC; exception when others then ls_tydwid:=null; end; end if; BEGIN --select YYID00 into ls_yyid00 from XT_YYXX00 WHERE ROWNUM=1; select SF_SF_GETYYID00() YYID00 into ls_yyid00 from dual; EXCEPTION WHEN OTHERS THEN ls_yyid00:='0'; END; if ls_yyid00='220035' then --省老年医院 select count(1) into ls_COUNT0 from bm_brxxb0 where BRID00 = ad_BRID00 and (brcsrq<>as_brcsrq or brzjbh<>as_brzjbh) and brcsrq is not null and brzjbh is not null; if ls_COUNT0 > 0 then as_YHMSG0:='“年龄”和“证件号码”不能修改,请记录此信息并和系统管理员联系!'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; end if; end if; Update BM_BRXXB0 set --MRN000 = as_MRN000, --病案号 BRBLH0 = as_BRBLH0, --门诊病历号 BRGFZH = as_BRGFZH, --病人公费证号 YBKH00 = as_YBICKH, --医保卡号 YBID00 = as_YBID00, --医保ID YBLB00 = as_YBLB00, --医保病人类别 BRXM00 = as_BRXM00, --姓名 BRXB00 = as_BRXB00, --性别 BRXX00 = as_BRXX00, --血型 BRCSRQ = as_BRCSRQ, --出生日期 BRHYZK = as_BRHYZK, --婚姻状况 BRZY00 = as_BRZY00, --职业 BRMZ00 = as_BRMZ00, --民族 BRGJ00 = as_BRGJ00, --国籍 BRZJLX = as_BRZJLX, --证件类型 BRZJBH = as_BRZJBH, --证件编号 FBBH00 = ls_FBBH00, --费别名称 BRDYFW = as_BRDYFW, --地域范围;本市、外地 BRDH00 = as_BRDH00, --电话 --BRJTDZ = as_BRJTDZ, --家庭地址/通信地址 --BRJTDZ = as_BRSZSF||as_BRSZS0||as_BRSZZ0||as_BRSZC0, --家庭地址/通信地址 BRJTDZ = decode(ls_yyid00,'221956',as_BRJTDZ,as_BRSZSF||as_BRSZS0||as_BRSZZ0||as_BRSZC0), BRYB00 = as_BRYB00, --邮编 BRYB01 = as_BRYB01, --邮编 TYDWID = ls_tydwid, --单位ID TYDWMC = as_TYDWMC, --单位名称 BRLXGX = as_BRLXGX, --联系人关系 BRLXXM = as_BRLXXM, --联系人姓名 BRLXDZ = as_BRLXDZ, --联系人地址 BRLXDH = as_BRLXDH, --联系人电话 BRZTQK = as_BRZTQK, --职退情况 BRJKQK = as_BRJKQK, --健康状况 CZY000 = ad_CZY000, --操作员ID SFYD00 = nvl(ad_SFYD00,'0'), --是否优待 SFYXJB = nvl(as_SFYXJB,'0'), --是否优先 BRLX00 = as_BRLX00, --病人类型,如:'普通病人' TSSXMC = nvl(as_TSSXMC,'普通'), --病人特殊属性类别 BRSZSF = as_BRSZSF, BRSZS0 = as_BRSZS0, BRSZZ0 = as_BRSZZ0, BRSZC0 = as_BRSZC0 where BRID00 = ad_BRID00; Update BA_BRZYXX set BRXM00 = as_BRXM00, --姓名 BRXB00 = as_BRXB00, --性别 BRCSRQ = as_BRCSRQ, --出生日期 BRNL00 = sf_sf_CsrqToNl_NUM(as_BRCSRQ),--年龄 HYZK00 = as_BRHYZK, --婚姻状况 ZY0000 = as_BRZY00, --职业 MZ0000 = as_BRMZ00, --民族 GJ0000 = as_BRGJ00, --国籍 SFZH00 = as_BRZJBH, --证件编号 GZDW00 = as_TYDWMC, --单位名称 GZYB00 = as_BRYB01, --工作邮编 JTDZ00 = as_BRJTDZ, --家庭地址/通信地址 JTDH00 = as_BRDH00, --电话 JTYB00 = as_BRYB00, --邮编 LXRXM0 = as_BRLXXM, --联系人姓名 LXRDZ0 = as_BRLXDZ, --联系人地址 LXRDH0 = as_BRLXDH, --联系人电话 LXRGX0 = as_BRLXGX --联系人关系 where LSH000 = (select max(zyid00) from zy_brxxb0 a where a.brid00= ad_BRID00 ) ; IF (ad_TYDWID IS NOT NULL) and ls_FBBH00 not in (1,3,90) THEN Update BM_JZBRB0 set JZZH00 = as_BRGFZH where BRID00 = ad_BRID00; if SQL%NOTFOUND then select SQ_SF_BRDB00_BRDBID.nextval into ls_BRDBID from dual; Insert into BM_JZBRB0(JZBRID,JZZH00,KSRQ00,KSSJ00,JZSX00,SFJZ00,BZ0000,BRID00) values(ls_BRDBID,as_BRGFZH,to_char(sysdate,'yyyymmdd'),'00:00:01',0,'0','病人购卡登记',ad_BRID00); select count(*) into ls_COUNT0 from BM_JZBRB0 where JZZH00 = as_BRGFZH; --只能有一条在用 if ls_COUNT0 > 1 then as_YHMSG0:='病人公费证号重复,请重新输入该病人的公费证号!'; as_SYSMSG:=SQLERRM; ROLLBACK; RETURN; end if; end if; END IF; IF as_SFMZ00 = 'Y' then update SF_BRXXB0 set BRBLH0 = as_BRBLH0, --门诊病历号 XM0000 = as_BRXM00, --病人姓名 XB0000 = as_BRXB00, --性别 CSRQ00 = as_BRCSRQ --出生日期 where BRID00 = ad_BRID00; update SF_BRFY00 set XM0000 = as_BRXM00 where BRID00 = ad_BRID00; update YF_MZCF00 set XB0000 = as_BRXB00 where BRID00 = ad_BRID00 and CFZT00<='1'; update YS_CFXXB0 set XB0000 = as_BRXB00 where BRID00 = ad_BRID00 and exists (select 1 from YF_MZCF00 where BRID00=ad_BRID00 and CFZT00<='1' and CFLSH0=YS_CFXXB0.CFLSH0 ); else update ZY_BRXXB0 set --MRN000 = as_MRN000, --病案号 XM0000 = as_BRXM00, --病人姓名 XB0000 = as_BRXB00, --性别 CSRQ00 = as_BRCSRQ, --出生日期 CSLX00 = as_CSLX00 where BRID00 = ad_BRID00; update ZY_BRFY00 set XM0000 = as_BRXM00 where BRID00 = ad_BRID00; END IF; COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN as_YHMSG0:='数据没有找到,请核对病人费别是否正确!'; as_SYSMSG:=SQLERRM; ROLLBACK; WHEN OTHERS THEN as_YHMSG0:='出错原因不详,请记录此信息并和系统管理员联系!'; as_SYSMSG:=substr(SQLERRM||'执行存储过程错误:SP_SF_BRXXB0_EDIT00('||to_char(ad_BRID00)||','||as_MRN000||','||as_BRBLH0||','||as_BRXM00||','||as_BRXB00||','||as_BRXX00||','|| as_BRCSRQ||','||as_BRHYZK||','||as_BRZY00||','||as_BRMZ00||','||as_BRGJ00||','||as_BRZJLX||','||as_BRZJBH||','|| as_FBMC00||','||as_BRDYFW||','||as_BRDH00||','||as_BRJTDZ||','||as_BRYB00||','||to_char(ad_TYDWID)||','||as_TYDWMC||','|| as_BRLXGX||','||as_BRLXXM||','||as_BRLXDZ||','||as_BRLXDH||','||as_BRZTQK||','||as_BRJKQK||','||to_char(ad_CZY000)||','|| as_CZYXM0||','||as_BRLX00||','||as_YBICKH||','||as_YBID00||','||as_YBLB00||','||as_SFMZ00||',as_YHMSG0,as_SYSMSG)',1,150); ROLLBACK; END; / show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%