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()); } }
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 }); } }
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); }
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 }); } } }
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 }); } } }