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;
/
--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%