public List <DiseaseWiseReport> GetReportBetweenDates(string diseaseName, DateTime startDate, DateTime endDate) { SqlQuery = "SELECT t1.district_name,COUNT(t1.district_name) AS total_patient,t1.population" + " FROM (" + "SELECT v1.district_name,v1.voter_id,v1.population " + "FROM view_district_wise_patients v1 " + "WHERE v1.disease_name='" + diseaseName + "' and v1.date BETWEEN '" + startDate + "' AND '" + endDate + "' " + "GROUP BY v1.district_name,v1.voter_id,v1.population) t1 " + "GROUP BY t1.district_name,t1.population"; DbSqlConnection = new SqlConnection(ConnectionString); DbSqlConnection.Open(); DbSqlCommand = new SqlCommand(SqlQuery, DbSqlConnection); DbSqlDataReader = DbSqlCommand.ExecuteReader(); List <DiseaseWiseReport> reports = new List <DiseaseWiseReport>(); if (DbSqlDataReader.HasRows) { while (DbSqlDataReader.Read()) { DiseaseWiseReport aReport = new DiseaseWiseReport(); aReport.DistrictName = DbSqlDataReader["district_name"].ToString(); aReport.TotalPatient = Convert.ToInt32(DbSqlDataReader["total_patient"].ToString()); aReport.PercentageOfPopulation = (aReport.TotalPatient * 100 / Convert.ToInt32(DbSqlDataReader["population"])); reports.Add(aReport); } } DbSqlConnection.Close(); return(reports); }
public List <DiseaseWiseReport> GetDiseaseWiseReports(DiseaseDate diseaseDate) { List <District> districts = headGateway.GetDistrictList(); List <DiseaseWiseReport> diseaseWiseReports = new List <DiseaseWiseReport>(); foreach (District district in districts) { List <Treatment> treatments = new List <Treatment>(); List <int> centerList = headGateway.GetCenterListByDistrictId(district.Id); foreach (int i in centerList) { List <Treatment> newTreatments = headGateway.GetTreatmentListByCenterId(i, diseaseDate.DiseaseId, diseaseDate.BeginDateTime, diseaseDate.EndDateTime); treatments.AddRange(newTreatments); } DiseaseWiseReport diseaseWiseReport = new DiseaseWiseReport(); diseaseWiseReport.DistrictId = district.Id; diseaseWiseReport.DistrictName = district.Name; diseaseWiseReport.TotalPatients = treatments.GroupBy(x => x.VoterIdNo).Select(x => x.First()).Count(); diseaseWiseReport.PercentageOfPopulation = ((double)diseaseWiseReport.TotalPatients * 100 / (double)district.Population); diseaseWiseReports.Add(diseaseWiseReport); } return(diseaseWiseReports); }