コード例 #1
0
        //
        // GET: /Scheduling/Insurance/

        public ActionResult Edit(long chargeCardId = 0)
        {
            if (chargeCardId > 0)
            {
                var chargeCard = _chargeCardRepository.GetById(chargeCardId);
                var model      = new EligibilityEditModel
                {
                    CardDetail      = chargeCard,
                    HideCardDetails = true
                };
                return(View(model));
            }
            return(View(new EligibilityEditModel()));
        }
コード例 #2
0
        public ActionResult CheckEligibility(EligibilityEditModel model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }

            long?createdByOrgRoleUserId = null;

            if (_sessionContext != null && _sessionContext.UserSession != null)
            {
                createdByOrgRoleUserId = _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId;
            }

            model = _eligibilityService.CheckEligibility(model, createdByOrgRoleUserId);

            ModelState.Clear();

            return(PartialView(model));
        }
コード例 #3
0
        public EligibilityEditModel CheckEligibility(EligibilityEditModel model, long?orgRoleUserId)
        {
            var insuranceCompany     = _insuranceCompanyRepository.GetById(model.Request.InsuranceCompanyId);
            var insuranceServiceType = _insuranceServiceTypeRepository.GetById((long)EligibilityServiceType.HBPC);

            var eligibilityRespose = _eligibilityApi.GetCoverage(model.Request, insuranceCompany, insuranceServiceType);

            var creditCardResponse = CheckCreditCard(model.CardDetail);

            if (eligibilityRespose.Plan != null && (eligibilityRespose.Plan.CoverageStatus == EligibleCoverageStatus.ActiveCoverage || eligibilityRespose.Plan.CoverageStatus == EligibleCoverageStatus.ActiveFullRiskCapitation ||
                                                    eligibilityRespose.Plan.CoverageStatus == EligibleCoverageStatus.ActiveServicesCapitated || eligibilityRespose.Plan.CoverageStatus == EligibleCoverageStatus.ActiveServicesCapitatedToPrimaryCarePhysician) &&
                creditCardResponse.ProcessorResult == ProcessorResponseResult.Accepted)
            {
                decimal coPay       = 0;
                decimal coInsurance = 0;

                if (eligibilityRespose.Plan.FinancialData != null)
                {
                    if (eligibilityRespose.Plan.FinancialData.CoPayment != null && eligibilityRespose.Plan.FinancialData.CoPayment.Amounts != null)
                    {
                        if (insuranceCompany.InNetwork)
                        {
                            if (eligibilityRespose.Plan.FinancialData.CoPayment.Amounts.InNetWork != null && eligibilityRespose.Plan.FinancialData.CoPayment.Amounts.InNetWork.Any())
                            {
                                coPay = eligibilityRespose.Plan.FinancialData.CoPayment.Amounts.InNetWork.First().Amount;
                            }
                        }
                        else
                        {
                            if (eligibilityRespose.Plan.FinancialData.CoPayment.Amounts.OutNetWork != null && eligibilityRespose.Plan.FinancialData.CoPayment.Amounts.OutNetWork.Any())
                            {
                                coPay = eligibilityRespose.Plan.FinancialData.CoPayment.Amounts.OutNetWork.First().Amount;
                            }
                        }
                    }

                    if (eligibilityRespose.Plan.FinancialData.CoInsurance != null && eligibilityRespose.Plan.FinancialData.CoInsurance.Percents != null)
                    {
                        if (insuranceCompany.InNetwork)
                        {
                            if (eligibilityRespose.Plan.FinancialData.CoInsurance.Percents.InNetWork != null && eligibilityRespose.Plan.FinancialData.CoInsurance.Percents.InNetWork.Any())
                            {
                                coInsurance = eligibilityRespose.Plan.FinancialData.CoInsurance.Percents.InNetWork.First().Amount;
                            }
                        }
                        else
                        {
                            if (eligibilityRespose.Plan.FinancialData.CoInsurance.Percents.OutNetWork != null && eligibilityRespose.Plan.FinancialData.CoInsurance.Percents.OutNetWork.Any())
                            {
                                coPay = eligibilityRespose.Plan.FinancialData.CoInsurance.Percents.OutNetWork.First().Amount;
                            }
                        }
                    }
                }
                var eligibility = new Eligibility
                {
                    Id   = model.EligibilityId,
                    Guid = eligibilityRespose.Guid,
                    InsuranceCompanyId     = model.Request.InsuranceCompanyId,
                    PlanName               = eligibilityRespose.Plan.PlanName,
                    GroupName              = eligibilityRespose.Demographics.Subscriber.GroupName,
                    CoPayment              = coPay,
                    CoInsurance            = coInsurance,
                    Request                = JsonConvert.SerializeObject(model.Request),
                    Response               = eligibilityRespose.RawResponse,
                    DateCreated            = DateTime.Now,
                    CreatedByOrgRoleUserId = orgRoleUserId
                };

                eligibility         = _eligibilityRepository.Save(eligibility);
                model.EligibilityId = eligibility.Id;

                var chargeCard = model.CardDetail;
                chargeCard.DataRecorderMetaData = new DataRecorderMetaData
                {
                    DataRecorderCreator = new OrganizationRoleUser(orgRoleUserId.HasValue && orgRoleUserId.Value > 0 ? orgRoleUserId.Value : 1),
                    DateCreated         = DateTime.Now
                };
                chargeCard       = _chargeCardRepository.Save(chargeCard);
                model.CardDetail = chargeCard;
            }

            model.Response = eligibilityRespose;
            if (creditCardResponse.ProcessorResult != ProcessorResponseResult.Accepted)
            {
                model.ChargeCardResponse = creditCardResponse.Message;
                model.HideCardDetails    = false;
            }

            return(model);
        }