Exemplo n.º 1
0
        public void Process(CaseReportReceived @event)
        {
            var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);

            if (dataCollector.InTraining)
            {
                return;                           // don't include training data
            }
            // Each day contains a health risk dictionary
            // Each healthrisk in the healthrisk dictionary contains two collections of case-reports from 7 and 30 days
            var totalCases            = @event.NumberOfFemalesAged5AndOlder + @event.NumberOfFemalesUnder5 + @event.NumberOfMalesAged5AndOlder + @event.NumberOfMalesUnder5;
            var locationForCaseReport = new Location(@event.Latitude, @event.Longitude);
            var healthRisk            = _healthRisks.GetById(@event.HealthRiskId);

            var dayOfCaseReport = Day.From(@event.Timestamp);
            var timeLimit4Weeks = dayOfCaseReport + 28;
            var timeLimit7Days  = dayOfCaseReport + 7;

            // Insert or update casereport depending on if it is in the list of not
            for (Day day = dayOfCaseReport; day < timeLimit4Weeks; day++)
            {
                var caseReport = new CaseReportForMap()
                {
                    HealthRiskName = healthRisk.Name,
                    NumberOfPeople = totalCases,
                    Location       = locationForCaseReport
                };

                if (day < timeLimit7Days)
                {
                    UpdateCaseReportLast7Days(caseReport, day, healthRisk.HealthRiskNumber);
                }
                UpdateCaseReportLast4Weeks(caseReport, day, healthRisk.HealthRiskNumber);
            }
        }
Exemplo n.º 2
0
        public void Process(CaseReportReceived @event)
        {
            var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);

            dataCollector.LastReportRecievedAt = @event.Timestamp;
            _dataCollectors.Save(dataCollector);
        }
Exemplo n.º 3
0
        public void Process(CaseReportReceived @event)
        {
            // Each day contains a health risk dictionary
            // Each healthrisk in the healthrisk dictionary contains two collections of case-reports from 7 and 30 days
            var totalCases            = @event.NumberOfFemalesAged5AndOlder + @event.NumberOfFemalesUnder5 + @event.NumberOfMalesAged5AndOlder + @event.NumberOfMalesUnder5;
            var locationForCaseReport = new Location(@event.Latitude, @event.Longitude);
            var healthRiskId          = @event.HealthRiskId;
            var healthRiskName        = _healthRisks.GetById(healthRiskId).Name;

            var dayOfCaseReport = Day.From(@event.Timestamp);
            var timeLimit30Days = dayOfCaseReport + 30;
            var timeLimit7Days  = dayOfCaseReport + 7;

            // Insert or update casereport depending on if it is in the list of not
            for (Day day = dayOfCaseReport; day < timeLimit30Days; day++)
            {
                var caseReport = new CaseReportForMap()
                {
                    NumberOfPeople = totalCases,
                    Location       = locationForCaseReport
                };

                if (day < timeLimit7Days)
                {
                    UpdateCaseReportLast7Days(caseReport, day, healthRiskName);
                }
                UpdateCaseReportLast30Days(caseReport, day, healthRiskName);
            }
        }
Exemplo n.º 4
0
        public void Process(CaseReportReceived @event, EventSourceId caseReportId)
        {
            var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);
            var healthRisk    = _healthRisks.GetById(@event.HealthRiskId);

            var caseReport = new CaseReportForListing(caseReportId.Value)
            {
                Status                   = CaseReportStatus.Success,
                Message                  = @event.Message,
                DataCollectorId          = dataCollector.Id,
                DataCollectorDisplayName = dataCollector.DisplayName,
                DataCollectorDistrict    = dataCollector.District,
                DataCollectorRegion      = dataCollector.Region,
                DataCollectorVillage     = dataCollector.Village,
                Location                 = dataCollector.Location,
                Origin                   = @event.Origin,

                HealthRiskId = healthRisk.Id,
                HealthRisk   = healthRisk.Name,

                NumberOfMalesUnder5          = @event.NumberOfMalesUnder5,
                NumberOfMalesAged5AndOlder   = @event.NumberOfMalesAged5AndOlder,
                NumberOfFemalesUnder5        = @event.NumberOfFemalesUnder5,
                NumberOfFemalesAged5AndOlder = @event.NumberOfFemalesAged5AndOlder,
                Timestamp = @event.Timestamp,
            };

            _caseReports.Insert(caseReport);
        }
