Ejemplo n.º 1
0
        private void SetEventCustomerDetail(AnthemResultPostedViewModel customerResultObject)
        {
            var ecr = customerResultObject.EventCustomerResult;

            int pageCountInPdf = GetPdfPageCount(customerResultObject.SourceFilePath);

            if ((customerResultObject.TotalFilesInBatch <= 0 || ((customerResultObject.TotalFilesInBatch + pageCountInPdf) > _maxPagesinBatch)) || (customerResultObject.TotalCustomersInBatch <= 0 || customerResultObject.TotalCustomersInBatch > MaxCustomerinBatch))
            {
                customerResultObject.TotalFilesInBatch     = 0;
                customerResultObject.TotalCustomersInBatch = 0;
                customerResultObject.BatchName             = "IC" + DateTime.Now.ToString("yyyyMMddhhmmss");
            }

            customerResultObject.TotalFilesInBatch = customerResultObject.TotalFilesInBatch + pageCountInPdf;

            var customerData = _customerRepository.GetCustomer(ecr.CustomerId);
            var eventData    = _eventRepository.GetById(ecr.EventId);

            customerResultObject.TotalCustomersInBatch++;

            customerResultObject.JulianDateFormate   = GetJulianDate(ecr);
            customerResultObject.Identification      = GetIdentificationNumber(ecr);
            customerResultObject.EventCustomerResult = ecr;
            customerResultObject.EventCustomerId     = ecr.Id;

            customerResultObject.PagesInfile = pageCountInPdf;
            customerResultObject.Customer    = customerData;
            customerResultObject.Event       = eventData;


            DirectoryOperationsHelper.CreateDirectoryIfNotExist(customerResultObject.DestinationPathWithBatchName);
        }
Ejemplo n.º 2
0
 private void AppentTransactFile(AnthemResultPostedViewModel anthemResultPostedView, string filePath)
 {
     using (StreamWriter sw = File.AppendText(filePath))
     {
         var tranactRow = GetTransactEntry(anthemResultPostedView);
         sw.WriteLine(tranactRow);
     }
 }
Ejemplo n.º 3
0
        private void SaveExportStartTime(AnthemResultPostedViewModel customerResultObject)
        {
            var customSettingFilePath = string.Format(_customSettingFile, customerResultObject.Tag);
            var customSettings        = GetCustomSettings(customerResultObject.Tag);

            customSettings.LastTransactionDate = customerResultObject.ExportToTime;

            _customSettingManager.SerializeandSave(customSettingFilePath, customSettings);
        }
Ejemplo n.º 4
0
 private void WriteTransactFile(AnthemResultPostedViewModel anthemResultPostedView)
 {
     if (DirectoryOperationsHelper.IsDirectoryExist(anthemResultPostedView.DestinationPathWithBatchName))
     {
         var transactFile = Path.Combine(anthemResultPostedView.DestinationPathWithBatchName, "transact.dat");
         if (DirectoryOperationsHelper.IsFileExist(transactFile))
         {
             AppentTransactFile(anthemResultPostedView, transactFile);
         }
         else
         {
             CreatNewTransactFile(anthemResultPostedView, transactFile);
         }
     }
 }
Ejemplo n.º 5
0
        private void SetFileNameWithVersion(AnthemResultPostedViewModel customerResultObject)
        {
            if (_resultPdfPostedXml == null)
            {
                GetResultPostedList(customerResultObject.Tag);
            }

            var ecr      = customerResultObject.EventCustomerResult;
            var fileName = customerResultObject.DestinationFileNameWithoutExt;

            fileName = _resultPdfFileHelper.GetFileName(_resultPdfPostedXml.Customer, ecr, fileName, (long)ResultFormatType.PDF, false);

            fileName = GenerateNameForFilePostd(customerResultObject.BatchName, fileName, customerResultObject.CorporateAccount.Id);

            customerResultObject.DestinationFileNameWithoutExt = fileName;
        }
