Ejemplo n.º 1
0
        public IHttpActionResult ProfessionalPaymentRate(PaymentRateRequestModel oPaymentRate)
        {
            string sIPAddress = Request.GetOwinContext().Request.RemoteIpAddress;

            try
            {
                PaymentRateReturnModel oPaymentRateReturn = oPaymentCalc.CalculateProfessionalPaymentRate(oPaymentRate);

                oLogger.LogData("ROUTE: api/MPFS/ProfessionalPaymentRate; METHOD: POST; IP_ADDRESS: " + sIPAddress);

                return(Json <PaymentRateReturnModel>(oPaymentRateReturn));
            }
            catch (Exception ex)
            {
                oLogger.LogData("ROUTE: api/MPFS/ProfessionalPaymentRate; METHOD: POST; IP_ADDRESS: " + sIPAddress + "; EXCEPTION: " + ex.Message + "; INNER EXCEPTION: " + ex.InnerException);
                return(InternalServerError());
            }
        }
Ejemplo n.º 2
0
        public PaymentRateReturnModel CalculateGlobalPaymentRate(PaymentRateRequestModel oPaymentRate)
        {
            const string CPTMod = "";

            if (oPaymentRate.PaymentRateScope.Equals("National"))
            {
                var GlobalNationalPaymentRate = Convert.ToDouble(oRVU.CalculateGlobalRVU(oPaymentRate.CPTCode)) * ConversionFactor;

                return(new PaymentRateReturnModel()
                {
                    Scope = oPaymentRate.PaymentRateScope,
                    Locale = oPaymentRate.Locale,
                    PaymentRate = GlobalNationalPaymentRate,
                    CPTCode = oPaymentRate.CPTCode,
                    CPTMod = CPTMod
                });
            }
            else
            {
                var oLocaleGPCI    = oGPCIRepo.RetrieveGPCIByLocale(oPaymentRate.Locale).FirstOrDefault();
                var oGlobalCPTCode = oMPFSRepo.RetrieveMPFSByGlobalCPT(oPaymentRate.CPTCode).Where(c => c.Mod.Equals(CPTMod)).FirstOrDefault();
                var oValidCPT      = ValidateCPT(oGlobalCPTCode);

                var GlobalRegionalPaymentRate = (
                    (Convert.ToDouble(oLocaleGPCI.PW_GPCI) * Convert.ToDouble(oValidCPT.Work_RVUs2)) +
                    (Convert.ToDouble(oLocaleGPCI.PE_GPCI) * Convert.ToDouble(oValidCPT.Non_Facility_PE_RVUs2)) +
                    (Convert.ToDouble(oLocaleGPCI.MP_GPCI) * Convert.ToDouble(oValidCPT.Mal_Practice_RVUs2))
                    ) * ConversionFactor;

                return(new PaymentRateReturnModel()
                {
                    Scope = oPaymentRate.PaymentRateScope,
                    Locale = oPaymentRate.Locale,
                    PaymentRate = GlobalRegionalPaymentRate,
                    CPTCode = oPaymentRate.CPTCode,
                    CPTMod = CPTMod
                });
            }
        }