Exemplo n.º 5
0
        public void Process(CaseReportReceived @event)
        {
            var today = Day.From(@event.Timestamp);

            for (var day = today; day < today + 7; day++)
            {
                var totals = _caseReportTotalsRepository.GetById(day);
                if (totals != null)
                {
                    totals.FemalesUnder5 += @event.NumberOfFemalesUnder5;
                    totals.MalesUnder5   += @event.NumberOfMalesUnder5;
                    totals.FemalesOver5  += @event.NumberOfFemalesAged5AndOlder;
                    totals.MalesOver5    += @event.NumberOfMalesAged5AndOlder;

                    _caseReportTotalsRepository.Update(totals);
                }
                else
                {
                    totals = new CaseReportTotals()
                    {
                        Id            = day,
                        FemalesUnder5 = @event.NumberOfFemalesUnder5,
                        MalesUnder5   = @event.NumberOfMalesUnder5,
                        FemalesOver5  = @event.NumberOfFemalesAged5AndOlder,
                        MalesOver5    = @event.NumberOfMalesAged5AndOlder
                    };

                    _caseReportTotalsRepository.Insert(totals);
                }
            }
        }
Exemplo n.º 6
0
        public void Process(CaseReportReceived @event)
        {
            var transaction = _commandContextManager.EstablishForCommand(
                new Dolittle.Runtime.Commands.CommandRequest(
                    Guid.NewGuid(),
                    Guid.NewGuid(),
                    1,
                    new Dictionary <string, object>()));
            var root = _caseReportAggregateRootRepository.Get(@event.CaseReportId);
            var data = new CaseReportData
            {
                CaseReportId                 = @event.CaseReportId,
                DataCollectorId              = @event.DataCollectorId,
                HealthRiskId                 = @event.HealthRiskId,
                Latitude                     = @event.Latitude,
                Longitude                    = @event.Longitude,
                Timestamp                    = @event.Timestamp,
                NumberOfMalesUnder5          = @event.NumberOfMalesUnder5,
                NumberOfMalesAged5AndOlder   = @event.NumberOfMalesAged5AndOlder,
                NumberOfFemalesUnder5        = @event.NumberOfFemalesUnder5,
                NumberOfFemalesAged5AndOlder = @event.NumberOfFemalesAged5AndOlder,
                Message     = @event.Message,
                PhoneNumber = @event.Origin
            };

            root.ProcessReport(data);
            transaction.Commit();
        }
Exemplo n.º 7
0
        public void Process(CaseReportReceived @event)
        {
            var healthRiskName      = _healthRisks.GetById(@event.HealthRiskId)?.Name ?? "Unknown";
            var recieved            = Day.From(@event.Timestamp);
            var numberOfCaseReports = @event.NumberOfFemalesUnder5 + @event.NumberOfFemalesAged5AndOlder + @event.NumberOfMalesUnder5 + @event.NumberOfMalesAged5AndOlder;

            for (var days = 0; days < 7; days++)
            {
                CreateOrUpdateCaseReports(recieved + days, @event.HealthRiskId, _ => {
                    _.HealthRiskName = healthRiskName;
                    _.Days0to6      += numberOfCaseReports;
                });
            }
            for (var days = 7; days < 14; days++)
            {
                CreateOrUpdateCaseReports(recieved + days, @event.HealthRiskId, _ => {
                    _.HealthRiskName = healthRiskName;
                    _.Days7to13     += numberOfCaseReports;
                });
            }
            for (var days = 14; days < 21; days++)
            {
                CreateOrUpdateCaseReports(recieved + days, @event.HealthRiskId, _ => {
                    _.HealthRiskName = healthRiskName;
                    _.Days14to20    += numberOfCaseReports;
                });
            }
            for (var days = 21; days < 28; days++)
            {
                CreateOrUpdateCaseReports(recieved + days, @event.HealthRiskId, _ => {
                    _.HealthRiskName = healthRiskName;
                    _.Days21to27    += numberOfCaseReports;
                });
            }
        }
