CREATE OR REPLACE FUNCTION SF_SF_PUBLIC_REQEUST_VARSTR ( PJKCJBH varchar2 ,--接口厂家编号 YH:易惠 YL:医联 YX:医信..后续扩展 PYWCJBH varchar2 ,--业务场景编号 1:医保电子凭证读卡 ..后续扩展 PJKLXBH varchar2 ,--接口编号 PMZZYBZ varchar2 default '0' ,--门诊住院标识 0:门诊 1:住院 PCZY000 number default 0 ,--操作员编码=BM_YGBM00.YGBH00 PCZYKS0 number default 0 ,--操作员科室=BM_YGBM00.BMBH00 PBRID00 number default 0 ,--病人ID=BM_BRXXB0.BRID00 PBWFHLX number default 0 ,--报文返回类型 0:JSON 1:XML PDDLSH0 varchar2 default '' ,--订单流水号 PINTXML varchar2 --备用入参(XML格式) ) -- MODIFICATION HISTORY -- Person Date Comments --zhangyc 2021.03.16 create by MZSF-20210320-002 --zhangyc 2021.04.15 增加YWSL:易维刷脸 by MZSF-20210420-001 --zhangyc 2021.04.28 易惠接口非医生去掉节点operator_hisId、operator_id、operator_name、operator_idType、operator_type by MZSF-20210428-003 --zhangyc 2021.04.29 readSense 就诊场所 “1” 窗口 “2” 诊间 by MZSF-20210430-001 -- --------- ---------- ------- return varchar2 is LS_FHXX00 varchar2(4000);--返回信息 LS_JSONSTR varchar2(4000);--JSON LS_XMLSTR varchar2(4000);--XML LS_MAXNUM number(12,2);--截取最大 LS_from varchar2(50);--多点结算平台商户编号 LS_termid varchar2(50);--多点结算平台终端编号 LS_userid varchar2(50);--用户名 LS_userpw varchar2(50);--用户密码 LS_pReadType varchar2(50);--01:实体卡 06:凭证 LS_operator_hisId varchar2(50);--HIS 内部关联登录用户名 LS_operator_id varchar2(50);--医疗服务人员证件号码 LS_operator_idType varchar2(50);--医疗服务人员证件类型 01 居民身份证 02 居民户口簿 03 护照 04 军官证 05 驾驶证 06 港澳居民来往内地通行证 07 台湾居民来往内地通行证 08 出生医学证明 99 其他法定有效证件 LS_operator_name varchar2(50);--医疗服务人员姓名 LS_operator_type varchar2(50);--医保服务人员类别 001 医师 002 护师(士) 003 药师(士) 004 技师 005 收费员 006 助理医师 007 心理咨询师 LS_orgUser varchar2(50);--医院机构帐号 LS_orgPwd varchar2(50);--医院机构密码 LS_ZWXM00 BM_YGBM00.ZWXM00%type; --中文姓名 LS_XKH000 BM_YGBM00.XKH000%type; --胸卡号 LS_YGXZ00 BM_YGBM00.YGXZ00%type; --员工性质 LS_YSZJHM BM_YGBM00.YSZJHM%type; --医生证件号码 LS_MKDM00 varchar2(10);--系统代码:4:门诊 5:住院 8:医生 LS_LoginType varchar2(10);--登录类型 1:操作员 2:医师 医生工作站传2,其它地方读卡传1 LS_readSense varchar2(10);--就诊场所 “1” 窗口 “2” 诊间 LS_JSONmain varchar2(4000);--JSON LS_JSONdata varchar2(4000);--JSON begin LS_FHXX00:=null; LS_JSONSTR:=null;--JSON LS_XMLSTR:=null;--XML LS_MAXNUM:=4000;--截取最大 LS_operator_hisId:=null;--HIS 内部关联登录用户名 LS_operator_id:=null;--医疗服务人员证件号码 LS_operator_idType:='01';--医疗服务人员证件类型 01 居民身份证 02 居民户口簿 03 护照 04 军官证 05 驾驶证 06 港澳居民来往内地通行证 07 台湾居民来往内地通行证 08 出生医学证明 99 其他法定有效证件 LS_operator_name:=null;--医疗服务人员姓名 LS_operator_type:=null;--医保服务人员类别 001 医师 002 护师(士) 003 药师(士) 004 技师 005 收费员 006 助理医师 007 心理咨询师 LS_orgUser:=null;--医院机构帐号 LS_orgPwd:=null;--医院机构密码 if PJKCJBH in ('YWSL') then --主项main LS_JSONMAIN:=''; for Cur_main in (Select * from BM_JKRZMX where JKRZID=PDDLSH0 and JDBM00='main' and FSLX00 in ('0','2') order by MXID00) loop LS_JSONMAIN:=substrb(LS_JSONMAIN||'"' ||Cur_main.ZDBM00 ||'"' ||':' ||'"' ||Cur_main.JKFSZ0 ||'"' ||',',1,4000); end loop; --if LS_JSONMAIN is not null then -- LS_JSONMAIN:=substrb(LS_JSONMAIN,1,lengthb(LS_JSONMAIN)-1); --end if; --主项data LS_JSONdata:='';--JSON for Cur_data in (Select * from BM_JKRZMX where JKRZID=PDDLSH0 and JDBM00='data' and FSLX00 in ('0','2') order by MXID00) loop LS_JSONdata:=substrb(LS_JSONdata||'"' ||Cur_data.ZDBM00 ||'"' ||':' ||'"' ||Cur_data.JKFSZ0 ||'"' ||',',1,4000); end loop; if LS_JSONdata is not null then LS_JSONdata:=substrb(LS_JSONdata,1,lengthb(LS_JSONdata)-1); end if; LS_JSONSTR:=substrb(LS_JSONMAIN||'"'||'data'||'"'||':'||'{'||LS_JSONdata||'}',1,4000); LS_JSONSTR:=substrb('{'||LS_JSONSTR||'}',1,4000); LS_FHXX00:=LS_JSONSTR; else --YH:易惠——1:医保电子凭证读卡--请求报文--begin-- if PJKCJBH='YH' and PYWCJBH='1' and PBWFHLX=0 then if PMZZYBZ='0' then LS_from:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','appid_MZ'),1,50),''); LS_termid:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','termid_MZ'),1,50),''); LS_userid:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','userid'),1,50),''); LS_userpw:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','userpw'),1,50),''); LS_orgUser:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','orgUser'),1,50),''); LS_orgPwd:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','orgPwd'),1,50),''); LS_pReadType:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pReadType'),1,50),''); else LS_from:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','appid_ZY'),1,50),''); LS_termid:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','termid_ZY'),1,50),''); LS_userid:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','userid_ZY'),1,50),''); LS_userpw:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','userpw_ZY'),1,50),''); LS_orgUser:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','orgUser'),1,50),''); LS_orgPwd:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','orgPwd'),1,50),''); LS_pReadType:=nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pReadType'),1,50),''); end if; LS_pReadType:='06';--06:刷脸核身 if nvl(PCZY000,0)>0 then begin select A.XKH000,A.ZWXM00,a.YSZJHM,a.YGXZ00 into LS_XKH000,LS_ZWXM00,LS_YSZJHM,LS_YGXZ00 from BM_YGBM00 A where A.YGBH00=PCZY000; exception when others then LS_operator_hisId:=null;--HIS 内部关联登录用户名 LS_operator_id:=null;--医疗服务人员证件号码 end; LS_operator_hisId:=trim(LS_XKH000);--HIS 内部关联登录用户名 LS_operator_id:=trim(LS_YSZJHM);--医疗服务人员证件号码 LS_operator_name:=LS_ZWXM00;--医疗服务人员姓名 if instrb(','||trim(LS_YGXZ00)||',',',3,')>0 then LS_operator_type:='005'; --医保服务人员类别 005:收费员 elsif instrb(','||trim(LS_YGXZ00)||',',',2,')>0 then -- LS_operator_type:='002'; --医保服务人员类别 002:护师(士) else LS_operator_type:='001'; --医保服务人员类别 001:医师 end if; end if; LS_MKDM00:=trim(substrb(SF_SF_GETXMLNOTE('MKDM00',PINTXML),1,10));--系统代码:4:门诊 5:住院 8:医生 if LS_MKDM00 is not null then --前台有传系统代码,优先按系统代码判断否则按员工性质判断 if LS_MKDM00 in ('8','9') then LS_LoginType:='2';--1操作员 2医师 医生工作站传2,其它地方读卡传1 else LS_LoginType:='1';--1操作员 2医师 医生工作站传2,其它地方读卡传1 end if; else --员工性质(一个员工可设置多种性质'0'实习医生,'1'处方医生,'2'护士,'3'收费员,'4'药房人员,'5'系统维护人员'6'采购员,'7'药库保管员, if instrb(','||trim(LS_YGXZ00)||',',',0,')>0 or instrb(','||trim(LS_YGXZ00)||',',',1,')>0 then LS_LoginType:='2';--1操作员 2医师 医生工作站传2,其它地方读卡传1 else LS_LoginType:='1';--1操作员 2医师 医生工作站传2,其它地方读卡传1 end if; end if; if LS_LoginType='2' then --1操作员 2医师 医生工作站传2,其它地方读卡传1 LS_readSense:='2';--就诊场所 “1” 窗口 “2” 诊间 else LS_readSense:='1';--就诊场所 “1” 窗口 “2” 诊间 end if; if LS_LoginType not in ('2') then --1操作员 2医师 医生工作站传2,其它地方读卡传1 LS_JSONSTR:='' ||'"nDeviceType":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','nDeviceType'),1,10),'12')||'",' --设备类型(10 或12)旧款 YKT 读卡器类型为 10,新款为12 ||'"nCom":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','nCom'),1,10),'9')||'",' --端口(0-9) 0 - com1 1 - com2 …9 – usb ||'"nBaud":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','nBaud'),1,10),'2')||'",' --nt N 波特率(1-4) 1 - 9600 2 - 19200 3 – 28800 4 – 57600 建议用 3 或者 2 ||'"pRegion":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pRegion'),1,10),'')||'",' --地区编号(3500:省本级 3501:福州 3502:厦门 3503:莆田 3504:三明 3505:泉州 3506:漳州 3507:南平 3508:龙岩 3509:宁德) ||'"pDeptID":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pDeptID'),1,50),'')||'",' --网点编号 ||'"pDeptKey":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pDeptKey'),1,50),'')||'",' --网点密钥(暂不使用,医院系统改造时应为可设置参数) ||'"pReadType":'||'"'||LS_pReadType||'",' --读取类型(00:磁条卡 01:4442卡 02:4428卡 03:psam卡 04:密码键盘 05:一卡通信息) ||'"from":'||'"'||LS_from||'",' --多点结算平台商户编号 ||'"termid":'||'"'||LS_termid||'",' --多点结算平台终端编号 ||'"userid":'||'"'||LS_userid||'",' --用户名 ||'"userpw":'||'"'||LS_userpw||'",' --用户密码 --||'"operator_hisId":'||'"'||LS_operator_hisId||'",' --HIS内部关联登录用户名 --||'"operator_id":'||'"'||LS_operator_id||'",' --医疗服务人员证件号码 --||'"operator_name":'||'"'||LS_operator_name||'",' --医疗服务人员证件类型 01:身份证 --||'"operator_idType":'||'"'||LS_operator_idType||'",' --医疗服务人员姓名 --||'"operator_type":'||'"'||LS_operator_type||'",' --医保服务人员类别 001 医师 002 护师(士) 003 药师(士) 004 技师 005 收费员 006 助理医师 007 心理咨询师 ||'"orgUser":'||'"'||LS_orgUser||'",' --医院机构帐号 ||'"orgPwd":'||'"'||LS_orgPwd||'",' --医院机构密码 ||'"readSense":'||'"'||LS_readSense||'",' --就诊场所 “1” 窗口 “2” 诊间 --||'"LoginType":'||'"'||LS_LoginType||'",' --登录类型 1:操作员 2:医师 医生工作站传2,其它地方读卡传1 ; else LS_JSONSTR:='' ||'"nDeviceType":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','nDeviceType'),1,10),'12')||'",' --设备类型(10 或12)旧款 YKT 读卡器类型为 10,新款为12 ||'"nCom":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','nCom'),1,10),'9')||'",' --端口(0-9) 0 - com1 1 - com2 …9 – usb ||'"nBaud":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','nBaud'),1,10),'2')||'",' --nt N 波特率(1-4) 1 - 9600 2 - 19200 3 – 28800 4 – 57600 建议用 3 或者 2 ||'"pRegion":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pRegion'),1,10),'')||'",' --地区编号(3500:省本级 3501:福州 3502:厦门 3503:莆田 3504:三明 3505:泉州 3506:漳州 3507:南平 3508:龙岩 3509:宁德) ||'"pDeptID":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pDeptID'),1,50),'')||'",' --网点编号 ||'"pDeptKey":'||'"'||nvl(substrb(SF_SF_TYZD00('多点结算接口参数','pDeptKey'),1,50),'')||'",' --网点密钥(暂不使用,医院系统改造时应为可设置参数) ||'"pReadType":'||'"'||LS_pReadType||'",' --读取类型(00:磁条卡 01:4442卡 02:4428卡 03:psam卡 04:密码键盘 05:一卡通信息) ||'"from":'||'"'||LS_from||'",' --多点结算平台商户编号 ||'"termid":'||'"'||LS_termid||'",' --多点结算平台终端编号 ||'"userid":'||'"'||LS_userid||'",' --用户名 ||'"userpw":'||'"'||LS_userpw||'",' --用户密码 ||'"operator_hisId":'||'"'||LS_operator_hisId||'",' --HIS内部关联登录用户名 ||'"operator_id":'||'"'||LS_operator_id||'",' --医疗服务人员证件号码 ||'"operator_name":'||'"'||LS_operator_name||'",' --医疗服务人员证件类型 01:身份证 ||'"operator_idType":'||'"'||LS_operator_idType||'",' --医疗服务人员姓名 ||'"operator_type":'||'"'||LS_operator_type||'",' --医保服务人员类别 001 医师 002 护师(士) 003 药师(士) 004 技师 005 收费员 006 助理医师 007 心理咨询师 ||'"orgUser":'||'"'||LS_orgUser||'",' --医院机构帐号 ||'"orgPwd":'||'"'||LS_orgPwd||'",' --医院机构密码 ||'"readSense":'||'"'||LS_readSense||'",' --就诊场所 “1” 窗口 “2” 诊间 --||'"LoginType":'||'"'||LS_LoginType||'",' --登录类型 1:操作员 2:医师 医生工作站传2,其它地方读卡传1 ; end if; if LS_JSONSTR is not null then LS_JSONSTR:=substrb(LS_JSONSTR,1,lengthb(LS_JSONSTR)-1); end if; LS_JSONSTR:=substrb('{'||LS_JSONSTR||'}',1,LS_MAXNUM); LS_FHXX00:=LS_JSONSTR; end if; --YH:易惠——1:医保电子凭证读卡--请求报文--end-- end if; return LS_FHXX00; end;