| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283 | /****************************************************************************** * 文件名称: 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();        /// <summary>        /// 读取TXT后,Array中的空值会返回NULL,将其转换为"".应有其他方式处理,后面再优化        /// 明天试试Convert.ToString(a)        /// </summary>        /// <param name="arrayValue"></param>        /// <returns></returns>        private string  convertArrayNull(string arrayValue)        {            string returnValue = string.Empty;            if (arrayValue == "null")            {                returnValue = "";            }            else            {                returnValue = arrayValue;            }            return returnValue;        }               /// <summary>        /// 从TXT文件中获取药品数据,并组装成JSON        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 从TXT文件中获取诊疗数据,并组装成JSON        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 从TXT文件中获取材料数据,并组装成JSON        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 从TXT文件中获取诊断数据,并组装成JSON        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 慢性病        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 从TXT文件中获取手术数据,并组装成JSON        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// DRGs        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 中药饮片        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 医疗机构制剂        /// </summary>        /// <param name="arr"></param>        /// <returns></returns>        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;        }        /// <summary>        /// 提交数据给IRIS        /// </summary>        /// <param name="code"></param>        /// <param name="jaParam"></param>        /// <returns></returns>        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;            }                   }        /// <summary>        /// 从TXT里导数据到IRIS        /// </summary>        /// <param name="txtPath"></param>        /// <param name="singleRows"></param>        /// <param name="direcType"></param>        /// <param name="processBar"></param>        /// <returns></returns>        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);            }                    }        /// <summary>        /// 从txt获取数据更新插入到医保字典明细表        /// </summary>        /// <param name="directoryType">yp;hc;sfxm</param>        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);            }        }        /// <summary>        /// 从txt获取数据更新插入到医保目录表        /// </summary>        /// <param name="directoryType">yp;hc;sfxm</param>        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);            }        }        /// <summary>        /// 从txt获取数据更新插入到医保目录表        /// </summary>        /// <param name="directoryType">yp;hc;sfxm</param>        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);            }        }        /// <summary>        /// 从txt获取数据更新插入到医保对照表        /// </summary>        /// <param name="filePath"></param>        /// <param name="directoryType"></param>        /// <param name="dtHis"></param>        /// <param name="ProcessBar"></param>        /// <returns></returns>        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);            }        }        /// <summary>        /// 从DataTable获取数据更新插入到医保对照表        /// </summary>        /// <param name="directoryType"></param>        /// <param name="dtHis">HIS字典</param>        /// <param name="ProcessBar"></param>        /// <returns></returns>        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;            }        }    }}
 |