public HafModel Get(HafFilter filter) { var theEvent = _eventRepository.GetById(filter.EventId); if (!theEvent.HealthAssessmentTemplateId.HasValue || theEvent.HealthAssessmentTemplateId.Value <= 0) { return(null); } var customer = _customerRepository.GetCustomer(filter.CustomerId); var template = _healthAssessmentTemplateRepository.GetById(theEvent.HealthAssessmentTemplateId.Value); var genericQuestionIds = new List <long>(); var list = new List <KeyValuePair <long, List <long> > >(); IsFemale = customer.Gender == Gender.Female; //Get Generic Question from Event Templates genericQuestionIds.AddRange(template.QuestionIds); var order = _orderRepository.GetOrder(filter.CustomerId, filter.EventId); var eventpackageId = order.OrderDetails.Where(od => od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess && od.OrderItem.OrderItemType == OrderItemType.EventPackageItem).Select(od => od.OrderItem.ItemId).FirstOrDefault(); var isKynIntegrationEnabled = _eventPodRepository.IsKynIntegrationEnabled(filter.EventId); var eventTestIds = new List <long>(); if (eventpackageId > 0) { var eventPackage = _eventPackageRepository.GetById(eventpackageId); if (eventPackage.HealthAssessmentTemplateId.HasValue && eventPackage.HealthAssessmentTemplateId.Value > 0) { var packageTemplate = _healthAssessmentTemplateRepository.GetById(eventPackage.HealthAssessmentTemplateId.Value); genericQuestionIds.AddRange(packageTemplate.QuestionIds); } eventTestIds.AddRange(eventPackage.Tests.Select(t => t.Id)); } list.Add(new KeyValuePair <long, List <long> >(0, genericQuestionIds)); eventTestIds.AddRange(order.OrderDetails.Where(od => od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess && od.OrderItem.OrderItemType == OrderItemType.EventTestItem).Select(od => od.OrderItem.ItemId)); var eventTests = _eventTestRepository.GetbyIds(eventTestIds); var testWiseQuestion = GetTestQuestionKeyValuePairs(eventTestIds, isKynIntegrationEnabled, eventTests); if (testWiseQuestion != null) { list.AddRange(testWiseQuestion); } var hafModel = GetHafModel(list, eventTests, filter.EventId, filter.CustomerId, filter.SetChildQuestion, filter.VersionNumber) ?? new HafModel(); hafModel.EventId = filter.EventId; hafModel.CustomerId = filter.CustomerId; return(hafModel); }
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); }
public ActionResult SetTemplateIsActiveState(long templateId, bool isActive) { var template = _healthAssessmentTemplateRepository.GetById(templateId); if (template.IsDefault && template.IsPublished && template.TemplateType.HasValue && template.TemplateType.Value == (long)HealthAssessmentTemplateType.Event) { return(Json(new { IsSuccess = false, Message = "Template can not be deactivated since it default template for event. To deactivate it, Please make another template as default and publish it." }, JsonRequestBehavior.AllowGet)); } template.IsActive = isActive; _healthAssessmentTemplateRepository.Save(template); return(Json(new { IsSuccess = true, Message = isActive ? "Template activated successfully." : "Template deactivated successfully." }, JsonRequestBehavior.AllowGet)); }
public bool CheckifNameisUnique(HealthAssessmentTemplateEditModel model, string templateName) { if (model.Id > 0) { var inDb = _templateRepository.GetById(model.Id); if (inDb.Name == templateName) { return(true); } } if (string.IsNullOrEmpty(templateName)) { return(false); } var template = _templateRepository.GetByName(templateName.Trim()); if (template != null) { return(false); } return(true); }
public IEnumerable <ClinicalTestQualificationCriteriaEditModel> Get(long templateId) { var template = _healthAssessmentTemplateRepository.GetById(templateId); var criterias = _clinicalTestQualificationCriteriaRepository.GetbyTemplateId(templateId); var criteriaEditModel = Mapper.Map <IEnumerable <ClinicalTestQualificationCriteria>, IEnumerable <ClinicalTestQualificationCriteriaEditModel> >(criterias); return(criteriaEditModel); }
public HealthAssessmentTemplateEditModel SaveTemplate(HealthAssessmentTemplateEditModel model, long organizationRoleUserId) { HealthAssessmentTemplate templateinDb = null; var template = Mapper.Map <HealthAssessmentTemplateEditModel, HealthAssessmentTemplate>(model); if (template.Id > 0) { templateinDb = _healthAssessmentTemplateRepository.GetById(template.Id); template.DataRecorderMetaData = templateinDb.DataRecorderMetaData; template.DataRecorderMetaData.DateModified = DateTime.Now; template.DataRecorderMetaData.DataRecorderModifier = new OrganizationRoleUser(organizationRoleUserId); if (!templateinDb.IsPublished && template.IsPublished) { template.PublicationDate = DateTime.Now; } } else { template.DataRecorderMetaData = new DataRecorderMetaData(organizationRoleUserId, DateTime.Now, null); if (template.IsPublished) { template.PublicationDate = DateTime.Now; } } using (var scope = new TransactionScope()) { template = _healthAssessmentTemplateRepository.Save(template); scope.Complete(); } model.Id = template.Id; return(model); }
private IEnumerable <ClinicalTestQualificationCriteriaEditModel> SetTotalNumberOfQuestionAndGroupName(IEnumerable <ClinicalTestQualificationCriteriaEditModel> criterias, long templateId, IEnumerable <HealthAssessmentQuestionGroup> groups) { var template = _healthAssessmentTemplateRepository.GetById(templateId); var selectedQuestionIds = template.QuestionIds; var finalCriteriaModel = new List <ClinicalTestQualificationCriteriaEditModel>(); foreach (var healthAssessmentQuestionGroup in groups) { var parentQuestion = healthAssessmentQuestionGroup.Questions.Where(x => selectedQuestionIds.Contains(x.Id) && x.ParentQuestionId != null); int count = 0; if (parentQuestion.IsNullOrEmpty()) { count = healthAssessmentQuestionGroup.Questions.Count(x => selectedQuestionIds.Contains(x.Id)); } else { var parentQuestionIds = parentQuestion.Select(x => x.ParentQuestionId).Distinct(); foreach (var questionId in parentQuestionIds) { var tempCount = healthAssessmentQuestionGroup.Questions.Count(x => x.ParentQuestionId == questionId); if (count > tempCount || count == 0) { count = tempCount; } } } var criteira = criterias.Single(x => x.TestId == healthAssessmentQuestionGroup.TestId); criteira.TotalQuestionCount = count; criteira.GroupName = healthAssessmentQuestionGroup.Name; finalCriteriaModel.Add(criteira); } return(finalCriteriaModel); }
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 }; } } }