Ejemplo n.º 3
0
        public List <CaseSummaryReturnModel> GetCaseSummary(List <CaseCode> lstCaseCodes, CaseSummaryRequestModel oCaseSummary)
        {
            List <CaseSummaryReturnModel> lstCaseReturn = new List <CaseSummaryReturnModel>();

            foreach (var caseCode in lstCaseCodes)
            {
                CaseSummaryReturnModel  oCaseReturn          = new CaseSummaryReturnModel();
                PaymentRateReturnModel  oPaymentRateReturn   = new PaymentRateReturnModel();
                PaymentRateRequestModel oPaymentRateRequest  = new PaymentRateRequestModel();
                PaymentRateCalculations oPaymentCalculations = new PaymentRateCalculations();

                if (oCaseSummary.treatment_setting.Equals("Hospital"))
                {
                    var OppsByCPT = oOPPSRepo.GetOPPSCByCPT(caseCode.CaseCode1).FirstOrDefault();

                    if (OppsByCPT.Payment_Rate_ == 0 || OppsByCPT.Payment_Rate_ == null)
                    {
                        oCaseReturn.payment_rate = 0;
                    }
                    else
                    {
                        oCaseReturn.payment_rate = Convert.ToDouble(OppsByCPT.Payment_Rate_);
                    }

                    oCaseReturn.cpt_code             = OppsByCPT.HCPCS_Code;
                    oCaseReturn.number_of_treatments = 0;
                    oCaseReturn.treatment_cost       = oCaseReturn.payment_rate * oCaseReturn.number_of_treatments;
                    oCaseReturn.treatment_setting    = oCaseSummary.treatment_setting;

                    lstCaseReturn.Add(oCaseReturn);
                }
                if (oCaseSummary.treatment_setting.Equals("Global"))
                {
                    oPaymentRateRequest.CPTCode          = caseCode.CaseCode1;
                    oPaymentRateRequest.Locale           = oCaseSummary.locality;
                    oPaymentRateRequest.PaymentRateScope = oCaseSummary.scope;

                    var GlobalCalculation = oPaymentCalculations.CalculateGlobalPaymentRate(oPaymentRateRequest);

                    oCaseReturn.cpt_code             = GlobalCalculation.CPTCode;
                    oCaseReturn.number_of_treatments = 0;
                    oCaseReturn.treatment_setting    = oCaseSummary.treatment_setting;
                    oCaseReturn.payment_rate         = GlobalCalculation.PaymentRate;
                    oCaseReturn.treatment_cost       = oCaseReturn.payment_rate * oCaseReturn.number_of_treatments;
                    lstCaseReturn.Add(oCaseReturn);
                }
                if (oCaseSummary.treatment_setting.Equals("Professional"))
                {
                    oPaymentRateRequest.CPTCode          = caseCode.CaseCode1;
                    oPaymentRateRequest.Locale           = oCaseSummary.locality;
                    oPaymentRateRequest.PaymentRateScope = oCaseSummary.scope;

                    var ProfessionalCalculation = oPaymentCalculations.CalculateProfessionalPaymentRate(oPaymentRateRequest);

                    oCaseReturn.cpt_code             = ProfessionalCalculation.CPTCode;
                    oCaseReturn.number_of_treatments = 0;
                    oCaseReturn.treatment_setting    = oCaseSummary.treatment_setting;
                    oCaseReturn.payment_rate         = ProfessionalCalculation.PaymentRate;
                    oCaseReturn.treatment_cost       = oCaseReturn.payment_rate * oCaseReturn.number_of_treatments;
                    lstCaseReturn.Add(oCaseReturn);
                }
                if (oCaseSummary.treatment_setting.Equals("Technical"))
                {
                    oPaymentRateRequest.CPTCode          = caseCode.CaseCode1;
                    oPaymentRateRequest.Locale           = oCaseSummary.locality;
                    oPaymentRateRequest.PaymentRateScope = oCaseSummary.scope;

                    var TechnicalCalculation = oPaymentCalculations.CalculateTechnicalPaymentRate(oPaymentRateRequest);

                    oCaseReturn.cpt_code             = TechnicalCalculation.CPTCode;
                    oCaseReturn.number_of_treatments = 0;
                    oCaseReturn.treatment_setting    = oCaseSummary.treatment_setting;
                    oCaseReturn.payment_rate         = TechnicalCalculation.PaymentRate;
                    oCaseReturn.treatment_cost       = oCaseReturn.payment_rate * oCaseReturn.number_of_treatments;
                    lstCaseReturn.Add(oCaseReturn);
                }
            }

            return(lstCaseReturn);
        }
