コード例 #1
0
        // Recognize heart diseases by acoustic signal (randomly).
        private string RecognizeDiseasesByAcoustic()
        {
            var diseasesTotalCount = DataProcessorDictionary.GetHeartDiseasesCount();
            var generator          = new Random();

            var RECOGNIZED_DISEASES_MAX_COUNT = 3;
            var recognizedDiseasesCount       = generator.Next(1, RECOGNIZED_DISEASES_MAX_COUNT);

            // Create list of recognized diseases.
            var diseasesList = new List <string>();
            var count        = 0;

            while (count < recognizedDiseasesCount)
            {
                var id      = generator.Next(diseasesTotalCount);
                var disease = DataProcessorDictionary.GetHeartDisease(id);

                if (!diseasesList.Contains(disease))
                {
                    diseasesList.Add(disease);
                    count++;
                }
            }

            // Conver diseases list to string format.
            string diseases = null;

            foreach (var disease in diseasesList)
            {
                diseases += $"{disease}, ";
            }

            return(diseases);
        }
コード例 #2
0
        // Recognize disease by temperature (randomly).
        private string RecognizeDiseasesByTemperature()
        {
            var diseasesTotalCount = DataProcessorDictionary.GetCommonDiseasesCount();
            var generator          = new Random();

            var diseaseId = generator.Next(diseasesTotalCount);
            var disease   = DataProcessorDictionary.GetCommonDisease(diseaseId);

            return(disease);
        }
コード例 #3
0
        // Randomly generate health status of the patient.
        private Task <ReportDTO> GetHealthReport(IDataDTO dataDTO)
        {
            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 (dataDTO.SensorDeviceType)
                {
                case "Temperature":
                    diseases = RecognizeDiseasesByTemperature();
                    break;

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

                default:
                    break;
                }
            }

            var healthReport = _mapper.Map <IDataDTO, ReportDTO>(dataDTO);

            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));
        }