Exemplo n.º 8
0
        public void Process(CaseReportReceived @event)
        {
            var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);
            var healthRisk    = _healthRisks.GetById(@event.HealthRiskId);
            var caseReport    = new CaseReportForListing(@event.CaseReportId)
            {
                Status                       = CaseReportStatus.Success,
                DataCollectorId              = @event.DataCollectorId,
                DataCollectorDisplayName     = dataCollector.DisplayName,
                DataCollectorRegion          = dataCollector.Region,
                DataCollectorDistrict        = dataCollector.District,
                DataCollectorVillage         = dataCollector.Village,
                HealthRiskId                 = @event.HealthRiskId,
                HealthRisk                   = healthRisk.Name,
                NumberOfFemalesUnder5        = @event.NumberOfFemalesUnder5,
                NumberOfFemalesAged5AndOlder = @event.NumberOfFemalesAged5AndOlder,
                NumberOfMalesUnder5          = @event.NumberOfMalesUnder5,
                NumberOfMalesAged5AndOlder   = @event.NumberOfMalesAged5AndOlder,
                Location                     = new Location(@event.Latitude, @event.Longitude),
                Timestamp                    = @event.Timestamp,
                Origin                       = @event.Origin,
                Message                      = @event.Message,
                ParsingErrorMessage          = new List <string>()
            };

            _caseReports.Save(caseReport);
        }
Exemplo n.º 9
0
        public void Process(CaseReportReceived @event)
        {
            var caseReport = new CaseReport(@event.DataCollectorId,
                                            @event.HealthRiskId, @event.Origin, @event.Message, @event.NumberOfMalesUnder5, @event.NumberOfMalesAged5AndOlder,
                                            @event.NumberOfFemalesUnder5, @event.NumberOfFemalesAged5AndOlder, @event.Longitude, @event.Latitude,
                                            @event.Timestamp);

            _caseReportRepository.Insert(caseReport);
        }
Exemplo n.º 10
0
        public void Process(CaseReportReceived @event)
        {
            var res = _dataCollectors.UpdateOne(
                Builders <DataCollector> .Filter.Where(d => d.DataCollectorId == @event.DataCollectorId),
                Builders <DataCollector> .Update.Set(d => d.LastReportRecievedAt, @event.Timestamp));

            if (res.IsModifiedCountAvailable && res.MatchedCount < 1)
            {
                throw new Exception("Data collector with id " + @event.DataCollectorId + " was not found");
            }
        }
Exemplo n.º 11
0
        public void Process(CaseReportReceived @event)
        {
            var caseReport = new CaseReport(@event.CaseReportId);

            caseReport.DataCollectorId       = @event.DataCollectorId;
            caseReport.HealthRiskId          = @event.HealthRiskId;
            caseReport.NumberOfFemalesUnder5 = @event.Age <= 5 && (Sex)@event.Sex == Sex.Female ? 1 : 0;
            caseReport.NumberOfFemalesOver5  = @event.Age > 5 && (Sex)@event.Sex == Sex.Female ? 1 : 0;
            caseReport.NumberOfMalesUnder5   = @event.Age <= 5 && (Sex)@event.Sex == Sex.Male ? 1 : 0;
            caseReport.NumberOfMalesOver5    = @event.Age > 5 && (Sex)@event.Sex == Sex.Male ? 1 : 0;
            caseReport.Location = new Location(@event.Latitude, @event.Longitude);
            _caseReports.Save(caseReport);
        }
Exemplo n.º 12
0
        public void Process(CaseReportReceived @event)
        {
            var caseReport = new CaseReport(@event.CaseReportId);

            caseReport.DataCollectorId       = @event.DataCollectorId;
            caseReport.HealthRiskId          = @event.HealthRiskId;
            caseReport.NumberOfFemalesUnder5 = @event.NumberOfFemalesUnder5;
            caseReport.NumberOfFemalesOver5  = @event.NumberOfFemalesOver5;
            caseReport.NumberOfMalesUnder5   = @event.NumberOfMalesUnder5;
            caseReport.NumberOfMalesOver5    = @event.NumberOfMalesOver5;
            caseReport.Location  = new Location(@event.Latitude, @event.Longitude);
            caseReport.Timestamp = @event.Timestamp;
            _caseReports.Save(caseReport);
        }
