Пример #1
0
        public ClaimVarianceDetails(VarianceReportViewModel varianceReport)
        {
            InitializeComponent();
            _varianceReport            = varianceReport;
            DataSource                 = varianceReport.VarianceReports;
            contractDetails.DataSource = varianceReport.Contracts;
            table5.DataSource          = varianceReport.ClaimsAdjudicated;
            table10.DataSource         = varianceReport.PaymentsLinked;
            table6.DataSource          = varianceReport.ClaimCharges;
            table7.DataSource          = varianceReport.ClaimVariances;
            table9.DataSource          = varianceReport.VarianceRanges;
            Name = Constants.ClaimVarianceReportFileBaseName;

            txtBox_ClaimCount.Value = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated || string.IsNullOrEmpty(x.ContractName) ? 0 : x.ClaimCount).ToString(CultureInfo.InvariantCulture);

            var totalClaimCharges = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.TotalClaimCharges);

            txtBox_TotalCliamCharges.Value = totalClaimCharges == 0 ? String.Empty : String.Format("{0:C}", totalClaimCharges);

            var calculatedAllowedClaimLevel = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.CalculatedAllowed);

            txtBox_CalculatedAllowedClaimLevel.Value = calculatedAllowedClaimLevel == 0 ? String.Empty : String.Format("{0:C}", calculatedAllowedClaimLevel);

            var actualPaymentClaimLevel = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.ActualPayment);

            txtBox_ActualPaymentClaimLevel.Value = actualPaymentClaimLevel == 0 ? String.Empty : String.Format("{0:C}", actualPaymentClaimLevel);


            var patientResponsibility = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.PatientResponsibility);

            textBox_PatientResponsibility.Value = patientResponsibility == 0 ? String.Empty : String.Format("{0:C}", patientResponsibility);


            var paymentVariance = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.PaymentVariance);

            txtBox_PaymentVariance.Value = paymentVariance == 0 ? String.Empty : String.Format("{0:C}", paymentVariance);


            var calculatedAdjustment = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.CalculatedAdjustment);

            txtBox_CalculatedAdjustment.Value = calculatedAdjustment == 0 ? String.Empty : String.Format("{0:C}", calculatedAdjustment);


            var actualAdjustment = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.ActualAdjustment);

            txtBox_ActualAdjustment.Value = actualAdjustment == 0 ? String.Empty : String.Format("{0:C}", actualAdjustment);


            var contractualVariance = varianceReport.Contracts.Sum(x => x.ContractName.ToLower().Contains(Constants.NoRemit) || x.ContractName == Constants.UnAdjudicated ? 0 : x.ContractualVariance);

            txtBox_contractualVariance.Value = contractualVariance == 0 ? String.Empty : String.Format("{0:C}", contractualVariance);

            totalClaims.Value = Convert.ToString(varianceReport.TotalClaims);
        }
        /// <summary>
        /// Variances the claim report.
        /// </summary>
        /// <param name="nodeId">The node unique identifier.</param>
        /// <param name="datetype">The datetype.</param>
        /// <param name="startDate">The start date.</param>
        /// <param name="endDate">The end date.</param>
        /// <param name="criteria">The criteria.</param>
        /// <param name="reportType">Type of the report.</param>
        /// <param name="fileType">type of file. Either pdf or excel</param>
        /// <param name="currentDateTime"></param>
        /// <returns></returns>
        public ActionResult VarianceReport(long?nodeId, int?datetype, DateTime?startDate, DateTime?endDate, string criteria, int reportType, int fileType, string currentDateTime)
        {
            string fileName;

            Enums.DownloadFileType reportFormat = fileType == 1 ? Enums.DownloadFileType.Pdf : Enums.DownloadFileType.Xls;
            //If the Report Type is Claim Level and report format is PDF
            if (reportType == Constants.One && fileType == Constants.One)
            {
                ClaimAdjudicationReport claimAdjudicationReport = new ClaimAdjudicationReport
                {
                    ModelId             = nodeId,
                    NodeId              = nodeId,
                    DateType            = Convert.ToInt32(datetype),
                    StartDate           = Convert.ToDateTime(startDate),
                    EndDate             = Convert.ToDateTime(endDate),
                    ClaimSearchCriteria = criteria,
                    FacilityId          = GetCurrentFacilityId(),
                    //Added RequestedUserID and RequestedUserName with reference to HIPAA logging feature
                    RequestedUserId =
                        string.IsNullOrEmpty(GetCurrentUserName()) ? Guid.Empty.ToString() : GetUserKey(),
                    RequestedUserName = GetCurrentUserName(),
                    CommandTimeoutForClaimAdjudication =
                        Convert.ToInt32(GlobalConfigVariable.CommandTimeoutForClaimAdjudication),
                    MaxLinesForPdfReport =
                        GlobalConfigVariable.MaxRecordLimitForTelericReport,
                };
                ClaimAdjudicationReport claimAdjudicationReportDetails =
                    PostApiResponse <ClaimAdjudicationReport>(Constants.ClaimAdjudicationReport,
                                                              Constants.GetClaimAdjudicationReport,
                                                              claimAdjudicationReport);
                ClaimAdjudicationReportViewModel adjudicationList =
                    Mapper.Map <ClaimAdjudicationReport, ClaimAdjudicationReportViewModel>(
                        claimAdjudicationReportDetails);


                // Gets the current CST time.
                adjudicationList.CurrentDateTime = Utilities.GetLocalTimeString(currentDateTime);
                adjudicationList.LoggedInUser    = GetCurrentUserName();
                fileName = new ClaimAdjudicationReportUtil().GetExportedFileName(adjudicationList,
                                                                                 Enums.DownloadFileType.Pdf, GlobalConfigVariable.ReportsFilePath, currentDateTime);
            }
            else
            {
                VarianceReport varianceReport = new VarianceReport
                {
                    NodeId               = nodeId,
                    DateType             = datetype,
                    StartDate            = Convert.ToDateTime(startDate),
                    EndDate              = Convert.ToDateTime(endDate),
                    ClaimSearchCriteria  = criteria,
                    ReportLevel          = reportType,
                    FacilityId           = GetCurrentFacilityId(),
                    RequestedUserId      = string.IsNullOrEmpty(GetCurrentUserName()) ? Guid.Empty.ToString() : GetUserKey(),
                    RequestedUserName    = GetCurrentUserName(),
                    FileType             = fileType,
                    MaxLinesForPdfReport = GlobalConfigVariable.MaxRecordLimitForTelericReport
                };

                //Added RequestedUserID and RequestedUserName with reference to HIPAA logging feature
                VarianceReport varianceReportInfo = PostApiResponse <VarianceReport>(Constants.VarianceReport,
                                                                                     Constants.GetVarianceReport, varianceReport);
                VarianceReportViewModel varianceReportlist =
                    Mapper.Map <VarianceReport, VarianceReportViewModel>(varianceReportInfo);
                varianceReportlist.LoggedInUser = GetCurrentUserName();
                // Gets the local time zone.
                varianceReportlist.CurrentDateTime = Utilities.GetLocalTimeString(currentDateTime);
                fileName = new VarianceReportUtil().GetExportedFileName(reportType, reportFormat,
                                                                        varianceReportlist, GlobalConfigVariable.ReportsFilePath, currentDateTime);
            }
            return(Json(new { fileName, reportFormat }, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// takes different parameters and returns either file name or error result
        /// </summary>
        /// <param name="reportType">either claim level or contract level report</param>
        /// <param name="reportFormat">either pdf or excel format</param>
        /// <param name="varianceReportList">items to be written to the file</param>
        /// <param name="configuredPath">path to store the file in server</param>
        /// <param name="currentDateTime"></param>
        /// <returns></returns>
        public string GetExportedFileName(int reportType, Enums.DownloadFileType reportFormat, VarianceReportViewModel varianceReportList, string configuredPath, string currentDateTime)
        {
            string fileName = string.Empty;

            if (!Directory.Exists(configuredPath))
            {
                Directory.CreateDirectory(configuredPath);
            }

            switch (reportType)
            {
            case Constants.ReportLevelClaim:
                //if threshold is Constants.ReportThreshold, report can't be displayed as number of claims exceeds the requirement. Proper message would be displayed to user
                //in this case
                if (varianceReportList.CountThreshold == Constants.ReportThreshold)
                {
                    fileName = Convert.ToString(Constants.ReportThreshold);
                }
                else if (varianceReportList.ClaimData.Count == 0 && varianceReportList.VarianceReports.Count == 0)
                {
                    fileName = Constants.EmptyReportResult;
                }
                else
                {
                    if (reportFormat == Enums.DownloadFileType.Xls)
                    {
                        fileName = GetReportData(varianceReportList, currentDateTime);
                    }
                    else
                    {
                        fileName = ReportUtility.CreateFileUsingTelerik(new ClaimVarianceDetails(varianceReportList),
                                                                        reportFormat, configuredPath, Constants.VarianceReportFileBaseName, currentDateTime);
                    }
                }
                break;

            case Constants.ReportLevelContract:
                if (varianceReportList.Contracts == null || varianceReportList.Contracts.Count == 0)
                {
                    fileName = Constants.EmptyReportResult;
                }
                else
                {
                    fileName = ReportUtility.CreateFileUsingTelerik(new ContractVarianceDetails(varianceReportList),
                                                                    reportFormat, configuredPath, Constants.VarianceReportFileBaseName, currentDateTime);
                }
                break;
            }
            return(fileName);
        }
        /// <summary>
        /// Prepares complete variance report string
        /// </summary>
        /// <param name="varianceReportList">list of claim data in variance report</param>
        /// <param name="currentDateTime"></param>
        /// <returns></returns>
        private string GetReportData(VarianceReportViewModel varianceReportList, string currentDateTime)
        {
            string fileName = _reportUtility.GenerateCsvFile(varianceReportList.ClaimData, currentDateTime);

            return(fileName);
        }