Ejemplo n.º 4
0
        public PaymentRateReturnModel CalculateTechnicalPaymentRate(PaymentRateRequestModel oPaymentRate)
        {
            const string CPTMod = "TC";
            Double       TechnicalRegionalPaymentRate = 0;
            Double       TechnicalNationalPaymentRate = 0;

            if (oPaymentRate.PaymentRateScope.Equals("National"))
            {
                TechnicalNationalPaymentRate = Convert.ToDouble(oRVU.CalculateTechnicalRVU(oPaymentRate.CPTCode)) * ConversionFactor;

                return(new PaymentRateReturnModel()
                {
                    Scope = oPaymentRate.PaymentRateScope,
                    Locale = oPaymentRate.Locale,
                    PaymentRate = TechnicalNationalPaymentRate,
                    CPTCode = oPaymentRate.CPTCode,
                    CPTMod = CPTMod
                });
            }
            else
            {
                var oLocaleGPCI    = oGPCIRepo.RetrieveGPCIByLocale(oPaymentRate.Locale).FirstOrDefault();
                var oGlobalCPTCode = oMPFSRepo.RetrieveMPFSByGlobalCPT(oPaymentRate.CPTCode);

                if (!oGlobalCPTCode.Any() || oGlobalCPTCode == null)
                {
                    return(new PaymentRateReturnModel()
                    {
                        Scope = oPaymentRate.PaymentRateScope,
                        Locale = oPaymentRate.Locale,
                        PaymentRate = TechnicalRegionalPaymentRate,
                        CPTCode = oPaymentRate.CPTCode,
                        CPTMod = CPTMod,
                        HasError = true,
                        ErrorMessage = "Global CPT has a null error."
                    });
                }

                if (oGlobalCPTCode.Count() == 1)
                {
                    if (oGlobalCPTCode.FirstOrDefault().Work_RVUs2 == "NA" || oGlobalCPTCode.FirstOrDefault().Work_RVUs2 == "" || oGlobalCPTCode.FirstOrDefault().Work_RVUs2 == "0")
                    {
                        var TechnicalCPT = oGlobalCPTCode.FirstOrDefault();

                        TechnicalRegionalPaymentRate = (
                            (Convert.ToDouble(oLocaleGPCI.PW_GPCI) * Convert.ToDouble(TechnicalCPT.Work_RVUs2)) +
                            (Convert.ToDouble(oLocaleGPCI.PE_GPCI) * Convert.ToDouble(TechnicalCPT.Non_Facility_PE_RVUs2)) +
                            (Convert.ToDouble(oLocaleGPCI.MP_GPCI) * Convert.ToDouble(TechnicalCPT.Mal_Practice_RVUs2))
                            ) * ConversionFactor;

                        return(new PaymentRateReturnModel()
                        {
                            Scope = oPaymentRate.PaymentRateScope,
                            Locale = oPaymentRate.Locale,
                            PaymentRate = TechnicalRegionalPaymentRate,
                            CPTCode = oPaymentRate.CPTCode,
                            CPTMod = CPTMod
                        });
                    }
                    else
                    {
                        return(new PaymentRateReturnModel()
                        {
                            Scope = oPaymentRate.PaymentRateScope,
                            Locale = oPaymentRate.Locale,
                            PaymentRate = TechnicalRegionalPaymentRate,
                            CPTCode = oPaymentRate.CPTCode,
                            CPTMod = CPTMod
                        });
                    }
                }
                else
                {
                    if (!oGlobalCPTCode.Any() || oGlobalCPTCode == null)
                    {
                        return(new PaymentRateReturnModel()
                        {
                            Scope = oPaymentRate.PaymentRateScope,
                            Locale = oPaymentRate.Locale,
                            PaymentRate = 0,
                            CPTCode = oPaymentRate.CPTCode,
                            CPTMod = CPTMod
                        });
                    }

                    var TechnicalCPT = oGlobalCPTCode.Where(c => c.Mod.Equals(CPTMod)).FirstOrDefault();

                    if (TechnicalCPT.Work_RVUs2 == "NA" || TechnicalCPT.Work_RVUs2 == "")
                    {
                        TechnicalCPT.Work_RVUs2 = "0";
                    }
                    if (TechnicalCPT.Non_Facility_PE_RVUs2 == "NA" || TechnicalCPT.Non_Facility_PE_RVUs2 == "")
                    {
                        TechnicalCPT.Non_Facility_PE_RVUs2 = "0";
                    }
                    if (TechnicalCPT.Mal_Practice_RVUs2 == "NA" || TechnicalCPT.Mal_Practice_RVUs2 == "")
                    {
                        TechnicalCPT.Mal_Practice_RVUs2 = "0";
                    }

                    TechnicalRegionalPaymentRate = (
                        (Convert.ToDouble(oLocaleGPCI.PW_GPCI) * Convert.ToDouble(TechnicalCPT.Work_RVUs2)) +
                        (Convert.ToDouble(oLocaleGPCI.PE_GPCI) * Convert.ToDouble(TechnicalCPT.Non_Facility_PE_RVUs2)) +
                        (Convert.ToDouble(oLocaleGPCI.MP_GPCI) * Convert.ToDouble(TechnicalCPT.Mal_Practice_RVUs2))
                        ) * ConversionFactor;

                    return(new PaymentRateReturnModel()
                    {
                        Scope = oPaymentRate.PaymentRateScope,
                        Locale = oPaymentRate.Locale,
                        PaymentRate = TechnicalRegionalPaymentRate,
                        CPTCode = oPaymentRate.CPTCode,
                        CPTMod = CPTMod
                    });
                }
            }
        }
