/******************************************************************************
* 文件名称: 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;
namespace PTMedicalInsurance
{
class DataImoport
{
MIIrisServices mis = new MIIrisServices();
///
/// 读取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[0];
jsonTemp.Name = arr[7];
jsonTemp.HisType = "1";
jsonTemp.HisTypeName = "药品";
jsonTemp.LocateCode = "";
jsonTemp.LocateName = "";
jsonTemp.DosageFormCode = arr[9];
jsonTemp.DosageFormName = arr[10];
jsonTemp.CategoryCode = arr[11];
jsonTemp.CategoryName = arr[12];
jsonTemp.Specification = arr[13];
jsonTemp.SpecificationCode = arr[14];
jsonTemp.UnitOfPackag = arr[42];
jsonTemp.UnitOfValuation = arr[40];
jsonTemp.StartDate = convertArrayNull(arr[36]);
jsonTemp.EndDate = convertArrayNull(arr[37]);
jsonTemp.PinyinSearchCode = arr[50];
jsonTemp.Instructions = arr[35];
jsonTemp.ExceptContent = "";
jsonTemp.Connotation = "";
jsonTemp.ValidFlag = convertArrayNull(arr[78]);
jsonTemp.Note = arr[77];
jsonTemp.VersionNO = arr[82];
jsonTemp.VersionName = arr[83];
jsonTemp.UseFlag = 1;
jsonTemp.DrugSafetyStandardCode = arr[8];
jsonTemp.ApprovalNO = arr[61];
jsonTemp.SpecialFlag = convertArrayNull(arr[55]);
jsonTemp.LimitFlag = convertArrayNull(arr[57]);
jsonTemp.LimitRange = arr[56];
jsonTemp.UniqueRecordNO = arr[79];
jsonTemp.Manufacturers = arr[53];
jsonTemp.Company = arr[85];
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[0];
jsonTemp.Name = arr[9];
jsonTemp.HisType = "2";
jsonTemp.HisTypeName = "诊疗";
jsonTemp.LocateCode = "";
jsonTemp.LocateName = "";
jsonTemp.DosageFormCode = arr[9];
jsonTemp.DosageFormName = arr[10];
jsonTemp.CategoryCode = arr[8];
jsonTemp.CategoryName = arr[12];
jsonTemp.Specification = "";
jsonTemp.SpecificationCode = "";
jsonTemp.UnitOfPackag = "";
jsonTemp.UnitOfValuation = convertArrayNull(arr[3]);
jsonTemp.StartDate = convertArrayNull(arr[11]);
jsonTemp.EndDate = convertArrayNull(arr[12]);
////jsonTemp.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[9]);
jsonTemp.Instructions = arr[3];
jsonTemp.ExceptContent = arr[4];
jsonTemp.Connotation = arr[5];
jsonTemp.ValidFlag = arr[6];
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];
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[0];
jsonTemp.Name = arr[5];
jsonTemp.HisType = "3";
jsonTemp.HisTypeName = "材料";
jsonTemp.LocateCode = "";
jsonTemp.LocateName = "";
jsonTemp.DosageFormCode = "";
jsonTemp.DosageFormName = "";
jsonTemp.CategoryCode = "";
jsonTemp.CategoryName = "";
jsonTemp.Specification = arr[7];
jsonTemp.SpecificationCode = arr[6];
jsonTemp.UnitOfPackag = arr[15];
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 = "";
jsonTemp.Connotation = "";
jsonTemp.ValidFlag = arr[67];
jsonTemp.Note = arr[7];
jsonTemp.VersionNO = arr[69];
jsonTemp.VersionName = arr[70];
jsonTemp.UseFlag = 1;
jsonTemp.DrugSafetyStandardCode = "";
jsonTemp.ApprovalNO = "";
jsonTemp.SpecialFlag = "";
jsonTemp.LimitFlag = convertArrayNull(arr[33]);
jsonTemp.LimitRange = arr[34];
jsonTemp.UniqueRecordNO = arr[68];
jsonTemp.Manufacturers = arr[59];
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 = 1;
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 = 1;
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 = 1;
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.PinyinSearchCode = SpellCodeHelper.GetFirstPYLetter(arr[11]);
jsonTemp.ValidFlag = arr[5];
jsonTemp.Note = arr[11];
jsonTemp.VersionNO = arr[9];
jsonTemp.VersionName = arr[12];
jsonTemp.UseFlag = 1;
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 = 1;
jsonTemp.UniqueRecordNO = arr[4];
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;
}
}
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);
}
}
}
}