/****************************************************************************** * 文件名称: DataImoport.cs * 文件说明: 医保目录数据导入 * 当前版本: V1.0 * 创建日期: 2022-04-12 * * 2020-04-12: 增加GetDrugsJsonByTxt方法 * 2020-04-12: 增加GetMedicalServiceJsonByTxt方法 * 2020-04-12: 增加 GetMaterialJsonByTxt 方法 * 2020-04-14: 增加 GetDiagnoseJsonByTxt 方法 * 2020-04-14: 增加 GetOperationJsonByTxt 方法 * 2020-04-14: 增加 applyDataToIris 方法 * 2020-04-14: 增加 importDataToIrisByTxt 方法 * 2020-04-14: 增加 GetOperationJsonByTxt 方法 * 2020-04-14: 增加 GetOperationJsonByTxt 方法 * 2020-04-14: 增加 GetOperationJsonByTxt 方法 * 2020-04-14: 增加 GetOperationJsonByTxt 方法 ******************************************************************************/ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using PTMedicalInsurance.Variables; using PTMedicalInsurance.Helper; using PTMedicalInsurance.Business; using System.Data; using System.Text; using System.IO.Compression; using System.Linq; using System.IO; namespace PTMedicalInsurance { class DataImoport { MIIrisServices mis = new MIIrisServices(); InvokeHelper invoker = new InvokeHelper(); /// /// 读取TXT后,Array中的空值会返回NULL,将其转换为"".应有其他方式处理,后面再优化 /// 明天试试Convert.ToString(a) /// /// /// private string convertArrayNull(string arrayValue) { string returnValue = string.Empty; if (arrayValue == "null") { returnValue = ""; } else { returnValue = arrayValue; } return returnValue; } /// /// 从TXT文件中获取药品数据,并组装成JSON /// /// /// private JObject GetDrugsJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[2]; //对照的医保药品编码 jsonTemp.Name = arr[3]; //对照的医保药品名称 jsonTemp.HisType = "1"; jsonTemp.HisTypeName = "药品"; jsonTemp.LocateCode = ""; jsonTemp.LocateName = ""; //jsonTemp.DosageFormCode = arr[9]; jsonTemp.DosageFormName = arr[4]; //剂型 jsonTemp.CategoryCode = arr[9]; //收费类型 //jsonTemp.CategoryName = arr[12]; jsonTemp.Specification = arr[5]; //规格 jsonTemp.SpecificationCode = arr[5]; //规格 jsonTemp.UnitOfPackag = arr[6]; //计量单位 jsonTemp.UnitOfValuation = arr[6]; //计量单位 //jsonTemp.StartDate = convertArrayNull(arr[36]); //jsonTemp.EndDate = convertArrayNull(arr[37]); //jsonTemp.PinyinSearchCode = arr[50]; //jsonTemp.Instructions = arr[35]; jsonTemp.ExceptContent = arr[10]; //备注 jsonTemp.Connotation = ""; jsonTemp.ValidFlag = "1"; jsonTemp.Note = arr[10]; //备注 //jsonTemp.VersionNO = arr[82]; //jsonTemp.VersionName = arr[83]; jsonTemp.UseFlag = "1"; //jsonTemp.DrugSafetyStandardCode = arr[8]; // //jsonTemp.ApprovalNO = arr[61]; //jsonTemp.SpecialFlag = convertArrayNull(arr[11]); //jsonTemp.LimitFlag = convertArrayNull(arr[57]); //jsonTemp.LimitRange = arr[56]; //jsonTemp.UniqueRecordNO = arr[79]; //jsonTemp.Manufacturers = arr[53]; //jsonTemp.Company = arr[85]; jsonTemp.CeilingPrice = arr[7]; jsonTemp.NationalCode = arr[2]; //国家项目代码 jsonTemp.NationalName = arr[3]; //国家项目代码 jsonTemp.ChargeItemLevel = arr[8]; //收费等级 if (jsonTemp.ChargeItemLevel == "1") { jsonTemp.ChargeItemLevelName = "甲类"; jsonTemp.SelfPercent = "0"; } else if (jsonTemp.ChargeItemLevel == "2") { jsonTemp.ChargeItemLevelName = "乙类"; jsonTemp.SelfPercent = "0"; } else if (jsonTemp.ChargeItemLevel == "3") { jsonTemp.ChargeItemLevelName = "丙类"; jsonTemp.SelfPercent = "100"; } else { jsonTemp.ChargeItemLevel = "4"; jsonTemp.SelfPercent = "100"; jsonTemp.ChargeItemLevelName = "未知"; } return jsonTemp; } /// /// 从TXT文件中获取诊疗数据,并组装成JSON /// /// /// private JObject GetMedicalServiceJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[2]; jsonTemp.Name = arr[3]; jsonTemp.HisType = "2"; jsonTemp.HisTypeName = "诊疗"; jsonTemp.LocateCode = ""; jsonTemp.LocateName = ""; //jsonTemp.DosageFormCode = arr[9]; //jsonTemp.DosageFormName = arr[10]; jsonTemp.CategoryCode = arr[7]; jsonTemp.CategoryName = arr[7]; jsonTemp.Specification = ""; jsonTemp.SpecificationCode = ""; jsonTemp.UnitOfPackag = arr[4]; jsonTemp.UnitOfValuation = arr[4]; //jsonTemp.StartDate = convertArrayNull(arr[11]); //jsonTemp.EndDate = convertArrayNull(arr[12]); //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[9]); //jsonTemp.Instructions = arr[3]; jsonTemp.ExceptContent = ""; //arr[8]; //jsonTemp.Connotation = arr[5]; jsonTemp.ValidFlag = "1"; jsonTemp.Note = ""; //arr[7]; //jsonTemp.VersionNO = arr[14]; //jsonTemp.VersionName = arr[15]; jsonTemp.UseFlag = "1"; jsonTemp.DrugSafetyStandardCode = ""; jsonTemp.ApprovalNO = ""; jsonTemp.SpecialFlag = ""; jsonTemp.LimitFlag = ""; jsonTemp.LimitRange = ""; //jsonTemp.UniqueRecordNO = arr[13]; jsonTemp.CeilingPrice = arr[5]; jsonTemp.NationalCode = arr[9]; //国家项目代码 jsonTemp.NationalName = arr[3]; //国家项目代码 jsonTemp.ChargeItemLevel = arr[6]; if (jsonTemp.ChargeItemLevel == "1") { jsonTemp.ChargeItemLevelName = "甲类"; jsonTemp.SelfPercent = "0"; } else if (jsonTemp.ChargeItemLevel == "2") { jsonTemp.ChargeItemLevelName = "乙类"; jsonTemp.SelfPercent = "0"; } else if (jsonTemp.ChargeItemLevel == "3") { jsonTemp.ChargeItemLevelName = "丙类"; jsonTemp.SelfPercent = "100"; } else { jsonTemp.ChargeItemLevel = "4"; jsonTemp.SelfPercent = "100"; jsonTemp.ChargeItemLevelName = "未知"; } return jsonTemp; } /// /// 从TXT文件中获取材料数据,并组装成JSON /// /// /// private JObject GetMaterialJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[2]; jsonTemp.Name = arr[3]; jsonTemp.HisType = "3"; jsonTemp.HisTypeName = "材料"; jsonTemp.LocateCode = ""; jsonTemp.LocateName = ""; jsonTemp.DosageFormCode = ""; jsonTemp.DosageFormName = ""; jsonTemp.CategoryCode = arr[7]; jsonTemp.CategoryName = arr[7]; //jsonTemp.Specification = arr[7]; //jsonTemp.SpecificationCode = arr[6]; jsonTemp.UnitOfPackag = arr[4]; //jsonTemp.UnitOfValuation = convertArrayNull(arr[35]); //jsonTemp.StartDate = convertArrayNull(arr[46]); //jsonTemp.EndDate = convertArrayNull(arr[47]); //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[5]); //jsonTemp.Instructions = arr[27]; jsonTemp.ExceptContent = arr[8]; //备注 jsonTemp.Connotation = ""; jsonTemp.ValidFlag = "1"; jsonTemp.Note = arr[8]; //jsonTemp.VersionNO = arr[69]; //jsonTemp.VersionName = arr[70]; jsonTemp.UseFlag = "1"; jsonTemp.DrugSafetyStandardCode = ""; //jsonTemp.ApprovalNO = arr[50]; //注册备案号 jsonTemp.SpecialFlag = ""; //jsonTemp.LimitFlag = convertArrayNull(arr[33]); //jsonTemp.LimitRange = arr[34]; //jsonTemp.UniqueRecordNO = arr[68]; //jsonTemp.Manufacturers = arr[59]; jsonTemp.CeilingPrice = arr[5]; jsonTemp.NationalCode = arr[2]; //国家项目代码 jsonTemp.NationalName = arr[3]; //国家项目代码 jsonTemp.ChargeItemLevel = arr[6]; if (jsonTemp.ChargeItemLevel == "1") { jsonTemp.ChargeItemLevelName = "甲类"; jsonTemp.SelfPercent = "0"; } else if (jsonTemp.ChargeItemLevel == "乙") { jsonTemp.ChargeItemLevelName = "2"; jsonTemp.SelfPercent = "0"; } else if (jsonTemp.ChargeItemLevel == "3") { jsonTemp.ChargeItemLevelName = "丙类"; jsonTemp.SelfPercent = "100"; } else { jsonTemp.ChargeItemLevel = "04"; jsonTemp.SelfPercent = "100"; jsonTemp.ChargeItemLevelName = "未知"; } return jsonTemp; } /// /// 从TXT文件中获取诊断数据,并组装成JSON /// /// /// private JObject GetDiagnoseJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[10]; jsonTemp.Name = arr[11]; jsonTemp.HisType = "4"; jsonTemp.HisTypeName = "诊断"; jsonTemp.LocateCode = ""; jsonTemp.LocateName = ""; jsonTemp.DosageFormCode = ""; jsonTemp.DosageFormName = ""; jsonTemp.CategoryCode = ""; jsonTemp.CategoryName = ""; jsonTemp.Specification = ""; jsonTemp.SpecificationCode = ""; jsonTemp.UnitOfPackag = ""; jsonTemp.UnitOfValuation = ""; jsonTemp.StartDate = ""; jsonTemp.EndDate = ""; //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]); jsonTemp.Instructions = ""; jsonTemp.ExceptContent = ""; jsonTemp.Connotation = ""; jsonTemp.ValidFlag = arr[18]; jsonTemp.Note = arr[17]; jsonTemp.VersionNO = arr[22]; jsonTemp.VersionName = arr[23]; jsonTemp.UseFlag = arr[18]; jsonTemp.DrugSafetyStandardCode = ""; jsonTemp.ApprovalNO = ""; jsonTemp.SpecialFlag = ""; jsonTemp.LimitFlag = ""; jsonTemp.LimitRange = ""; jsonTemp.UniqueRecordNO = arr[19]; jsonTemp.Manufacturers = ""; return jsonTemp; } /// /// 慢性病 /// /// /// private JObject GetChronicDiseaseJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[0]; jsonTemp.Name = arr[1]; jsonTemp.HisType = "6"; jsonTemp.HisTypeName = "慢性病"; jsonTemp.LocateCode = ""; jsonTemp.LocateName = ""; jsonTemp.DosageFormCode = ""; jsonTemp.DosageFormName = ""; jsonTemp.CategoryCode = arr[14]; jsonTemp.CategoryName = arr[15]; jsonTemp.Specification = ""; jsonTemp.SpecificationCode = ""; jsonTemp.UnitOfPackag = ""; jsonTemp.UnitOfValuation = ""; jsonTemp.StartDate = ""; jsonTemp.EndDate = ""; //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[2]); jsonTemp.Instructions = ""; jsonTemp.ExceptContent = ""; jsonTemp.Connotation = arr[10]; jsonTemp.ValidFlag = arr[5]; jsonTemp.Note = arr[4]; jsonTemp.VersionNO = arr[9]; jsonTemp.VersionName = arr[11]; jsonTemp.UseFlag = arr[5]; jsonTemp.DrugSafetyStandardCode = ""; jsonTemp.ApprovalNO = ""; jsonTemp.SpecialFlag = ""; jsonTemp.LimitFlag = ""; jsonTemp.LimitRange = ""; jsonTemp.UniqueRecordNO = arr[6]; jsonTemp.Manufacturers = ""; return jsonTemp; } /// /// 从TXT文件中获取手术数据,并组装成JSON /// /// /// private JObject GetOperationJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[10]; jsonTemp.Name = arr[11]; jsonTemp.HisType = "5"; jsonTemp.HisTypeName = "手术"; //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]); jsonTemp.ValidFlag = arr[18]; jsonTemp.Note = arr[17]; jsonTemp.VersionNO = arr[22]; jsonTemp.VersionName = arr[23]; jsonTemp.UseFlag = arr[18]; jsonTemp.UniqueRecordNO = arr[19]; return jsonTemp; } /// /// DRGs /// /// /// private JObject GetDRGsJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[1]; jsonTemp.Name = arr[2]; jsonTemp.HisType = "7"; jsonTemp.HisTypeName = "DRGs"; jsonTemp.Connotation = arr[10]; jsonTemp.Instructions = arr[3]; //适用手术操作代码 jsonTemp.ExceptContent = arr[4]; //适用手术操作名称 //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]); jsonTemp.ValidFlag = arr[5]; jsonTemp.Note = arr[11]; jsonTemp.VersionNO = arr[9]; jsonTemp.VersionName = arr[12]; jsonTemp.UseFlag = arr[5]; jsonTemp.UniqueRecordNO = arr[6]; return jsonTemp; } private JObject GetDaySurgeryJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[1]; jsonTemp.Name = arr[2]; jsonTemp.HisType = "8"; jsonTemp.HisTypeName = "日间手术"; jsonTemp.Connotation = arr[8]; //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]); jsonTemp.ValidFlag = arr[3]; jsonTemp.Note = arr[9]; jsonTemp.VersionNO = arr[7]; jsonTemp.VersionName = arr[10]; jsonTemp.UseFlag = arr[3]; jsonTemp.UniqueRecordNO = arr[4]; return jsonTemp; } /// /// 中药饮片 /// /// /// private JObject GetChineseDrugJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[0]; jsonTemp.Name = arr[1]; jsonTemp.HisType = "10"; jsonTemp.HisTypeName = "中药饮片"; jsonTemp.Connotation = arr[8]; //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]); jsonTemp.ValidFlag = arr[3]; jsonTemp.Note = arr[9]; jsonTemp.VersionNO = arr[7]; jsonTemp.VersionName = arr[10]; jsonTemp.UseFlag = arr[3]; jsonTemp.UniqueRecordNO = arr[4]; return jsonTemp; } /// /// 医疗机构制剂 /// /// /// private JObject GetHosPreparationJsonByTxt(string[] arr) { dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.updateUserID = Global.user.ID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.Code = arr[0]; jsonTemp.Name = arr[1]; jsonTemp.HisType = "11"; jsonTemp.HisTypeName = "医疗机构制剂"; jsonTemp.Connotation = arr[8]; //jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]); jsonTemp.ValidFlag = arr[64]; jsonTemp.Note = arr[9]; jsonTemp.VersionNO = arr[70]; jsonTemp.VersionName = arr[71]; jsonTemp.UseFlag = arr[64]; jsonTemp.UniqueRecordNO = arr[46]; //药品注册证号 jsonTemp.Instructions = arr[77]; jsonTemp.NationalCode = arr[57]; //国家医保药品目录编码 jsonTemp.NationalName = arr[58]; //国家医保药品目录名称 return jsonTemp; } /// /// 提交数据给IRIS /// /// /// /// private JObject applyDataToIris(string code, JArray jaParam) { JObject joIn = new JObject(); JObject joRtn = new JObject(); string outParam = ""; try { joIn.Add(new JProperty("params", jaParam)); joIn.Add("code", code); joIn.Add("updateUserID", Global.user.ID); InvokeHelper invoker = new InvokeHelper(); string sInput = joIn.ToString(); joRtn = invoker.invokeInsuService(sInput, "applyDataToIris"); outParam = joRtn.ToString(); return joRtn; } catch (Exception ex) { joRtn = JsonHelper.setExceptionJson(-1, "applyDataToIris", ex.Message); outParam = joRtn.ToString(); return joRtn; } } /// /// 从TXT里导数据到IRIS /// /// /// /// /// /// public JObject importDataToIrisByTxt(string txtPath, int size, int direcType, Sunny.UI.UIProcessBar processBar) { int errorCount = 0; string errorMsg = ""; try { /*据说速度更快 * https://www.cnblogs.com/eniac12/p/4398310.html * using (StreamReader sr = File.OpenText(fileName)) { string s = String.Empty; while ((s = sr.ReadLine()) != null) { //do what you have to here } } Convert.ToString(a) */ string[] lines = System.IO.File.ReadAllLines(txtPath); dynamic jaParams = new JArray(); int rows = lines.Length; processBar.Maximum = rows; for (int i = 0; i < rows; i++) { processBar.Value = i + 1; Application.DoEvents(); string lineTmp = lines[i]; string[] arr = lineTmp.Split('\t'); //判断是哪种目录类型 string code = string.Empty; switch (direcType) { //药品 case 1: { jaParams.Add(GetDrugsJsonByTxt(arr)); break; } //诊疗 case 2: { jaParams.Add(GetMedicalServiceJsonByTxt(arr)); break; } //材料 case 3: { jaParams.Add(GetMaterialJsonByTxt(arr)); break; } //诊断 case 4: { jaParams.Add(GetDiagnoseJsonByTxt(arr)); break; } //手术 case 5: { jaParams.Add(GetOperationJsonByTxt(arr)); break; } //慢性病 case 6: { jaParams.Add(GetChronicDiseaseJsonByTxt(arr)); break; } //DRGs case 7: { jaParams.Add(GetDRGsJsonByTxt(arr)); break; } //日间手术 case 8: { jaParams.Add(GetDaySurgeryJsonByTxt(arr)); break; } //中药饮片 case 10: { jaParams.Add(GetChineseDrugJsonByTxt(arr)); break; } //医疗机构制剂 case 11: { jaParams.Add(GetHosPreparationJsonByTxt(arr)); break; } } code = "09010035"; //每50行提交一次给后台 int currentRows = i + 1; if ((currentRows % size == 0) && (i != 0)) { JObject joRtn = applyDataToIris(code, jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" +errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } if ((currentRows == rows) && (currentRows % size != 0)) { JObject joRtn = applyDataToIris(code, jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } } return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "importDataToIrisByTxt", ex.Message); } } /// /// 从txt获取数据更新插入到医保字典明细表 /// /// yp;hc;sfxm public JObject ImportToDictionaryDataDetail(string filePath, Sunny.UI.UIProcessBar ProcessBar) { int errorCount = 0; int i = 0; string errorMsg = ""; try { string[] lines = System.IO.File.ReadAllLines(filePath); dynamic jaParams = new JArray(); int rows = lines.Length; ProcessBar.Maximum = rows; using (var reader = new StreamReader(filePath, System.Text.Encoding.GetEncoding("gb2312"))) { var encoding = Encoding.UTF8; // 设置编码格式为 UTF-8(根据需求选择其他编码) while (!reader.EndOfStream) { ProcessBar.Value = i + 1; string line = reader.ReadLine(); Application.DoEvents(); //MessageBox.Show("line:" + line); byte[] bytes = encoding.GetBytes(line); // 将每行内容转换成字节数组 string decodedString = encoding.GetString(bytes); // 对字节数组进行解码得到原始字符串 //MessageBox.Show("decodedString:" + decodedString); string[] arr = decodedString.Split('|'); dynamic joTmp = new JObject(); string HBDictionaryDr = ""; string DictionaryType = arr[0].ToString(); //获取并插入字典主表的DR JObject joData = new JObject(); joData.Add("HospitalDr", Global.inf.hospitalDr); joData.Add("InterfaceDr", Global.inf.interfaceDr); joData.Add("InsuCode", DictionaryType); JObject joRtnHBDictionary = mis.insertDictionary(joData); if (JsonHelper.parseIrisRtnValue(joRtnHBDictionary, out errorMsg) != 0) { return JsonHelper.setExceptionJson(-1, "insertDictionary", "导入的医保字典类型" + DictionaryType + "在医保字典主表HB_Dictionary中不存在,插入主表数据失败!"); } else { HBDictionaryDr = JsonHelper.getDestValue(joRtnHBDictionary, "data.HBDictionaryDr"); if (HBDictionaryDr == "") { return JsonHelper.setExceptionJson(-1, "insertDictionary", "HBDictionaryDr返回值为空"); } } joTmp.ID = ""; joTmp.updateUserID = Global.user.ID; joTmp.HospitalDr = Global.inf.hospitalDr; joTmp.InterfaceDr = Global.inf.interfaceDr; joTmp.HBDictionaryDr = HBDictionaryDr; //arr[0].ToString(); joTmp.Code = arr[2].ToString(); joTmp.Descripts = arr[3].ToString(); joTmp.PinyinSearchCode = arr[0].ToString(); jaParams.Add(joTmp); //每50行提交一次给后台 int currentRows = i + 1; if ((currentRows % 50 == 0) && (i != 0)) { JObject joRtn = mis.insertDictionaryDataDetail(jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } if ((currentRows == rows) && (currentRows % 50 != 0)) { JObject joRtn = mis.insertDictionaryDataDetail(jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } i = i + 1; } } return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "ImportToDirectory", ex.Message); } } /// /// 从txt获取数据更新插入到医保目录表 /// /// yp;hc;sfxm public JObject ImportToDirectory(string filePath, int directoryType, int size, Sunny.UI.UIProcessBar ProcessBar) { int errorCount = 0; int i = 0; string errorMsg = ""; try { string[] lines = System.IO.File.ReadAllLines(filePath); dynamic jaParams = new JArray(); int rows = lines.Length; ProcessBar.Maximum = rows; using (var reader = new StreamReader(filePath, System.Text.Encoding.GetEncoding("gb2312"))) { var encoding = Encoding.UTF8; // 设置编码格式为 UTF-8(根据需求选择其他编码) while (!reader.EndOfStream) { ProcessBar.Value = i + 1; string line = reader.ReadLine(); Application.DoEvents(); byte[] bytes = encoding.GetBytes(line); // 将每行内容转换成字节数组 string decodedString = encoding.GetString(bytes); // 对字节数组进行解码得到原始字符串 string[] arr = decodedString.Split('|'); if (directoryType == 0) { jaParams.Add(GetDrugsJsonByTxt(arr)); //break; } else if (directoryType == 1) { jaParams.Add(GetMedicalServiceJsonByTxt(arr)); //break; } else if (directoryType == 2) { jaParams.Add(GetMaterialJsonByTxt(arr)); //break; } string code = "09010035"; //每50行提交一次给后台 int currentRows = i + 1; if ((currentRows % size == 0) && (i != 0)) { JObject joRtn = applyDataToIris(code, jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } if ((currentRows == rows) && (currentRows % size != 0)) { JObject joRtn = applyDataToIris(code, jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } i = i + 1; } } return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "ImportToDirectory", ex.Message); } } /// /// 从txt获取数据更新插入到医保目录表 /// /// yp;hc;sfxm public JObject ImportToDirectoryNew(string filePath,int directoryType, int size, Sunny.UI.UIProcessBar ProcessBar) { int errorCount = 0; string errorMsg = ""; try { string[] lines = System.IO.File.ReadAllLines(filePath); dynamic jaParams = new JArray(); int rows = lines.Length; ProcessBar.Maximum = rows; for (int i = 0; i < rows; i++) { ProcessBar.Value = i + 1; Application.DoEvents(); string lineTmp = lines[i]; string[] arr = lineTmp.Split('|'); string code = string.Empty; if (directoryType == 0) { jaParams.Add(GetDrugsJsonByTxt(arr)); break; } else if (directoryType == 1) { jaParams.Add(GetMedicalServiceJsonByTxt(arr)); break; } else if (directoryType == 2) { jaParams.Add(GetMaterialJsonByTxt(arr)); break; } code = "09010035"; //每50行提交一次给后台 int currentRows = i + 1; if ((currentRows % size == 0) && (i != 0)) { JObject joRtn = applyDataToIris(code, jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } if ((currentRows == rows) && (currentRows % size != 0)) { JObject joRtn = applyDataToIris(code, jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } } return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "ImportToDirectory", ex.Message); } } /// /// 从txt获取数据更新插入到医保对照表 /// /// /// /// /// /// public JObject ImportToMapRelationFromTxt(string filePath, int directoryType, DataTable dtHis, Sunny.UI.UIProcessBar ProcessBar) { int errorCount = 0; int i = 0; string errorMsg = ""; string hisTypeName = ""; try { //获取Out文件信息 string[] lines = System.IO.File.ReadAllLines(filePath); int rows = lines.Length; ProcessBar.Maximum = rows; if (directoryType == 0) hisTypeName = "药品"; else if (directoryType == 1) hisTypeName = "诊疗"; else if (directoryType == 2) hisTypeName = "材料"; using (var reader = new StreamReader(filePath, System.Text.Encoding.GetEncoding("gb2312"))) { var encoding = Encoding.UTF8; // 设置编码格式为 UTF-8(根据需求选择其他编码) while (!reader.EndOfStream) { ProcessBar.Value = i + 1; string line = reader.ReadLine(); Application.DoEvents(); byte[] bytes = encoding.GetBytes(line); // 将每行内容转换成字节数组 string decodedString = encoding.GetString(bytes); // 对字节数组进行解码得到原始字符串 string[] arr = decodedString.Split('|'); string FileHISCode = arr[0]; //out文件中的HIS编码 string InsuCode = arr[2]; //医保目录编码 string InsuName = arr[3]; //医保目录名称 //2.循环HIS目录信息主要取MapID foreach (DataRow dataRow in dtHis.Rows) //for (int iHIS = 0; iHIS < dtHis.Rows.Count; iHIS++) { string HISCode = dataRow["itemCode"].ToString(); //HIS药品编码 string HISName = dataRow["itemDesc"].ToString(); //HIS药品名称 string MapID = dataRow["MapID"].ToString(); //MapID string ChargeItemDr = dataRow["ID"].ToString(); //string HISCode = dtHis.Rows[iHIS]["itemCode"].ToString(); //HIS药品编码 //string HISName = dtHis.Rows[iHIS]["itemDesc"].ToString(); //HIS药品名称 //string MapID = dtHis.Rows[iHIS]["MapID"].ToString(); //MapID //string ChargeItemDr = dtHis.Rows[iHIS]["ID"].ToString(); //3.判断HIS编码一致再更新 if (FileHISCode == HISCode) { //查询医保平台医保目录表的ID-对应医保对照表DiretoryDr JObject joInput = new JObject(); joInput.Add("currentPage", "1"); joInput.Add("pageSize", "50"); joInput.Add("serviceCode", "09010042"); joInput.Add("directoryType", directoryType + 1); joInput.Add("directoryCode", InsuCode); joInput.Add("directoryDr", Global.inf.interfaceDr); JObject joRtnDI = mis.getMIDirectoryByPagination(joInput); string DiretoryDr = JsonHelper.getDestValue(joRtnDI, "result.rows[0].medInsuDirectoryID"); //插入医保平台医保对照表 JArray jaParams = new JArray(); dynamic jsonTemp = new JObject(); if (MapID == "0") jsonTemp.ID = ""; else jsonTemp.ID = MapID; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.updateUserID = Global.user.ID; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.HISCode = HISCode; jsonTemp.HISName = HISName; jsonTemp.ChargeItemDr = ChargeItemDr; jsonTemp.DiretoryDr = DiretoryDr; //医保目录表ID dtCenter.Rows[iCenter]["medInsuDirectoryID"] jsonTemp.State = 1; //1.已对照 2.已对照但未上传 3 已对照且已上传 jsonTemp.HisType = directoryType + 1; jsonTemp.HisTypeName = hisTypeName; jsonTemp.InsuCode = InsuCode; jsonTemp.InsuName = InsuName; jsonTemp.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); jaParams.Add(jsonTemp); JObject joIn = new JObject(); joIn.Add(new JProperty("params", jaParams)); joIn.Add("code", "09010040"); //InvokeHelper invoker = new InvokeHelper(); JObject joRtn = invoker.invokeInsuService(joIn.ToString(), "插入对照信息"); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } } } i = i + 1; } } return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "ImportToMapRelation", ex.Message); } } /// /// 从DataTable获取数据更新插入到医保对照表 /// /// /// HIS字典 /// /// public JObject ImportToMapRelationFromDT(int HisType, DataTable dtHis, DataGridView dgv, Sunny.UI.UIProcessBar ProcessBar) { int errorCount = 0; int i = 0; string errorMsg = ""; string hisTypeName = ""; try { int rows = dtHis.Rows.Count; ProcessBar.Maximum = rows; if (HisType == 63) hisTypeName = "收费类别"; else if (HisType == 70) hisTypeName = "剂型"; else if (HisType == 229) hisTypeName = "用法"; //2.循环HIS目录信息主要取MapID //foreach (DataRow dataRow in dtHis.Rows) for (int iHIS = 0; iHIS < dtHis.Rows.Count; iHIS++) { Boolean bAdd = false; ProcessBar.Value = i + 1; Application.DoEvents(); string HISCode = dtHis.Rows[iHIS]["code"].ToString(); //HIS药品编码 string HISName = dtHis.Rows[iHIS]["desc"].ToString(); //HIS药品名称 //string MapID = dtHis.Rows[iHIS]["MapID"].ToString(); //MapID string ChargeItemDr = dtHis.Rows[iHIS]["id"].ToString(); for (int idgv = 0; idgv < dgv.Rows.Count; idgv++) { if (dgv.Rows[idgv].Cells["HISCode"].Value.ToString() == HISCode) bAdd = true; } if (bAdd == false) { //插入医保平台医保对照表 JArray jaParams = new JArray(); dynamic jsonTemp = new JObject(); jsonTemp.ID = ""; jsonTemp.HospitalDr = Global.inf.hospitalDr; jsonTemp.updateUserID = Global.user.ID; jsonTemp.InterfaceDr = Global.inf.interfaceDr; jsonTemp.HISCode = HISCode; jsonTemp.HISName = HISName; jsonTemp.ChargeItemDr = ChargeItemDr; jsonTemp.DiretoryDr = ""; //医保目录表ID dtCenter.Rows[iCenter]["medInsuDirectoryID"] jsonTemp.State = 0; //1.已对照 2.已对照但未上传 3 已对照且已上传 jsonTemp.HisType = HisType; jsonTemp.HisTypeName = hisTypeName; jsonTemp.InsuCode = ""; jsonTemp.InsuName = ""; jsonTemp.UpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); jaParams.Add(jsonTemp); JObject joIn = new JObject(); joIn.Add(new JProperty("params", jaParams)); joIn.Add("code", "09010040"); //InvokeHelper invoker = new InvokeHelper(); JObject joRtn = invoker.invokeInsuService(joIn.ToString(), "插入对照信息"); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } } i = i + 1; } return JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null); } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "ImportToMapRelation", ex.Message); } } public JObject importDictionary(Sunny.UI.UIProcessBar uiProcessBar,JArray jaList,string type) { int errorCount = 0; string errorMsg = "",outParam = "", HBDictionaryDr =""; try { //插入并获取字典主表的DR JObject joData = new JObject(); joData.Add("HospitalDr", Global.inf.hospitalDr); joData.Add("InterfaceDr", Global.inf.interfaceDr); joData.Add("InsuCode", type); JObject joRtn = mis.insertDictionary(joData); if (JsonHelper.parseIrisRtnValue(joRtn, out errorMsg) != 0) { return JsonHelper.setExceptionJson(-1, "insertDictionary", errorMsg); } else { HBDictionaryDr = JsonHelper.getDestValue(joRtn, "data.HBDictionaryDr"); if (HBDictionaryDr == "") { return JsonHelper.setExceptionJson(-1, "insertDictionary", "HBDictionaryDr返回值为空"); } } } catch (Exception ex) { return JsonHelper.setExceptionJson(-1, "insertDictionary", ex.Message); } JObject joReturn = new JObject(); try { //插入字典明细表 JArray jaParams = new JArray(); int rows = jaList.Count ; uiProcessBar.Maximum = rows; for (int i = 0; i < jaList.Count ; i++) { uiProcessBar.Value = i + 1; dynamic joTmp = new JObject(); joTmp.ID = ""; joTmp.updateUserID = Global.user.ID; joTmp.HospitalDr = Global.inf.hospitalDr; joTmp.InterfaceDr = Global.inf.interfaceDr; joTmp.HBDictionaryDr = HBDictionaryDr; joTmp.Code = jaList[i]["value"].ToString(); joTmp.Descripts = jaList[i]["label"].ToString(); jaParams.Add(joTmp); //每50行提交一次给后台 int currentRows = i + 1; if ((currentRows % 50 == 0) && (i != 0)) { JObject joRtn = mis.insertDictionaryDataDetail(jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } if ((currentRows == rows) && (currentRows % 50 != 0)) { JObject joRtn = mis.insertDictionaryDataDetail(jaParams); if (joRtn["errorCode"].ToString() != "0") { errorCount = errorCount + 1; errorMsg = "\r\n" + errorMsg + joRtn["errorMessage"].ToString(); } jaParams = new JArray(); } } joReturn = JsonHelper.setExceptionJson(0 - errorCount, errorMsg, null); outParam = joReturn.ToString(); return joReturn; } catch (Exception ex) { joReturn = JsonHelper.setExceptionJson(-1, "importDictinary", ex.Message); outParam = joReturn.ToString(); return joReturn; } } } }