Ejemplo n.º 5
0
        public PaymentRateReturnModel CalculateProfessionalPaymentRate(PaymentRateRequestModel oPaymentRate)
        {
            const string CPTMod = "26";
            Double       ProfessionalNationalPaymentRate = 0;
            Double       ProfessionalRegionalPaymentRate = 0;

            if (oPaymentRate.PaymentRateScope.Equals("National"))
            {
                ProfessionalNationalPaymentRate = Convert.ToDouble(oRVU.CalculateProfessionalRVU(oPaymentRate.CPTCode)) * ConversionFactor;

                return(new PaymentRateReturnModel()
                {
                    Scope = oPaymentRate.PaymentRateScope,
                    Locale = oPaymentRate.Locale,
                    PaymentRate = ProfessionalNationalPaymentRate,
                    CPTCode = oPaymentRate.CPTCode,
                    CPTMod = CPTMod
                });
            }
            else
            {
                var oLocaleGPCI    = oGPCIRepo.RetrieveGPCIByLocale(oPaymentRate.Locale).FirstOrDefault();
                var oGlobalCPTCode = oMPFSRepo.RetrieveMPFSByGlobalCPT(oPaymentRate.CPTCode);

                if (oGlobalCPTCode.Count() == 1)
                {
                    if (oGlobalCPTCode.FirstOrDefault().Work_RVUs2 != "NA" || oGlobalCPTCode.FirstOrDefault().Work_RVUs2 != "")
                    {
                        var ProfessionalCPT = oGlobalCPTCode.FirstOrDefault();

                        ProfessionalRegionalPaymentRate = (
                            (Convert.ToDouble(oLocaleGPCI.PW_GPCI) * Convert.ToDouble(ProfessionalCPT.Work_RVUs2)) +
                            (Convert.ToDouble(oLocaleGPCI.PE_GPCI) * Convert.ToDouble(ProfessionalCPT.Facility_PE_RVUs2)) +
                            (Convert.ToDouble(oLocaleGPCI.MP_GPCI) * Convert.ToDouble(ProfessionalCPT.Mal_Practice_RVUs2))
                            ) * ConversionFactor;

                        return(new PaymentRateReturnModel()
                        {
                            Scope = oPaymentRate.PaymentRateScope,
                            Locale = oPaymentRate.Locale,
                            PaymentRate = ProfessionalRegionalPaymentRate,
                            CPTCode = oPaymentRate.CPTCode,
                            CPTMod = CPTMod
                        });
                    }
                    else
                    {
                        return(new PaymentRateReturnModel()
                        {
                            Scope = oPaymentRate.PaymentRateScope,
                            Locale = oPaymentRate.Locale,
                            PaymentRate = ProfessionalRegionalPaymentRate,
                            CPTCode = oPaymentRate.CPTCode,
                            CPTMod = CPTMod
                        });
                    }
                }
                else
                {
                    var ProfessionalCPT = oGlobalCPTCode.Where(c => c.Mod.Equals(CPTMod)).FirstOrDefault();

                    if (oGlobalCPTCode == null)
                    {
                        return(new PaymentRateReturnModel()
                        {
                            Scope = oPaymentRate.PaymentRateScope,
                            Locale = oPaymentRate.Locale,
                            PaymentRate = 0,
                            CPTCode = oPaymentRate.CPTCode,
                            CPTMod = CPTMod
                        });
                    }

                    if (ProfessionalCPT.Work_RVUs2 == "NA" || ProfessionalCPT.Work_RVUs2 == "")
                    {
                        ProfessionalCPT.Work_RVUs2 = "0";
                    }
                    if (ProfessionalCPT.Non_Facility_PE_RVUs2 == "NA" || ProfessionalCPT.Non_Facility_PE_RVUs2 == "")
                    {
                        ProfessionalCPT.Non_Facility_PE_RVUs2 = "0";
                    }
                    if (ProfessionalCPT.Mal_Practice_RVUs2 == "NA" || ProfessionalCPT.Mal_Practice_RVUs2 == "")
                    {
                        ProfessionalCPT.Mal_Practice_RVUs2 = "0";
                    }

                    ProfessionalRegionalPaymentRate = (
                        (Convert.ToDouble(oLocaleGPCI.PW_GPCI) * Convert.ToDouble(ProfessionalCPT.Work_RVUs2)) +
                        (Convert.ToDouble(oLocaleGPCI.PE_GPCI) * Convert.ToDouble(ProfessionalCPT.Facility_PE_RVUs2)) +
                        (Convert.ToDouble(oLocaleGPCI.MP_GPCI) * Convert.ToDouble(ProfessionalCPT.Mal_Practice_RVUs2))
                        ) * ConversionFactor;

                    return(new PaymentRateReturnModel()
                    {
                        Scope = oPaymentRate.PaymentRateScope,
                        Locale = oPaymentRate.Locale,
                        PaymentRate = ProfessionalRegionalPaymentRate,
                        CPTCode = oPaymentRate.CPTCode,
                        CPTMod = CPTMod
                    });
                }
            }
        }