Beispiel #1
0
        public void Save(HealthAssessmentEditModel model, string guid, long clinicalQuestionTemplateId, long createdByOrgRoleUserId)
        {
            if (model.QuestionEditModels == null || !model.QuestionEditModels.Any())
            {
                return;
            }

            var answerCollection = model.QuestionEditModels.Select(
                m =>
                new CustomerClinicalQuestionAnswer
            {
                Guid = guid,
                ClinicalQuestionTemplateId = clinicalQuestionTemplateId,
                EventId    = model.EventId,
                CustomerId = model.CustomerId,
                ClinicalHealthQuestionId = m.QuestionId,
                HealthQuestionAnswer     = m.Answer,
                DataRecorderMetaData     = new DataRecorderMetaData(createdByOrgRoleUserId, DateTime.Now, null),
            }).ToArray();

            using (var scope = new TransactionScope())
            {
                Save(answerCollection, createdByOrgRoleUserId);
                scope.Complete();
            }
        }
        private bool CheckKynHaf(Customer customer, HealthAssessmentEditModel model)
        {
            if (model.QuestionEditModels.Any(x => _personalHealthQuestionIds.Contains(x.QuestionId) && string.IsNullOrEmpty(x.Answer)))
            {
                return(false);
            }

            if (customer.Gender == Gender.Female)
            {
                _womenOnlyQuestionIds = _womenOnlyQuestionIds.Where(x => x != 156).ToArray();
                if (model.QuestionEditModels.Any(x => _womenOnlyQuestionIds.Contains(x.QuestionId) && string.IsNullOrEmpty(x.Answer)))
                {
                    return(false);
                }

                //var birthQuestion = model.QuestionEditModels.SingleOrDefault(x => x.QuestionId == 154);
                //if (birthQuestion != null && string.IsNullOrEmpty(birthQuestion.Answer))
                //    return false;

                var diabetesQuestion = model.QuestionEditModels.SingleOrDefault(x => x.QuestionId == 155);
                if (diabetesQuestion != null && !string.IsNullOrEmpty(diabetesQuestion.Answer) && diabetesQuestion.Answer.ToLower() == "yes")
                {
                    var lastDiagnosedQuestion = model.QuestionEditModels.SingleOrDefault(x => x.QuestionId == 156);
                    if (lastDiagnosedQuestion != null && string.IsNullOrEmpty(lastDiagnosedQuestion.Answer))
                    {
                        return(false);
                    }
                }
            }

            if (model.QuestionEditModels.Any(x => _medicationQuestionIds.Contains(x.QuestionId) && string.IsNullOrEmpty(x.Answer)))
            {
                return(false);
            }

            if (model.QuestionEditModels.Any(x => _lifeStyleQuestionIds.Contains(x.QuestionId) && string.IsNullOrEmpty(x.Answer)))
            {
                return(false);
            }

            var currentlySmokeQuestion = model.QuestionEditModels.SingleOrDefault(x => x.QuestionId == 168);

            if (currentlySmokeQuestion != null && !string.IsNullOrEmpty(currentlySmokeQuestion.Answer) && currentlySmokeQuestion.Answer.ToLower() == "yes")
            {
                if (model.QuestionEditModels.Any(x => _smokingQuestionIds.Contains(x.QuestionId) && string.IsNullOrEmpty(x.Answer)))
                {
                    return(false);
                }

                //var smokedYearQuestion = model.QuestionEditModels.SingleOrDefault(x => x.QuestionId == 163);
                //if (smokedYearQuestion != null && string.IsNullOrEmpty(smokedYearQuestion.Answer))
                //    return false;

                //var smokedDailyQuestion = model.QuestionEditModels.SingleOrDefault(x => x.QuestionId == 164);
                //if (smokedDailyQuestion != null && string.IsNullOrEmpty(smokedDailyQuestion.Answer))
                //    return false;
            }
            return(true);
        }
