Ejemplo n.º 1
0
        private DataTable GetRecordsFromTextFile(string file, string txtFilename, DataTable dtRawDataTable)
        {
            DataTable tempTable = new DataTable();

            tempTable = _pipeDelimitedReportHelper.Read(file, ",");
            if (IsColumnNameValid(tempTable, file, txtFilename))
            {
                DataColumn dc = new DataColumn();
                dc.ColumnName   = "FileName";
                dc.DefaultValue = txtFilename;
                tempTable.Columns.Add(dc);

                dc              = new DataColumn();
                dc.ColumnName   = "IsParse";
                dc.DataType     = System.Type.GetType("System.Boolean");
                dc.DefaultValue = false;
                tempTable.Columns.Add(dc);
                if (tempTable.Rows.Count() > 0)
                {
                    dtRawDataTable.Merge(tempTable);
                    MovedParsedFile(file);
                    _loggerForClient.Info("Total " + tempTable.Rows.Count() + " records found from text file " + txtFilename);
                }
                else
                {
                    MovedParsedFile(file);
                    _loggerForClient.Info("There is no records found from text file " + txtFilename);
                }
            }
            return(dtRawDataTable);
        }
        public void PollForOutboundCareCoding()
        {
            var outboundUploads = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.CareCodingOutbound);

            if (outboundUploads == null || !outboundUploads.Any())
            {
                _logger.Info("No new files uploaded.");
                return;
            }

            var accountIds = _accountIds.Split(',');

            foreach (var accountId in accountIds)
            {
                var account = _corporateAccountRepository.GetById(Convert.ToInt32(accountId));

                var fileLocation         = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "CareCoding");
                var archivedFileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "CareCodingArchived");

                foreach (var outboundUpload in outboundUploads)
                {
                    try
                    {
                        outboundUpload.StatusId       = (long)OutboundUploadStatus.Parsing;
                        outboundUpload.ParseStartTime = DateTime.Now;
                        _outboundUploadRepository.Save(outboundUpload);

                        var file = _fileRepository.GetById(outboundUpload.FileId);
                        _logger.Info("Importing File : " + file.Path);

                        DataTable table = _pipeDelimitedReportHelper.Read(fileLocation.PhysicalPath + file.Path);

                        if (table.Rows.Count <= 0)
                        {
                            _logger.Info("No rows found.");
                            outboundUpload.ParseEndTime = DateTime.Now;
                            outboundUpload.StatusId     = (long)OutboundUploadStatus.Parsed;
                            _outboundUploadRepository.Save(outboundUpload);
                            continue;
                        }

                        var csvStringBuilder = new StringBuilder();
                        csvStringBuilder.Append(LogHeader + Environment.NewLine);

                        var successRows = 0;

                        foreach (DataRow row in table.Rows)
                        {
                            var model    = GetCareCodingOutboundModel(row);
                            var errorRow = model.TenantId + "|" + model.ClientId + "|" + model.CampaignId + "|" + model.IndividualIdNumber + "|" + model.ContractNumber + "|" + model.ContractPersonNumber + "|" + model.ConsumerId;
                            try
                            {
                                var chaseOutbound = _chaseOutboundRepository.GetByIndividualIdNumber(model.IndividualIdNumber, model.ConsumerId);
                                if (chaseOutbound == null)
                                {
                                    csvStringBuilder.Append(errorRow + "|" + "Could not find a Customer with Individual_Id_Number : " + model.IndividualIdNumber + " and Consumer_Id : " + model.ConsumerId);
                                    continue;
                                }
                                /*var existingCareCoding = _careCodingOutboundRepository.GetByCustomerId(chaseOutbound.CustomerId);*/
                                var careCodingOutbound = _careCodingOutboundFactory.Create(model);
                                careCodingOutbound.CustomerId = chaseOutbound.CustomerId;

                                if (!string.IsNullOrEmpty(model.MedicalCodeServiceDate))
                                {
                                    try
                                    {
                                        careCodingOutbound.MedicalCodeServiceDate = Convert.ToDateTime(model.MedicalCodeServiceDate);
                                    }
                                    catch (Exception)
                                    {
                                        csvStringBuilder.Append(errorRow + "|" + "Medical_Code_Service_Date is not in correct format. Please Provide in DD/MM/YYYY" + Environment.NewLine);
                                        continue;
                                    }
                                }

                                _careCodingOutboundRepository.Save(careCodingOutbound);

                                successRows++;
                            }
                            catch (Exception ex)
                            {
                                _logger.Error("While Parsing Care Coding");
                                _logger.Error("Message: " + ex.Message);
                                _logger.Error("Stack Tracke: " + ex.StackTrace);

                                csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine);
                            }
                        }

                        if (successRows < table.Rows.Count)
                        {
                            var logFileName = _pipeDelimitedReportHelper.GetReportName(ReportType.Exception);

                            var logFile = SaveLogFile(fileLocation.PhysicalPath + logFileName + ".txt", csvStringBuilder);
                            outboundUpload.LogFileId = logFile.Id;
                        }

                        outboundUpload.SuccessUploadCount = successRows;
                        outboundUpload.FailedUploadCount  = table.Rows.Count - successRows;
                        outboundUpload.ParseEndTime       = DateTime.Now;
                        outboundUpload.StatusId           = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed;
                        _outboundUploadRepository.Save(outboundUpload);

                        if (successRows > 1)
                        {
                            System.IO.File.Move(fileLocation.PhysicalPath + file.Path, archivedFileLocation.PhysicalPath + file.Path);
                            ((IFileRepository)_fileRepository).MarkasArchived(file.Id);
                        }
                    }
                    catch (Exception ex)
                    {
                        _logger.Error("While Parsing File ");
                        _logger.Error("Message: " + ex.Message);
                        _logger.Error("Stack Tracke: " + ex.StackTrace);

                        outboundUpload.StatusId = (long)OutboundUploadStatus.ParseFailed;
                        _outboundUploadRepository.Save(outboundUpload);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void PollForOutboundChase()
        {
            var outboundUploads = _outboundUploadRepository.GetAllUploadedFilesByType((long)OutboundUploadType.ChaseOutbound);

            if (outboundUploads == null || !outboundUploads.Any())
            {
                _logger.Info("No new files uploaded.");
                return;
            }

            var accountIds = _accountIds.Split(',');

            //var activityTypes = _activityTypeRepository.GetAll();

            foreach (var accountId in accountIds)
            {
                var account = _corporateAccountRepository.GetById(Convert.ToInt32(accountId));

                var fileLocation         = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "Chase");
                var archivedFileLocation = _mediaRepository.GetOutboundUploadMediaFileLocation(account.FolderName, "ChaseArchived");

                foreach (var outboundUpload in outboundUploads)
                {
                    try
                    {
                        var file = GetFile(outboundUpload.FileId);

                        if (!System.IO.File.Exists(fileLocation.PhysicalPath + file.Path))
                        {
                            _logger.Info("File not found : " + fileLocation.PhysicalPath + file.Path);
                            continue;
                        }

                        _logger.Info("Importing File : " + file.Path);

                        outboundUpload.StatusId       = (long)OutboundUploadStatus.Parsing;
                        outboundUpload.ParseStartTime = DateTime.Now;
                        _outboundUploadRepository.Save(outboundUpload);

                        DataTable table = _pipeDelimitedReportHelper.Read(fileLocation.PhysicalPath + file.Path);

                        if (table.Rows.Count <= 0)
                        {
                            _logger.Info("No rows found.");
                            outboundUpload.ParseEndTime = DateTime.Now;
                            outboundUpload.StatusId     = (long)OutboundUploadStatus.Parsed;
                            _outboundUploadRepository.Save(outboundUpload);
                            continue;
                        }

                        var csvStringBuilder = new StringBuilder();
                        csvStringBuilder.Append(LogHeader + Environment.NewLine);

                        var languages = _languageRepository.GetAll();
                        var labs      = _labRepository.GetAll();

                        var successRows = 0;
                        foreach (DataRow row in table.Rows)
                        {
                            var model    = GetChaseOutboundModel(row);
                            var errorRow = model.TenantId + "|" + model.ClientId + "|" + model.CampaignId + "|" + model.IndividualId + "|" + model.ContractNumber + "|" + model.ContractPersonNumber + "|" + model.ConsumerId;
                            try
                            {
                                if (!string.IsNullOrEmpty(model.HomeAddressState))
                                {
                                    try
                                    {
                                        var state = _stateRepository.GetStatebyCode(model.HomeAddressState) ?? _stateRepository.GetState(model.HomeAddressState);
                                        if (state != null)
                                        {
                                            model.HomeAddressState = state.Name;
                                        }
                                        else
                                        {
                                            csvStringBuilder.Append(errorRow + "|" + "Invalid Home_Addr_State" + Environment.NewLine);
                                            continue;
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _logger.Error("Error importing data.");
                                        _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace);
                                        csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine);
                                        continue;
                                    }
                                }

                                if (!string.IsNullOrEmpty(model.AddressState))
                                {
                                    try
                                    {
                                        var state = _stateRepository.GetStatebyCode(model.AddressState) ?? _stateRepository.GetState(model.AddressState);
                                        if (state != null)
                                        {
                                            model.AddressState = state.Name;
                                        }
                                        else
                                        {
                                            csvStringBuilder.Append(errorRow + "|" + "Invalid Addr_State" + Environment.NewLine);
                                            continue;
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _logger.Error("Error importing data.");
                                        _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace);
                                        csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine);
                                        continue;
                                    }
                                }

                                if (!string.IsNullOrEmpty(model.ProviderOfRecordAddressState))
                                {
                                    try
                                    {
                                        var state = _stateRepository.GetStatebyCode(model.ProviderOfRecordAddressState) ?? _stateRepository.GetState(model.ProviderOfRecordAddressState);
                                        if (state != null)
                                        {
                                            model.ProviderOfRecordAddressState = state.Name;
                                        }
                                        else
                                        {
                                            csvStringBuilder.Append(errorRow + "|" + "Invalid Provider_Addr_State" + Environment.NewLine);
                                            continue;
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _logger.Error("Error importing data.");
                                        _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace);
                                        csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine);
                                        continue;
                                    }
                                }

                                var chaseOutbound = _chaseOutboundFactory.Create(model);

                                var corporateCustomerEditModel = _chaseOutboundFactory.CreateCorporateCustomerEditModel(model);

                                var           createdBy = _organizationRoleUserRepository.GetOrganizationRoleUser(1);
                                StringBuilder sb        = new StringBuilder();

                                //var activityType = activityTypes.FirstOrDefault(x => x.Alias == corporateCustomerEditModel.Activity);

                                bool     isNewCustomer = false;
                                DateTime?dob           = null;

                                if (!string.IsNullOrEmpty(corporateCustomerEditModel.Dob))
                                {
                                    try
                                    {
                                        dob = Convert.ToDateTime(corporateCustomerEditModel.Dob);
                                    }
                                    catch (Exception ex)
                                    {
                                        throw new Exception("DOB is not in correct format. Please Provide in MM/DD/YYYY", ex);
                                    }
                                }

                                var customer = _customerRepository.GetCustomerForCorporate(corporateCustomerEditModel.FirstName, corporateCustomerEditModel.MiddleName,
                                                                                           corporateCustomerEditModel.LastName, corporateCustomerEditModel.Email, PhoneNumber.ToNumber(corporateCustomerEditModel.PhoneHome),
                                                                                           PhoneNumber.ToNumber(corporateCustomerEditModel.PhoneCell), dob, account.Tag, sb);

                                var updatedCustomer = _customerRegistrationService.RegisterCorporateCustomer(customer, corporateCustomerEditModel, account.Tag, createdBy, languages, labs,
                                                                                                             sb, (long)UploadActivityType.BothMailAndCall, null, out isNewCustomer);

                                chaseOutbound.CustomerId = updatedCustomer.CustomerId;

                                var address = new Address(model.AddressLine1, model.AddressLine2, model.AddressCity,
                                                          model.AddressState, model.AddressZipCode, "USA");


                                address = _addressService.SaveAfterSanitizing(address);
                                if (address.Id > 0)
                                {
                                    _customerRepository.UpdateBillingAddress(updatedCustomer.CustomerId, address.Id);
                                }
                                var customTags = model.CustomTags.Split(',');
                                if (customTags != null && customTags.Any() && updatedCustomer != null)
                                {
                                    foreach (var customTag in customTags)
                                    {
                                        _corporateCustomerCustomTagService.Save(new CorporateCustomerCustomTag
                                        {
                                            CustomerId           = updatedCustomer.CustomerId,
                                            IsActive             = true,
                                            Tag                  = customTag,
                                            DataRecorderMetaData = new DataRecorderMetaData(new OrganizationRoleUser(createdBy.Id), DateTime.Now, null)
                                        });
                                    }
                                }

                                if (!string.IsNullOrEmpty(model.RelationshipCode) || !string.IsNullOrEmpty(model.RelationshipDescription))
                                {
                                    var relationship = GetRelationship(model.RelationshipCode, model.RelationshipDescription);
                                    chaseOutbound.RelationshipId = relationship.Id;
                                }

                                chaseOutbound = _chaseOutboundRepository.Save(chaseOutbound);
                                // _chaseProductRepository.DeleteByCustomerId(chaseOutbound.CustomerId);

                                if (!string.IsNullOrEmpty(model.ProductLevel1))
                                {
                                    SaveChaseProduct(model.ProductLevel1, 1, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }
                                if (!string.IsNullOrEmpty(model.ProductLevel2))
                                {
                                    SaveChaseProduct(model.ProductLevel2, 2, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }
                                if (!string.IsNullOrEmpty(model.ProductLevel3))
                                {
                                    SaveChaseProduct(model.ProductLevel3, 3, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }
                                if (!string.IsNullOrEmpty(model.ProductLevel4))
                                {
                                    SaveChaseProduct(model.ProductLevel4, 4, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }
                                if (!string.IsNullOrEmpty(model.ProductLevel5))
                                {
                                    SaveChaseProduct(model.ProductLevel5, 5, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }

                                // _chaseChannelLevelRepository.DeleteByCustomerId(chaseOutbound.CustomerId);

                                if (!string.IsNullOrEmpty(model.ChannelLevel2))
                                {
                                    SaveChaseChannel(model.ChannelLevel2, 2, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }
                                if (!string.IsNullOrEmpty(model.ChannelLevel3))
                                {
                                    SaveChaseChannel(model.ChannelLevel3, 3, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }

                                if (!string.IsNullOrEmpty(model.GroupName) || !string.IsNullOrEmpty(model.GroupNumber) || !string.IsNullOrEmpty(model.GroupDivision))
                                {
                                    var chaseGroup = GetChaseGroup(model.GroupName, model.GroupNumber, model.GroupDivision);
                                    chaseOutbound.ChaseGroupId = chaseGroup.Id;
                                }

                                if (string.IsNullOrEmpty(model.CampaignId) || string.IsNullOrEmpty(model.CampaignName))
                                {
                                    _logger.Info("Campaign Id/Name missing. Incomplete Data");

                                    /*csvStringBuilder.Append(errorRow + "|" + "Campaign Id/Name missing. Incomplete Data." + Environment.NewLine);
                                     * continue;*/
                                }
                                else
                                {
                                    SaveCampaign(model, chaseOutbound.CustomerId, chaseOutbound.Id);
                                }

                                if (!string.IsNullOrEmpty(model.ForecastedOutreachDate))
                                {
                                    try
                                    {
                                        chaseOutbound.ForecastedOutreachDate = Convert.ToDateTime(model.ForecastedOutreachDate);
                                    }
                                    catch (Exception)
                                    {
                                        csvStringBuilder.Append(errorRow + "|" + "Forecasted_Outreach_Date is not in correct format. Please Provide in MM/DD/YYYY" + Environment.NewLine);
                                        continue;
                                    }
                                }
                                if (!string.IsNullOrEmpty(model.RecordProcessDate))
                                {
                                    try
                                    {
                                        chaseOutbound.RecordProcessDate = Convert.ToDateTime(model.RecordProcessDate);
                                    }
                                    catch (Exception)
                                    {
                                        csvStringBuilder.Append(errorRow + "|" + "Record_Process_Date is not in correct format. Please Provide in MM/DD/YYYY" + Environment.NewLine);
                                        continue;
                                    }
                                }



                                successRows++;
                            }
                            catch (Exception ex)
                            {
                                _logger.Error("Error importing data.");
                                _logger.Error("Message: " + ex.Message + "\nStack Trace; " + ex.StackTrace);
                                csvStringBuilder.Append(errorRow + "|" + ex.Message + Environment.NewLine);
                            }
                        }

                        if (successRows < table.Rows.Count)
                        {
                            var logFileName = _pipeDelimitedReportHelper.GetReportName(ReportType.Exception);

                            var logFile = SaveLogFile(fileLocation.PhysicalPath + logFileName + ".txt", csvStringBuilder);
                            outboundUpload.LogFileId = logFile.Id;
                        }

                        outboundUpload.SuccessUploadCount = successRows;
                        outboundUpload.FailedUploadCount  = table.Rows.Count - successRows;
                        outboundUpload.ParseEndTime       = DateTime.Now;
                        outboundUpload.StatusId           = successRows > 0 ? (long)OutboundUploadStatus.Parsed : (long)OutboundUploadStatus.ParseFailed;
                        _outboundUploadRepository.Save(outboundUpload);

                        if (successRows > 1)
                        {
                            System.IO.File.Move(fileLocation.PhysicalPath + file.Path, archivedFileLocation.PhysicalPath + file.Path);
                            ((IFileRepository)_fileRepository).MarkasArchived(file.Id);
                        }
                    }
                    catch (Exception ex)
                    {
                        outboundUpload.StatusId = (long)OutboundUploadStatus.ParseFailed;
                        _outboundUploadRepository.Save(outboundUpload);
                        _logger.Error(string.Format("while Parsing File"));
                        _logger.Error("Ex Message" + ex.Message);
                        _logger.Error("Ex Stack Trace " + ex.StackTrace);
                    }
                }
            }
        }
        public void PollForParsePatientDataFromAces()
        {
            try
            {
                _logger.Info("Entering Parse Patient Data From Aces Polling Agent @:" + DateTime.Now);

                var sftpFileLocation = _settings.ParsePatientDataSftpPath;
                var mediaLocation    = _mediaRepository.GetParsePatientDataMediaFileLocation();

                var archiveFolder = Path.Combine(mediaLocation.PhysicalPath, "Archive", DateTime.Today.ToString("yyyyMMdd"));
                var failedFolder  = Path.Combine(mediaLocation.PhysicalPath, "Failed", DateTime.Today.ToString("yyyyMMdd"));

                var getFilesFromSftp = DirectoryOperationsHelper.GetFiles(sftpFileLocation, "TCPA_AcesID_HipID*.txt");

                if (getFilesFromSftp.IsNullOrEmpty())
                {
                    _logger.Info("No files found for parsing.");
                    return;
                }

                DirectoryOperationsHelper.CreateDirectoryIfNotExist(archiveFolder);

                foreach (var file in getFilesFromSftp)
                {
                    var fileName = Path.GetFileName(file);
                    MoveFile(file, Path.Combine(mediaLocation.PhysicalPath, fileName));
                }

                var filesToParse = DirectoryOperationsHelper.GetFiles(mediaLocation.PhysicalPath, "*.txt");
                _logger.Info("Number of files to Parse:" + filesToParse.Count());
                const int pageSize = 100;

                foreach (var file in filesToParse)
                {
                    try
                    {
                        var fileName   = Path.GetFileName(file);
                        var sourceFile = Path.Combine(mediaLocation.PhysicalPath, fileName);

                        var patientData   = _pipeDelimitedReportHelper.Read(sourceFile);
                        var recordsInFile = patientData.Rows.Count;
                        if (recordsInFile == 0)
                        {
                            _logger.Info("No record found in " + fileName);
                            MoveFile(sourceFile, Path.Combine(archiveFolder, fileName));
                            continue;
                        }
                        _logger.Info("Parsing file: " + fileName);
                        _logger.Info("Total number of records to file: " + recordsInFile);
                        var failedRecords     = new List <PatientParsedDataViewModel>();
                        var parsedPatientData = ParsePatientData(patientData.AsEnumerable(), failedRecords);
                        if (parsedPatientData.Any())
                        {
                            var pageNumber   = 1;
                            int totalRecords = parsedPatientData.Count();

                            var totalPages = (totalRecords / pageSize) + (totalRecords % pageSize != 0 ? 1 : 0);
                            do
                            {
                                var pagedCustomers    = parsedPatientData.Skip(pageSize * (pageNumber - 1)).Take(pageSize);
                                var parsedCustomerIds = pagedCustomers.Select(x => x.CustomerId).ToArray();
                                var customerIds       = _customerRepository.CheckCustomerExists(parsedCustomerIds).ToArray();
                                if (parsedCustomerIds.Count() != customerIds.Count())
                                {
                                    var customerIdNotExist = parsedCustomerIds.Except(customerIds);
                                    var failedCustomers    = pagedCustomers.Where(x => customerIdNotExist.Contains(x.CustomerId));
                                    failedCustomers.ForEach(x => x.Error = "HIPID does not exist.");
                                    failedRecords.AddRange(failedCustomers);
                                    pagedCustomers = pagedCustomers.Where(x => customerIds.Contains(x.CustomerId));
                                }

                                var customerIdsAlreadyHaveAcesId = _customerRepository.CheckCustomerAlreadyHaveAcesId(customerIds);
                                if (customerIdsAlreadyHaveAcesId.Count() != 0)
                                {
                                    var customersAlreadyHaveAcesId = pagedCustomers.Where(x => customerIdsAlreadyHaveAcesId.Contains(x.CustomerId));
                                    customersAlreadyHaveAcesId.ForEach(x => x.Error = "Patient already have ACESID.");
                                    failedRecords.AddRange(customersAlreadyHaveAcesId);
                                    pagedCustomers = pagedCustomers.Where(x => !customerIdsAlreadyHaveAcesId.Contains(x.CustomerId));
                                }

                                var acesIdAlreadyAssignedToCustomers = _customerRepository.CheckAcesIdAlreadyAssignedToCustomer(pagedCustomers.Select(x => x.AcesId.ToLower()).ToArray());
                                if (acesIdAlreadyAssignedToCustomers.Count() != 0)
                                {
                                    var acesIdAlreadyAssignedCustomers = pagedCustomers.Where(x => acesIdAlreadyAssignedToCustomers.Contains(x.AcesId));
                                    acesIdAlreadyAssignedCustomers.ForEach(x => x.Error = "ACESID already assigned to a patient.");
                                    failedRecords.AddRange(acesIdAlreadyAssignedCustomers);
                                    pagedCustomers = pagedCustomers.Where(x => !acesIdAlreadyAssignedToCustomers.Contains(x.AcesId.ToLower()));
                                }
                                _logger.Info(string.Format("Number of customer to parse: {0} in page: {1}", pagedCustomers.Count(), pageNumber));
                                foreach (var customer in pagedCustomers)
                                {
                                    try
                                    {
                                        _logger.Info("Parsing data for CustomerId: " + customer.CustomerId);
                                        var customerEligibility      = _customerEligibilityRepository.GetByCustomerIdAndYear(customer.CustomerId, DateTime.Today.Year);
                                        var customerProfileHistoryId = _customerProfileHistoryRepository.CreateCustomerHistory(customer.CustomerId, orgRoleId, customerEligibility);
                                        _eventCustomerRepository.UpdateCustomerProfileIdByCustomerId(customer.CustomerId, customerProfileHistoryId);
                                        _customerRepository.UpdateAcesId(customer.CustomerId, customer.AcesId);
                                    }
                                    catch (Exception ex)
                                    {
                                        failedRecords.Add(new PatientParsedDataViewModel()
                                        {
                                            AcesId = customer.AcesId, CustomerId = customer.CustomerId, Error = "Some error occurred while updating."
                                        });
                                        _logger.Error(string.Format("Error occurred while updating record for CustomerId: {0}.\nMessage: {1}\n\tStackTrace: {2}", customer.CustomerId, ex.Message, ex.StackTrace));
                                    }
                                }

                                pageNumber++;
                            }while (totalPages >= pageNumber);
                        }
                        CreateFailedPatientFile(fileName, failedFolder, failedRecords);
                        MoveFile(sourceFile, Path.Combine(archiveFolder, fileName));
                    }
                    catch (Exception ex)
                    {
                        _logger.Error(string.Format("Error occurred while processing the {0}.\nMessage: {1}\n\tStackTrace: {2}", file, ex.Message, ex.StackTrace));
                        var fileName = Path.GetFileName(file);
                        MoveFile(file, Path.Combine(archiveFolder, fileName));
                    }
                }
                _logger.Info("File parsing completed @ " + DateTime.Now);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Exception occurred during execution of servcie. \nException Message: {0}\n\tStackTrace:{1}", ex.Message, ex.StackTrace));
                return;
            }
        }