Exemplo n.º 13
0
        public void Process(CaseReportReceived @event)
        {
            var alertCount = @event.NumberOfFemalesAged5AndOlder + @event.NumberOfFemalesUnder5 + @event.NumberOfMalesAged5AndOlder + @event.NumberOfMalesUnder5;
            var weekNumber = GetWeekFromDate(@event.Timestamp.DateTime);

            var nationalSociety = new AlertsByWeek()
            {
                Year       = (short)@event.Timestamp.DateTime.Year,
                Week       = (short)weekNumber,
                AlertCount = alertCount
            };

            _repository.Insert(nationalSociety);
        }
Exemplo n.º 14
0
 public async Task Process(CaseReportReceived @event)
 {
     var caseReport = new CaseReport(@event.CaseReportId)
     {
         DataCollectorId       = @event.DataCollectorId,
         HealthRiskId          = @event.HealthRiskId,
         NumberOfFemalesUnder5 = @event.NumberOfFemalesUnder5,
         NumberOfFemalesOver5  = @event.NumberOfFemalesOver5,
         NumberOfMalesUnder5   = @event.NumberOfMalesUnder5,
         NumberOfMalesOver5    = @event.NumberOfMalesOver5,
         Location  = new Location(@event.Latitude, @event.Longitude),
         Timestamp = @event.Timestamp
     };
     await _caseReports.Save(caseReport);
 }
Exemplo n.º 15
0
 public async Task Process(CaseReportReceived @event)
 {
     // Save CaseReport in the CaseReports DB
     var caseReport = new CaseReport(@event.CaseReportId)
     {
         DataCollectorId          = @event.DataCollectorId,
         HealthRiskId             = @event.HealthRiskId,
         NumberOfFemalesAges0To4  = @event.NumberOfFemalesAges0To4,
         NumberOfFemalesAgedOver4 = @event.NumberOfFemalesAgedOver4,
         NumberOfMalesAges0To4    = @event.NumberOfMalesAges0To4,
         NumberOfMalesAgedOver4   = @event.NumberOfMalesAgedOver4,
         Location  = new Location(@event.Latitude, @event.Longitude),
         Timestamp = @event.Timestamp
     };
     await _caseReports.Save(caseReport);
 }
Exemplo n.º 16
0
        public void Process(CaseReportReceived @event)
        {
            var caseReport = new CaseReport(@event.CaseReportId)
            {
                DataCollectorId              = @event.DataCollectorId,
                HealthRiskId                 = @event.HealthRiskId,
                NumberOfFemalesUnder5        = @event.NumberOfFemalesUnder5,
                NumberOfFemalesAged5AndOlder = @event.NumberOfFemalesAged5AndOlder,
                NumberOfMalesUnder5          = @event.NumberOfMalesUnder5,
                NumberOfMalesAged5AndOlder   = @event.NumberOfMalesAged5AndOlder,
                Location  = new Location(@event.Latitude, @event.Longitude),
                Timestamp = @event.Timestamp,
                Message   = @event.Message
            };

            _caseReports.Update(caseReport);
        }
