Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        public void Process(CaseReported @event)
        {
            var caseReport = _caseReports.GetById(@event.Id);

            if (caseReport == null)
            {
                caseReport = new CaseReport
                {
                    Id = @event.Id,
                    DataCollectorId     = @event.DataCollectorId,
                    HealthRiskId        = @event.HealthRiskId,
                    Location            = @event.Location,
                    SubmissionTimestamp = @event.CaseOccured
                };
            }
            else
            {
                caseReport.Id = @event.Id;
                caseReport.DataCollectorId     = @event.DataCollectorId;
                caseReport.HealthRiskId        = @event.HealthRiskId;
                caseReport.Location            = @event.Location;
                caseReport.SubmissionTimestamp = @event.CaseOccured;
            }
            _caseReports.Save(caseReport);

            var disease = _healthRisks.GetById(caseReport.HealthRiskId) ?? new HealthRisk
            {
                Id = @event.HealthRiskId,
                ThresholdTimePeriodInDays = 7,
                ThresholdNumberOfCases    = 3
            };

            var latestReports = _caseReports.GetCaseReportsAfterDate(
                DateTime.UtcNow.Subtract(TimeSpan.FromDays(disease.ThresholdTimePeriodInDays)), caseReport.HealthRiskId);

            if (latestReports.Count > disease.ThresholdNumberOfCases)
            {
                var alert = _alerts.Get(caseReport.HealthRiskId, caseReport.Location);
                if (alert == null)
                {
                    alert = new Alert
                    {
                        Id           = Guid.NewGuid(),
                        HealthRiskId = caseReport.HealthRiskId,
                        Location     = caseReport.Location,
                    };
                }
                alert.CaseReports.Add(caseReport);
                _alerts.Save(alert);


                // Todo: Temporary fix - we're not supposed to do this, awaiting the new Policy building block in doLittle to be ready
                var stream = new UncommittedEventStream(null);
                stream.Append(new AlertRaised(), EventSourceVersion.Zero.NextCommit());
                _uncommittedEventStreamCoordinator.Commit(TransactionCorrelationId.New(), stream);

                _feedbackService.SendFeedbackToDataCollecorsAndVerifiers(latestReports);
            }
        }
        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);
        }
Ejemplo n.º 4
0
        public void Process(HealthRiskCreated @event)
        {
            var healthRisk = _healthRisks.GetById(@event.Id) ?? new HealthRisk(@event.Id);

            healthRisk.ReadableId = @event.ReadableId;
            healthRisk.Name       = @event.Name;
            _healthRisks.Save(healthRisk);
        }
Ejemplo n.º 5
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);
 }
Ejemplo n.º 6
0
        public async Task <IEnumerable <CaseReportFromUnknownDataCollectorExpanded> > Get()
        {
            var anonymousCaseReports = await _caseReportsFromUnknownDataCollectors.GetAllAsync();

            // Comment from review; einari - 23rd of October 2017
            // Todo: This is a N+1 query - potentially incredibly slow
            // an optimization would be to get all healthrisks and then
            // do inmemory lookups. Also moved this away from being done inside the CaseReportExtended
            // object - as it should not be having a relationship to repositories
            return(anonymousCaseReports.Select(caseReport => {
                var healthRisk = _healthRisks.GetById(caseReport.HealthRiskId);
                return new CaseReportFromUnknownDataCollectorExpanded(caseReport, healthRisk);
            }));
        }
Ejemplo n.º 7
0
        public void Process(HealthRiskCreatedEvent @event)
        {
            var healthRisk = _healthRisks.GetById(@event.Id);

            if (healthRisk == null)
            {
                healthRisk = new HealthRisk()
                {
                    Id   = @event.Id,
                    Name = @event.Name,
                    Code = @event.Code
                };
            }
            else
            {
                healthRisk.Id   = @event.Id;
                healthRisk.Name = @event.Name;
                healthRisk.Code = @event.Code;
            }
            _healthRisks.Save(healthRisk);
        }
Ejemplo n.º 8
0
        public IActionResult GetHealthRisks(Guid projectId, Guid healthRiskId)
        {
            var project = _projects.GetById(projectId);

            if (project != null)
            {
                var projectHealthRisk = project.HealthRisks.FirstOrDefault(v => v.HealthRiskId == healthRiskId);
                if (projectHealthRisk != null)
                {
                    var healthRisk = _healthRisks.GetById(projectHealthRisk.HealthRiskId);
                    return(Ok(
                               new
                    {
                        HealthRiskId = healthRiskId,
                        healthRisk.Name,
                        projectHealthRisk.Threshold
                    }
                               ));
                }
            }

            return(NotFound());
        }
Ejemplo n.º 9
0
 public IActionResult Get(Guid id)
 {
     return(Ok(_healthRisks.GetById(id)));
 }
Ejemplo n.º 10
0
 public bool IsHealthRiskExisting(Guid healthRiskId)
 {
     return(_healthRisks.GetById(healthRiskId) != null);
 }
Ejemplo n.º 11
0
 public HealthRisk Get(Guid id)
 {
     return(_healthRisks.GetById(id));
 }