| 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;            }        }    }}
 |