CREATE OR REPLACE PROCEDURE SP_JK_BRXX00_REG000 ( card_type in char, --卡类型 String(32) card_no in char, --卡号 String(32) ehealth_card_id in char, --电子就诊卡 ID String(128) mindex_id in char, --电子就诊卡主索引 String(128) id_type in char, --证件类型 String(2) id_no in char, --证件号 String(32) br_fbmc00 in char, --费别名称 br_yblb00 in char, --病人所属医保中心名称 user_name in char, --用户姓名 Str(50) user_sex in char, --用户性别 String(1) mobile_phone in char, --手机号码 String(32) birthday in char, --出生日期 String(10) telephone in char, --联系电话 String(32) address in char, --居住地址 String(200) work_unit in char, --工作单位 String(100) ret_code out varchar, --返回结果 String success / failure ret_msg out varchar --返回信息 String 注册成功或其他失败信息 ) -- MODIFICATION HISTORY -- Person Date Comments --CX 20200107 IC_YHXX00.ICKNBH IC_YHXX00.ICKNBH 原来传值ehealth_card_id 改ls_CARDNO,否则前台读不出卡,前台读卡ICKNBH加前缀 --CX 20200107 BM_BRXXB0.YBBRLB 原来传值ls_YBZXLB 改 '0’,否则前台读不出病人信息,已和淑梅沟通 as --5.0 ls_CZRQ00 char(8); ls_CZSJ00 char(8); ls_ZHKHRQ char(8); --账户开户日期 ls_ZHKHSJ char(8); --账户开户时间 ld_CZYBH0 BM_YGBM00.YGBH00%type; ls_CZYXM0 BM_YGBM00.ZWXM00%type; ls_BRID00 BM_BRXXB0.BRID00%type; ls_MZZHID SF_BRZHXX.MZZHID%type; ls_ICKSX0 IC_YHXX00.ICKSX0%type; Ecustom Exception; ls_FBBH00 BM_BRFBB0.FBBH00%TYPE; --费别编码 ls_YBLBBH IC_YBBRLB.YBLB00%TYPE; --病人所属医保中心名称对应的编号 ls_YBZXLB IC_YBBRLB.YBZXLB%TYPE; --病人医保中心类别 ls_CARDNO IC_YHXX00.ICKH00%TYPE; begin ret_code :='failure'; ls_CZRQ00 := to_char(sysdate,'YYYYMMDD'); ls_CZSJ00 := to_char(sysdate,'HH24:MI:SS'); ls_ZHKHRQ := '20100101'; ls_ZHKHSJ := '00:00:00'; ld_CZYBH0 := 0; ls_CZYXM0 := '系统'; ls_FBBH00 := '0'; ls_YBLBBH := '0'; ls_YBZXLB := '0'; if user_name is null then ret_msg:='用户姓名不能为空'; raise Ecustom; end if; --ret_msg:='该卡已注册'; begin select FBBH00 into ls_FBBH00 from BM_BRFBB0 where FBMC00 = br_fbmc00; exception when others then ret_msg:='系统未找到您所输入的费别名称!'; rollback; return; end; begin select YBLB00,YBZXLB into ls_YBLBBH,ls_YBZXLB from IC_YBBRLB where YBMC00 = br_yblb00; EXCEPTION WHEN NO_DATA_FOUND then begin select a.YBLB00,a.YBZXLB into ls_YBLBBH,ls_YBZXLB from IC_YBBRLB a,BM_FZXDY0 b where a.FBBH00=b.FBBH00 and a.YBLB00=b.YBLB00 and b.FZXMC0 = br_YBLB00; EXCEPTION WHEN NO_DATA_FOUND then ret_msg:='医保病人所属医保中心名称有错,系统字典维护不完整!'; ROLLBACK; RETURN; end; end; select SQ_BM_BRXXB0_BRID00.nextval into ls_BRID00 from dual; select SQ_SF_BRZHXX_ZHYEID.nextval into ls_MZZHID from dual; select YYID00 into ls_ICKSX0 from IC_YYID00 where BZ0000='0'; insert into BM_BRXXB0 ( BRID00, BRXM00, --姓名 MRN000, --病案号 BRBLH0, --门诊病历号 YBKH00, --病人医保卡号 YBID00, --病人医疗保险号 BRXB00, --性别(男,女,未知,未定等) BRCSRQ, --出生日期(格式:yyyymmdd) BRXX00, --血型(A,B,O,AB等) BRHYZK, --婚姻状况(已婚,未婚,丧偶,离婚,其他等) BRZY00, --职业(个体,干部,工人,农民,学生,离退休,待业,医生,婴儿,儿童等) BRMZ00, --民族 BRGJ00, --国籍 BRZJLX, --证件类型(身份证,军官证,学生证,港澳台通行证,护照,其它等) BRZJBH, --证件编号 BRDH00, --病人电话 BRJTDZ, --病人家庭地址 BRYB00, --病人地址邮编 TYDWMC, --特约单位名称 BRSZSF, --病人所在省份 BRSZS0, --病人所在市(县、区) BRSZZ0, --病人所在镇(办事处) BRSZC0, --病人所在村 BRLXGX, --联系人关系 BRLXXM, --联系人姓名 BRLXDZ, --联系人地址 BRLXDH, --联系人电话 LXRXB0, --联系人性别 LXRSFZ, --联系人身份证 SFYX00, --病人状态 Y:有效,N:停用 FBBH00, --费别编号 YBLB00, --医保分中心编号 YBBRLB, --医保病人类别 CZY000, CZRQ00, CZSJ00 ) select ls_BRID00 as BRID00, user_name as BRXM00, --姓名 '0' as MRN000, --病案号 'PE'||substr(mindex_id,1,28) as BRBLH0, --门诊病历号 '0' as YBKH00, --病人医保卡号 '0' as YBID00, --病人医疗保险号 user_sex as BRXB00, --性别(男,女,未知,未定等) substr(birthday,1,8) as BRCSRQ, --出生日期(格式:yyyymmdd) null as BRXX00, --血型(A,B,O,AB等) null as BRHYZK, --婚姻状况(已婚,未婚,丧偶,离婚,其他等) null as BRZY00, --职业(个体,干部,工人,农民,学生,离退休,待业,医生,婴儿,儿童等) null as BRMZ00, --民族 null as BRGJ00, --国籍 nvl(id_type,'身份证') as BRZJLX, --证件类型(身份证,军官证,学生证,港澳台通行证,护照,其它等) id_no as BRZJBH, --证件编号 mobile_phone as BRDH00, --病人电话 address as BRJTDZ, --病人家庭地址 null as BRYB00, --病人地址邮编 work_unit as TYDWMC, --特约单位名称 null as BRSZSF, --病人所在省份 null as BRSZS0, --病人所在市(县、区) null as BRSZZ0, --病人所在镇(办事处) null as BRSZC0, --病人所在村 null as BRLXGX, --联系人关系 null as BRLXXM, --联系人姓名 null as BRLXDZ, --联系人地址 telephone as BRLXDH, --联系人电话 null as LXRXB0, --联系人性别 null as LXRSFZ, --联系人身份证 'Y' as SFYX00, --病人状态 Y:有效,N:停用 ls_FBBH00,--1 as FBBH00, ls_YBLBBH,--'0' as YBLB00, '0',--ls_YBZXLB,--'0' as YBBRLB, ld_CZYBH0 as CZY000, ls_CZRQ00 as CZRQ00, ls_CZSJ00 as CZSJ00 from dual; insert into SF_BRZHXX(MZZHID,JFLBID,BRID00,SFDJ00,KHRQ00,KHSJ00, CZYBH0,CZYXM0,XJYE00,ZZYE00,ZYE000,YKZYE0,BJJE00,TYJE00,YXQFJE) select ls_MZZHID,1,ls_BRID00,'0',ls_ZHKHRQ,ls_ZHKHSJ, ld_CZYBH0,ls_CZYXM0,0,0,0,0,0,0,0 from dual; if card_no is not null then ls_CARDNO:= SF_SF_CARDNO_ICKH00(card_no); else ls_CARDNO:= ehealth_card_id; end if; insert into IC_YHXX00 ( ICKH00, --IC卡号 BRID00, --对应病人内部ID号 KLDH00, --卡类代号 ICKNBH, --IC卡内部号 KMH000, --卡面号 ICKLB0, --IC卡类别 0本院卡 1外院卡 2医保卡 ICKSX0, --IC卡属性 ZT0000, --0空白卡,1有效卡,2暂停使用卡(挂失卡),3作废卡(失效卡),4无效卡(该卡号对应的实物卡已被重新写卡) ICKJE0, --IC卡售卡金额 DZJKID, ICKMM0 ) select ls_CARDNO as ICKH00, --IC卡号 ls_BRID00 as BRID00, --对应病人内部ID号 'CK' as KLDH00, --卡类代号 --ehealth_card_id as ICKNBH, --IC卡内部号 ls_CARDNO AS ICKNBH, --IC卡内部号 mindex_id as KMH000, --卡面号 '1' as ICKLB0, --IC卡类别 0本院卡 1外院卡 2医保卡 ls_ICKSX0 as ICKSX0, --IC卡属性 '1' as ZT0000, --0空白卡,1有效卡,2暂停使用卡(挂失卡),3作废卡(失效卡),4无效卡(该卡号对应的实物卡已被重新写卡) 0 as ICKJE0, --IC卡售卡金额 ehealth_card_id, 'hplZOq6iScaqyo' from dual; commit; ret_code:='success'; ret_msg:='注册成功'; exception when no_data_found then raise_application_error(-20001,substrb('数据没有找到!*'||sqlerrm,1,120)); when Ecustom then raise_application_error(-20010,substrb(ret_msg||'!*',1,120)); when others then raise_application_error(-20266,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,120)); end; /