123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474 |
- /******************************************************************************
- * 文件名称: 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
- {
- /// <summary>
- /// 医保目录单个版本号的下载
- /// </summary>
- /// <param name="ver"></param>
- /// <param name="directoryType"></param>
- /// <param name="uiProcessBar"></param>
- /// <param name="errorMessage"></param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 自动下载医保目录,直到最新版本(返回报错)
- /// </summary>
- /// <param name="directoryType"></param>
- /// <param name="uiProcessBar"></param>
- /// <param name="errorMessage"></param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 读卡
- /// </summary>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 获取患者基本信息
- /// </summary>
- /// <param name="errMsg"></param>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 签到
- /// </summary>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 共济读卡
- /// </summary>
- /// <returns></returns>
- 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;
- }
- }
- }
- }
|