/****************************************************************************** * 文件名称: HisBusiness.cs * 文件说明: HIS业务的封装 * 当前版本: V1.0 * 创建日期: 2022-04-14 * * 2020-04-14: 增加 SingleDownload 方法 * 2020-04-14: 增加 AutoDownload 方法 ******************************************************************************/ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ChengDuMedInsu2; using MedicalInsurance.Business; using MedicalInsurance.Helper; using MedicalInsurance.Common; using MedicalInsurance.Forms; using System.Windows.Forms; namespace MedicalInsurance.Business { class HisBusiness { /// /// 医保目录单个版本号的下载 /// /// /// /// /// /// public int SingleDownload(string ver, int directoryType,Sunny.UI.UIProcessBar uiProcessBar, out string errorMessage) { string txtPath = string.Empty; errorMessage = ""; int iResult = -1; string funNo = ""; switch (directoryType) { case 0://药品 { funNo = "1301"; break; } case 1://诊疗 { funNo = "1305"; break; } case 2://材料 { funNo = "1306"; break; } case 3://疾病诊断 { funNo = "1307"; break; } case 4://手术 { funNo = "1308"; break; } case 5://慢性病 { funNo = "1309"; break; } case 6://DRGs { funNo = "1310"; break; ; } case 7://日间手术 { funNo = "1311"; break; } case 8://字典表 { break; } } try { CenterBusiness centerBusiness = new CenterBusiness(); JObject joRtn = centerBusiness.DownDirecotry(funNo, ver); if (JsonHelper.parseBusinessJson(joRtn, out errorMessage) == 0) { txtPath = joRtn["filePath"].ToString(); DataImoport bus = new DataImoport(); JObject joImportRtn = bus.importDataToIrisByTxt(txtPath, 50, directoryType + 1, uiProcessBar); if (JsonHelper.parseBusinessJson(joImportRtn, out errorMessage) == 0) { iResult = 0; } else { GlobalVariables.writeLog(joImportRtn.ToString()); errorMessage = "导入数据出现错误,请查看日志!";//joImportRtn["errorMessage"].ToString(); } } return iResult; } catch (Exception ex) { errorMessage = "SingleDownload提示:" + ex.Message; return -1; } } /// /// 自动下载医保目录,直到最新版本(返回报错) /// /// /// /// /// public int AutoDownload(int directoryType, Sunny.UI.UIProcessBar uiProcessBar, out string errorMessage) { int iResult = 0; errorMessage = ""; try { InsuServices irisBus = new InsuServices(); JObject joMaxVerNO = irisBus.getDirectoryMaxVersionNO(directoryType); string ver = joMaxVerNO["MaxVersionNO"].ToString(); iResult = JsonHelper.parseBusinessJson(joMaxVerNO,out errorMessage); while (iResult == 0) { iResult = SingleDownload(ver, directoryType,uiProcessBar, out errorMessage); } return iResult; } catch (Exception ex) { errorMessage = ex.Message; return -1; } } /// /// 读卡 /// /// public int readCard(string funNO, out string outParam) { outParam = ""; string errorMsg = ""; int errorCode; string errorMessage; try { ChengDuMedInsu2.YinHaiCom yinhaiCom = new ChengDuMedInsu2.YinHaiCom(); JObject joInput = GlobalVariables.setYinHaiParam(funNO); string sSafeControlsRtnValue = string.Empty; yinhaiCom.Init(); yinhaiCom.Call(funNO, joInput.ToString(), out sSafeControlsRtnValue); JObject joRtn = new JObject(); joRtn = JObject.Parse(sSafeControlsRtnValue); errorCode = int.Parse(joRtn["code"].ToString()); errorMessage = joRtn["message"].ToString(); if (errorCode != 1) { outParam = JsonHelper.getIrisReturnJson(-100, "调用银海控件失败!", joRtn).ToString(); return 1; } else { JObject jodata = JObject.FromObject(joRtn["data"]); GlobalVariables.insuplc_admdvs = jodata["insuplc_admdvs"].ToString(); GlobalVariables.mdtrt_cert_type = jodata["mdtrt_cert_type"].ToString(); GlobalVariables.mdtrt_cert_no = jodata["mdtrt_cert_no"].ToString(); GlobalVariables.psn_cert_type = jodata["psn_cert_type"].ToString(); GlobalVariables.certno = jodata["certno"].ToString(); GlobalVariables.psn_name = jodata["psn_name"].ToString(); //GlobalVariables.psn_no = jodata["psn_no"].ToString(); GlobalVariables.card_sn = jodata["card_sn"].ToString(); GlobalVariables.card_token = jodata["card_token"].ToString(); dynamic joInput_1101 = new JObject(); dynamic joTmp = new JObject(); joTmp.mdtrt_cert_type = GlobalVariables.mdtrt_cert_type; joTmp.mdtrt_cert_no = GlobalVariables.mdtrt_cert_no; joTmp.card_sn = GlobalVariables.card_sn; joTmp.begntime = ""; joTmp.psn_cert_type = GlobalVariables.psn_cert_type; joTmp.certno = GlobalVariables.certno; joTmp.psn_name = GlobalVariables.psn_name; dynamic joExpContent = new JObject(); joExpContent.card_token = GlobalVariables.card_token; joTmp.Add("expContent", JObject.FromObject(joExpContent)); joInput_1101.Add("data", JObject.FromObject(joTmp)); InvokeHelper center = new InvokeHelper(); JObject joCenterServiceRtn = center.InvokeCenterService("1101", joInput_1101.ToString()); if (joCenterServiceRtn["infcode"].ToString() != "0") { outParam = "调用1101失败! "; return -1; } else { string output = joCenterServiceRtn["output"].ToString(); //展示信息界面 JObject joOutput = JObject.Parse(output); //编码转换 JArray jaConvertCode = new JArray(); JObject joConvertCodeParam = new JObject(); joConvertCodeParam.Add("hospitalDr", GlobalVariables.hospitalDr); joConvertCodeParam.Add("interfaceDr", GlobalVariables.interfaceDr); joConvertCodeParam.Add("output", joOutput); jaConvertCode.Add(joConvertCodeParam); JObject joConvertCode = new JObject(); joConvertCode.Add("code", "09010054"); joConvertCode.Add("params", jaConvertCode); InvokeHelper invoker = new InvokeHelper(); JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换"); PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn); //相关信息转换到登记面板 if (frmPatientInfo.ShowDialog() == DialogResult.OK) { joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo)); } else { outParam = JsonHelper.getIrisExceptionJson(-1, "读卡", "收款员取消读卡").ToString(); return -1; } } outParam = joCenterServiceRtn.ToString(); GlobalVariables.writeLog("readCard","",outParam); return 0; } } catch (Exception ex) { outParam = "异常:" + ex.Message; return -1; } } /// /// 获取患者基本信息 /// /// /// public int GetHisPatBaseInfo(out string errMsg) { errMsg = ""; try { dynamic joTmp = new JObject(); joTmp.admID = GlobalVariables.admDr; InvokeHelper invoker = new InvokeHelper(); JObject joRtn = invoker.invokeHISService(JsonHelper.getIrisServiceInparamBaseJson("05110021", joTmp).ToString(), "获取HIS患者基本信息"); if (JsonHelper.parseBusinessJson(joRtn, out errMsg) != 0) { errMsg = "获取HIS患者基本信息失败,请联系管理员!" + errMsg; return -1; } else { errMsg = joRtn.ToString(); return 0; } } catch (Exception ex) { errMsg = "GetHisPatBaseInfo异常:" + ex.Message; return -1; } } public int checkName(string insuName, out string errMsg) { try { errMsg = ""; string hisPatBaseInfo = ""; if (GetHisPatBaseInfo(out hisPatBaseInfo) != 0) { errMsg = hisPatBaseInfo; return -1; } string hisPatName = JsonHelper.getJsonValue(JObject.Parse(hisPatBaseInfo), "result.patName"); if (hisPatName.Trim() != insuName.Trim()) { errMsg = "患者姓名(" + hisPatName + ")与参保人姓名(" + insuName + ")不一致,请检查!"; return -1; } else { return 0; } } catch (Exception ex) { errMsg = "核对HIS与医保平台姓名一致性发生异常:" + ex.Message; return -1; } } /// /// 签到 /// /// public int MutualAidSignIn(out JObject joRtn) { string outParam = ""; string inParam = ""; try { dynamic jsonSignIn = new JObject(); dynamic jsonInput = new JObject(); jsonSignIn.opter_no = GlobalVariables.operatorNO; MedicalInsurance.Common.Common com = new MedicalInsurance.Common.Common(); jsonSignIn.mac = com.GetMAC(); jsonSignIn.ip = com.GetIP(); jsonInput.signin = jsonSignIn; InvokeHelper invoke = new InvokeHelper(); outParam = invoke.InvokeCenterServiceOfMutualAid("9001", jsonInput.ToString()).ToString(); GlobalVariables.writeLog("共济加密" + outParam); joRtn = JObject.Parse(outParam); if (joRtn["infcode"].ToString() == "0") { GlobalVariables.mutualAidSignNO = joRtn["output"]["signinoutb"]["sign_no"].ToString(); return 0; } else { //joRtn = JsonHelper.getIrisExceptionJson(-100, "签到异常", (string)joRtn["err_msg"]); 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 MutualAidReadCard(string funNO, out string outParam, string centerUrl) { outParam = ""; string errorMsg = ""; int errorCode; string errorMessage; JObject joSignRtn = new JObject(); if (MutualAidSignIn(out joSignRtn) != 0) { GlobalVariables.writeLog(joSignRtn.ToString()); outParam = JsonHelper.getIrisExceptionJson(-1, "签到异常", (string)joSignRtn["err_msg"]).ToString(); return -1; } else { GlobalVariables.writeLog(joSignRtn.ToString()); } try { ChengDuMedInsu2.YinHaiCom yinhaiCom = new ChengDuMedInsu2.YinHaiCom(); JObject joInput = GlobalVariables.setYinHaiParam("1101"); string sSafeControlsRtnValue = string.Empty; yinhaiCom.Init(); yinhaiCom.Call(funNO, joInput.ToString(), out sSafeControlsRtnValue); JObject joRtn = new JObject(); joRtn = JObject.Parse(sSafeControlsRtnValue); errorCode = int.Parse(joRtn["code"].ToString()); errorMessage = joRtn["message"].ToString(); if (errorCode != 1) { outParam = JsonHelper.getIrisReturnJson(-100, "调用银海控件失败!", joRtn).ToString(); return 1; } else { JObject jodata = JObject.FromObject(joRtn["data"]); GlobalVariables.mutualAidPatientAreaCode = jodata["insuplc_admdvs"].ToString(); dynamic joInput_1101 = new JObject(); dynamic joTmp = new JObject(); joTmp.mdtrt_cert_type = jodata["mdtrt_cert_type"].ToString(); joTmp.mdtrt_cert_no = jodata["mdtrt_cert_no"].ToString(); joTmp.card_sn = jodata["card_sn"].ToString(); joTmp.begntime = ""; joTmp.psn_cert_type = jodata["psn_cert_type"].ToString(); joTmp.certno = jodata["certno"].ToString(); joTmp.psn_name = jodata["psn_name"].ToString(); GlobalVariables.card_token = jodata["card_token"].ToString(); dynamic joExpContent = new JObject(); joExpContent.card_token = jodata["card_token"].ToString(); joTmp.Add("expContent", JObject.FromObject(joExpContent)); joInput_1101.Add("data", JObject.FromObject(joTmp)); InvokeHelper center = new InvokeHelper(); JObject joCenterServiceRtn = center.InvokeCenterServiceOfMutualAid("1101", joInput_1101.ToString()); if (joCenterServiceRtn["infcode"].ToString() != "0") { outParam = "调用1101失败! "; return -1; } else { string output = joCenterServiceRtn["output"].ToString(); //展示信息界面 JObject joOutput = JObject.Parse(output); //编码转换 JArray jaConvertCode = new JArray(); JObject joConvertCodeParam = new JObject(); joConvertCodeParam.Add("hospitalDr", GlobalVariables.hospitalDr); joConvertCodeParam.Add("interfaceDr", GlobalVariables.mutualAidInterfaceDr); joConvertCodeParam.Add("output", joOutput); jaConvertCode.Add(joConvertCodeParam); JObject joConvertCode = new JObject(); joConvertCode.Add("code", "09010054"); joConvertCode.Add("params", jaConvertCode); InvokeHelper invoker = new InvokeHelper(); JObject joConvertCodeRtn = invoker.invokeInsuService(joConvertCode.ToString(), "患者信息编码转换"); PatientInsuInfo frmPatientInfo = new PatientInsuInfo(joConvertCodeRtn); //相关信息转换到登记面板 if (frmPatientInfo.ShowDialog() == DialogResult.OK) { joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("selectedInsuInfo", frmPatientInfo.joSelectedInsuInfo)); joCenterServiceRtn.Property("output").AddBeforeSelf(new JProperty("comInfo", jodata)); } else { outParam = JsonHelper.getIrisExceptionJson(-1, "读卡", "收款员取消读卡").ToString(); return -1; } } outParam = joCenterServiceRtn.ToString(); GlobalVariables.writeLog("MutualAidReadCard", "", outParam); return 0; } } catch (Exception ex) { outParam = "异常:" + ex.Message; return -1; } } } }