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