Ejemplo n.º 6
0
        private void SetSourcePath(AnthemResultPostedViewModel customerResultObject)
        {
            var ecr = customerResultObject.EventCustomerResult;

            var pcpResultReport        = _mediaRepository.GetPdfFileNameForPcpResultReport();
            var healthPlanResultReport = _mediaRepository.GetPdfFileNameForHealthPlanResultReport();

            var sourcePath = _mediaRepository.GetPremiumVersionResultPdfLocation(ecr.EventId, ecr.CustomerId).PhysicalPath + healthPlanResultReport;

            if (!DirectoryOperationsHelper.IsFileExist(sourcePath))
            {
                sourcePath = _mediaRepository.GetPremiumVersionResultPdfLocation(ecr.EventId, ecr.CustomerId).PhysicalPath + pcpResultReport;
            }

            customerResultObject.SourceFilePath = sourcePath;
        }
Ejemplo n.º 7
0
        private void AddToCrosswalkList(AnthemResultPostedViewModel resultPostedViewModel)
        {
            if (_anthemPdfCrossWalkVeiwModel == null)
            {
                _anthemPdfCrossWalkVeiwModel = new List <AnthemPdfCrossWalkVeiwModel>();
            }

            _anthemPdfCrossWalkVeiwModel.Add(new AnthemPdfCrossWalkVeiwModel
            {
                FileName          = resultPostedViewModel.DestinationPdfFileName,
                DateOfAssessment  = resultPostedViewModel.Event.EventDate,
                DateOfTransferred = DateTime.Today,
                PageCount         = resultPostedViewModel.PagesInfile,
                Dcn   = resultPostedViewModel.DocketNumber,
                Batch = resultPostedViewModel.BatchName
            });
        }
Ejemplo n.º 8
0
        private IEnumerable <EventCustomerResult> GetEventCustomersToPostResult(AnthemResultPostedViewModel resultObject)
        {
            var corporatTags = _corporateTagRepository.GetByCustomTags(_settings.AnthemCustomTags);

            var eventCustomerResults = GetFreshCustomerResultToPost(corporatTags, resultObject);

            var customerResults = GetFinalEventCustomers(resultObject.Tag, eventCustomerResults);

            if (customerResults == null || !customerResults.Any())
            {
                _logger.Info(string.Format("No event customer result list for {0} Result Pdf Download.", resultObject.Tag));
                return(eventCustomerResults);
            }

            _logger.Info(string.Format("Found {0} customers for {1} Result Pdf Download. ", customerResults.Count(), resultObject.Tag));
            return(eventCustomerResults);
        }
Ejemplo n.º 9
0
        private string GetTransactEntry(AnthemResultPostedViewModel anthemResultPostedView)
        {
            var eventData  = anthemResultPostedView.Event;
            var customer   = anthemResultPostedView.Customer;
            var dcnNumber  = anthemResultPostedView.DocketNumber;
            var edncNumber = anthemResultPostedView.EDocketNumber;
            var batchName  = anthemResultPostedView.BatchName;
            var fileName   = anthemResultPostedView.DestinationPdfFileName;

            var memberId = string.IsNullOrWhiteSpace(customer.InsuranceId) ? customer.CustomerId.ToString() : customer.InsuranceId;

            var sb = new StringBuilder();

            sb.Append("131:" + anthemResultPostedView.Npi + ",Commercial,SCAN," + FormateDate(eventData.EventDate) + ",,," + FormateDate(customer.DateOfBirth) + ",,,,"
                      + anthemResultPostedView.Npi + ",,,,CORRO,," + FormateDate(eventData.EventDate) + ",,,,,,,,,," + dcnNumber + "," + batchName + "," + memberId + ",," + edncNumber + ",,,HLTHFAIR,,application/pdf::" + fileName);

            return(sb.ToString());
        }
Ejemplo n.º 10
0
        private void AddToResultNotPosted(AnthemResultPostedViewModel customerResultObject)
        {
            if (_resultPdfNotPosted == null)
            {
                _resultPdfNotPosted = new ResultPdfNotPosted {
                    EventCustomer = new List <EventCustomerInfo>()
                };
            }
            var ecr = customerResultObject.EventCustomerResult;

            _resultPdfNotPosted.EventCustomer.Add(new EventCustomerInfo
            {
                EventCustomerId = ecr.Id,
                EventId         = ecr.EventId,
                CustomerId      = ecr.CustomerId,
                Error           = "file not Moved on HIP SFTP."
            });
        }
