public string RelatorioEvoPacienteDoencaParcialView(string dataInicio, string dataFim) { //var anterior = ""; //var p1 = ""; //var p2 = ""; //var retorno = ""; var dtInicio = Convert.ToDateTime(dataInicio); var dtFim = Convert.ToDateTime(dataFim); var item = string.Empty; var itens = string.Empty; string[] valores; var itemOrdem = string.Empty; var itemColumn = string.Empty; var ultimoItem = string.Empty; var valor = string.Empty; DataTable dt = new DataTable(); var clsClass = new RelatorioRepositorio(); clsClass.Parametros.Add(new SqlParameter("p1", RecuperaCodPrograma())); clsClass.Parametros.Add(new SqlParameter("p2", dtInicio.Day + "-" + dtInicio.Month + "-" + dtInicio.Year)); clsClass.Parametros.Add(new SqlParameter("p3", dtFim.Day + "-" + dtFim.Month + "-" + dtFim.Year)); clsClass.Parametros.Add(new SqlParameter("p4", FiltroRelatorioViewModel.ListarRelatorioParametros.P4)); clsClass.Parametros.Add(new SqlParameter("p5", FiltroRelatorioViewModel.ListarRelatorioParametros.P5)); clsClass.Parametros.Add(new SqlParameter("p6", FiltroRelatorioViewModel.ListarRelatorioParametros.P6)); clsClass.Parametros.Add(new SqlParameter("p7", FiltroRelatorioViewModel.ListarRelatorioParametros.P7)); clsClass.Parametros.Add(new SqlParameter("p8", FiltroRelatorioViewModel.ListarRelatorioParametros.P8)); clsClass.Parametros.Add(new SqlParameter("p9", FiltroRelatorioViewModel.ListarRelatorioParametros.P9)); clsClass.Parametros.Add(new SqlParameter("p10", FiltroRelatorioViewModel.ListarRelatorioParametros.P10)); clsClass.Parametros.Add(new SqlParameter("p11", FiltroRelatorioViewModel.ListarRelatorioParametros.P11)); clsClass.Parametros.Add(new SqlParameter("p12", FiltroRelatorioViewModel.ListarRelatorioParametros.P12)); clsClass.Parametros.Add(new SqlParameter("p13", FiltroRelatorioViewModel.ListarRelatorioParametros.P13)); var sqlDataReader = clsClass.RetornarRelatorioEvoPacienteDoencaGrafico("spReportEssencialPacientesPorDoenca"); //Inastância um novo argumento de parametro. //if (sqlDr.HasRows) //{ // while (sqlDr.Read()) // { // if (anterior == "") // { // anterior = sqlDr["DOENCA"].ToString(); // } // //DOENCA DATA QTD // if (sqlDr["DOENCA"].ToString() != anterior) // { // if (anterior.Length > 0) // { // valor = 0; // retorno += anterior + ";" + p1.Remove(p1.Length - 1, 1) + ";" + p2.Remove(p2.Length - 1, 1) + "|"; // } // anterior = sqlDr["DOENCA"].ToString().Trim(); // p1 = "'" + sqlDr["DATA"].ToString().Trim() + "',"; // valor = valor + Convert.ToInt16(sqlDr["QTD"].ToString().Trim()); // p2 = valor.ToString() + ","; // } // else // { // //anterior = sqlDr["DOENCA"].ToString().Trim(); // p1 += "'" + sqlDr["DATA"].ToString().Trim() + "',"; // valor = valor + Convert.ToInt16(sqlDr["QTD"].ToString().Trim()); // p2 += valor.ToString() + ","; // } // } // if (anterior.Length > 0) // { // retorno += anterior + ";" + p1.Remove(p1.Length - 1, 1) + ";" + p2.Remove(p2.Length - 1, 1); // } //} //return retorno; if (sqlDataReader.HasRows) { Dictionary<string, int> hash = new Dictionary<string, int>(); Dictionary<int, int> controle = new Dictionary<int, int>(); dt.Columns.Add("ordem"); dt.Columns.Add("item"); dt.Columns.Add("valor"); while (sqlDataReader.Read()) { if (hash.ContainsKey(sqlDataReader["DOENCA"].ToString()) == false) { hash.Add(sqlDataReader["DOENCA"].ToString(), Convert.ToInt32(hash.Count)); item += sqlDataReader["DOENCA"].ToString() + ","; itemColumn += "column" + ","; } dt.Rows.Add("'" + sqlDataReader["DATA"].ToString().TrimEnd().TrimStart() + "'", sqlDataReader["DOENCA"].ToString().TrimEnd().TrimStart(), sqlDataReader["QTD"].ToString()); } item = item.Substring(0, item.Length - 1); itemColumn = itemColumn.Substring(0, itemColumn.Length - 1); valores = new string[hash.Count]; for (int contador = 0; contador <= dt.Rows.Count - 1; contador++) { if (dt.Rows[contador][0].ToString() != ultimoItem) { if (ultimoItem != "") { itemOrdem += ","; for (int cont = 0; cont <= valores.Length - 1; cont++) { if (controle.ContainsKey(cont) == false) { valores[cont] += "0,"; } } controle = new Dictionary<int, int>(); } ultimoItem = dt.Rows[contador][0].ToString(); itemOrdem += dt.Rows[contador][0].ToString(); valores[Convert.ToInt32(hash[dt.Rows[contador][1].ToString()])] += dt.Rows[contador][2].ToString().Replace(',', '.') + ","; controle.Add(Convert.ToInt32(hash[dt.Rows[contador][1].ToString()]), Convert.ToInt32(hash[dt.Rows[contador][1].ToString()])); } else { valores[Convert.ToInt32(hash[dt.Rows[contador][1].ToString()])] += dt.Rows[contador][2].ToString().Replace(',', '.') + ","; controle.Add(Convert.ToInt32(hash[dt.Rows[contador][1].ToString()]), Convert.ToInt32(hash[dt.Rows[contador][1].ToString()])); } } for (int cont = 0; cont <= valores.Length - 1; cont++) { if (controle.ContainsKey(cont) == false) { valores[cont] += "0"; } else { valores[cont] = valores[cont].Substring(0, valores[cont].Length - 1); } } for (int count = 0; count <= valores.Length - 1; count++) { valor += valores[count] + ";"; } valor = valor.Substring(0, valor.Length - 1); for (int count = 0; count <= item.Split(',').Length - 1; count++) { itens += itemOrdem + ";"; } itens = itens.Substring(0, itens.Length - 1); itemOrdem = itens; return itemColumn + "|" + itemOrdem + "|" + item + "|" + valor; } else { return ""; } }