Beispiel #3
0
        public CustomerClinicalQuestionEditModel Get(string guid, long customerId, long eventId, long clinicalQuestionTemplateId, long eventCustomerId = 0)
        {
            var template = _healthAssessmentTemplateRepository.GetById(clinicalQuestionTemplateId);

            var questions = _healthAssessmentRepository.GetByIds(template.QuestionIds);

            var questionModelCollection = Mapper.Map <IEnumerable <HealthAssessmentQuestion>, IEnumerable <HealthAssessmentQuestionEditModel> >(questions);

            var answers = _clinicalQuestionAnswerRepository.GetCustomerClinicalQuestionAnswers(guid, customerId);

            if (answers.IsNullOrEmpty() && eventCustomerId > 0)
            {
                answers = null;
                var hafAnswers = _healthAssessmentRepository.GetAnswerByEventCustomerId(eventCustomerId);
                foreach (var answer in hafAnswers)
                {
                    var editModel = questionModelCollection.SingleOrDefault(q => q.QuestionId == answer.QuestionId);
                    if (editModel != null)
                    {
                        editModel.Answer = answer.Answer;
                    }
                }
            }

            if (answers != null)
            {
                foreach (var answer in answers)
                {
                    var editModel = questionModelCollection.SingleOrDefault(q => q.QuestionId == answer.ClinicalHealthQuestionId);
                    if (editModel != null)
                    {
                        editModel.Answer = answer.HealthQuestionAnswer;
                    }
                }
            }
            var healthAssessmentModel = new HealthAssessmentEditModel
            {
                CustomerId         = customerId,
                EventId            = eventId,
                QuestionEditModels = questionModelCollection
            };

            _clinicalQuestionsHealthAssessmentHelper.SetRecommendationLogic(clinicalQuestionTemplateId, healthAssessmentModel);
            var model = new CustomerClinicalQuestionEditModel
            {
                HealthAssessmentModel      = healthAssessmentModel,
                ClinicalQuestionTemplateId = clinicalQuestionTemplateId,
                Guid = guid
            };

            return(model);
        }