Ejemplo n.º 11
0
        private void SetDestinationFileNameWithoutExt(AnthemResultPostedViewModel customerResultObject)
        {
            var customerData     = customerResultObject.Customer;
            var ecr              = customerResultObject.EventCustomerResult;
            var corporateAccount = customerResultObject.CorporateAccount;

            var patientMemerId = string.IsNullOrEmpty(customerData.InsuranceId) ? "No_MemberId_" + ecr.CustomerId : customerData.InsuranceId;

            var fileName = "_" + patientMemerId + "-" + customerResultObject.UniqueIdetificationDocketNumber;


            if (corporateAccount.MarkPennedBack && ecr.IsPennedBack)
            {
                fileName += "_" + corporateAccount.PennedBackText;
            }

            customerResultObject.DestinationFileNameWithoutExt = fileName;

            SetFileNameWithVersion(customerResultObject);
        }
Ejemplo n.º 12
0
        private void PostResultPdf(AnthemResultPostedViewModel resultPostedViewModel)
        {
            var ecr              = resultPostedViewModel.EventCustomerResult;
            var pdfResultFile    = resultPostedViewModel.DestinationPdfFileName;
            var corporateAccount = resultPostedViewModel.CorporateAccount;
            var sourceFile       = resultPostedViewModel.SourceFilePath;

            if (DirectoryOperationsHelper.IsFileExist(sourceFile))
            {
                try
                {
                    _resultPdfDownloaderHelper.ExportResultInPdfFormat(pdfResultFile, resultPostedViewModel.SourceFilePath, resultPostedViewModel.DestinationPathWithBatchName);

                    var pgpFilePath     = _pgpFileEncryptionHelper.EncryptFile(corporateAccount, pdfResultFile);
                    var finalFilePosted = Path.GetFileName(pgpFilePath);

                    WriteTransactFile(resultPostedViewModel);
                    AddToCrosswalkList(resultPostedViewModel);

                    var customerInfo = _resultPdfFileHelper.GetCustomerInfo(resultPostedViewModel.Event, finalFilePosted, (long)ResultFormatType.PDF, resultPostedViewModel.Customer, ecr.Id);
                    AddToResultPosted(corporateAccount.Tag, customerInfo);

                    var destination = Path.Combine(resultPostedViewModel.DestinationPathWithBatchName, pdfResultFile);

                    _logger.Info("Source: " + resultPostedViewModel.SourceFilePath);
                    _logger.Info("destination: " + destination);
                }
                catch (Exception ex)
                {
                    _logger.Error("result not posted for Customer Id: " + ecr.CustomerId + " and event Id " + ecr.EventId);
                    _logger.Error(string.Format("some error occurred: Message {0} \\n Stack Trace: {1} ", ex.Message, ex.StackTrace));

                    AddToResultNotPosted(resultPostedViewModel);
                }
            }
            else
            {
                _logger.Info(string.Format("File not generated or removed for the Customer Id: {0}, Event Id: {1}", ecr.CustomerId, ecr.EventId));
                AddToResultNotPosted(resultPostedViewModel);
            }
        }
Ejemplo n.º 13
0
        private IEnumerable <EventCustomerResult> GetFreshCustomerResultToPost(IEnumerable <CorporateTag> corporatTags, AnthemResultPostedViewModel resultObject)
        {
            string[] customTags       = null;
            var      corporateAccount = resultObject.CorporateAccount;

            if (!corporatTags.IsNullOrEmpty())
            {
                customTags = corporatTags.Where(x => x.CorporateId == corporateAccount.Id).Select(x => x.Tag).ToArray();
            }

            _logger.Info(string.Format("Generating for accountId {0} and account tag {1}. ", corporateAccount.Id, corporateAccount.Tag));

            var exportFromTime = GetExportStartTime(resultObject.Tag);

            //in case of Anthem (Anthem-CA) we send all files
            if (corporateAccount.Id == _settings.AnthemAccountId)
            {
                customTags = null;
            }

            DateTime?stopSendingPdftoHealthPlanDate = null;

            if (corporateAccount.IsHealthPlan)
            {
                stopSendingPdftoHealthPlanDate = _settings.StopSendingPdftoHealthPlanDate;
            }

            var eventCustomerResults = _eventCustomerResultRepository.GetEventCustomerResultsToFax((int)TestResultStateNumber.ResultDelivered, (int)NewTestResultStateNumber.ResultDelivered, false,
                                                                                                   resultObject.ExportToTime, exportFromTime, corporateAccount.Id, corporateAccount.Tag, true, customTags, true, true, _cutOfDateForSendingReport, stopSendingPdftoHealthPlanDate: stopSendingPdftoHealthPlanDate);

            return(eventCustomerResults);
        }
