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) czybh0 in number default 0, --操作员编码 czyxm0 in char default '系统', --操作员姓名 ybid00 in char default 0, --病人医疗保险号 ret_code out varchar, --返回结果 String success / failure ret_msg out varchar, --返回信息 String 注册成功或其他失败信息 PJDQDLY in varchar2 default '00', --建档渠道来源 00未定义 01门诊HIS正规建档 02通用平台快速建档 03住院HIS直接入院建档 04自助机建档,05易慧三码融合建档(外联平台),待扩展。。。 ret_out out number --备用出参 xml格式 ) as --9.0 -- MODIFICATION HISTORY -- Person Date Comments -- liuyulong 2019.11.05 增加参数czybh0、czyxm0、ybid00 -- qiulf 2021.04.09 增加参数PJDQDLY,OBRID00 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; ls_YBLBMC IC_YBBRLB.YBMC00%TYPE; --医保类别名称 begin ret_code :='failure'; ls_CZRQ00 := to_char(sysdate,'YYYYMMDD'); ls_CZSJ00 := to_char(sysdate,'HH24:MI:SS'); ls_ZHKHRQ := to_char(sysdate,'YYYYMMDD'); ls_ZHKHSJ := to_char(sysdate,'HH24:MI:SS'); ld_CZYBH0 := czybh0; ls_CZYXM0 := czyxm0; ls_FBBH00 := '0'; ls_YBLBBH := '0'; ls_YBZXLB := '0'; if user_name is null then ret_msg:='用户姓名不能为空'; raise Ecustom; end if; if br_yblb00 ='福建省医保中心' then ls_YBLBMC:='省医保中心'; else ls_YBLBMC:=br_yblb00; 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 YGBH00,ZWXM00 into ld_CZYBH0,ls_CZYXM0 from BM_YGBM00 where YGBH00=czybh0 and ZWXM00=czyxm0; exception when others then ret_msg:='系统未找到操作员信息!'; rollback; return; end; begin select YBLB00,YBZXLB into ls_YBLBBH,ls_YBZXLB from IC_YBBRLB where YBMC00 = ls_YBLBMC; 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 = ls_YBLBMC; 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, MZZHID, FBBH01, YBBRL1, YBLB01, DAID00, NDTCXE, JDQDLY --建档渠道来源 ) select ls_BRID00 as BRID00, user_name as BRXM00, --姓名 '0' as MRN000, --病案号 'PE'||substr(mindex_id,1,28) as BRBLH0, --门诊病历号 '0' as YBKH00, --病人医保卡号 ybid00 as YBID00, --病人医疗保险号 decode(user_sex,'男','男','女','女','0','未知','1','男','2','女','未定义'), --性别(1男,2女,0未知,9未定等) 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, --国籍 nvl2(id_type,'身份证',decode(id_type,'01','身份证','其他')) as BRZJLX, --证件类型(身份证,军官证,学生证,港澳台通行证,护照,其它等) nvl(id_type,'身份证') 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, ls_YBZXLB,--'0' as YBBRLB, ld_CZYBH0 as CZY000, ls_CZRQ00 as CZRQ00, ls_CZSJ00 as CZSJ00, ls_MZZHID, 0, '0', '0', 0, 0, PJDQDLY --'建档渠道来源 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 ) select ls_CARDNO as ICKH00, --IC卡号 ls_BRID00 as BRID00, --对应病人内部ID号 'CK' as KLDH00, --卡类代号 ehealth_card_id 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 from dual; commit; ret_code:='success'; ret_msg:='注册成功'; ret_out := ''||ls_BRID00||''; 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; / --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%