コード例 #1
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);
        }
コード例 #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);
            }
        }
コード例 #3
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);
        }
コード例 #4
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);
 }
コード例 #5
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);
 }
コード例 #6
0
        public void Process(CaseReportReceived @event)
        {
            // Save CaseReport in the CaseReports DB
            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.Save(caseReport);
        }