//public static List<string> procuraSintomas(List<string> lista, String xmlPath) //{ // List<String> listaFinal = new List<string>(); // String xpath = ""; // List<Diagnostico> listaDiagnosticos = new List<Diagnostico>(); // List<Sintoma> listaSintomas; // List<Int32> bedjoras = new List<Int32>(); // Diagnostico diagAux; // foreach (String s in lista) // { // xpath = "//ListaSintomas/sintoma[text()=\"" + s + "\"]/../.."; // XmlDocument doc = new XmlDocument(); // doc.Load(xmlPath); // XmlNodeList nodeList = doc.SelectNodes(xpath); // foreach (XmlNode node in nodeList) // { // listaSintomas = new List<Sintoma>(); // foreach (XmlNode x in node.ChildNodes[3].ChildNodes) // { // listaSintomas.Add(new Sintoma(x.InnerText)); // } // diagAux = new Diagnostico(node.ChildNodes[1].InnerText, node.ChildNodes[0].InnerText, node.ChildNodes[2].InnerText, listaSintomas); // //TESTE // if (exists(listaDiagnosticos, diagAux)) // { // int indice = getIndice(listaDiagnosticos, diagAux); // bedjoras[indice] += 1; // } // else // { // listaDiagnosticos.Add(diagAux); // bedjoras.Add(1); // } // } // } // foreach (Diagnostico d in listaDiagnosticos) // { // int aux = listaDiagnosticos.IndexOf(d); // int count = bedjoras[aux]; // int auxcontagem = d.ListSintomas.Count(); // decimal bla = count / Convert.ToDecimal(auxcontagem); // decimal resultado = Math.Round(bla * 100, 1); // listaFinal.Add(resultado + "|" + d.ToString()); // } // listaFinal.Sort(new ComparacaoResultados()); // return listaFinal; //} public static int getIndice(List <DiagnosticoWEB> lista, DiagnosticoWEB d) { if (lista.Count > 0) { foreach (DiagnosticoWEB diagnostico in lista) { if (diagnostico.nome.Equals(d.nome) && diagnostico.orgao.Equals(d.orgao)) { return(lista.IndexOf(diagnostico)); } } } return(-1); }
public static Boolean exists(List <DiagnosticoWEB> lista, DiagnosticoWEB d) { if (lista.Count > 0) { foreach (DiagnosticoWEB diagnostico in lista) { if (diagnostico.nome.Equals(d.nome) && diagnostico.orgao.Equals(d.orgao)) { return(true); } } } return(false); }
public static List <SistemaPericialWEB> getListaSistemaPericial(List <SintomaWEB> lista, String xmlPath) { List <SistemaPericialWEB> listaFinal = new List <SistemaPericialWEB>(); String xpath = ""; List <DiagnosticoWEB> listaDiagnosticos = new List <DiagnosticoWEB>(); List <SintomaWEB> listaSintomas; List <Int32> bedjoras = new List <Int32>(); DiagnosticoWEB diagAux; foreach (SintomaWEB s in lista) { xpath = "//ListaSintomas/sintoma[text()=\"" + s.nome + "\"]/../.."; XmlDocument doc = new XmlDocument(); doc.Load(xmlPath); XmlNodeList nodeList = doc.SelectNodes(xpath); foreach (XmlNode node in nodeList) { listaSintomas = new List <SintomaWEB>(); foreach (XmlNode x in node.ChildNodes[3].ChildNodes) { SintomaWEB sin = new SintomaWEB(); sin.nome = x.InnerText; listaSintomas.Add(sin); } diagAux = new DiagnosticoWEB(); diagAux.listaSintomas = listaSintomas; diagAux.orgao = node.ChildNodes[0].InnerText; diagAux.nome = node.ChildNodes[1].InnerText; diagAux.tratamento = node.ChildNodes[2].InnerText; //TESTE if (exists(listaDiagnosticos, diagAux)) { int indice = getIndice(listaDiagnosticos, diagAux); bedjoras[indice] += 1; } else { listaDiagnosticos.Add(diagAux); bedjoras.Add(1); } } } foreach (DiagnosticoWEB d in listaDiagnosticos) { int aux = listaDiagnosticos.IndexOf(d); int count = bedjoras[aux]; int auxcontagem = d.listaSintomas.Count(); decimal bla = count / Convert.ToDecimal(auxcontagem); decimal resultado = Math.Round(bla * 100, 1); SistemaPericialWEB sis = new SistemaPericialWEB(); sis.diagnostico = d.nome + " - " + d.orgao; sis.tratamento = d.tratamento; sis.score = resultado; listaFinal.Add(sis); } listaFinal.Sort(new ComparacaoResultados()); return(listaFinal); }