Ejemplo n.º 14
0
        private void PostResultAccountWise(CorporateAccount corporateAccount, string destinationFolderPdf)
        {
            try
            {
                _resultPdfPostedXml = null;
                //_anthemPdfCrossWalkVeiwModel = null;
                _resultPdfNotPosted = null;

                var customerResultObject = new AnthemResultPostedViewModel
                {
                    Tag = corporateAccount.Tag,
                    DestinationFilePath = destinationFolderPdf,
                    ExportToTime        = DateTime.Now.AddHours(-1),
                    CorporateAccount    = corporateAccount,
                };

                var customerResults = GetEventCustomersToPostResult(customerResultObject);

                foreach (var ecr in customerResults)
                {
                    try
                    {
                        customerResultObject.EventCustomerResult = ecr;
                        SetSourcePath(customerResultObject);

                        if (File.Exists(customerResultObject.SourceFilePath))
                        {
                            var ec = _eventCustomerRepository.GetById(ecr.Id);
                            if (ec.AwvVisitId.HasValue)
                            {
                                try
                                {
                                    _logger.Info(" fetching NPI info for VistId :" + ec.AwvVisitId.Value);
                                    var visitDetails = new EhrAssignedNursePractitionerDetails
                                    {
                                        VisitId = ec.AwvVisitId.Value
                                    };

                                    // var model = _medicareApiService.PostAnonymous<EhrAssignedNursePractitionerDetails>(_settings.MedicareApiUrl + MedicareApiUrl.AssignedNursePractitionerDetails, visitDetails);
                                    var npi = string.Empty;
                                    if (!string.IsNullOrWhiteSpace(npi))
                                    {
                                        customerResultObject.Npi = npi;
                                        _logger.Info("NPI: " + npi + " for VistId :" + ec.AwvVisitId.Value);
                                    }
                                    else
                                    {
                                        var mssage = "NPI Is Null or Empty";
                                        mssage = mssage + " for visit id: " + ec.AwvVisitId.Value;
                                        _logger.Info(mssage);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    _logger.Error("exception while fetching NPI information");
                                    _logger.Error("Message: " + ex.Message);
                                    _logger.Error("stack Trace: " + ex.StackTrace);
                                    AddToResultNotPosted(customerResultObject);
                                    continue;
                                }
                            }

                            SetEventCustomerDetail(customerResultObject);

                            SetDestinationFileNameWithoutExt(customerResultObject);

                            PostResultPdf(customerResultObject);
                        }
                        else
                        {
                            AddToResultNotPosted(customerResultObject);
                        }
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(string.Format("some error occurred for the customerId {0}, {1},\n Message {2} \n Stack Trace {3}",
                                                    ecr.CustomerId, ecr.EventId, exception.Message, exception.StackTrace));
                    }
                }

                SaveExportStartTime(customerResultObject);

                CreateResultPostedLoger(corporateAccount);

                SetResultPostedList(corporateAccount.Tag, _resultPdfPostedXml);

                SaveResultNotPosted(corporateAccount.Tag);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("some error occurred for custom tag: {0} Exception Message: \n{1}, \n stack Trace: \n\t {2} ", corporateAccount.Id, ex.Message, ex.StackTrace));
            }
            finally
            {
                _resultPdfPostedXml = null;
                //_anthemPdfCrossWalkVeiwModel = null;
                _resultPdfNotPosted = null;
                _customSettings     = null;
            }
        }