Beispiel #1
0
        /// <inheritdoc/>
        public async Task <(ReportDTO report, bool success)> ProcessData(IRecordDTO recordDTO)
        {
            if (recordDTO == null)
            {
                return(null, false);
            }

            ReportDTO healthReport;

            try
            {
                healthReport = await GetHealthReport(recordDTO);

                await _registerReportCommandProducer.Send(healthReport);
            }
            catch
            {
                return(null, false);
            }
            return(healthReport, true);
        }
Beispiel #2
0
        // Randomly generate health status of the patient.
        private Task <ReportDTO> GetHealthReport(IRecordDTO recordDTO)
        {
            var generator = new Random();

            var arrayOfHealthStatuses = Enum.GetValues(typeof(HealthStatus));
            var healthStatus          = (HealthStatus)arrayOfHealthStatuses.GetValue(generator.Next(0, arrayOfHealthStatuses.Length));

            var accuracy = generator.Next(50, 101);

            string diseases = null;

            if (healthStatus == HealthStatus.Diseased)
            {
                switch (recordDTO.SensorDeviceType)
                {
                case "Temperature":
                    diseases = RecognizeDiseasesByTemperature();
                    break;

                case "Acoustic":
                    diseases = RecognizeDiseasesByAcoustic();
                    break;

                default:
                    break;
                }
            }

            var healthReport = _mapper.Map <IRecordDTO, ReportDTO>(recordDTO);

            healthReport.HealthStatus      = healthStatus.ToString();
            healthReport.HealthDescription = DataProcessorDictionary.GetHealthDescription(healthStatus);
            healthReport.Diseases          = diseases;
            healthReport.Accuracy          = accuracy;

            // Imitation of processing time (10 sec).
            Thread.Sleep(10000);

            return(Task.FromResult(healthReport));
        }