/****************************************************************************** * 文件名称: CenterBusiness.cs * 文件说明: 中心交易封装 * 当前版本: V1.0 * 创建日期: 2022-06-20 * * * 2020-06-20: 增加 CenterBusiness 类 * ***** 2020-06-20: 增加 CardReader 方法,获取URL地址,USER信息,地方版SSCard.dll使用 * ***** 2020-06-20: 增加 CardReader 方法重载,国家版电子凭证使用 * ***** 2020-06-20: 增加 Init 方法,SSCard环境初始化 ******************************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; using PTMedicalInsurance.Common; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Variables; namespace PTMedicalInsurance.Business { class CenterBusiness { private InvokeHelper invoker = new InvokeHelper(); /// /// 医保相关查询交易-不需要下载文件解析 /// /// /// public JObject InvokeMedicalInsuranceInquiry(string funNO, JObject joInData) { try { JObject joInput = new JObject(); if (funNO != "1201") joInput.Add("data", joInData); else joInput.Add("medinsinfo", joInData); return invoker.invokeCenterService(funNO, joInput); } catch (Exception ex) { //封装返回值的格式 {"errorCode":"-1","errorMessage":"InvokeMedicalInsuranceInquiry+异常信息"} return JsonHelper.setExceptionJson(-1, "InvokeMedicalInsuranceInquiry:", ex.Message); } } #region 目录下载 /// /// 下载业务(1301-1309),返回会的JSON串中包含解压后的TXT地址 /// /// /// /// /// public JObject DownDictionay(JObject joData) { string outparam = ""; try { dynamic joData1 = new JObject(); //joData1.type = "CHNL_CODE"; //joData1.parentValue = ""; //joData1.admdvs = ""; //joData1.date = "2020-01-01"; //joData1.vali_flag = ""; Global.pat.insuplc_admdvs = "440100"; dynamic joParam = new JObject(); joParam.data = joData; JObject joRtn = invoker.invokeCenterService("1901", joParam); outparam = joRtn.ToString(); return joRtn; } catch (Exception ex) { JObject joRtn = JsonHelper.setExceptionJson(-1, "DownDictionay:", ex.Message); outparam = joRtn.ToString(); return joRtn; } } /// /// 下载业务(1301-1309),返回会的JSON串中包含解压后的TXT地址 /// /// /// /// /// public JObject DownDirecotry(string funNO, string ver) { try { dynamic joTmp = new JObject(); joTmp.ver = ver; JObject joData = new JObject { { "data",joTmp} }; return invoker.invokeCenterService(funNO, joData); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "DownDirecotry:", ex.Message); } } /// /// 91021保存文件 /// /// /// 正常返回结果同中心文档,异常返回结果同HIS public JObject SaveFile(JObject jo) { try { string filename = JsonHelper.getDestValue(jo, "output.filename"); string file_qury_no = JsonHelper.getDestValue(jo, "output.file_qury_no"); string data_cnt = JsonHelper.getDestValue(jo, "output.data_cnt"); dynamic jo9102InParam = new JObject(); dynamic jofsDownloadIn = new JObject(); jofsDownloadIn.filename = filename; jofsDownloadIn.file_qury_no = file_qury_no; jofsDownloadIn.fixmedins_code = Global.inf.hospitalNO; jo9102InParam.fsDownloadIn = jofsDownloadIn; return invoker.DownloadCenterFile(JsonHelper.setCenterInpar("9102", jo9102InParam.ToString())); //return invoker.invokeCenterService("9102", jo9102InParam.ToString()); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "9102保存文件", ex.Message); } } #endregion /// /// 签到 /// /// public int signIn(out JObject joRtn) { string outParam = ""; string inParam = ""; try { Global.curEvt.mac = "11-11-11-11-11"; Global.curEvt.ip = "11.11.11.11"; //string password = "Gzyb$867"; string password = Global.inf.password; Global.writeLog($"password:{password}"); string currenttime = DateTime.Now.ToString("yyyyMMddHHmmss"); password = Encrypt.GetMD5(currenttime + password).ToUpper(); dynamic jsonSignIn = new JObject(); dynamic jsonInput = new JObject(); jsonSignIn.opter_no = Global.user.ID; jsonSignIn.mac = Global.curEvt.mac; jsonSignIn.ip = Global.curEvt.ip; jsonSignIn.password = password; // "682EB392C797F9E18904E00D5C37111D"; //if (Global.inf.hospitalNO == "H44010400081") //{ //jsonSignIn.userid = Global.inf.hospitalNO; } // else // { // jsonSignIn.userid = "023166"; // } jsonSignIn.userid = Global.inf.userid; jsonSignIn.currenttime = currenttime; jsonInput.data = jsonSignIn; outParam = invoker.invokeCenterService("9001", jsonInput).ToString(); joRtn = JObject.Parse(outParam); if (joRtn["infcode"].ToString() == "0") { Global.curEvt.signno = JsonHelper.getDestValue(joRtn, "output.result.sign_no"); return 0; } else { //joRtn = JsonHelper.getIrisExceptionJson(-100, "签到异常", (string)joRtn["err_msg"]); Global.curEvt.signno = ""; return -1; } } catch (Exception ex) { joRtn = new JObject(); joRtn.Add("infcode", -1); joRtn.Add("err_msg", outParam + ex.Message); //joRtn = JsonHelper.getIrisExceptionJson(-100,"签到异常", outParam + ex.Message); return -2; } } public int Authenticate(out string outPar) { outPar = ""; try { JObject joData = new JObject(); joData.Add("mdtrt_cert_type", Global.pat.mdtrtcertType); joData.Add("card_sn", Global.pat.card.SN); joData.Add("card_pwd", Global.pat.card.password); joData.Add("psn_cert_type", Global.pat.certType); joData.Add("certno", Global.pat.card.NO); joData.Add("real_certno", Global.pat.certNO); joData.Add("card_lv", Global.pat.card.level); joData.Add("psn_name", Global.pat.name); joData.Add("extra", ""); JObject joInput = new JObject(); joInput.Add("data",joData); string funNO = "1160"; JObject joRtn = invoker.invokeCenterService(funNO, joInput); string errMsg; if (JsonHelper.parseCenterRtnValue(joRtn,out errMsg) != 0) { outPar = errMsg; return -1; } else { outPar = joRtn.ToString(); return 0; } } catch (Exception ex) { return -1; } } //就医特殊属性上传 public int UploadAdmSpecAttribute(out string outPar) { outPar = ""; if (string.IsNullOrEmpty(Global.pat.specAttribute)) { outPar = "患者就医特殊属性(specAttribute)为空!"; return -1; } try { JObject joData = new JObject(); joData.Add("mdtrt_id", Global.pat.mdtrtID); joData.Add("psn_no", Global.pat.psn_no); joData.Add("psn_cert_type", Global.pat.certType); joData.Add("certno", Global.pat.certNO); joData.Add("psn_name", Global.pat.name); joData.Add("ipt_otp_no", Global.pat.adm_Dr); joData.Add("ipt_psn_sp_flag_type", Global.pat.specAttribute); joData.Add("ipt_psn_sp_flag", 1); joData.Add("memo", ""); joData.Add("admdvs", Global.pat.insuplc_admdvs); JObject joInput = new JObject(); joInput.Add("IptPsnSpFlagRegIn", joData); string funNO = "2406"; JObject joRtn = invoker.invokeCenterService(funNO, joInput); string errMsg; if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0) { outPar = errMsg; return -1; } else { outPar = joRtn.ToString(); return 0; } } catch (Exception ex) { outPar = "上传就医属性异常:" + ex.Message; return -1; } } /// /// 住院患者登记 /// /// public int inPatReg(string inParam,out string outparam) { outparam = ""; try { return 0; } catch (Exception ex) { return -1; } } public int cancleRegister(string funNO, out string outparam) { outparam = ""; string errMsg; try { dynamic joTmp = new JObject(); joTmp.mdtrt_id = Global.pat.mdtrtID; joTmp.psn_no = Global.pat.psn_no; joTmp.mdtrt_mode = 0; JObject joInput = new JObject(); if (funNO == "2202") { joTmp.ipt_otp_no = Global.pat.adm_Dr.ToString(); joInput.Add("mdtrtinfo", joTmp); } else { joInput = joTmp; } //JObject joData = new JObject(); //joData.Add("mdtrtinfo", joTmp); //好后上传给中心 //string inpar = GlobalVariables.SetJsonParam("2405", joTmp).ToString(); JObject joRtn = invoker.invokeCenterService(funNO, joInput); if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0) { outparam = errMsg; return -1; } else { outparam = joRtn.ToString(); return 0; } } catch (Exception ex) { outparam = "取消登记异常" + funNO + ":" + ex.Message; return -1; } } /// /// 取消费用传送 /// /// /// /// public int cancleFeeUpload(string funNO,out string errMsg) { errMsg = ""; try { //组织入参 dynamic joTmp = new JObject(); if (funNO == "2205") { joTmp.feedetl_sn = "0000"; } else { joTmp.feedetl_sn = "0000"; } joTmp.mdtrt_id = Global.pat.mdtrtID; joTmp.psn_no = Global.pat.psn_no; joTmp.expContent = ""; JObject joData = new JObject(); if (funNO == "2205") { joData.Add("data", joTmp); } else { JArray jaData = new JArray(); jaData.Add(joTmp); joData.Add("feeinfo", joTmp); } //组织好后上传给中心 JObject joRtn = invoker.invokeCenterService(funNO, joData); if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0) { return -1; } else { return 0; } } catch (Exception ex) { errMsg = "cancleFeeUpload异常:" + ex.Message; return -1; } } public int cancleSettlement(string funNO, out string outparam) { outparam = ""; string errMsg; try { dynamic joTmp = new JObject(); joTmp.mdtrt_id = Global.pat.mdtrtID; joTmp.psn_no = Global.pat.psn_no; joTmp.setl_id = Global.pat.settlID; joTmp.expContent = ""; JObject joData = new JObject(); joData.Add("mdtrtinfo", joTmp); JObject joRtn = invoker.invokeCenterService(funNO, joData); if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0) { outparam = errMsg; return -1; } else { outparam = joRtn.ToString(); return 0; } } catch (Exception ex) { outparam = "取消结算异常" + funNO + ":" + ex.Message; return -1; } } public int UpdateDirectory_HEB(JObject joData, out string outparam) { outparam = ""; string funNO = ""; string errMsg; try { int dirType = int.Parse(JsonHelper.getDestValue(joData,"type")); joData.Remove("type"); JObject joInput = new JObject(); joInput.Add("data", joData); switch (dirType) { case 1: { funNO = "1360"; break; } case 2://诊疗 { funNO = "1365"; break; } case 3://材料 { funNO = "1364"; break; } } JObject joRtn = invoker.invokeCenterService(funNO, joInput); if (JsonHelper.parseCenterRtnValue(joRtn, out errMsg) != 0) { outparam = errMsg; return -1; } else { outparam = joRtn.ToString(); return 0; } } catch (Exception ex) { outparam = "查询中心目录算异常" + funNO + ":" + ex.Message; return -1; } } } }