CREATE OR REPLACE FUNCTION SF_SF_GETYBSXZD ( PBRID00 number ,--病人ID PMZZYBZ varchar2 ,--门诊住院标志 0:门诊 1:住院 PYBSXBM varchar2 ,--医保属性编码 PBQBM00 varchar2 ,--病情编码 PBRLB00 varchar2 ,--病人类别 0:普通 1:生育 2:工伤 3:体检 4:单病种 5:择日住院 POTHER0 varchar2 --其它 ) return varchar2 is LS_RETURN varchar2(50); LS_aac999 varchar2(30);--个人管理码(医保编号) LS_YBKH00 varchar2(30);--医保卡号 LS_YBID00 varchar2(30);--医保ID LS_BRZJBH varchar2(30);--病人证件号码 LS_AAE140 varchar2(10);--险种类型编码 JSQD_psn_no_Type varchar2(10);--医疗保障基金结算清单(psn_no:人员编号)类型(0:证件号码(身份证) 1:证件号码-证件类型) 默认值:0 -- modification history -- Person Date Comments --zhangyc 2019.10.24 create MZSF-20191024-002 --zhangyc 2019.10.25 增加医疗类别、结算标识 by MZSF-20191025-001 --zhangyc 2019.12.10 去掉aka078 医疗就诊方式 50 特殊门诊 by MZSF-20191210-003 --zhangyc 2019.12.16 漳州地区特殊病种 按50 传送 by MZSF-20191216-003 --zhangyc 2019.12.21 增加参数mz_aka078_tsbz控制编码 by MZSF-20191221-001 --zhangyc 2020.02.10 特殊病种“YSGZBDFY,XXGZBDFY”只能按10发送 by MZSF-20200210-001 --zhangyc 2021.10.19 增加节点为psnno、insutype获取 by MZSF-20211019-003 begin /* --aka078 医疗就诊方式 AKA078 医疗就诊方式 10 门(急)诊 AKA078 医疗就诊方式 20 住院 AKA078 医疗就诊方式 40 药店购药 AKA078 医疗就诊方式 50 特殊门诊(漳州地区) AKA078 医疗就诊方式 60 体检 AKA078 医疗就诊方式 81 生育门诊 AKA078 医疗就诊方式 82 生育住院 AKA078 医疗就诊方式 91 工伤门诊 AKA078 医疗就诊方式 92 工伤住院 AKA078 医疗就诊方式 50 特殊门诊 --aka130 医疗类别 AKA130 医疗类别 11 普通门诊 AKA130 医疗类别 12 急诊 AKA130 医疗类别 13 门诊慢(特)病种 AKA130 医疗类别 16 急诊观留床 AKA130 医疗类别 21 普通住院 AKA130 医疗类别 29 择日住院 AKA130 医疗类别 31 家庭病床 AKA130 医疗类别 34 按病种住院 AKA130 医疗类别 42 处方购药 AKA130 医疗类别 43 非处方购药 AKA130 医疗类别 A1 体检 结算标识 bke286 结算标识 0 预结算 bke286 结算标识 1 中途结算 bke286 结算标识 2 门诊结算/出院结算 数据来源 BKE241 数据来源 50 收费终端 BKE241 数据来源 51 自助终端 BKE241 数据来源 52 医生工作站 BKE241 数据来源 53 移动支付 身份认证类型 BKE284 身份认证类型 01 读卡 BKE284 身份认证类型 02 融合码 BKE284 身份认证类型 06 医保码 BKE284 身份认证类型 20 医疗证 */ LS_RETURN:=null; if PYBSXBM in ('psnno','insutype') then --人员编号、险种类型 begin select substrb(trim(A.YBKH00),1,30)YBKH00,substrb(trim(A.YBID00),1,30)YBID00,substrb(trim(A.BRZJBH),1,30)BRZJBH,substrb(trim(AAC999),1,30)AAC999,substrb(trim(a.AAE140),1,10)AAE140 into LS_YBKH00, LS_YBID00,LS_BRZJBH,LS_AAC999,LS_AAE140 from BM_BRXXB0 A,IC_YBBRLB E where A.BRID00=PBRID00 and A.YBLB00=E.YBLB00 and A.FBBH00=E.FBBH00; exception when others then LS_aac999:=null;--个人管理码(医保编号) LS_YBKH00:=null;--医保卡号 LS_YBID00:=null;--医保ID LS_BRZJBH:=null;--病人证件号码 end; if LS_YBKH00='0' then LS_YBKH00:=null; end if; if LS_YBID00='0' then LS_YBID00:=null; end if; --医疗保障基金结算清单(psn_no:人员编号)类型(0:证件号码(身份证) 1:证件号码-证件类型) 默认值:0 JSQD_psn_no_Type:= nvl(substrb(SF_SF_TYZD00('医保新接口参数设置','JSQD_psn_no_Type'),1,10),'0'); --人员编号 if PYBSXBM='psnno' then if SP_SF_CHECKSFZH(LS_BRZJBH)=1 and length(LS_BRZJBH)=18 then LS_RETURN:=trim(LS_BRZJBH); else LS_RETURN:=trim(LS_YBID00); end if; if JSQD_psn_no_Type='1' then LS_RETURN:='35000001'||LS_RETURN||'01'; end if; end if; --险种类型(310:职工基本医疗保险 390:城乡居民基本医疗保险 320:公务员医疗补助 392:城乡居民大病医疗保险 330:大额医疗费用补助 510:生育保险 340:离休人员医疗保障 ) if PYBSXBM='insutype' then LS_RETURN:=nvl(LS_AAE140,'310'); end if; elsif PYBSXBM='aka078' then --医疗就诊方式 if PMZZYBZ='0' then if PBRLB00='1' then --0:普通 1:生育 2:工伤 LS_RETURN:='81'; elsif PBRLB00='2' then --0:普通 1:生育 2:工伤 LS_RETURN:='91'; elsif PBRLB00='3' then LS_RETURN:='60'; else LS_RETURN:='10'; --门(急)诊 end if; --非生育并且是特殊病种取通用字典参数 if PBRLB00 not in ('1') and trim(PBQBM00) is not null then LS_RETURN:=substrb(SF_SF_TYZD00('医保新接口参数设置','mz_aka078_tsbz'),1,10); LS_RETURN:=nvl(LS_RETURN,'50');--未取到参数值默认为:50 if trim(PBQBM00) in ('YSGZBDFY','XXGZBDFY') then LS_RETURN:='10'; end if; end if; LS_RETURN:=nvl(LS_RETURN,'10');--为空默认:10 门(急)诊 else if PBRLB00='1' then --0:普通 1:生育 2:工伤 LS_RETURN:='82'; elsif PBRLB00='2' then --0:普通 1:生育 2:工伤 LS_RETURN:='92'; else LS_RETURN:='20'; --20 住院 end if; LS_RETURN:=nvl(LS_RETURN,'20');--为空默认:20 住院 end if; elsif PYBSXBM='aka130' then -- 医疗类别 if PMZZYBZ='0' then if trim(PBQBM00) is not null then LS_RETURN:='13'; --门诊慢(特)病种 else LS_RETURN:='11'; --普通门诊 end if; LS_RETURN:=nvl(LS_RETURN,'11');--为空默认:11 普通门诊 else if PBRLB00='1' then --病人类别 0:普通 1:生育 2:工伤 LS_RETURN:='52'; elsif PBRLB00='3' then LS_RETURN:='A1'; else LS_RETURN:='21'; --普通住院 end if; LS_RETURN:=nvl(LS_RETURN,'21');--为空默认:21 普通住院 end if; elsif PYBSXBM='bke286' then --结算标识 0:预结算 1:中途结算 2:门诊结算/出院结算 if PMZZYBZ='0' then LS_RETURN:='2'; else LS_RETURN:='2'; end if; elsif PYBSXBM='bke241' then --数据来源:50:收费终端 51:自助终端 52:医生工作站 53:移动支付 LS_RETURN:='50'; elsif PYBSXBM='bke284' then --身份认证类型bke284:01:读卡 02:融合码 06:医保码 20:医疗证 LS_RETURN:='01'; end if; return trim(LS_RETURN); end; /