Exemplo n.º 17
0
        public void Process(CaseReportReceived @event)
        {
            var caseReport = new CaseReport {
                NumberOfMalesAged5AndOlder   = @event.NumberOfMalesAged5AndOlder,
                NumberOfFemalesAged5AndOlder = @event.NumberOfFemalesAged5AndOlder,
                NumberOfFemalesUnder5        = @event.NumberOfFemalesUnder5,
                NumberOfMalesUnder5          = @event.NumberOfMalesUnder5,
                Timestamp  = @event.Timestamp,
                HealthRisk = @event.HealthRiskId,
                Longitude  = @event.Longitude,
                Latitude   = @event.Latitude
            };

            this.repository.Insert(caseReport);

            this.calculators.ForEach(c => c.Calculate(caseReport));
        }
        public void Process(CaseReportReceived @event)
        {
            var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);
            var healthRisk    = _healthRisks.GetById(@event.HealthRiskId);

            _caseReports.SaveCaseReport(
                @event.CaseReportId,
                dataCollector,
                healthRisk,
                @event.Message,
                @event.Origin,
                @event.NumberOfMalesUnder5,
                @event.NumberOfMalesAged5AndOlder,
                @event.NumberOfFemalesUnder5,
                @event.NumberOfFemalesAged5AndOlder,
                @event.Timestamp);
        }
Exemplo n.º 19
0
        public void Process(CaseReportReceived @event, EventSourceId caseReportId)
        {
            // Insert CaseReports
            var caseReport = new CaseReport(caseReportId.Value, @event.DataCollectorId,
                                            @event.HealthRiskId, @event.Origin, @event.Message, @event.NumberOfMalesUnder5, @event.NumberOfMalesAged5AndOlder,

                                            @event.NumberOfFemalesUnder5, @event.NumberOfFemalesAged5AndOlder, @event.Longitude, @event.Latitude,
                                            @event.Timestamp);

            _caseReportRepository.Insert(caseReport);

            var healthRisk    = _healthRisks.GetById(caseReport.HealthRiskId);
            var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);
            var district      = _districts.Query.FirstOrDefault(_ => _.Name == dataCollector.District);

            InsertPerHealthRiskAndRegionForComing4Weeks(caseReport, healthRisk, district);
            UpdateDataCollectorLastActive(dataCollector, caseReport);
            InsertPerHealthRiskAndRegionForDay(caseReport, healthRisk, district);
        }
Exemplo n.º 20
0
        public void Process(CaseReportReceived @event)
        {
            var root = _caseReportAggregateRootRepository.Get(@event.CaseReportId);
            var data = new CaseReportData
            {
                CaseReportId                 = @event.CaseReportId,
                DataCollectorId              = @event.DataCollectorId,
                HealthRiskId                 = @event.HealthRiskId,
                Latitude                     = @event.Latitude,
                Longitude                    = @event.Longitude,
                Timestamp                    = @event.Timestamp,
                NumberOfMalesUnder5          = @event.NumberOfMalesUnder5,
                NumberOfMalesAged5AndOlder   = @event.NumberOfMalesAged5AndOlder,
                NumberOfFemalesUnder5        = @event.NumberOfFemalesUnder5,
                NumberOfFemalesAged5AndOlder = @event.NumberOfFemalesAged5AndOlder
            };

            root.ProcessReport(data);
        }
Exemplo n.º 21
0
 public async Task Process(CaseReportReceived @event)
 {
     var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);
     var healthRisk    = _healthRisks.GetById(@event.HealthRiskId);
     var caseReport    = new CaseReportForListing(@event.CaseReportId)
     {
         Status                   = CaseReportStatus.Success,
         DataCollectorId          = @event.DataCollectorId,
         DataCollectorDisplayName = dataCollector.DisplayName,
         HealthRiskId             = @event.HealthRiskId,
         HealthRisk               = healthRisk.Name,
         NumberOfFemalesAges0To4  = @event.NumberOfFemalesAges0To4,
         NumberOfFemalesAgedOver4 = @event.NumberOfFemalesAgedOver4,
         NumberOfMalesAges0To4    = @event.NumberOfMalesAges0To4,
         NumberOfMalesAgedOver4   = @event.NumberOfMalesAgedOver4,
         Location                 = new Location(@event.Latitude, @event.Longitude),
         Timestamp                = @event.Timestamp
     };
     await _caseReports.Save(caseReport);
 }
