CREATE OR REPLACE PROCEDURE SP_YF_GJYBRZ_DZCFYH( PYBJKID in varchar2 ,--[1]输入:医保接口ID PJKCJBM in varchar2 ,--[2]输入:接口场景编码 PBRID00 in number ,--[3]输入:BRID00 PGHID00 in number ,--[4]输入:GHID000 PGHH000 in varchar2 ,--[5]输入:GHH000 PCZY000 in number ,--[6]输入:操作员编码 PCZYXM0 in varchar2 ,--[7]输入:操作员姓名 PCZYKS0 in number ,--[8]输入:操作员科室 PQQCSID in varchar2 default '' ,--[9]输入:参数中间ID PINXML0 in varchar2 default '' ,--[10]输入:请求参数(XML) POTHER0 in varchar2 default '' ,--[11]输入:备用参数 PCOMMIT in varchar2 default 'N' ,--[12]输入:是否提交事务 Y:提交 N:不提交 PZXZT00 out number ,--[13]输出:执行状态 0:失败 1:成功 POUTXML out varchar2 ,--[14]输出:出参(XML) PERRMSG out varchar2 --[15]输出:错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments -- linzetao 2024.04.02 created by 【7101】电子处方上传预核验_日志生成 YF9-20240402-004 -- linzetao 2024.04.16 调整rxExraAttrCode节点"其他"编码由03改为99, 增加医保单位及数量转换处理 YF9-20240416-001 -- linzetao 2024.05.20 调整特殊病种处方对应的医疗类别取值处理 YF9-20240520-001 -- linzetao 2024.05.23 调整处方单格式取值处理 YF9-20240523-001 -- linzetao 2024.06.14 修正rxTypeCode节点儿科中药饮片判断错误问题 YF9-20240614-002 -- --------- ---------- ------- LS_COUNT0 number(12,2); LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_DateTimeStr varchar2(20); --日期时间型:格式为:yyyy-MM-dd HH:mm:ss LS_DateStr varchar2(10); --日期型:格式为:yyyy-MM-dd LS_TimeStr varchar2(10); --时间型:格式为:HH:mm:ss LS_JKFSZ0 SF_YBJKMX.JKFSZ0%type;--接口发送值 LS_JKFHZ0 SF_YBJKMX.JKFHZ0%type;--接口返回值 LS_VALUE0 SF_YBJKMX.VALUE0%type;--请求报文字符串 LS_HISCS0 SF_YBJKRZ.HISCS0%type;--HIS前台请求参数 LS_QQDATA SF_YBJKRZ.QQDATA%type;--请求报文 LS_MainJson SF_YBJKRZ.QQDATA%type;--主项Json LS_detailJson SF_YBJKRZ.QQDATA%type;--明细Json LS_inputJson SF_YBJKRZ.QQDATA%type;--input输入 LS_SJLY00 SF_BRXXB0.SJLY00%type; --数据来源 0或空 HIS,1门诊电子病历,2网络诊室3共享药房 LS_CFLSH0 YF_MZCF00.CFLSH0%type; --处方流水号 LS_YBZXLB IC_YBBRLB.YBZXLB%type; --医保中心类别 LS_YBKH00 BM_BRXXB0.YBKH00%type; --医保卡号 LS_YBID00 BM_BRXXB0.YBID00%type; --医保ID LS_BRZJLX BM_BRXXB0.BRZJLX%type; --病人证件类型 LS_ZJLXBH BM_BRXXB0.ZJLXBH%type; --病人证件类型编号 LS_BRZJBH BM_BRXXB0.BRZJBH%type; --病人证件编号 LS_BRXM00 BM_BRXXB0.BRXM00%type; --病人姓名 LS_XZQH00 BM_BRXXB0.XZQH00%type; --行政区号 LS_YBKSBM BM_BRXXB0.YBKSBM%type; --医保卡识别码 LS_AAE140 BM_BRXXB0.AAE140%type; --险种类型 ls_YBBRLB BM_BRXXB0.YBBRLB%type; --医保病人类别 ls_FBBH00 BM_BRXXB0.FBBH00%type; --病人费别 ls_YBLB00 BM_BRXXB0.YBLB00%type; --医保类别 ls_SFBZDJ XT_YYXX00.SFBZDJ%type; --收费标准等级 ls_YBXMBH BM_YBSFXM.XMBH00%type; --医保收费/药品项目编号 LS_MZZYBZ BM_YBSFDY.MZZYBZ%type; --门诊住院标志0限门诊1限住院2不限制 LS_BKEA96 BM_YBSFDY.BKEA96%type; LS_BKEH83 SF_YBFSMX.BKEH83%type; --国家标准对应编码 LS_YBDDW0 BM_YBSFXM.XMDW00%type; --医保项目单位(大单位) LS_YBXDW0 BM_YBSFXM.ZXJJDW%type; --医保项目单位(小单位) LS_Z2J000 BM_YD0000.Z2J000%type; --住院发药单位转化率 LS_YBDW00 BM_YD0000.YBDW00%type; --医保单位 LS_YB2J00 BM_YD0000.YB2J00%type; --医保转换率 LS_DW0000 YF_MZCFMX.CFDW00%type; --处方单位 ls_XMSL00 YF_MZCFMX.YPZSL0%type; --药品总数量 LS_GHID00 SF_BRXXB0.GHID00%type; --挂号id LS_JZYSXM SF_BRXXB0.JZYSXM%type; --接诊医生姓名 LS_GHKS00 SF_BRXXB0.GHKS00%type; --挂号科室 LS_GHKSMC BM_BMBM00.BMMC00%type; --挂号科室名称 LS_GJYBKS BM_BMBM00.GJYBKS%type; --国家医保科室 LS_BRCSRQ BM_BRXXB0.BRCSRQ%type; --病人出生日期 LS_XBBH00 BM_BRXXB0.XBBH00%type; --性别编号 LS_BRXB00 BM_BRXXB0.BRXB00%type; --病人性别 LS_GHRQ00 SF_BRXXB0.GHRQ00%type; --挂号日期 LS_GHSJ00 SF_BRXXB0.GHSJ00%type; --挂号时间 LS_YBGHH0 SF_BRXXB0.YBGHH0%type; --医保挂号号 LS_TSBZBH SF_BRXXB0.TSBZBH%type; --特殊病种编号 LS_SFCZ00 SF_BRXXB0.SFCZ00%type; --是否初诊 LS_JZYS00 BM_YGBM00.YBYGDM%type; --接诊医生医保员工编码 LS_YSLB00 BM_YGBM00.YSLB00%type; --医生类别 LS_SFZBH0 BM_YGBM00.SFZBH0%type; --医生证件编号 LS_YSKSBH BM_YGBM00.BMBH00%type; --医生科室编号 LS_YSKSMC BM_BMBM00.BMMC00%type; --医生科室名称 LS_CFDGS0 YF_MZCF00.CFDGS0%type; --处方单格式 LS_aaz500 SF_YBJKRZ.aaz500%type;--aaz500:社会保障卡号 LS_aac002 SF_YBJKRZ.aac002%type;--aac002:证件号码(社会保障号) LS_aac003 SF_YBJKRZ.aac003%type;--aac003:姓名 LS_psn_no SF_YBJKRZ.psn_no%type;--psn_no:国家医保]人员编号 LS_card_sn SF_YBJKRZ.card_sn%type;--[国家医保]卡识别码=aaz501 LS_med_type SF_YBJKRZ.med_type%type;--med_type: 医疗类别 in_tsbzbh varchar2(20); --特殊病种编号 LS_Change_bkeh83_bke045 BM_TYZD00.MC0000%type; --字典Change_bkeh83_bke045 LS_TYCJ00 BM_TYCJBM%rowtype; LS_MZCF00 YF_MZCF00%rowtype; LS_mdtrtCertType varchar2(3); --1.mdtrtCertType: 就诊凭证类型 字符型(3) LS_mdtrtCertNo varchar2(50); --2.mdtrtCertNo: 就诊凭证编号 字符型(50) LS_cardSn varchar2(32); --3.cardSn: 卡识别码 字符型(32) LS_bizTypeCode varchar2(3); --4.bizTypeCode: 业务类型代码 字符型(3) LS_rxExraAttrCode varchar2(3); --5.rxExraAttrCode: 处方附加属性代码 字符型(3) LS_ecToken varchar2(64); --6.ecToken: 电子凭证令牌 字符型(64) LS_authNo varchar2(100); --7.authNo: 电子凭证线上身份核验流水号 字符型(100) LS_insuPlcNo varchar2(6); --8.insuPlcNo: 参保地编号 字符型(6) LS_mdtrtareaNo varchar2(6); --9.mdtrtareaNo: 就医地编号 字符型(6) LS_hospRxno varchar2(40); --10.hospRxno: 定点医疗机构处方编号 字符型(40) LS_initRxno varchar2(40); --11.initRxno: 续方的原处方编号 字符型(40) LS_rxTypeCode varchar2(3); --12.rxTypeCode: 处方类别代码 字符型(3) LS_prscTime varchar2(20); --13.prscTime: 开方时间 日期时间型() LS_rxDrugCnt number(16,4); --14.rxDrugCnt: 药品类目数(剂数) 数值型(16,4) LS_rxUsedWayCodg varchar2(20); --15.rxUsedWayCodg: 处方整剂用法编号 字符型(20) LS_rxUsedWayName varchar2(40); --16.rxUsedWayName: 处方整剂用法名称 字符型(40) LS_rxFrquCodg varchar2(20); --17.rxFrquCodg: 处方整剂频次编号 字符型(20) LS_rxFrquName varchar2(40); --18.rxFrquName: 处方整剂频次名称 字符型(40) LS_rxDosunt varchar2(20); --19.rxDosunt: 处方整剂剂量单位 字符型(20) LS_rxDoscnt number(16); --20.rxDoscnt: 处方整剂单次剂量数 数值型(16,2) LS_rxDrordDscr varchar2(400); --21.rxDrordDscr: 处方整剂医嘱说明 字符型(400) LS_valiDays number(10); --22.valiDays: 处方有效天数 数值型(10) LS_valiEndTime varchar2(20); --23.valiEndTime: 有效截止时间 日期时间型() LS_reptFlag varchar2(3); --24.reptFlag: 复用(多次)使用标志 字符型(3) LS_maxReptCnt number(3); --25.maxReptCnt: 最大使用次数 数值型(3,0) LS_minInrvDays number(3); --26.minInrvDays: 使用最小间隔(天数) 数值型(3,0) LS_rxCotnFlag varchar2(3); --27.rxCotnFlag: 续方标志 字符型(3) LS_longRxFlag varchar2(3); --28.longRxFlag: 长期处方标志 字符型(3) LS_medListCodg varchar2(50); --1.medListCodg: 医疗目录编码 字符型(50) LS_fixmedinsHilistId varchar2(30); --2.fixmedinsHilistId: 定点医药机构目录编号 字符型(30) LS_hospPrepFlag varchar2(3); --3.hospPrepFlag: 医疗机构制剂标志 字符型(3) LS_rxItemTypeCode varchar2(30); --4.rxItemTypeCode: 处方项目分类代码 字符型(30) LS_rxItemTypeName varchar2(100); --5.rxItemTypeName: 处方项目分类名称 字符型(100) LS_tcmdrugTypeCode varchar2(30); --6.tcmdrugTypeCode: 中药类别代码 字符型(30) LS_tcmdrugTypeName varchar2(20); --7.tcmdrugTypeName: 中药类别名称 字符型(20) LS_tcmherbFoote varchar2(200); --8.tcmherbFoote: 草药脚注 字符型(200) LS_mednTypeCode varchar2(100); --9.mednTypeCode: 药物类型代码 字符型(100) LS_mednTypeName varchar2(100); --10.mednTypeName: 药物类型 字符型(100) LS_mainMedcFlag varchar2(3); --11.mainMedcFlag: 主要用药标志 字符型(3) LS_urgtFlag varchar2(3); --12.urgtFlag: 加急标志 字符型(3) LS_basMednFlag varchar2(3); --13.basMednFlag: 基本药物标志 字符型(3) LS_impDrugFlag varchar2(3); --14.impDrugFlag: 是否进口药品 字符型(3) LS_otcFlag varchar2(3); --15.otcFlag: 是否OTC药品 字符型(3) LS_drugGenname varchar2(100); --16.drugGenname: 药品通用名 字符型(100) LS_drugDosform varchar2(30); --17.drugDosform: 药品剂型 字符型(30) LS_drugSpec varchar2(40); --18.drugSpec: 药品规格 字符型(40) LS_drugProdname varchar2(255); --19.drugProdname: 药品商品名 字符型(255) LS_prdrName varchar2(100); --20.prdrName: 生厂厂家 字符型(100) LS_medcWayCodg varchar2(10); --21.medcWayCodg: 用药途径代码 字符型(10) LS_medcWayDscr varchar2(100); --22.medcWayDscr: 用药途径描述 字符型(100) LS_medcBegntime varchar2(20); --23.medcBegntime: 用药开始时间 日期时间型() LS_medcEndtime varchar2(20); --24.medcEndtime: 用药结束时间 日期时间型() LS_medcDays varchar2(8); --25.medcDays: 用药天数 数值型(8,2) LS_sinDosunt varchar2(20); --26.sinDosunt: 单次剂量单位 字符型(20) LS_sinDoscnt varchar2(16); --27.sinDoscnt: 单次用量 数值型(16,4) LS_usedFrquCodg varchar2(10); --28.usedFrquCodg: 使用频次编码 字符型(10) LS_usedFrquName varchar2(30); --29.usedFrquName: 使用频次名称 字符型(30) LS_drugDosunt varchar2(20); --30.drugDosunt: 药品总用药量单位(即发药计价单位,取药或处方流转时药品医保结算使用的单位;如“片“或”盒“) 字符型(20) LS_drugCnt varchar2(16); --31.drugCnt: 药品总用药量 数值型(16,4) LS_drugPric varchar2(16); --32.drugPric: 药品单价 数值型(16,6) LS_drugSumamt varchar2(16); --33.drugSumamt: 药品总金额 数值型(16,2) LS_hospApprFlag varchar2(3); --34.hospApprFlag: 医院审批标志 字符型(3) LS_selfPayRea varchar2(6); --35.selfPayRea: 自费原因类型 字符型(6) LS_realDscr varchar2(1000); --36.realDscr: 自费原因描述 字符型(1000) LS_fixmedinsName varchar2(200); --1.fixmedinsName: 定点医疗机构名称 字符型(200) LS_fixmedinsCode varchar2(20); --2.fixmedinsCode: 定点医疗机构编号 字符型(20) LS_mdtrtId varchar2(30); --3.mdtrtId: 医保就诊ID 字符型(30) LS_medType varchar2(6); --4.medType: 医疗类别 字符型(6) LS_iptOtpNo varchar2(30); --5.iptOtpNo: 住院/门诊号 字符型(30) LS_otpIptFlag varchar2(3); --6.otpIptFlag: 门诊住院标识 字符型(3) LS_psnNo varchar2(30); --7.psnNo: 医保人员编号 字符型(30) LS_patnName varchar2(40); --8.patnName: 患者姓名 字符型(40) LS_psnCertType varchar2(6); --9.psnCertType: 人员证件类型 字符型(6) LS_certno varchar2(50); --10.certno: 证件号码 字符型(50) LS_patnAge varchar2(6); --11.patnAge: 年龄 数值型(4,1) LS_patnHgt varchar2(6); --12.patnHgt: 患者身高 数值型(6,2) LS_patnWt varchar2(6); --13.patnWt: 患者体重 数值型(6,2) LS_gend varchar2(6); --14.gend: 性别 字符型(6) LS_birctrlType varchar2(6); --15.birctrlType: 计划生育手术类别 字符型(6) LS_birctrlMatnDate varchar2(20); --16.birctrlMatnDate: 计划生育手术或生育日期 日期型() LS_matnType varchar2(6); --17.matnType: 生育类别 字符型(6) LS_gesoVal varchar2(2); --18.gesoVal: 妊娠(孕周) 数值型(2) LS_nwbFlag varchar2(3); --19.nwbFlag: 新生儿标志 字符型(3) LS_nwbAge varchar2(20); --20.nwbAge: 新生儿日、月龄 字符型(20) LS_suckPrdFlag varchar2(3); --21.suckPrdFlag: 哺乳期标志 数值型(3) LS_algsHis varchar2(1000); --22.algsHis: 过敏史 字符型(1000) LS_prscDeptName varchar2(50); --23.prscDeptName: 开方科室名称 字符型(50) LS_prscDeptCode varchar2(30); --24.prscDeptCode: 开方科室编号 字符型(30) LS_drCode varchar2(20); --25.drCode: 开方医保医师代码 字符型(20) LS_prscDrName varchar2(50); --26.prscDrName: 开方医师姓名 字符型(50) LS_prscDrCertType varchar2(6); --27.prscDrCertType: 开方医师证件类型 字符型(6) LS_prscDrCertno varchar2(50); --28.prscDrCertno: 开方医师证件号码 字符型(50) LS_drProfttlCodg varchar2(20); --29.drProfttlCodg: 医生职称编码 字符型(20) LS_drProfttlName varchar2(20); --30.drProfttlName: 医生职称名称 字符型(20) LS_drDeptCode varchar2(30); --31.drDeptCode: 医生科室编码 字符型(30) LS_drDeptName varchar2(50); --32.drDeptName: 医生科室名称 字符型(50) LS_caty varchar2(6); --33.caty: 科别 字符型(6) LS_mdtrtTime varchar2(20); --34.mdtrtTime: 就诊时间 日期时间型() LS_diseCodg varchar2(30); --35.diseCodg: 病种编码 字符型(30) LS_diseName varchar2(500); --36.diseName: 病种名称 字符型(500) LS_spDiseFlag varchar2(3); --37.spDiseFlag: 特殊病种标志 字符型(3) LS_maindiagCode varchar2(30); --38.maindiagCode: 主诊断代码 字符型(30) LS_maindiagName varchar2(100); --39.maindiagName: 主诊断名称 字符型(100) LS_diseCondDscr varchar2(2000); --40.diseCondDscr: 疾病病情描述 字符型(2000) LS_hiFeesetlType varchar2(6); --41.hiFeesetlType: 医保费用结算类型 字符型(6) LS_hiFeesetlName varchar2(20); --42.hiFeesetlName: 医保费用类别名称 字符型(20) LS_rgstFee varchar2(16); --43.rgstFee: 挂号费 数值型(16,2) LS_medfeeSumamt varchar2(16); --44.medfeeSumamt: 医疗费总额 数值型(16,2) LS_fstdiagFlag varchar2(3); --45.fstdiagFlag: 是否初诊 字符型(3) LS_diagType varchar2(3); --1.diagType: 诊断类别 字符型(3) LS_maindiagFlag varchar2(3); --2.maindiagFlag: 主诊断标志 字符型(3) LS_diagSrtNo varchar2(2); --3.diagSrtNo: 诊断排序号 数值型(2) LS_diagCode varchar2(30); --4.diagCode: 诊断代码 字符型(30) LS_diagName varchar2(100); --5.diagName: 诊断名称 字符型(100) LS_diagDept varchar2(50); --6.diagDept: 诊断科室 字符型(50) LS_diagDeptCode varchar2(20); --7.diagDeptCode: 诊断科室代码 字符型(20) LS_diagDrNo varchar2(30); --8.diagDrNo: 诊断医生编码 字符型(30) LS_diagDrName varchar2(50); --9.diagDrName: 诊断医生姓名 字符型(50) LS_diagTime varchar2(20); --10.diagTime: 诊断时间 日期时间型() LS_tcmDiseCode varchar2(30); --11.tcmDiseCode: 中医病名代码 字符型(30) LS_tcmDiseName varchar2(300); --12.tcmDiseName: 中医病名 字符型(300) LS_tcmsympCode varchar2(30); --13.tcmsympCode: 中医证候代码 字符型(30) LS_tcmsymp varchar2(300); --14.tcmsymp: 中医证候 字符型(300) LS_rxdrugdetail SF_YBJKRZ.QQDATA%type;--处方药品明细 LS_rxdrugdetailList SF_YBJKRZ.QQDATA%type;--处方药品明细列表 LS_diseinfo SF_YBJKRZ.QQDATA%type;--诊断信息 LS_diseinfoList SF_YBJKRZ.QQDATA%type;--诊断信息列表 LS_mdtrtinfo SF_YBJKRZ.QQDATA%type;--就诊信息 cursor CUR_UPDATE_YBJKMX_data is select YBJKID,JKMXID,JDBM00,ZJDBM0,JKSXBM,JKSXMC,JKFSZ0,JKFHZ0,FSLXBZ from SF_YBJKMX where YBJKID=PYBJKID and FSLXBZ in ('1','3') and JDBM00 in ('data') order by JKMXID; cursor CUR_UPDATE_YBJKMX_mdtrtinfo is select YBJKID,JKMXID,JDBM00,ZJDBM0,JKSXBM,JKSXMC,JKFSZ0,JKFHZ0,FSLXBZ from SF_YBJKMX where YBJKID=PYBJKID and FSLXBZ in ('1','3') and JDBM00 in ('mdtrtinfo') order by JKMXID; --查询主项数据 cursor CUR_QUERY_Main is select YBJKID,JKMXID,JDBM00,ZJDBM0,JKSXBM,JKSXMC,JKFSZ0,JKFHZ0,FSLXBZ from SF_YBJKMX where YBJKID=PYBJKID and FSLXBZ in ('1','3') and CJBM00 in ('AllIn') order by JKMXID; --查询明细数据 cursor CUR_QUERY_detail_data is select YBJKID,JKMXID,JDBM00,ZJDBM0,JKSXBM,JKSXMC,JKFSZ0,JKFHZ0,FSLXBZ from SF_YBJKMX where YBJKID=PYBJKID and FSLXBZ in ('1','3') and CJBM00=PJKCJBM and JDBM00 in ('data') order by JKMXID; --查询就诊信息字典数据 cursor CUR_QUERY_detail_mdtrtinfo is select YBJKID,JKMXID,JDBM00,ZJDBM0,JKSXBM,JKSXMC,JKFSZ0,JKFHZ0,FSLXBZ from SF_YBJKMX where YBJKID=PYBJKID and FSLXBZ in ('1','3') and CJBM00=PJKCJBM and JDBM00 in ('mdtrtinfo') order by JKMXID; begin PZXZT00:=0; --输出:执行状态 0:失败 1:成功 POUTXML:=null;--输出:出参(XML) PERRMSG:=null;--输出:错误信息 LS_QQDATA:=null;--请求报文 LS_MainJson:=null;---主项Json LS_detailJson:=null;---明细Json LS_inputJson:=null;---input输入 LS_mdtrtinfo:=null;---就诊信息 LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_DateTimeStr:=to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'); --日期时间型:格式为:yyyy-MM-dd HH:mm:ss LS_DateStr:=to_char(sysdate,'YYYY-MM-DD'); --日期型:格式为:yyyy-MM-dd LS_TimeStr:=to_char(sysdate,'HH24:MI:SS'); --时间型:格式为:HH:mm:ss begin select HISCS0 into LS_HISCS0 from SF_YBJKRZ where YBJKID=PYBJKID; exception when others then LS_HISCS0:=null;--HIS前台请求参数 end; begin select * into LS_TYCJ00 from BM_TYCJBM where CJBM00=PJKCJBM; exception when others then PZXZT00 := 0; PERRMSG := '未找到有效的场景字典,请联系管理员!'; return; end; --查询主项数据 for C_Main in CUR_QUERY_Main loop LS_MainJson := SF_XT_GETJSONSTR(LS_MainJson,C_Main.JKSXBM,C_Main.JKFSZ0,'0'); end loop; if LS_MainJson is null then PZXZT00:=0; PERRMSG:='主项报文不能为空!'; return; end if; if nvl(PBRID00,0) <= 0 then PERRMSG := '病人id为空'; PZXZT00:=0; --执行状态 0:失败 1:成功 return; end if; if nvl(PGHID00,0) <= 0 then PERRMSG := '挂号id为空'; PZXZT00:=0; --执行状态 0:失败 1:成功 return; end if; --获取前端传入处方流水号 LS_CFLSH0 := substrb(SF_XT_GETXMLSTR('cflsh0',PINXML0),1,16); if LS_CFLSH0 is null then LS_CFLSH0 := substrb(SF_XT_GETXMLSTR('cflsh0',LS_HISCS0),1,16); end if; if LS_CFLSH0 is null then PERRMSG := '处方流水号为空'; PZXZT00 := 0; return; end if; begin select * into LS_MZCF00 from YF_MZCF00 where CFLSH0=LS_CFLSH0; exception when others then PERRMSG := '待预核验的处方('||LS_CFLSH0||')在门诊处方表中不存在'; PZXZT00 := 0; return; end; begin select A.YBKH00,A.YBID00,A.BRZJLX,A.BRZJBH,A.BRXM00,A.XZQH00,A.YBKSBM,A.PSN_NO,A.AAE140, A.FBBH00,A.YBLB00,A.YBBRLB,A.BRCSRQ,BRXB00,XBBH00,A.ZJLXBH into LS_YBKH00,LS_YBID00,LS_BRZJLX,LS_BRZJBH,LS_BRXM00,LS_XZQH00,LS_YBKSBM,LS_psn_no,LS_AAE140, LS_FBBH00,LS_YBLB00,LS_YBBRLB,LS_BRCSRQ,LS_BRXB00,LS_XBBH00,LS_ZJLXBH from BM_BRXXB0 A where A.BRID00=PBRID00; exception when others then PERRMSG := '未找到病人基本信息(BRID00='||PBRID00||')'; PZXZT00:=0; --执行状态 0:失败 1:成功 return; end; if LS_ZJLXBH is null and LS_BRZJLX is not null then LS_ZJLXBH := substrb(SF_XT_GETYBSXZD('psn_cert_type',LS_BRZJLX,'1','1'),1,6); --人员证件类型 end if; --获取收费等级标准值 select SF_XT_GETSFDJBYBMBH(Pczyks0) into ls_SFBZDJ from dual; begin select YBZXLB into ls_YBZXLB from IC_YBBRLB where FBBH00=ls_FBBH00 and YBLB00=ls_YBLB00; exception when others then ls_YBZXLB := null; end; begin select a.YBGHH0,A.GHID00,nvl(b.YBYGDM,a.JZYS00),a.JZYSXM,a.GHKS00,nvl(a.GHRQ00,to_char(sysdate,'YYYYMMDD')), nvl(a.GHSJ00,to_char(sysdate,'HH24:MI:SS')),c.BMMC00,SF_XT_TransKSBMToGJYBBM(a.GHKS00,'1'),a.SJLY00,b.YSLB00,b.SFZBH0, b.BMBH00,d.BMMC00,nvl(a.TSBZBH,(select max(TSBZBH) from YF_MZCF00 where GHID00=a.GHID00 and CFLSH0=LS_CFLSH0)),a.SFCZ00 into LS_YBGHH0,LS_GHID00,LS_JZYS00,LS_JZYSXM,LS_GHKS00,LS_GHRQ00, LS_GHSJ00,LS_GHKSMC,LS_GJYBKS,LS_SJLY00,LS_YSLB00,LS_SFZBH0, LS_YSKSBH,LS_YSKSMC,LS_TSBZBH,LS_SFCZ00 from SF_BRXXB0 a,BM_YGBM00 b,BM_BMBM00 c,BM_BMBM00 d where a.JZYS00=b.YGBH00 and a.GHKS00=c.BMBH00 and b.BMBH00=d.BMBH00 and a.GHID00=PGHID00; exception when others then PERRMSG := '未找到病人挂号信息(GHID00='||PGHID00||')'; PZXZT00:=0; --执行状态 0:失败 1:成功 return; end; --获取中间表数据 begin select a.mdtrt_cert_type,a.mdtrt_cert_no,a.aaz500,a.aac002,a.aac003,a.psn_no,a.card_sn,a.certno,a.mdtrtarea_admvs, a.fixmedins_code,a.fixmedins_name,a.med_type into LS_mdtrtCertType,LS_mdtrtCertNo,LS_aaz500,LS_aac002,LS_aac003,LS_psn_no,LS_card_sn,LS_certno,LS_mdtrtareaNo, LS_fixmedinsCode,LS_fixmedinsName,LS_med_type from SF_YBJKRZ a where a.YBJKID=PYBJKID; exception when others then LS_mdtrtCertType:=null; LS_mdtrtCertNo:=null; LS_aaz500:=null;--aaz500:社会保障卡号 LS_aac002:=null;--aac002:证件号码(社会保障号) LS_aac003:=null;--aac003:姓名 LS_psn_no:=null;--psn_no:国家医保]人员编号 LS_card_sn:=null;--[国家医保]卡识别码=aaz501 end; --获取前端传入特殊病种编号 in_tsbzbh := substrb(SF_XT_GETXMLSTR('tsbzbh',PINXML0),1,16); if LS_CFLSH0 is null then in_tsbzbh := substrb(SF_XT_GETXMLSTR('tsbzbh',LS_HISCS0),1,16); end if; if in_tsbzbh is not null then LS_TSBZBH := in_tsbzbh; end if; if LS_TSBZBH is null then select max(TSBZBH) into LS_TSBZBH from YF_MZCF00 where CFLSH0=LS_CFLSH0; end if; --特殊病种医疗类别为14 if LS_TSBZBH is not null then --LS_med_type is null and LS_med_type := '14'; end if; if LS_mdtrtCertType is null then LS_mdtrtCertType := substrb(SF_XT_GETXMLSTR('mdtrt_cert_type',PINXML0),1,3); --1.mdtrtCertType: 就诊凭证类型 if LS_mdtrtCertType is null then LS_mdtrtCertType := substrb(SF_XT_GETXMLSTR('bke284',PINXML0),1,3); --1.mdtrtCertType: 就诊凭证类型 end if; end if; if LS_mdtrtCertType is null then LS_mdtrtCertType := '02'; end if; if LS_mdtrtCertNo is null then LS_mdtrtCertNo := substrb(SF_XT_GETXMLSTR('mdtrt_cert_no',PINXML0),1,50); --2.mdtrt_cert_no: 就诊凭证编号 end if; if LS_mdtrtCertNo is null and LS_mdtrtCertType in ('02') then LS_mdtrtCertNo := nvl(LS_certno,nvl(LS_aac002,LS_BRZJBH)); end if; if LS_mdtrtCertType in ('03') then if LS_card_sn is null then LS_card_sn := substrb(SF_XT_GETXMLSTR('card_sn',PINXML0),1,32); --卡识别码 end if; if LS_card_sn is null then LS_card_sn := substrb(SF_XT_GETXMLSTR('aaz501',PINXML0),1,32); --卡识别码 end if; LS_cardSn := substr(LS_card_sn,1,32); --3.cardSn: 卡识别码 字符型(32) end if; if LS_SJLY00 in ('2') then --4.bizTypeCode: 业务类型代码 字符型(3) (01-定点医疗机构就诊,02-互联网医院问诊) LS_bizTypeCode := '02'; else LS_bizTypeCode := '01'; end if; --5.rxExraAttrCode: 处方附加属性代码 字符型(3) if LS_MZCF00.WGCFSX = '01' then LS_rxExraAttrCode := '01'; --01-双通道处方,02-门诊统筹处方,993-其他 elsif LS_MZCF00.WGCFSX = '02' then LS_rxExraAttrCode := '02'; --01-双通道处方,02-门诊统筹处方,99-其他 elsif LS_MZCF00.WGCFSX = '99' then LS_rxExraAttrCode := '99'; --01-双通道处方,02-门诊统筹处方,99-其他 else LS_rxExraAttrCode := '02'; --01-双通道处方,02-门诊统筹处方,99-其他 end if; if LS_mdtrtCertType in ('01') then LS_ecToken := LS_mdtrtCertNo; --6.ecToken: 电子凭证令牌 字符型(64) 使用医保电子凭证就诊时必填 LS_authNo := LS_mdtrtCertNo; --7.authNo: 电子凭证线上身份核验流水号 字符型(100) 线上场景互联网医院问诊时使用,就诊凭证类型:01且必填 end if; LS_insuPlcNo := LS_XZQH00; --8.insuPlcNo: 参保地编号 字符型(6) --9.mdtrtareaNo: 就医地编号 字符型(6) if LS_mdtrtareaNo is null then LS_mdtrtareaNo := substrb(SF_SF_TYZD00('医保新接口参数设置','mdtrtarea_admvs'),1,6); end if; --10.hospRxno: 定点医疗机构处方编号 字符型(40) LS_hospRxno := substr(LS_CFLSH0,1,40); --11.initRxno: 续方的原处方编号 字符型(40) LS_initRxno := null; --获取处方单格式 LS_CFDGS0 := SF_YF_JudgeCFDGS(0,LS_CFLSH0); --12.rxTypeCode: 处方类别代码 字符型(3) if LS_MZCF00.YPDLBH = '0' and LS_CFDGS0 = '5' then LS_rxTypeCode := '1'; --门诊西药 elsif LS_MZCF00.YPDLBH = '2' and LS_CFDGS0 = '5' then LS_rxTypeCode := '2'; --门诊中药饮片 elsif LS_MZCF00.YPDLBH = '0' and LS_CFDGS0 = '4' then LS_rxTypeCode := '3'; --急诊西药 elsif LS_MZCF00.YPDLBH = '2' and LS_CFDGS0 = '4' then LS_rxTypeCode := '4'; --急诊中药 elsif LS_MZCF00.YPDLBH = '0' and LS_CFDGS0 = '2' then LS_rxTypeCode := '5'; --儿科西药 elsif LS_MZCF00.YPDLBH = '2' and LS_CFDGS0 = '2' then LS_rxTypeCode := '6'; --儿科中药饮片 elsif LS_MZCF00.YPDLBH = '0' then LS_rxTypeCode := '7'; --麻、精一 elsif LS_MZCF00.YPDLBH = '1' then LS_rxTypeCode := '8'; --精二 elsif LS_MZCF00.YPDLBH = '2' then LS_rxTypeCode := '9'; --中药饮片 elsif LS_MZCF00.YPDLBH = '1' then LS_rxTypeCode := '10'; --中成药 else LS_rxTypeCode := '99'; --其他 end if; --13.prscTime: 开方时间 日期时间型() LS_prscTime := substr(LS_MZCF00.SRRQ00,1,4)||'-'||substr(LS_MZCF00.SRRQ00,5,2)||'-'||substr(LS_MZCF00.SRRQ00,7,2)||' '||LS_MZCF00.SRSJ00; --14.rxDrugCnt: 药品类目数(剂数) 数值型(16,4) LS_rxDrugCnt := LS_MZCF00.ZYTS00; --15.rxUsedWayCodg: 处方整剂用法编号 字符型(20) LS_rxUsedWayCodg := null; --16.rxUsedWayName: 处方整剂用法名称 字符型(40) LS_rxUsedWayName := null; --17.rxFrquCodg: 处方整剂频次编号 字符型(20) LS_rxFrquCodg := null; --18.rxFrquName: 处方整剂频次名称 字符型(40) LS_rxFrquName := null; --19.rxDosunt: 处方整剂剂量单位 字符型(20) LS_rxDosunt := null; --20.rxDoscnt: 处方整剂单次剂量数 数值型(16,2) LS_rxDoscnt := null; --21.rxDrordDscr: 处方整剂医嘱说明 字符型(400) LS_rxDrordDscr := null; --22.valiDays: 处方有效天数 数值型(10) LS_valiDays := 1; --暂定1天,有必要加字典配置 --23.valiEndTime: 有效截止时间 日期时间型() LS_valiEndTime := to_char(to_date(LS_MZCF00.SRRQ00,'YYYYMMDD')+1,'YYYY-MM-DD')||' '||LS_MZCF00.SRSJ00; --24.reptFlag: 复用(多次)使用标志 字符型(3) LS_reptFlag := '0'; --(0否1是) --25.maxReptCnt: 最大使用次数 数值型(3,0) LS_maxReptCnt := null; --26.minInrvDays: 使用最小间隔(天数) 数值型(3,0) LS_minInrvDays := null; --27.rxCotnFlag: 续方标志 字符型(3) LS_rxCotnFlag := '0'; --(0否1是) --28.longRxFlag: 长期处方标志 字符型(3) LS_longRxFlag := '0'; --(0否1是) --插入表SF_YBJKMX insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,ZDBM00,ZDMC00, JKSXBM,JKSXMC,JKFSZ0,JKFHZ0,FSLXBZ,ZDLX00,BZ0000,CJBM00) select PYBJKID,A.ZDNBID,A.JDBM00,null,substrb(nvl(A.JKDZBM,A.JKSXBM),1,50),substrb(nvl(A.JKDZMC,JKSXMC),1,100), A.JKSXBM,A.JKSXMC,null,null,substrb(a.JKFSLX,1,1),substrb(a.ZDTYPE,1,1),a.BZ0000,A.CJBM00 from BM_TYCJZD A where A.CJBM00=PJKCJBM and nvl(A.SFYX00,'1')='1' and A.JKFSLX in ('1','2','3'); --修改:医保发送变量赋值 for C_YBFS in CUR_UPDATE_YBJKMX_data loop LS_JKFSZ0:=null;--接口发送值 LS_JKFHZ0:=null;--接口返回值 LS_VALUE0:=null;--请求报文字符串 if C_YBFS.JKSXBM = 'mdtrtCertType' then LS_JKFSZ0:=substrb(LS_mdtrtCertType,1,250); --1.mdtrtCertType: 就诊凭证类型 字符型(3) update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='mdtrtCertNo' then --2.mdtrtCertNo: 就诊凭证编号 字符型(50) LS_JKFSZ0:=substrb(LS_mdtrtCertNo,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='cardSn' then --3.cardSn: 卡识别码 字符型(32) LS_JKFSZ0:=substrb(LS_cardSn,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='bizTypeCode' then --4.bizTypeCode: 业务类型代码 字符型(3) LS_JKFSZ0:=substrb(LS_bizTypeCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxExraAttrCode' then --5.rxExraAttrCode: 处方附加属性代码 字符型(3) LS_JKFSZ0:=substrb(LS_rxExraAttrCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='ecToken' then --6.ecToken: 电子凭证令牌 字符型(64) LS_JKFSZ0:=substrb(LS_ecToken,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='authNo' then --7.authNo: 电子凭证线上身份核验流水号 字符型(100) LS_JKFSZ0:=substrb(LS_authNo,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='insuPlcNo' then --8.insuPlcNo: 参保地编号 字符型(6) LS_JKFSZ0:=substrb(LS_insuPlcNo,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='mdtrtareaNo' then --9.mdtrtareaNo: 就医地编号 字符型(6) LS_JKFSZ0:=substrb(LS_mdtrtareaNo,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='hospRxno' then --10.hospRxno: 定点医疗机构处方编号 字符型(40) LS_JKFSZ0:=substrb(LS_hospRxno,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='initRxno' then --11.initRxno: 续方的原处方编号 字符型(40) LS_JKFSZ0:=substrb(LS_initRxno,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxTypeCode' then --12.rxTypeCode: 处方类别代码 字符型(3) LS_JKFSZ0:=substrb(LS_rxTypeCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='prscTime' then --13.prscTime: 开方时间 日期时间型() LS_JKFSZ0:=substrb(LS_prscTime,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxDrugCnt' then --14.rxDrugCnt: 药品类目数(剂数) 数值型(16,4) LS_JKFSZ0:=substrb(LS_rxDrugCnt,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxUsedWayCodg' then --15.rxUsedWayCodg: 处方整剂用法编号 字符型(20) LS_JKFSZ0:=substrb(LS_rxUsedWayCodg,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxUsedWayName' then --16.rxUsedWayName: 处方整剂用法名称 字符型(40) LS_JKFSZ0:=substrb(LS_rxUsedWayName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxFrquCodg' then --17.rxFrquCodg: 处方整剂频次编号 字符型(20) LS_JKFSZ0:=substrb(LS_rxFrquCodg,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxFrquName' then --18.rxFrquName: 处方整剂频次名称 字符型(40) LS_JKFSZ0:=substrb(LS_rxFrquName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxDosunt' then --19.rxDosunt: 处方整剂剂量单位 字符型(20) LS_JKFSZ0:=substrb(LS_rxDosunt,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxDoscnt' then --20.rxDoscnt: 处方整剂单次剂量数 数值型(16,2) LS_JKFSZ0:=substrb(LS_rxDoscnt,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxDrordDscr' then --21.rxDrordDscr: 处方整剂医嘱说明 字符型(400) LS_JKFSZ0:=substrb(LS_rxDrordDscr,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='valiDays' then --22.valiDays: 处方有效天数 数值型(10) LS_JKFSZ0:=substrb(LS_valiDays,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='valiEndTime' then --23.valiEndTime: 有效截止时间 日期时间型() LS_JKFSZ0:=substrb(LS_valiEndTime,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='reptFlag' then --24.reptFlag: 复用(多次)使用标志 字符型(3) LS_JKFSZ0:=substrb(LS_reptFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='maxReptCnt' then --25.maxReptCnt: 最大使用次数 数值型(3,0) LS_JKFSZ0:=substrb(LS_maxReptCnt,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='minInrvDays' then --26.minInrvDays: 使用最小间隔(天数) 数值型(3,0) LS_JKFSZ0:=substrb(LS_minInrvDays,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rxCotnFlag' then --27.rxCotnFlag: 续方标志 字符型(3) LS_JKFSZ0:=substrb(LS_rxCotnFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='longRxFlag' then --28.longRxFlag: 长期处方标志 字符型(3) LS_JKFSZ0:=substrb(LS_longRxFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; end if; end loop; --查询明细数据 for C_detail in CUR_QUERY_detail_data loop LS_detailJson := SF_XT_GETJSONSTR(LS_detailJson,C_detail.JKSXBM,C_detail.JKFSZ0,'0'); end loop; if LS_detailJson is null then PZXZT00:=0; PERRMSG:='明细报文不能为空!'; return; end if; LS_Change_bkeh83_bke045 := nvl(SF_XT_TYZDMC('医保新接口参数设置','Change_bkeh83_bke045'),'00'); LS_rxdrugdetailList := null; for C_rxdrugdetail in ( select a.* from VW_YF_LZCFJKYHYCFMX_NEW a where a.CFLSH0=LS_CFLSH0 ) loop begin select C.MZYBBH,C.BKEH83,upper(substrb(nvl(C.BKEA96,'Y'),1,1)) as BKEA96,c.MZZYBZ,D.XMDW00,D.ZXJJDW into ls_YBXMBH,LS_BKEH83,LS_BKEA96,LS_MZZYBZ,LS_YBDDW0,LS_YBXDW0 from BM_YBFPXM A,VW_BM_YBSFDY_DJBZ C,BM_YBSFXM D where a.BH0000 = C.YBMZFP and a.YBZXLB = C.YBZXLB and C.YBBRLB = ls_YBBRLB and C.SFXMID = C_rxdrugdetail.YPNM00 and C.SFYP00 = 'Y' --是否药品,'0'费用,'1'零散处方 and a.YBZXLB = ls_YBZXLB and a.SYBZ00 <> '2' --非住院 and c.SFBZDJ = ls_SFBZDJ and C.FBBH00 = D.FBBH00(+) and C.YBZXLB = D.YBZXLB(+) and C.ZYYBBH = D.XMBH00(+); exception when no_data_found then PERRMSG := SQLERRM||'YPNM00='||to_char(C_rxdrugdetail.YPNM00)||',药品名称='||C_rxdrugdetail.drugGenname||',规格='||C_rxdrugdetail.drugSpec||',查找不到药品对应医保记录!'; PZXZT00:=0; return; when others then --说明是药品,注意有多条记录 PERRMSG := SQLERRM||'YPNM00='||to_char(C_rxdrugdetail.YPNM00)||',药品名称='||C_rxdrugdetail.drugGenname||',规格='||C_rxdrugdetail.drugSpec||',查找医保编号错误!'; PZXZT00:=0; return; end; if substrb(LS_Change_bkeh83_bke045,1,1) in ('1','3') AND trim(LS_BKEH83) is not null then ls_YBXMBH := LS_BKEH83; end if; LS_DW0000 := C_rxdrugdetail.drugDosunt; ls_XMSL00 := C_rxdrugdetail.drugCnt; if (trim(LS_DW0000)=trim(LS_YBDDW0)) or (trim(LS_DW0000)=trim(LS_YBXDW0)) then --发药=医保大单位或小单位 LS_DW0000:=LS_DW0000; else select YBDW00,YB2J00 into LS_YBDW00,LS_YB2J00 from BM_YD0000 where YPNM00=C_rxdrugdetail.YPNM00; if (trim(LS_YBDW00) is not null) and (nvl(LS_YB2J00,0)>0) then if trim(LS_DW0000)=trim(LS_YBDW00) then LS_DW0000:=LS_YBDW00; elsif LS_XMSL00<>0 then select SF_YF_GETDWYPZHL('1',C_rxdrugdetail.YPNM00,LS_DW0000) into LS_Z2J000 from dual; --转换成医保小单位 LS_DW0000:=LS_YBDW00; if LS_Z2J000 <> nvl(LS_YB2J00,0) then LS_XMSL00 := round(C_rxdrugdetail.drugCnt/LS_YB2J00*LS_Z2J000,4); end if; end if; end if; end if; LS_medListCodg := substrb(ls_YBXMBH,1,50); --1.medListCodg: 医疗目录编码 字符型(50) varchar2(50); LS_fixmedinsHilistId := substrb(C_rxdrugdetail.fixmedinsHilistId,1,30); --2.fixmedinsHilistId: 定点医药机构目录编号 字符型(30) varchar2(30); LS_hospPrepFlag := substrb(C_rxdrugdetail.hospPrepFlag,1,3); --3.hospPrepFlag: 医疗机构制剂标志 字符型(3) varchar2(3); LS_rxItemTypeCode := substrb(C_rxdrugdetail.rxItemTypeCode,1,30); --4.rxItemTypeCode: 处方项目分类代码 字符型(30) varchar2(30); LS_rxItemTypeName := substrb(C_rxdrugdetail.rxItemTypeName,1,100); --5.rxItemTypeName: 处方项目分类名称 字符型(100) varchar2(100); LS_tcmdrugTypeCode := substrb(C_rxdrugdetail.tcmdrugTypeCode,1,30); --6.tcmdrugTypeCode: 中药类别代码 字符型(30) varchar2(30); LS_tcmdrugTypeName := substrb(C_rxdrugdetail.tcmdrugTypeName,1,20); --7.tcmdrugTypeName: 中药类别名称 字符型(20) varchar2(20); LS_tcmherbFoote := substrb(C_rxdrugdetail.tcmherbFoote,1,200); --8.tcmherbFoote: 草药脚注 字符型(200) varchar2(200); LS_mednTypeCode := substrb(C_rxdrugdetail.mednTypeCode,1,100); --9.mednTypeCode: 药物类型代码 字符型(100) varchar2(100); LS_mednTypeName := substrb(C_rxdrugdetail.mednTypeName,1,100); --10.mednTypeName: 药物类型 字符型(100) varchar2(100); LS_mainMedcFlag := substrb(C_rxdrugdetail.mainMedcFlag,1,3); --11.mainMedcFlag: 主要用药标志 字符型(3) varchar2(3); LS_urgtFlag := substrb(C_rxdrugdetail.urgtFlag,1,3); --12.urgtFlag: 加急标志 字符型(3) varchar2(3); LS_basMednFlag := substrb(C_rxdrugdetail.basMednFlag,1,3); --13.basMednFlag: 基本药物标志 字符型(3) varchar2(3); LS_impDrugFlag := substrb(C_rxdrugdetail.impDrugFlag,1,3); --14.impDrugFlag: 是否进口药品 字符型(3) varchar2(3); LS_otcFlag := substrb(C_rxdrugdetail.otcFlag,1,3); --15.otcFlag: 是否OTC药品 字符型(3) varchar2(3); LS_drugGenname := substrb(C_rxdrugdetail.drugGenname,1,100); --16.drugGenname: 药品通用名 字符型(100) varchar2(100); LS_drugDosform := substrb(C_rxdrugdetail.drugDosform,1,30); --17.drugDosform: 药品剂型 字符型(30) varchar2(30); LS_drugSpec := substrb(C_rxdrugdetail.drugSpec,1,40); --18.drugSpec: 药品规格 字符型(40) varchar2(40); LS_drugProdname := substrb(C_rxdrugdetail.drugProdname,1,255); --19.drugProdname: 药品商品名 字符型(255) varchar2(255); LS_prdrName := substrb(C_rxdrugdetail.prdrName,1,100); --20.prdrName: 生厂厂家 字符型(100) varchar2(100); LS_medcWayCodg := substrb(C_rxdrugdetail.medcWayCodg,1,10); --21.medcWayCodg: 用药途径代码 字符型(10) varchar2(10); LS_medcWayDscr := substrb(C_rxdrugdetail.medcWayDscr,1,100); --22.medcWayDscr: 用药途径描述 字符型(100) varchar2(100); LS_medcBegntime := substrb(C_rxdrugdetail.medcBegntime,1,20); --23.medcBegntime: 用药开始时间 日期时间型() varchar2(20); LS_medcEndtime := substrb(C_rxdrugdetail.medcEndtime,1,20); --24.medcEndtime: 用药结束时间 日期时间型() varchar2(20); LS_medcDays := substrb(C_rxdrugdetail.medcDays,1,8); --25.medcDays: 用药天数 数值型(8,2) varchar2(8); LS_sinDosunt := substrb(C_rxdrugdetail.sinDosunt,1,20); --26.sinDosunt: 单次剂量单位 字符型(20) varchar2(20); LS_sinDoscnt := substrb(C_rxdrugdetail.sinDoscnt,1,16); --27.sinDoscnt: 单次用量 数值型(16,4) varchar2(16); LS_usedFrquCodg := substrb(C_rxdrugdetail.usedFrquCodg,1,10); --28.usedFrquCodg: 使用频次编码 字符型(10) varchar2(10); LS_usedFrquName := substrb(C_rxdrugdetail.usedFrquName,1,30); --29.usedFrquName: 使用频次名称 字符型(30) varchar2(30); --LS_drugDosunt := substrb(C_rxdrugdetail.drugDosunt,1,20); --30.drugDosunt: 药品总用药量单位(即发药计价单位,取药或处方流转时药品医保结算使用的单位;如“片“或”盒“) 字符型(20) varchar2(20); --LS_drugCnt := substrb(C_rxdrugdetail.drugCnt,1,16); --31.drugCnt: 药品总用药量 数值型(16,4) varchar2(16); LS_drugDosunt := substrb(LS_DW0000,1,20); --30.drugDosunt: 药品总用药量单位(即发药计价单位,取药或处方流转时药品医保结算使用的单位;如“片“或”盒“) 字符型(20) varchar2(20); LS_drugCnt := substrb(trim(to_char(LS_XMSL00,'99999999990.0999')),1,16); --31.drugCnt: 药品总用药量 数值型(16,4) varchar2(16); LS_drugPric := substrb(C_rxdrugdetail.drugPric,1,16); --32.drugPric: 药品单价 数值型(16,6) varchar2(16); LS_drugSumamt := substrb(C_rxdrugdetail.drugSumamt,1,16); --33.drugSumamt: 药品总金额 数值型(16,2) varchar2(16); if C_rxdrugdetail.hospApprFlag = '2' then --处方明细标记自费发送 LS_hospApprFlag := substrb(C_rxdrugdetail.hospApprFlag,1,3); --34.hospApprFlag: 医院审批标志 字符型(3) varchar2(3); elsif LS_MZZYBZ = '1' then --限住院, 则门诊按自费发送 LS_hospApprFlag := '2'; elsif LS_BKEA96 = 'N' then --非医保项目, 则按自费发送 LS_hospApprFlag := '2'; else --否则按医保发送 LS_hospApprFlag := '1'; end if; LS_selfPayRea := substrb(C_rxdrugdetail.selfPayRea,1,6); --35.selfPayRea: 自费原因类型 字符型(6) varchar2(6); LS_realDscr := substrb(C_rxdrugdetail.realDscr,1,1000); --36.realDscr: 自费原因描述 字符型(1000) varchar2(1000); LS_rxdrugdetail := null; LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'medListCodg',LS_medListCodg,'0'); --1.medListCodg: 医疗目录编码 字符型(50) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'fixmedinsHilistId',LS_fixmedinsHilistId,'0'); --2.fixmedinsHilistId: 定点医药机构目录编号 字符型(30) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'hospPrepFlag',LS_hospPrepFlag,'0'); --3.hospPrepFlag: 医疗机构制剂标志 字符型(3) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'rxItemTypeCode',LS_rxItemTypeCode,'0'); --4.rxItemTypeCode: 处方项目分类代码 字符型(30) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'rxItemTypeName',LS_rxItemTypeName,'0'); --5.rxItemTypeName: 处方项目分类名称 字符型(100) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'tcmdrugTypeCode',LS_tcmdrugTypeCode,'0'); --6.tcmdrugTypeCode: 中药类别代码 字符型(30) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'tcmdrugTypeName',LS_tcmdrugTypeName,'0'); --7.tcmdrugTypeName: 中药类别名称 字符型(20) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'tcmherbFoote',LS_tcmherbFoote,'0'); --8.tcmherbFoote: 草药脚注 字符型(200) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'mednTypeCode',LS_mednTypeCode,'0'); --9.mednTypeCode: 药物类型代码 字符型(100) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'mednTypeName',LS_mednTypeName,'0'); --10.mednTypeName: 药物类型 字符型(100) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'mainMedcFlag',LS_mainMedcFlag,'0'); --11.mainMedcFlag: 主要用药标志 字符型(3) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'urgtFlag',LS_urgtFlag,'0'); --12.urgtFlag: 加急标志 字符型(3) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'basMednFlag',LS_basMednFlag,'0'); --13.basMednFlag: 基本药物标志 字符型(3) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'impDrugFlag',LS_impDrugFlag,'0'); --14.impDrugFlag: 是否进口药品 字符型(3) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'otcFlag',LS_otcFlag,'0'); --15.otcFlag: 是否OTC药品 字符型(3) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugGenname',LS_drugGenname,'0'); --16.drugGenname: 药品通用名 字符型(100) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugDosform',LS_drugDosform,'0'); --17.drugDosform: 药品剂型 字符型(30) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugSpec',LS_drugSpec,'0'); --18.drugSpec: 药品规格 字符型(40) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugProdname',LS_drugProdname,'0'); --19.drugProdname: 药品商品名 字符型(255) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'prdrName',LS_prdrName,'0'); --20.prdrName: 生厂厂家 字符型(100) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'medcWayCodg',LS_medcWayCodg,'0'); --21.medcWayCodg: 用药途径代码 字符型(10) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'medcWayDscr',LS_medcWayDscr,'0'); --22.medcWayDscr: 用药途径描述 字符型(100) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'medcBegntime',LS_medcBegntime,'0'); --23.medcBegntime: 用药开始时间 日期时间型() LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'medcEndtime',LS_medcEndtime,'0'); --24.medcEndtime: 用药结束时间 日期时间型() LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'medcDays',LS_medcDays,'0'); --25.medcDays: 用药天数 数值型(8,2) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'sinDosunt',LS_sinDosunt,'0'); --26.sinDosunt: 单次剂量单位 字符型(20) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'sinDoscnt',LS_sinDoscnt,'0'); --27.sinDoscnt: 单次用量 数值型(16,4) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'usedFrquCodg',LS_usedFrquCodg,'0'); --28.usedFrquCodg: 使用频次编码 字符型(10) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'usedFrquName',LS_usedFrquName,'0'); --29.usedFrquName: 使用频次名称 字符型(30) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugDosunt',LS_drugDosunt,'0'); --30.drugDosunt: 药品总用药量单位(即发药计价单位,取药或处方流转时药品医保结算使用的单位;如“片“或”盒“) 字符型(20) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugCnt',LS_drugCnt,'0'); --31.drugCnt: 药品总用药量 数值型(16,4) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugPric',LS_drugPric,'0'); --32.drugPric: 药品单价 数值型(16,6) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'drugSumamt',LS_drugSumamt,'0'); --33.drugSumamt: 药品总金额 数值型(16,2) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'hospApprFlag',LS_hospApprFlag,'0'); --34.hospApprFlag: 医院审批标志 字符型(3) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'selfPayRea',LS_selfPayRea,'0'); --35.selfPayRea: 自费原因类型 字符型(6) LS_rxdrugdetail := SF_XT_GETJSONSTR(LS_rxdrugdetail,'realDscr',LS_realDscr,'0'); --36.realDscr: 自费原因描述 字符型(1000) insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,JKSXBM,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'rxdrugdetail','data','rxdrugdetail','处方药品明细',null,null,'1',null,'{'||LS_rxdrugdetail||'}' from dual; LS_rxdrugdetailList := SF_XT_GETJSONSTR(LS_rxdrugdetailList,null,LS_rxdrugdetail,'1'); end loop; if LS_rxdrugdetailList is null then PZXZT00:=0; PERRMSG:='待上传的处方明细(处方流水号:'||LS_CFLSH0||')报文不能为空!'; return; end if; --添加处方明细 LS_detailJson := SF_XT_GETJSONSTR(LS_detailJson,'rxdrugdetail',LS_rxdrugdetailList,'2'); LS_diseinfoList := null; for C_diseinfo in ( select a.diagType, --1.diagType: 诊断类别 字符型(3) a.maindiagFlag, --2.maindiagFlag: 主诊断标志 字符型(3) rownum as diagSrtNo, --3.diagSrtNo: 诊断排序号 数值型(2) a.diagCode, --4.diagCode: 诊断代码 字符型(30) a.diagName, --5.diagName: 诊断名称 字符型(100) a.diagDept, --6.diagDept: 诊断科室 字符型(50) a.diagDeptCode, --7.diagDeptCode: 诊断科室代码 字符型(20) a.diagDrNo, --8.diagDrNo: 诊断医生编码 字符型(30) a.diagDrName, --9.diagDrName: 诊断医生姓名 字符型(50) substr(a.ZDRQ00,1,4)||'-'||substr(a.ZDRQ00,5,2)||'-'||substr(a.ZDRQ00,7,2)||' '||a.ZDSJ00 as diagTime, --10.diagTime: 诊断时间 日期时间型() decode(a.diagType,'2',diagCode,null) as tcmDiseCode, --11.tcmDiseCode: 中医病名代码 字符型(30) decode(a.diagType,'2',diagName,null) as tcmDiseName, --12.tcmDiseName: 中医病名 字符型(300) decode(a.diagType,'3',diagCode,null) as tcmsympCode, --13.tcmsympCode: 中医证候代码 字符型(30) decode(a.diagType,'3',diagName,null) as tcmsymp --14.tcmsymp: 中医证候 字符型(300) from ( select nvl(SF_XT_TransYNZDLBToYBBM('0',a.ZZDBZ0),a.ZZDBZ0) as diagType, decode(a.ZZDBZ0,'3','1','1','1','0') as maindiagFlag, nvl(nvl(a.GJBZBM,SF_XT_GETGJBZBMForICD900(a.ICD900,'1')),a.ICD900) as diagCode, nvl(nvl(a.GJBZMC,SF_XT_GETGJBZBMForICD900(a.ICD900,'2')),a.ZDMC00) as diagName, nvl(SF_XT_TransKSBMToGJYBBM(A.JZKS00,'1'),A.JZKS00) as diagDept, null as diagDeptCode, nvl(SF_XT_TransYSToGJYBDM(A.JZYS00),A.JZYS00) as diagDrNo, A.JZYSXM as diagDrName, nvl(trim(a.ZDRQ00),to_char(sysdate,'YYYYMMDD')) ZDRQ00, nvl(trim(a.ZDSJ00),to_char(sysdate,'HH24:MI:SS')) ZDSJ00 from YS_BRZDXX A where GHID00=PGHID00 order by nvl(SF_XT_TransYNZDLBToYBBM('0',ZZDBZ0),a.ZZDBZ0) ) a ) loop LS_diagType := substrb(C_diseinfo.diagType,1,3); --1.diagType: 诊断类别 字符型(3) varchar2(3); LS_maindiagFlag := substrb(C_diseinfo.maindiagFlag,1,3); --2.maindiagFlag: 主诊断标志 字符型(3) varchar2(3); LS_diagSrtNo := substrb(C_diseinfo.diagSrtNo,1,2); --3.diagSrtNo: 诊断排序号 数值型(2) varchar2(2); LS_diagCode := substrb(C_diseinfo.diagCode,1,30); --4.diagCode: 诊断代码 字符型(30) varchar2(30); LS_diagName := substrb(C_diseinfo.diagName,1,100); --5.diagName: 诊断名称 字符型(100) varchar2(100); LS_diagDept := substrb(C_diseinfo.diagDept,1,50); --6.diagDept: 诊断科室 字符型(50) varchar2(50); LS_diagDeptCode := substrb(C_diseinfo.diagDeptCode,1,20); --7.diagDeptCode: 诊断科室代码 字符型(20) varchar2(20); LS_diagDrNo := substrb(C_diseinfo.diagDrNo,1,30); --8.diagDrNo: 诊断医生编码 字符型(30) varchar2(30); LS_diagDrName := substrb(C_diseinfo.diagDrName,1,50); --9.diagDrName: 诊断医生姓名 字符型(50) varchar2(50); LS_diagTime := substrb(C_diseinfo.diagTime,1,20); --10.diagTime: 诊断时间 日期时间型() varchar2(20); LS_tcmDiseCode := substrb(C_diseinfo.tcmDiseCode,1,30); --11.tcmDiseCode: 中医病名代码 字符型(30) varchar2(30); LS_tcmDiseName := substrb(C_diseinfo.tcmDiseName,1,300); --12.tcmDiseName: 中医病名 字符型(300) varchar2(300); LS_tcmsympCode := substrb(C_diseinfo.tcmsympCode,1,30); --13.tcmsympCode: 中医证候代码 字符型(30) varchar2(30); LS_tcmsymp := substrb(C_diseinfo.tcmsymp,1,300); --14.tcmsymp: 中医证候 字符型(300) varchar2(300); if LS_maindiagFlag = '1' then LS_maindiagCode := LS_diagCode; LS_maindiagName := LS_diagName; end if; LS_diseinfo := null; LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagType',LS_diagType,'0'); --1.diagType: 诊断类别 字符型(3) varchar2(3); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'maindiagFlag',LS_maindiagFlag,'0'); --2.maindiagFlag: 主诊断标志 字符型(3) varchar2(3); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagSrtNo',LS_diagSrtNo,'0'); --3.diagSrtNo: 诊断排序号 数值型(2) varchar2(2); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagCode',LS_diagCode,'0'); --4.diagCode: 诊断代码 字符型(30) varchar2(30); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagName',LS_diagName,'0'); --5.diagName: 诊断名称 字符型(100) varchar2(100); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagDept',LS_diagDept,'0'); --6.diagDept: 诊断科室 字符型(50) varchar2(50); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagDeptCode',LS_diagDeptCode,'0'); --7.diagDeptCode: 诊断科室代码 字符型(20) varchar2(20); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagDrNo',LS_diagDrNo,'0'); --8.diagDrNo: 诊断医生编码 字符型(30) varchar2(30); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagDrName',LS_diagDrName,'0'); --9.diagDrName: 诊断医生姓名 字符型(50) varchar2(50); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'diagTime',LS_diagTime,'0'); --10.diagTime: 诊断时间 日期时间型() varchar2(20); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'tcmDiseCode',LS_tcmDiseCode,'0'); --11.tcmDiseCode: 中医病名代码 字符型(30) varchar2(30); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'tcmDiseName',LS_tcmDiseName,'0'); --12.tcmDiseName: 中医病名 字符型(300) varchar2(300); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'tcmsympCode',LS_tcmsympCode,'0'); --13.tcmsympCode: 中医证候代码 字符型(30) varchar2(30); LS_diseinfo := SF_XT_GETJSONSTR(LS_diseinfo,'tcmsymp',LS_tcmsymp,'0'); --14.tcmsymp: 中医证候 字符型(300) varchar2(300); insert into SF_YBJKMX(YBJKID,JKMXID,JDBM00,ZJDBM0,JKSXBM,ZDMC00,JKFSZ0,JKFHZ0,FSLXBZ,BZ0000,VALUE0) select PYBJKID,SQ_SF_YBJKMX_JKMXID.nextval,'diseinfo','data','diseinfo','诊断信息',null,null,'1',null,'{'||LS_diseinfo||'}' from dual; LS_diseinfoList := SF_XT_GETJSONSTR(LS_diseinfoList,null,LS_diseinfo,'1'); end loop; --添加诊断信息 LS_detailJson := SF_XT_GETJSONSTR(LS_detailJson,'diseinfo',LS_diseinfoList,'2'); LS_fixmedinsName := substrb(LS_fixmedinsName,1,200); --1.fixmedinsName: 定点医疗机构名称 字符型(200) varchar2(200); LS_fixmedinsCode := substrb(LS_fixmedinsCode,1,20); --2.fixmedinsCode: 定点医疗机构编号 字符型(20) varchar2(20); LS_mdtrtId := substrb(LS_YBGHH0,1,30); --3.mdtrtId: 医保就诊ID 字符型(30) varchar2(30); LS_medType := substrb(nvl(LS_med_type,'11'),1,6); --4.medType: 医疗类别 字符型(6) varchar2(6); LS_iptOtpNo := substrb(to_char(LS_GHID00),1,30); --5.iptOtpNo: 住院/门诊号 字符型(30) varchar2(30); LS_otpIptFlag := substrb('1',1,3); --6.otpIptFlag: 门诊住院标识 字符型(3) varchar2(3); LS_psnNo := substrb(LS_psn_no,1,30); --7.psnNo: 医保人员编号 字符型(30) varchar2(30); LS_patnName := substrb(LS_aac003,1,40); --8.patnName: 患者姓名 字符型(40) varchar2(40); LS_psnCertType := substrb(LS_ZJLXBH,1,6); --9.psnCertType: 人员证件类型 字符型(6) varchar2(6); LS_certno := substrb(nvl(LS_certno,LS_BRZJBH),1,50); --10.certno: 证件号码 字符型(50) varchar2(50); LS_patnAge := substrb(SF_XT_CSRQTONL_BZ(LS_BRCSRQ,'00:00:00',to_char(sysdate,'YYYYMMDD'),'00:00:00',5),1,6); --11.patnAge: 年龄 数值型(4,1) varchar2(6); LS_patnHgt := null; --12.patnHgt: 患者身高 数值型(6,2) varchar2(6); LS_patnWt := null; --13.patnWt: 患者体重 数值型(6,2) varchar2(6); LS_gend := substrb(nvl(LS_XBBH00,SF_XT_GETYBSXZD('gend',LS_BRXB00,'1','1')),1,6); --14.gend: 性别 字符型(6) varchar2(6); LS_birctrlType := null; --15.birctrlType: 计划生育手术类别 字符型(6) varchar2(6); LS_birctrlMatnDate := null; --16.birctrlMatnDate: 计划生育手术或生育日期 日期型() varchar2(20); LS_matnType := null; --17.matnType: 生育类别 字符型(6) varchar2(6); LS_gesoVal := null; --18.gesoVal: 妊娠(孕周) 数值型(2) varchar2(2); LS_nwbFlag := null; --19.nwbFlag: 新生儿标志 字符型(3) varchar2(3); LS_nwbAge := null; --20.nwbAge: 新生儿日、月龄 字符型(20) varchar2(20); LS_suckPrdFlag := null; --21.suckPrdFlag: 哺乳期标志 数值型(3) varchar2(3); LS_algsHis := null; --22.algsHis: 过敏史 字符型(1000) varchar2(1000); LS_prscDeptName := substrb(LS_GHKSMC,1,50); --23.prscDeptName: 开方科室名称 字符型(50) varchar2(50); LS_prscDeptCode := substrb(LS_GHKS00,1,30); --24.prscDeptCode: 开方科室编号 字符型(30) varchar2(30); LS_drCode := substrb(LS_JZYS00,1,20); --25.drCode: 开方医保医师代码 字符型(20) varchar2(20); LS_prscDrName := substrb(LS_JZYSXM,1,50); --26.prscDrName: 开方医师姓名 字符型(50) varchar2(50); LS_prscDrCertType := '01'; --27.prscDrCertType: 开方医师证件类型 字符型(6) varchar2(6); LS_prscDrCertno := substrb(LS_SFZBH0,1,50); --28.prscDrCertno: 开方医师证件号码 字符型(50) varchar2(50); if LS_YSLB00 = '3' then LS_drProfttlCodg := substrb('233',1,20); --29.drProfttlCodg: 医生职称编码 字符型(20) varchar2(20); LS_drProfttlName := substrb('主诊医师',1,20); --30.drProfttlName: 医生职称名称 字符型(20) varchar2(20); elsif LS_YSLB00 = '4' then LS_drProfttlCodg := substrb('232',1,20); --29.drProfttlCodg: 医生职称编码 字符型(20) varchar2(20); LS_drProfttlName := substrb('副主任医师',1,20); --30.drProfttlName: 医生职称名称 字符型(20) varchar2(20); elsif LS_YSLB00 = '5' then LS_drProfttlCodg := substrb('231',1,20); --29.drProfttlCodg: 医生职称编码 字符型(20) varchar2(20); LS_drProfttlName := substrb('主任医师',1,20); --30.drProfttlName: 医生职称名称 字符型(20) varchar2(20); else LS_drProfttlCodg := substrb('234',1,20); --29.drProfttlCodg: 医生职称编码 字符型(20) varchar2(20); LS_drProfttlName := substrb('医师',1,20); --30.drProfttlName: 医生职称名称 字符型(20) varchar2(20); end if; LS_drDeptCode := substrb(LS_YSKSBH,1,30); --31.drDeptCode: 医生科室编码 字符型(30) varchar2(30); LS_drDeptName := substrb(LS_YSKSMC,1,50); --32.drDeptName: 医生科室名称 字符型(50) varchar2(50); LS_caty := substrb(LS_GJYBKS,1,6); --33.caty: 科别 字符型(6) varchar2(6); LS_mdtrtTime := substrb(to_char(to_date(LS_GHRQ00||LS_GHSJ00,'YYYYMMDDHH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS'),1,20); --34.mdtrtTime: 就诊时间 日期时间型() varchar2(20); if LS_TSBZBH is not null then LS_diseCodg := substrb(SF_XT_GETGJBZBMForTSBZBM(LS_YBZXLB,LS_TSBZBH,'1'),1,30); --35.diseCodg: 病种编码 字符型(30) varchar2(30); LS_diseName := substrb(SF_XT_GETGJBZBMForTSBZBM(LS_YBZXLB,LS_TSBZBH,'2'),1,500); --36.diseName: 病种名称 字符型(500) varchar2(500); LS_spDiseFlag := substrb('1',1,3); --37.spDiseFlag: 特殊病种标志 字符型(3) varchar2(3); else LS_diseCodg := null; --35.diseCodg: 病种编码 字符型(30) varchar2(30); LS_diseName := null; --36.diseName: 病种名称 字符型(500) varchar2(500); LS_spDiseFlag := substrb('0',1,3); --37.spDiseFlag: 特殊病种标志 字符型(3) varchar2(3); end if; LS_maindiagCode := substrb(LS_maindiagCode,1,30); --38.maindiagCode: 主诊断代码 字符型(30) varchar2(30); LS_maindiagName := substrb(LS_maindiagName,1,100); --39.maindiagName: 主诊断名称 字符型(100) varchar2(100); LS_diseCondDscr := null; --40.diseCondDscr: 疾病病情描述 字符型(2000) varchar2(2000); LS_hiFeesetlType := null; --41.hiFeesetlType: 医保费用结算类型 字符型(6) varchar2(6); LS_hiFeesetlName := null; --42.hiFeesetlName: 医保费用类别名称 字符型(20) varchar2(20); LS_rgstFee := null; --43.rgstFee: 挂号费 数值型(16,2) varchar2(16); LS_medfeeSumamt := null; --44.medfeeSumamt: 医疗费总额 数值型(16,2) varchar2(16); if LS_SFCZ00 = '0' then LS_fstdiagFlag := '1'; --45.fstdiagFlag: 是否初诊 字符型(3) varchar2(3); else LS_fstdiagFlag := '0'; --45.fstdiagFlag: 是否初诊 字符型(3) varchar2(3); end if; --修改:医保发送变量赋值 for C_YBFS in CUR_UPDATE_YBJKMX_mdtrtinfo loop LS_JKFSZ0:=null;--接口发送值 LS_JKFHZ0:=null;--接口返回值 LS_VALUE0:=null;--请求报文字符串 if C_YBFS.JKSXBM = 'fixmedinsName' then LS_JKFSZ0:=substrb(LS_fixmedinsName,1,250); --1.fixmedinsName: 定点医疗机构名称 字符型(200) varchar2(200); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='fixmedinsCode' then --2.fixmedinsCode: 定点医疗机构编号 字符型(20) varchar2(20); LS_JKFSZ0:=substrb(LS_fixmedinsCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='mdtrtId' then --3.mdtrtId: 医保就诊ID 字符型(30) varchar2(30); LS_JKFSZ0:=substrb(LS_mdtrtId,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='medType' then --4.medType: 医疗类别 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_medType,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='iptOtpNo' then --5.iptOtpNo: 住院/门诊号 字符型(30) varchar2(30); LS_JKFSZ0:=substrb(LS_iptOtpNo,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='otpIptFlag' then --6.otpIptFlag: 门诊住院标识 字符型(3) varchar2(3); LS_JKFSZ0:=substrb(LS_otpIptFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='psnNo' then --7.authNo: 电子凭证线上身份核验流水号 字符型(100) LS_JKFSZ0:=substrb(LS_psnNo,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='patnName' then --8.patnName: 患者姓名 字符型(40) varchar2(40); LS_JKFSZ0:=substrb(LS_patnName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='psnCertType' then --9.psnCertType: 人员证件类型 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_psnCertType,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='certno' then --10.certno: 证件号码 字符型(50) varchar2(50); LS_JKFSZ0:=substrb(LS_certno,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='patnAge' then --11.patnAge: 年龄 数值型(4,1) varchar2(6); LS_JKFSZ0:=substrb(LS_patnAge,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='patnHgt' then --12.patnHgt: 患者身高 数值型(6,2) varchar2(6); LS_JKFSZ0:=substrb(LS_patnHgt,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='patnWt' then --13.patnWt: 患者体重 数值型(6,2) varchar2(6); LS_JKFSZ0:=substrb(LS_patnWt,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='gend' then --14.gend: 性别 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_gend,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='birctrlType' then --15.birctrlType: 计划生育手术类别 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_birctrlType,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='birctrlMatnDate' then --16.birctrlMatnDate: 计划生育手术或生育日期 日期型() varchar2(20); LS_JKFSZ0:=substrb(LS_birctrlMatnDate,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='matnType' then --17.matnType: 生育类别 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_matnType,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='gesoVal' then --18.gesoVal: 妊娠(孕周) 数值型(2) varchar2(2); LS_JKFSZ0:=substrb(LS_gesoVal,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='nwbFlag' then --19.nwbFlag: 新生儿标志 字符型(3) varchar2(3); LS_JKFSZ0:=substrb(LS_nwbFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='nwbAge' then --20.nwbAge: 新生儿日、月龄 字符型(20) varchar2(20); LS_JKFSZ0:=substrb(LS_nwbAge,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='suckPrdFlag' then --21.suckPrdFlag: 哺乳期标志 数值型(3) varchar2(3); LS_JKFSZ0:=substrb(LS_suckPrdFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='algsHis' then --22.algsHis: 过敏史 字符型(1000) varchar2(1000); LS_JKFSZ0:=substrb(LS_algsHis,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='prscDeptName' then --23.prscDeptName: 开方科室名称 字符型(50) varchar2(50); LS_JKFSZ0:=substrb(LS_prscDeptName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='prscDeptCode' then --24.prscDeptCode: 开方科室编号 字符型(30) varchar2(30); LS_JKFSZ0:=substrb(LS_prscDeptCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='drCode' then --25.drCode: 开方医保医师代码 字符型(20) varchar2(20); LS_JKFSZ0:=substrb(LS_drCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='prscDrName' then --26.prscDrName: 开方医师姓名 字符型(50) varchar2(50); LS_JKFSZ0:=substrb(LS_prscDrName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='prscDrCertType' then --27.prscDrCertType: 开方医师证件类型 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_prscDrCertType,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='prscDrCertno' then --28.prscDrCertno: 开方医师证件号码 字符型(50) varchar2(50); LS_JKFSZ0:=substrb(LS_prscDrCertno,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='drProfttlCodg' then --29.drProfttlCodg: 医生职称编码 字符型(20) varchar2(20); LS_JKFSZ0:=substrb(LS_drProfttlCodg,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='drProfttlName' then --30.drProfttlName: 医生职称名称 字符型(20) varchar2(20); LS_JKFSZ0:=substrb(LS_drProfttlName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='drDeptCode' then --31.drDeptCode: 医生科室编码 字符型(30) varchar2(30); LS_JKFSZ0:=substrb(LS_drDeptCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='drDeptName' then --32.drDeptName: 医生科室名称 字符型(50) varchar2(50); LS_JKFSZ0:=substrb(LS_drDeptName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='caty' then --33.caty: 科别 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_caty,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='mdtrtTime' then --34.mdtrtTime: 就诊时间 日期时间型() varchar2(20); LS_JKFSZ0:=substrb(LS_mdtrtTime,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='diseCodg' then --35.diseCodg: 病种编码 字符型(30) varchar2(30); LS_JKFSZ0:=substrb(LS_diseCodg,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='diseName' then --36.diseName: 病种名称 字符型(500) varchar2(500); LS_JKFSZ0:=substrb(LS_diseName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='spDiseFlag' then --37.spDiseFlag: 特殊病种标志 字符型(3) varchar2(3); LS_JKFSZ0:=substrb(LS_spDiseFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='maindiagCode' then --38.maindiagCode: 主诊断代码 字符型(30) varchar2(30); LS_JKFSZ0:=substrb(LS_maindiagCode,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='maindiagName' then --39.maindiagName: 主诊断名称 字符型(100) varchar2(100); LS_JKFSZ0:=substrb(LS_maindiagName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='diseCondDscr' then --40.diseCondDscr: 疾病病情描述 字符型(2000) varchar2(2000); LS_JKFSZ0:=substrb(LS_diseCondDscr,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='hiFeesetlType' then --41.hiFeesetlType: 医保费用结算类型 字符型(6) varchar2(6); LS_JKFSZ0:=substrb(LS_hiFeesetlType,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='hiFeesetlName' then --42.hiFeesetlName: 医保费用类别名称 字符型(20) varchar2(20); LS_JKFSZ0:=substrb(LS_hiFeesetlName,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='rgstFee' then --43.rgstFee: 挂号费 数值型(16,2) varchar2(16); LS_JKFSZ0:=substrb(LS_rgstFee,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='medfeeSumamt' then --44.medfeeSumamt: 医疗费总额 数值型(16,2) varchar2(16); LS_JKFSZ0:=substrb(LS_medfeeSumamt,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; elsif C_YBFS.JKSXBM='fstdiagFlag' then --45.fstdiagFlag: 是否初诊 字符型(3) varchar2(3); LS_JKFSZ0:=substrb(LS_fstdiagFlag,1,250); update SF_YBJKMX set JKFSZ0=LS_JKFSZ0,JKFHZ0=LS_JKFHZ0,VALUE0=LS_VALUE0 where YBJKID=PYBJKID and JKSXBM=C_YBFS.JKSXBM and JKMXID=C_YBFS.JKMXID; end if; end loop; --查询就诊信息 for C_detail in CUR_QUERY_detail_mdtrtinfo loop LS_mdtrtinfo := SF_XT_GETJSONSTR(LS_mdtrtinfo,C_detail.JKSXBM,C_detail.JKFSZ0,'0'); end loop; --添加就诊信息 LS_detailJson := SF_XT_GETJSONSTR(LS_detailJson,'mdtrtinfo',LS_mdtrtinfo,'1'); --明细项加标题 LS_detailJson := SF_XT_GETJSONSTR(null,'data',LS_detailJson,'1'); --input输入 LS_inputJson := SF_XT_GETJSONSTR(LS_inputJson,'input',LS_detailJson,'1'); --拼接整个报文, http服务拼接arg0, 非http直接拼接 if LS_TYCJ00.INFNLX='3' then LS_QQDATA := SF_XT_GETJSONSTR(LS_QQDATA,'arg0',LS_MainJson||','||LS_inputJson,'1'); else LS_QQDATA := LS_MainJson||','||LS_inputJson; end if; LS_QQDATA:='{'||LS_QQDATA||'}'; --修改请求报文 update SF_YBJKRZ set QQDATA=LS_QQDATA where YBJKID=PYBJKID;--请求报文 if PCOMMIT='Y' then commit; end if; PZXZT00:=1; --输出:执行状态 0:失败 1:成功 PERRMSG:=null; --输出:错误信息 exception when no_data_found then PZXZT00:=0; PERRMSG:=substrb('药房医保接口(电子处方上传预核验)交互生成失败!原因:'||sqlerrm,1,200); rollback; when others then PZXZT00:=0; PERRMSG:=substrb('药房医保接口(电子处方上传预核验)交互生成失败!原因:'||sqlerrm,1,200); rollback; end;