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