Beispiel #4
0
        public ActionResult SaveHealthAssessmentForm(HealthAssessmentEditModel model, KynHealthAssessmentEditModel kynModel)
        {
            if (model == null)
            {
                return(Json(new { Result = false, Message = "Model can't be null!" }));
            }


            if ((model.IsKynPurchased || model.IsBioCheckAssessmentPurchased || model.IsHKynPurchased) && kynModel != null)
            {
                _kynHealthAssessmentService.SetKynHealthAssessment(kynModel, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
            }

            _healthAssessmentService.Save(model, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);

            return(Json(new { Result = true, Message = "" }));
        }
Beispiel #5
0
        public ActionResult View(long id)
        {
            var template  = _healthAssessmentTemplateRepository.GetById(id);
            var questions = _healthAssessmentRepository.GetByIds(template.QuestionIds);
            var questionModelCollection = Mapper.Map <IEnumerable <HealthAssessmentQuestion>, IEnumerable <HealthAssessmentQuestionEditModel> >(questions);

            var model = new HealthAssessmentEditModel
            {
                QuestionEditModels = questionModelCollection
            };

            if (template.Category == (long)HealthAssessmentTemplateCategory.ClinicalQuestions)
            {
                _clinicalQuestionsHealthAssessmentHelper.SetRecommendationLogic(id, model);
            }

            return(View(model));
        }
Beispiel #6
0
        public void SetRecommendationLogic(long templateId, HealthAssessmentEditModel model)
        {
            var critarias           = _clinicalTestQualificationCriteriaRepository.GetbyTemplateId(templateId);
            var critariasViewModels = Mapper.Map <IEnumerable <ClinicalTestQualificationCriteria>, IEnumerable <ClinicalTestQualificationCriteriaViewModel> >(critarias);
            var clinicalGroups      = _healthAssessmentRepository.GetAllQuestionGroupWithQuestion(true);
            var template            = _healthAssessmentTemplateRepository.GetById(templateId);

            CompleteClinicalQuestionCriteriaInfo(critariasViewModels, clinicalGroups, template.QuestionIds);

            if (!critariasViewModels.IsNullOrEmpty())
            {
                //Osteoporosis
                var recommendation = critariasViewModels.FirstOrDefault(x => TestGroup.OsteoTestIds.Contains(x.TestId));
                if (recommendation != null)
                {
                    model.BoneDensityRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                //Peripheral Arterial Disease (PAD)/A/B Index
                recommendation = critariasViewModels.FirstOrDefault(x => TestGroup.PadTestIds.Contains(x.TestId));
                if (recommendation != null)
                {
                    model.ABIndexRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                //AAA
                recommendation = critariasViewModels.FirstOrDefault(x => TestGroup.AaaTestIds.Contains(x.TestId));
                if (recommendation != null)
                {
                    model.AAARecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                //Stroke/Carotid Artery Ultrasound
                recommendation = critariasViewModels.FirstOrDefault(x => TestGroup.StrokeTesIds.Contains(x.TestId));
                if (recommendation != null)
                {
                    model.CarotidRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                //Echocardiogram
                recommendation = critariasViewModels.FirstOrDefault(x => TestGroup.EchoTestIds.Contains(x.TestId));
                if (recommendation != null)
                {
                    model.EchocardiogramRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                recommendation = critariasViewModels.FirstOrDefault(x => TestGroup.SpiroTestIds.Contains(x.TestId));
                if (recommendation != null)
                {
                    model.SpirometryRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                recommendation = critariasViewModels.FirstOrDefault(x => x.TestId == (long)TestType.IFOBT);
                if (recommendation != null)
                {
                    model.IFOBTRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                recommendation = critariasViewModels.FirstOrDefault(x => x.TestId == (long)TestType.HcpCaDiabetesPanel);
                if (recommendation != null)
                {
                    model.DiabetesPanelRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                recommendation = critariasViewModels.FirstOrDefault(x => x.TestId == (long)TestType.HcpCaBmp);
                if (recommendation != null)
                {
                    model.BmpRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                recommendation = critariasViewModels.FirstOrDefault(x => x.TestId == (long)TestType.HcpCaLipidProfile);
                if (recommendation != null)
                {
                    model.LipidProfileRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                recommendation = critariasViewModels.FirstOrDefault(x => x.TestId == (long)TestType.HcpCaMicroAlbuminCreatinine);
                if (recommendation != null)
                {
                    model.MicroAlbuminCreatinineRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }

                recommendation = critariasViewModels.FirstOrDefault(x => x.TestId == (long)TestType.HcpCaHepatitisC);
                if (recommendation != null)
                {
                    model.HepatitisCRecommendationLogic = new QualificationRecommendationLogic
                    {
                        RecommendationLogic   = recommendation.ToString(),
                        DisqualificationLogic = recommendation.DisqualificationLogic
                    };
                }
            }
        }
Beispiel #7
0
        public ActionResult HealthAssessment(HealthAssessmentFormEditModel model, HealthAssessmentHeaderEditModel headerModel, HealthAssessmentEditModel assessmentEditModel, HealthAssessmentFooterEditModel footerEditModel, KynHealthAssessmentEditModel kynHealthAssessmentEditModel)
        {
            try
            {
                if (!model.PrintBlank)
                {
                    _customerService.SaveCustomer(headerModel, footerEditModel, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);

                    _healthAssessmentService.Save(assessmentEditModel, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
                    if ((model.IsKynPurchased || assessmentEditModel.IsBioCheckAssessmentPurchased || assessmentEditModel.IsHKynPurchased) && (kynHealthAssessmentEditModel != null))
                    {
                        _kynHealthAssessmentService.SetKynHealthAssessment(kynHealthAssessmentEditModel, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
                    }
                }

                model.RefrrerUrl = "/Scheduling/EventCustomerList/Index?id=" + model.EventId;
                if (model.RedirecttoPrevious && !model.Print)
                {
                    Response.RedirectUser(model.RefrrerUrl + "&hId=" + model.CustomerId);
                    return(null);
                }

                var newModel = _healthAssessmentService.GetModel(model.EventId, model.CustomerId, true);

                newModel.Print              = model.Print;
                newModel.PrintBlank         = model.PrintBlank;
                newModel.OpenforPrint       = model.OpenforPrint;
                newModel.RedirecttoPrevious = model.RedirecttoPrevious;
                newModel.RefrrerUrl         = model.RefrrerUrl;
                newModel.IsBulkPrint        = model.IsBulkPrint;

                if (newModel.Print || newModel.PrintBlank)
                {
                    newModel.PrintUrl = PrintHealthAssessmentForm(newModel);
                }

                return(View(newModel));
            }
            catch (Exception ex)
            {
                var newModel = _healthAssessmentService.GetModel(model.EventId, model.CustomerId, true);
                newModel.Print              = model.Print;
                newModel.PrintBlank         = model.PrintBlank;
                newModel.OpenforPrint       = model.OpenforPrint;
                newModel.RedirecttoPrevious = model.RedirecttoPrevious;
                newModel.RefrrerUrl         = model.RefrrerUrl;
                newModel.FeedbackMessage    = FeedbackMessageModel.CreateFailureMessage(ex.Message);
                _logger.Error("Error Message : " + ex.Message + " \n stack Trace : " + ex.StackTrace);
                return(View(newModel));
            }
        }
        public ActionResult SaveClinicalQuestion(HealthAssessmentEditModel model, string guid, long clinicalQuestionTemplateId)
        {
            _customerClinicalQuestionAnswerService.Save(model, guid, clinicalQuestionTemplateId, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId);

            return(Json(new { Result = true, Message = "" }));
        }