public OperationResult <Guid?> DeleteHealthRisk(Guid?id) { //Validazione argomenti if (!id.HasValue) { throw new ArgumentNullException(nameof(id)); } //Dichiaro la listsa di risultati di ritorno IList <ValidationResult> vResults = new List <ValidationResult>(); //Definisco l'entità HealthRisk entity = _healthRiskRepository.Load(id); //Eseguo la validazione logica vResults = ValidateDelete(entity); if (!vResults.Any()) { //Salvataggio su db _healthRiskRepository.Delete(entity); } //Ritorno i risultati return(new OperationResult <Guid?> { ReturnedValue = null, ValidationResults = vResults }); }
public void SaveCaseReport(Guid caseReportId, DataCollector dataCollector, HealthRisk healthRisk, string message, string origin, int numberOfMalesUnder5, int numberOfMalesAged5AndOlder, int numberOfFemalesUnder5, int numberOfFemalesAged5AndOlder, DateTimeOffset timestamp) { Update(new CaseReportForListing(caseReportId) { Status = CaseReportStatus.Success, Message = message, DataCollectorId = dataCollector.Id, DataCollectorDisplayName = dataCollector.DisplayName, DataCollectorDistrict = dataCollector.District, DataCollectorRegion = dataCollector.Region, DataCollectorVillage = dataCollector.Village, Location = dataCollector.Location, Origin = origin, HealthRiskId = healthRisk.Id, HealthRisk = healthRisk.Name, NumberOfMalesUnder5 = numberOfMalesUnder5, NumberOfMalesAged5AndOlder = numberOfMalesAged5AndOlder, NumberOfFemalesUnder5 = numberOfFemalesUnder5, NumberOfFemalesAged5AndOlder = numberOfFemalesAged5AndOlder, Timestamp = timestamp }); }
private void GenerateHealthRisks(Dictionary <Guid, string> healthRisks) { foreach (var keyValuePair in healthRisks) { var healthRisk = new HealthRisk(keyValuePair.Key, keyValuePair.Value); _healthRisksEventHandler.Handle(healthRisk); } }
public CaseReportFromUnknownDataCollectorExpanded(CaseReportFromUnknownDataCollector caseReport, HealthRisk healthRisk) { Id = caseReport.Id; NumberOfFemalesAged5AndOlder = caseReport.NumberOfFemalesAged5AndOlder; NumberOfFemalesUnder5 = caseReport.NumberOfFemalesUnder5; NumberOfMalesAged5AndOlder = caseReport.NumberOfMalesAged5AndOlder; NumberOfMalesUnder5 = caseReport.NumberOfMalesUnder5; Timestamp = caseReport.Timestamp; HealthRisk = healthRisk; }
public CaseReportFromUnknownDataCollectorExpanded(CaseReportFromUnknownDataCollector caseReport, HealthRisk healthRisk) { Id = caseReport.Id; NumberOfFemalesAgedOver4 = caseReport.NumberOfFemalesAgedOver4; NumberOfFemalesAges0To4 = caseReport.NumberOfFemalesAges0To4; NumberOfMalesAgedOver4 = caseReport.NumberOfMalesAgedOver4; NumberOfMalesAges0To4 = caseReport.NumberOfMalesAges0To4; Timestamp = caseReport.Timestamp; HealthRisk = healthRisk; }
public CaseReportFromUnknownDataCollectorExpanded(CaseReportFromUnknownDataCollector caseReport, HealthRisk healthRisk) { Id = caseReport.Id; NumberOfFemalesOver5 = caseReport.NumberOfFemalesOver5; NumberOfFemalesUnder5 = caseReport.NumberOfFemalesUnder5; NumberOfMalesOver5 = caseReport.NumberOfMalesOver5; NumberOfMalesUnder5 = caseReport.NumberOfMalesUnder5; Timestamp = caseReport.Timestamp; Location = caseReport.Location; HealthRisk = healthRisk; }
public IHttpActionResult Get(Guid?id) { //Recupero l'entity HealthRisk entity = _healthRiskService.Get <HealthRisk, Guid?>(id); //Compongo il dto HealthRiskDetailDto dto = Mapper.Map <HealthRiskDetailDto>(entity); //Ritorno i risultati return(Ok(dto)); }
public void InsertPerHealthRiskAndRegionForDay(CaseReport report, HealthRisk healthRisk, District district) { var numberOfReports = report.NumberOfFemalesAged5AndOlder + report.NumberOfFemalesUnder5 + report.NumberOfMalesAged5AndOlder + report.NumberOfMalesUnder5; var region = _regions.GetById(district.RegionId); var day = Day.From(report.Timestamp); var reportsPerHealthRisk = _caseReportsPerHealthRiskPerDay.GetById(day); if (reportsPerHealthRisk == null) { reportsPerHealthRisk = new CaseReportsPerHealthRiskPerDay() { Id = day, Timestamp = report.Timestamp, ReportsPerHealthRisk = new Dictionary <HealthRiskName, Dictionary <RegionName, int> >() { { healthRisk.Name, new Dictionary <RegionName, int>() { { region.Name, numberOfReports } } } } }; _caseReportsPerHealthRiskPerDay.Insert(reportsPerHealthRisk); } else { if (reportsPerHealthRisk.ReportsPerHealthRisk.TryGetValue(healthRisk.Name, out Dictionary <RegionName, int> reportsPerRegion)) { if (reportsPerRegion.TryGetValue(region.Name, out int totalReports)) { reportsPerRegion[region.Name] = totalReports + numberOfReports; } else { reportsPerRegion.Add(region.Name, numberOfReports); } reportsPerHealthRisk.ReportsPerHealthRisk[healthRisk.Name] = reportsPerRegion; } else { reportsPerHealthRisk.ReportsPerHealthRisk.Add(healthRisk.Name, new Dictionary <RegionName, int>() { { region.Name, numberOfReports } }); } _caseReportsPerHealthRiskPerDay.Update(reportsPerHealthRisk); } }
public CaseReportExpanded(CaseReport caseReport, DataCollector dataCollector, HealthRisk healthRisk) { Id = caseReport.Id; NumberOfFemalesOver5 = caseReport.NumberOfFemalesOver5; NumberOfFemalesUnder5 = caseReport.NumberOfFemalesUnder5; NumberOfMalesOver5 = caseReport.NumberOfMalesOver5; NumberOfMalesUnder5 = caseReport.NumberOfMalesUnder5; Timestamp = caseReport.Timestamp; Location = caseReport.Location; DataCollector = dataCollector; HealthRisk = healthRisk; }
private HealthRiskLanguageContent CreateNewLanguageContent(HealthRisk healthRisk, int languageId) { var newLanguageContent = new HealthRiskLanguageContent { HealthRisk = healthRisk, ContentLanguageId = languageId }; healthRisk.LanguageContents.Add(newLanguageContent); return(newLanguageContent); }
public OperationResult <Guid?> UpdateHealthRisk(HealthRiskEditDto dto) { //Validazione argomenti if (dto == null) { throw new ArgumentNullException(nameof(dto)); } if (!dto.Id.HasValue) { throw new ArgumentNullException(nameof(dto.Id)); } //Dichiaro la lista di risultati di ritorno IList <ValidationResult> vResults = new List <ValidationResult>(); //Definisco l'entità HealthRisk entity = _healthRiskRepository.Load(dto.Id); entity.Registry = dto.Registry != null && dto.Registry.Id.HasValue ? _registryRepository.Load(dto.Registry.Id) : null; entity.Level = dto.Level?.Id; entity.Rating = dto.Rating; entity.Type = dto.Type?.Id; entity.StartDate = dto.StartDate; entity.EndDate = dto.EndDate; //Eseguo la validazione logica vResults = ValidateEntity(entity); if (!vResults.Any()) { //Salvataggio su db _healthRiskRepository.Save(entity); } //Ritorno i risultati return(new OperationResult <Guid?> { ReturnedValue = entity.Id, ValidationResults = vResults }); }
public void SaveCaseReportFromUnknownDataCollector(Guid caseReportId, HealthRisk healthRisk, string message, string origin, int numberOfMalesUnder5, int numberOfMalesAged5AndOlder, int numberOfFemalesUnder5, int numberOfFemalesAged5AndOlder, DateTimeOffset timestamp) { Update(new CaseReportForListing(caseReportId) { Status = CaseReportStatus.UnknownDataCollector, DataCollectorDisplayName = "Unknown", DataCollectorId = null, HealthRisk = healthRisk.Name, HealthRiskId = healthRisk.Id, Location = Location.NotSet, Message = message, Origin = origin, Timestamp = timestamp, DataCollectorDistrict = null, DataCollectorRegion = null, DataCollectorVillage = null }); }
public async Task <Result> Create(HealthRiskRequestDto healthRiskRequestDto) { if (await _nyssContext.HealthRisks.AnyAsync(hr => hr.HealthRiskCode == healthRiskRequestDto.HealthRiskCode)) { return(Error(ResultKey.HealthRisk.HealthRiskNumberAlreadyExists)); } var languageContentIds = healthRiskRequestDto.LanguageContent.Select(lc => lc.LanguageId).ToArray(); var contentLanguages = await _nyssContext.ContentLanguages.Where(cl => languageContentIds.Contains(cl.Id)).ToDictionaryAsync(cl => cl.Id, cl => cl); var healthRisk = new HealthRisk { HealthRiskType = healthRiskRequestDto.HealthRiskType, HealthRiskCode = healthRiskRequestDto.HealthRiskCode, LanguageContents = healthRiskRequestDto.LanguageContent.Select(lc => new HealthRiskLanguageContent { Name = lc.Name, FeedbackMessage = lc.FeedbackMessage, CaseDefinition = lc.CaseDefinition, ContentLanguage = contentLanguages[lc.LanguageId] }).ToList(), AlertRule = healthRiskRequestDto.AlertRuleCountThreshold.HasValue ? new AlertRule { CountThreshold = healthRiskRequestDto.AlertRuleCountThreshold.Value, DaysThreshold = healthRiskRequestDto.AlertRuleDaysThreshold, KilometersThreshold = healthRiskRequestDto.AlertRuleKilometersThreshold } : null }; await _nyssContext.AddAsync(healthRisk); await _nyssContext.SaveChangesAsync(); return(SuccessMessage(ResultKey.HealthRisk.Create.CreationSuccess)); }
public void Process(HealthRiskCreated @event) { var healthRisk = new HealthRisk(@event.Id, @event.Name); _healthRisksEventHandler.Handle(healthRisk); }
private static bool CodeOrNameWasChanged(HealthRiskRequestDto healthRiskRequestDto, HealthRisk healthRisk) => healthRiskRequestDto.HealthRiskCode != healthRisk.HealthRiskCode || healthRiskRequestDto.LanguageContent.Any(lcDto => healthRisk.LanguageContents.Any(lc => lc.ContentLanguage.Id == lcDto.LanguageId && !string.IsNullOrEmpty(lc.Name)) && lcDto.Name != healthRisk.LanguageContents.Single(lc => lc.ContentLanguage.Id == lcDto.LanguageId).Name);
public void Handle(HealthRisk healthRisk) { _dbHandler.Insert(healthRisk); }
public void InsertPerHealthRiskAndRegionForComing4Weeks(CaseReport caseReport, HealthRisk healthRisk, District district) { // Insert by health risk and region var today = Day.From(caseReport.Timestamp); var region = _regions.GetById(district.RegionId); var numCases = caseReport.NumberOfMalesUnder5 + caseReport.NumberOfMalesAged5AndOlder + caseReport.NumberOfFemalesUnder5 + caseReport.NumberOfFemalesAged5AndOlder; for (var day = 0; day < 28; day++) { var dayReport = _caseReportsPerRegionLast4Weeks.GetById(day + today); if (dayReport != null) { var healthRiskForDay = dayReport.HealthRisks.FirstOrDefault(d => d.Id == caseReport.HealthRiskId); if (healthRiskForDay != null) { var regionForHealthRisk = healthRiskForDay.Regions.FirstOrDefault(r => r.Name == region.Name); if (regionForHealthRisk != null) { InsertNumCases(regionForHealthRisk, day, numCases); } else { healthRiskForDay.Regions.Add(AddRegionWithCases(region.Name, day, numCases)); } } else { dayReport.HealthRisks.Add(new HealthRisksInRegionsLast4Weeks() { Id = caseReport.HealthRiskId, HealthRiskName = healthRisk.Name, Regions = new[] { AddRegionWithCases(region.Name, day, numCases) } }); } _caseReportsPerRegionLast4Weeks.Update(dayReport); } else { dayReport = new CaseReportsPerRegionLast4Weeks() { Id = day + today, HealthRisks = new[] { new HealthRisksInRegionsLast4Weeks() { Id = caseReport.HealthRiskId, HealthRiskName = healthRisk.Name, Regions = new [] { AddRegionWithCases(region.Name, day, numCases) } } } }; _caseReportsPerRegionLast4Weeks.Insert(dayReport); } } ; }
private IList <ValidationResult> ValidateDelete(HealthRisk entity) { var vResults = ValidateEntity(entity); return(vResults); }
public void InsertPerHealthRiskAndRegionForComing4Weeks(CaseReport caseReport, HealthRisk healthRisk, District district) { // Insert by health risk and region var today = Day.From(caseReport.Timestamp); var region = _regions.GetById(district.RegionId); var numCases = caseReport.NumberOfMalesUnder5 + caseReport.NumberOfMalesAged5AndOlder + caseReport.NumberOfFemalesUnder5 + caseReport.NumberOfFemalesAged5AndOlder; for (var day = 0; day < 28; day++) { var dayReport = _caseReportsPerRegionLast4Weeks.GetById(day + today); if (dayReport != null) { if (dayReport.HealthRisks.TryGetValue(healthRisk.Name, out HealthRisksInRegionsLast4Weeks healthRiskForDay)) { if (healthRiskForDay.Regions.TryGetValue(region.Name, out RegionWithHealthRisk regionWithHealthRisk)) { regionWithHealthRisk = InsertNumCases(regionWithHealthRisk, day, numCases); healthRiskForDay.Regions[region.Name] = regionWithHealthRisk; } else { healthRiskForDay.Regions.Add(region.Name, AddRegionWithCases(region.Name, day, numCases)); } dayReport.HealthRisks[healthRisk.Name] = healthRiskForDay; } else { var healthRisksInRegion = new HealthRisksInRegionsLast4Weeks(); healthRisksInRegion.Regions = new Dictionary <RegionName, RegionWithHealthRisk> { { region.Name, AddRegionWithCases(region.Name, day, numCases) } }; dayReport.HealthRisks.Add(healthRisk.Name, healthRisksInRegion); } _caseReportsPerRegionLast4Weeks.Update(dayReport); } else { var healthRisksInRegion = new HealthRisksInRegionsLast4Weeks(); healthRisksInRegion.Regions = new Dictionary <RegionName, RegionWithHealthRisk>() { { region.Name, AddRegionWithCases(region.Name, day, numCases) } }; dayReport = new CaseReportsPerRegionLast4Weeks() { Id = day + today, HealthRisks = new Dictionary <HealthRiskName, HealthRisksInRegionsLast4Weeks>() { { healthRisk.Name, healthRisksInRegion } } }; _caseReportsPerRegionLast4Weeks.Insert(dayReport); } } }
public IActionResult Post([FromBody] HealthRisk healthRisk) { _healthRisks.ReplaceAsync(healthRisk); return(Ok()); }
public IActionResult AddHealthRisk([FromBody] HealthRisk healthRisk) { _healthRisks.SaveAsync(healthRisk); return(Ok()); }
public OperationResult <Guid?> UpdateRegistry(RegistryEditDto dto) { //Validazione argomenti if (dto == null) { throw new ArgumentNullException(nameof(dto)); } if (!dto.Id.HasValue) { throw new ArgumentNullException(nameof(dto.Id)); } //Dichiaro la lista di risultati di ritorno IList <ValidationResult> vResults = new List <ValidationResult>(); //Definisco l'entità Registry entity = _registryRepository.Load(dto.Id); entity.Firstname = dto.Firstname; entity.Surname = dto.Surname; entity.RegistryType = dto.RegistryType; entity.Sex = dto.Sex; entity.BirthDate = dto.BirthDate; entity.BirthPlace = dto.BirthPlace; entity.DomicilePlace = dto.DomicilePlace; entity.DomicilePlaceAddress = dto.DomicilePlaceAddress; entity.DomicilePlaceCap = dto.DomicilePlaceCap; entity.MunicipalityPlace = dto.MunicipalityPlace; entity.MunicipalityPlaceAddress = dto.MunicipalityPlaceAddress; entity.MunicipalityPlaceCap = dto.MunicipalityPlaceCap; entity.Email = dto.Email; entity.MobilePhone = dto.MobilePhone; entity.Phone = dto.Phone; entity.RegionalMedicalCode = dto.RegionalMedicalCode; entity.Latitude = dto.Latitude; entity.Longitude = dto.Longitude; entity.Allergy = dto.Allergy; entity.Intollerance = dto.Intollerance; entity.BloodGroup = dto.BloodGroup; entity.Diagnosis = dto.Diagnosis; entity.PreviousIllnesses = dto.PreviousIllnesses; entity.NextMedicalHistory = dto.NextMedicalHistory; entity.RemoteAnamnesis = dto.RemoteAnamnesis; entity.Diet = dto.Diet; entity.PathologiesInProgress = dto.PathologiesInProgress; entity.Note = dto.Note; entity.Weight = dto.Weight; entity.Height = dto.Height; entity.LifeStyle = dto.LifeStyle; if (string.IsNullOrWhiteSpace(entity.MunicipalityPlaceAddress)) { entity.Latitude = null; entity.Longitude = null; } //Eseguo la validazione logica vResults = ValidateEntity(entity); if (!vResults.Any()) { //Salvataggio su db _registryRepository.Save(entity); if (dto.HealthRisks != null) { if (entity.HealthRisks == null) { entity.HealthRisks = new List <HealthRisk>(); } entity.HealthRisks.Clear(); foreach (var item in dto.HealthRisks) { item.Registry = new RegistryDetailDto { Id = entity.Id }; var healthRiskValidation = item.Id.HasValue ? _healthRiskService.UpdateHealthRisk(item) : _healthRiskService.CreateHealthRisk(item); if (healthRiskValidation.HasErrors()) { return(healthRiskValidation); } HealthRisk healthRisk = _healthRiskRepository.Load(healthRiskValidation.ReturnedValue); entity.HealthRisks.Add(healthRisk); } } } //Ritorno i risultati return(new OperationResult <Guid?> { ReturnedValue = entity.Id, ValidationResults = vResults }); }
public HealthRiskServiceTests() { // Arrange var authorizationService = Substitute.For <IAuthorizationService>(); _nyssContextMock = Substitute.For <INyssContext>(); _healthRiskService = new HealthRiskService(_nyssContextMock, authorizationService); var users = new List <User> { new GlobalCoordinatorUser { EmailAddress = UserName, ApplicationLanguage = new ApplicationLanguage { Id = LanguageId, DisplayName = "English", LanguageCode = "en" } } }; var contentLanguages = new List <ContentLanguage> { new ContentLanguage { Id = LanguageId, DisplayName = "English", LanguageCode = "en" }, new ContentLanguage { Id = NewLanguageId, DisplayName = "New language", LanguageCode = "NEW" } }; var languageContents = new List <HealthRiskLanguageContent> { new HealthRiskLanguageContent { Id = LanguageId, CaseDefinition = CaseDefinition, FeedbackMessage = FeedbackMessage, Name = HealthRiskName, ContentLanguage = contentLanguages[0] } }; var alertRules = new List <AlertRule> { new AlertRule { Id = AlertRuleId, CountThreshold = AlertRuleCountThreshold, DaysThreshold = AlertRuleDaysThreshold, KilometersThreshold = AlertRuleKilometersThreshold } }; _healthRisk = new HealthRisk { Id = HealthRiskId, HealthRiskType = HealthRiskType, HealthRiskCode = HealthRiskCode, LanguageContents = languageContents, AlertRule = alertRules[0] }; var healthRisks = new List <HealthRisk> { _healthRisk }; var contentLanguageMockDbSet = contentLanguages.AsQueryable().BuildMockDbSet(); var languageContentsMockDbSet = languageContents.AsQueryable().BuildMockDbSet(); var healthRisksMockDbSet = healthRisks.AsQueryable().BuildMockDbSet(); var alertRuleMockDbSet = alertRules.AsQueryable().BuildMockDbSet(); var usersMockDbSet = users.AsQueryable().BuildMockDbSet(); var contentLanguagesMockDbSet = contentLanguages.AsQueryable().BuildMockDbSet(); _nyssContextMock.ContentLanguages.Returns(contentLanguageMockDbSet); _nyssContextMock.HealthRiskLanguageContents.Returns(languageContentsMockDbSet); _nyssContextMock.HealthRisks.Returns(healthRisksMockDbSet); _nyssContextMock.AlertRules.Returns(alertRuleMockDbSet); _nyssContextMock.ContentLanguages.Returns(contentLanguagesMockDbSet); _nyssContextMock.Users.Returns(usersMockDbSet); }