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