public string TesteAcesso() { try { using (CadsusServicePortTypeClient consultaCNS = new CadsusServicePortTypeClient("CadsusServicePort")) { //Atribui usuário e senha de acesso ao WebService consultaCNS.ClientCredentials.UserName.UserName = "******"; consultaCNS.ClientCredentials.UserName.Password = "******"; //Parâmetros de Pesquisa padrão requestPesquisar paramsPesquisa = new requestPesquisar(); FiltroPesquisa filtroPesquisa = new FiltroPesquisa(); filtroPesquisa.nomeCompleto = new NomeCompletoType() { Nome = "SERGIO ARAUJO CORREIA LIMA" }; filtroPesquisa.tipoPesquisa = TipoPesquisaType.IDENTICA; paramsPesquisa.FiltroPesquisa = filtroPesquisa; paramsPesquisa.CNESUsuario = new CNESUsuarioType() { CNES = "6963447", Usuario = "LEONARDO" }; paramsPesquisa.higienizar = false; ResultadoPesquisa[] result = consultaCNS.pesquisar(paramsPesquisa); } } catch (System.ServiceModel.FaultException <AcessoDATASUSv2.SvcAcessoDATASUS.MSFalha> errWS) { List <string> arMsgsErro = new List <string>(); foreach (MensagemType msgErrosWS in errWS.Detail.Mensagem) { arMsgsErro.Add(msgErrosWS.descricao); } return("A consulta retornou a(s) seguinte(s) mensagem(ns): " + String.Join(" / ", arMsgsErro.ToArray())); } catch (Exception ex) { return("ERRO -> " + ex.Message); } return("OK"); }
public DataTable ConsultaFederal(string pNome, string pNomeMae, string pNomePai, DateTime pDataNascimento, string pNumeroCNS, string pCPF, out string msgRetorno) { msgRetorno = String.Empty; /*DataTable de retorno*/ DataTable dtRet = new DataTable(); dtRet.Columns.Add(new DataColumn("NOME", typeof(System.String))); dtRet.Columns.Add(new DataColumn("NOME_MAE", typeof(System.String))); dtRet.Columns.Add(new DataColumn("NOME_PAI", typeof(System.String))); dtRet.Columns.Add(new DataColumn("DATA_NASCIMENTO", typeof(System.DateTime))); dtRet.Columns.Add(new DataColumn("TIPO_CARTAO", typeof(System.String))); dtRet.Columns.Add(new DataColumn("NUMERO_CARTAO", typeof(System.String))); dtRet.Columns.Add(new DataColumn("MUNICIPIO_RESIDENCIA", typeof(System.String))); dtRet.Columns.Add((new DataColumn("ORIGEM_DADO", typeof(System.String)))); //Chamada ao WebService do DATASUS try { using (CadsusServicePortTypeClient consultaCNS = new CadsusServicePortTypeClient(ConfigurationManager.AppSettings["EndpointConsultaCNSConfig"].ToString())) { //Atribui usuário e senha de acesso ao WebService e dados do Estabelecimento de Saúde consultaCNS.ClientCredentials.UserName.UserName = ConfigurationManager.AppSettings["UserNameWebServiceDATASUS"].ToString(); consultaCNS.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["PasswordWebServiceDATASUS"].ToString(); CNESUsuarioType dadosCNES = new CNESUsuarioType() { CNES = ConfigurationManager.AppSettings["CNESWebServiceDATASUS"].ToString(), Usuario = ConfigurationManager.AppSettings["UsuarioCNESWebServiceDATASUS"].ToString() }; //Caso o nº do CNS seja informado, é outro tipo de consulta, específica (outro método do WS a ser chamado). A abaixo é a consulta por outros dados if (String.IsNullOrEmpty(pNumeroCNS)) { //Inicializa filtro de pesquisa FiltroPesquisa filtroPesquisa = new FiltroPesquisa(); filtroPesquisa.tipoPesquisa = TipoPesquisaType.APROXIMADA; if (!String.IsNullOrEmpty(pNome)) { filtroPesquisa.nomeCompleto = new NomeCompletoType() { Nome = pNome } } ; if (!String.IsNullOrEmpty(pNomeMae)) { filtroPesquisa.Mae = new NomeCompletoType() { Nome = pNomeMae } } ; if (!String.IsNullOrEmpty(pNomePai)) { filtroPesquisa.Pai = new NomeCompletoType() { Nome = pNomePai } } ; if (!pDataNascimento.Equals(DateTime.MinValue)) { filtroPesquisa.dataNascimento = pDataNascimento; } if (!String.IsNullOrEmpty(pCPF)) { filtroPesquisa.CPF = new CPFType() { numeroCPF = pCPF } } ; //Prepara objeto para fazer a requisição ao WebService requestPesquisar paramsPesquisa = new requestPesquisar(); paramsPesquisa.FiltroPesquisa = filtroPesquisa; paramsPesquisa.CNESUsuario = dadosCNES; paramsPesquisa.higienizar = false; //Chamada ao WebService ResultadoPesquisa[] resultWS = consultaCNS.pesquisar(paramsPesquisa); //Transporta resultados para o DataTable de retorno. Se a pesquisa não retornou registros, é disparada uma exceção que é tratada no primeiro "catch". foreach (ResultadoPesquisa result in resultWS) { string munResidencia = "NÃO DISPONÍVEL"; if (result.MunicipioResidencia != null) { munResidencia = String.Format("{0} - {1}", result.MunicipioResidencia.codigoMunicipio, result.MunicipioResidencia.nomeMunicipio); } dtRet.Rows.Add( result.NomeCompleto.Nome, result.Mae.Nome, result.Pai.Nome, result.dataNascimento, (result.CNS.tipoCartao.Equals(TipoCNSType.D) ? "DEFINITIVO" : "PROVISORIO"), result.CNS.numeroCNS, munResidencia, "BASE FEDERAL"); } } else //Consulta específica por número de Cartão SUS. { //Filtro de Pesquisa CNSType filtroConsulta = new CNSType(); filtroConsulta.numeroCNS = pNumeroCNS; //Prepara objeto para requisição ao WebService requestConsultar paramsConsulta = new requestConsultar(); paramsConsulta.CNESUsuario = dadosCNES; paramsConsulta.CNS = filtroConsulta; responseConsultar resultWS = consultaCNS.consultar(paramsConsulta); foreach (CNSType cartao in resultWS.UsuarioSUS.Cartoes) { //Coloca registro no DataTable de retorno: para cada nº do cartão do SUS encontrado. dtRet.Rows.Add( resultWS.UsuarioSUS.NomeCompleto.Nome, (resultWS.UsuarioSUS.Mae != null) ? resultWS.UsuarioSUS.Mae.Nome : "NÃO DISPONÍVEL", (resultWS.UsuarioSUS.Pai != null) ? resultWS.UsuarioSUS.Pai.Nome : "NÃO DISPONIVEL", resultWS.UsuarioSUS.dataNascimento, cartao.tipoCartao.Equals(TipoCNSType.D) ? "DEFINITIVO" : "PROVISÓRIO", cartao.numeroCNS, (resultWS.UsuarioSUS.Enderecos.Endereco.Municipio != null) ? String.Format("{0} - {1}", resultWS.UsuarioSUS.Enderecos.Endereco.Municipio.codigoMunicipio, resultWS.UsuarioSUS.Enderecos.Endereco.Municipio.nomeMunicipio) : "NÃO DISPONÍVEL", "BASE FEDERAL" ); } } } } catch (System.ServiceModel.FaultException <AcessoDATASUSv2.SvcAcessoDATASUS.MSFalha> errWS) //Erros enviados pelo WebService { List <string> arMsgsErro = new List <string>(); foreach (MensagemType msgErrosWS in errWS.Detail.Mensagem) { arMsgsErro.Add(msgErrosWS.descricao); } msgRetorno = "A consulta retornou a(s) seguinte(s) mensagem(ns): " + String.Join(" / ", arMsgsErro.ToArray()); dtRet = null; } catch (Exception ex) //Erro geral da aplicação { msgRetorno = "[ERRO] " + ex.Message; dtRet = null; } return(dtRet); }