Exemplo n.º 22
0
        public void Process(CaseReportReceived @event)
        {
            var dataCollector = _dataCollectors.GetById(@event.DataCollectorId);

            if (dataCollector.InTraining)
            {
                return;                           // don't inlcude training data
            }
            var today = Day.From(@event.Timestamp);

            for (var day = today; day < today + 7; day++)
            {
                var totals = _caseReportTotalsRepository.GetById(day);
                if (totals != null)
                {
                    totals.FemalesUnder5 += @event.NumberOfFemalesUnder5;
                    totals.MalesUnder5   += @event.NumberOfMalesUnder5;
                    totals.FemalesOver5  += @event.NumberOfFemalesAged5AndOlder;
                    totals.MalesOver5    += @event.NumberOfMalesAged5AndOlder;

                    _caseReportTotalsRepository.Update(totals);
                }
                else
                {
                    totals = new CaseReportTotals()
                    {
                        Id            = day,
                        FemalesUnder5 = @event.NumberOfFemalesUnder5,
                        MalesUnder5   = @event.NumberOfMalesUnder5,
                        FemalesOver5  = @event.NumberOfFemalesAged5AndOlder,
                        MalesOver5    = @event.NumberOfMalesAged5AndOlder
                    };

                    _caseReportTotalsRepository.Insert(totals);
                }
            }
        }
Exemplo n.º 23
0
        public void Process(CaseReportReceived @event)
        {
            // Insert CaseReports
            var caseReport = new CaseReport(@event.DataCollectorId,
                                            @event.HealthRiskId, @event.Origin, @event.Message, @event.NumberOfMalesUnder5, @event.NumberOfMalesAged5AndOlder,
                                            @event.NumberOfFemalesUnder5, @event.NumberOfFemalesAged5AndOlder, @event.Longitude, @event.Latitude,
                                            @event.Timestamp);

            _caseReportRepository.Insert(caseReport);

            var healthRisk    = _healthRisks.GetById(caseReport.HealthRiskId);
            var dataCollector = _dataCollectors.GetById(caseReport.DataCollectorId);

            // Insert by health risk and region
            var today      = Day.From(caseReport.Timestamp);
            var totalCases = caseReport.NumberOfMalesUnder5
                             + caseReport.NumberOfMalesAged5AndOlder
                             + caseReport.NumberOfFemalesUnder5
                             + caseReport.NumberOfFemalesAged5AndOlder;
            Region region = dataCollector.Region;

            for (var day = today; day < today + 7; day++)
            {
                var dayReport = _caseReportsPerRegionLast7DaysRepository.GetById(day);
                if (dayReport != null)
                {
                    var healthRiskForDay = dayReport.HealthRisks.FirstOrDefault(d => d.Id == caseReport.HealthRiskId);
                    if (healthRiskForDay != null)
                    {
                        var regionForHealthRisk = healthRiskForDay.Regions.FirstOrDefault(r => r.Id == region);
                        if (regionForHealthRisk != null)
                        {
                            regionForHealthRisk.NumCases += totalCases;
                        }
                        else
                        {
                            healthRiskForDay.Regions.Add(AddRegionWithCases(region, totalCases));
                        }
                    }
                    else
                    {
                        dayReport.HealthRisks.Add(new HealthRisksInRegionsLast7Days()
                        {
                            Id             = caseReport.HealthRiskId,
                            HealthRiskName = healthRisk.Name,
                            Regions        = new [] { AddRegionWithCases(region, totalCases) }
                        });
                    }
                    _caseReportsPerRegionLast7DaysRepository.Update(dayReport);
                }
                else
                {
                    dayReport = new CaseReportsPerRegionLast7Days()
                    {
                        Id          = day,
                        HealthRisks = new []
                        {
                            new HealthRisksInRegionsLast7Days()
                            {
                                Id             = caseReport.HealthRiskId,
                                HealthRiskName = healthRisk.Name,
                                Regions        = new [] { AddRegionWithCases(region, totalCases) }
                            }
                        }
                    };
                    _caseReportsPerRegionLast7DaysRepository.Insert(dayReport);
                }
            }
            ;
        }
Exemplo n.º 24
0
 public void Process(CaseReportReceived @event)
 {
     // TODO:
     // _dataCollectors.Update(d => d.Id ==  (DataCollectorId)@event.DataCollectorId,
     //     Builders<DataCollector>.Update.Set(d => d.LastReportRecievedAt, @event.Timestamp));
 }