public HealthAssessmentTemplateListModel GetClinicalTemplate(HealthAssessmentTemplateListModelFilter filter, int pageNumber, int pageSize, out int totalRecords)
        {
            var templates                 = _healthAssessmentTemplateRepository.GetHealthAssessmentTemplate(filter, pageNumber, pageSize, out totalRecords);
            var templatesWithQuestion     = _healthAssessmentTemplateRepository.GetByIds(templates.Select(x => x.Id));
            var templatesCriterias        = _clinicalTestQualificationCriteriaRepository.GetbyTemplateIds(templates.Select(x => x.Id));
            var criteriaViewModels        = Mapper.Map <IEnumerable <ClinicalTestQualificationCriteria>, IEnumerable <ClinicalTestQualificationCriteriaViewModel> >(templatesCriterias).ToList();
            var healthAssessmentTemplates = Mapper.Map <IEnumerable <HealthAssessmentTemplate>, IEnumerable <HealthAssessmentTemplateViewModel> >(templates);
            var clinicalGroups            = _healthAssessmentRepository.GetAllQuestionGroupWithQuestion(true);

            foreach (var healthAssessmentTemplate in healthAssessmentTemplates)
            {
                List <ClinicalTestQualificationCriteriaViewModel> templateCriteria = null;
                if (!templatesCriterias.IsNullOrEmpty())
                {
                    templateCriteria = criteriaViewModels.Where(x => x.TemplateId == healthAssessmentTemplate.Id).ToList();
                }

                var selectedQuestionIds = templatesWithQuestion.First(x => x.Id == healthAssessmentTemplate.Id).QuestionIds;

                if (!templateCriteria.IsNullOrEmpty())
                {
                    _clinicalQuestionsHealthAssessmentHelper.CompleteClinicalQuestionCriteriaInfo(templateCriteria, clinicalGroups, selectedQuestionIds);
                }

                healthAssessmentTemplate.Criterias = templateCriteria;
            }

            var model = new HealthAssessmentTemplateListModel
            {
                HealthAssessmentTemplates = healthAssessmentTemplates,
                Filter = filter
            };

            return(model);
        }
        private HafModel GetHafModel(IEnumerable <KeyValuePair <long, List <long> > > keyValuePairs, IEnumerable <EventTest> eventTests, long eventId, long customerId, bool setChildQuestion, int versionNumber)
        {
            var questionsGroupByGroupName = _healthAssessmentRepository.GetAllQuestionGroupWithQuestion();
            var dependencyRules           = _haqDependencyRuleRepository.Get();
            var genericQuestionIds        = keyValuePairs.First(x => x.Key == 0).Value;
            IEnumerable <HealthAssessmentAnswer> answers = null;

            if (versionNumber > 0)
            {
                var archiveanswers = _healthAssessmentRepository.GetArchive(customerId, eventId, versionNumber);
                answers = archiveanswers.Select(aa => aa.HealthAssessmentAnswer).ToArray();
            }
            else
            {
                answers = _healthAssessmentRepository.Get(customerId, eventId);
            }


            keyValuePairs = keyValuePairs.Where(x => x.Key > 0);

            var questions = questionsGroupByGroupName.Where(x => x.Questions != null).SelectMany(x => x.Questions);

            var questionHafModel = questions.Where(
                x =>
                genericQuestionIds.Contains(x.Id) &&
                (x.IsForFemale == null || x.IsForFemale == IsFemale))
                                   .OrderBy(x => x.DisplaySequence)
                                   .ThenBy(x => x.Id)
                                   .Select(
                x => GetQuestion(x, dependencyRules.FirstOrDefault(d => d.QuestionId == x.Id), answers))
                                   .ToList();

            var genericModel = questionHafModel.Where(x => x.ParentQuestionId <= 0).ToArray();

            var model = new HafModel
            {
                Name        = string.Empty,
                Description = string.Empty,
                HafGroup    = new HafQuestionGroup
                {
                    Questions = setChildQuestion ? genericModel.Select(x => SetChildQuestions(x, questionHafModel.Where(c => c.ParentQuestionId == x.QuestoinId).ToArray(), questionHafModel.ToArray())) : questionHafModel
                },
                HafTests = CreateTestLevelHafQuestion(keyValuePairs, eventTests, questionsGroupByGroupName.Where(x => x.Questions != null).ToArray(), dependencyRules, answers, setChildQuestion)
            };

            long parentQuestionId = 0;
            var  index            = 0;

            foreach (var item in model.HafGroup.Questions.Where(x => x.ParentQuestionId > 0))
            {
                if (parentQuestionId != item.ParentQuestionId)
                {
                    index            = 1;
                    parentQuestionId = item.ParentQuestionId;
                }
                item.RelativeOrder = index++;
            }

            return(model);
        }
Exemple #3
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
                    };
                }
            }
        }