Open LucasRocha8 opened 6 years ago
Já que o governo não faz sua parte (disponibilizar documentação correta e completa), segue um post que fiz justamente sobre o assunto, consumindo o WebService e informando/consultando dados.
Espero que possa ajudar alguém.
Abraços.
http://fdatorre.blogspot.com.br/2018/03/integrando-web-service-do-sistema-horus.html
Prezado datorre;
Ficamos muito felizes por sua contribuição à comunidade.
É importante ressaltar que a ideia de criar um Git para o projeto é exatamente permitir que a comunidade possa propor melhorias na documentação e apoiar o processo de desenvolvimento dos muitos desenvolvedores que estão trabalhando nesta integração. Devemos entender que mesmo webservices bem conhecidos e amplamente utilizados como o SIGEP dos correios possuem número limitado de exemplos de como consumir o serviço, entretanto, é possível encontrar muitas dicas pela rede.
Assim, para além do simples processo de desenvolvimento, ressaltamos a relevância desse projeto para o SUS, que possibilitará uma aplicação mais efetiva dos recursos da Assistência Farmacêutica bem como garantir o acesso da população a medicamentos seguros, efetivos e eficazes.
Um abraço e aguardamos contribuições para a melhoria da documentação.
Atenciosamente;
COORDENAÇÃO GERAL DE MONITORAMENTO DAS POLÍTICAS DE ASSISTÊNCIA FARMACÊUTICA E DE MEDICAMENTOS - CGMPAF Departamento de Assistência Farmacêutica e Insumos Estratégicos – DAF Secretaria de Ciência, Tecnologia e Insumos Estratégicos - SCTIE Ministério da Saúde - MS
Olá!
Alguém sabe recuperar o xml gerado em C#? Pois acredito que temos que manter um histórico do que é enviado, então terá que ser o xml.
Alguém fazendo ou já fez a integração utilizando o C#?
Já realizei a integração em VB.NET, serve?
De: RodolfoM notifications@github.com Enviado: quinta-feira, 25 de outubro de 2018 15:35 Para: wsbndaf/Webservice Cc: LucasRocha8; Author Assunto: Re: [wsbndaf/Webservice] INFORMAR HEADER PARA O WEB SERVICE EM C# (#10)
Alguém fazendo ou já fez a integração utilizando o C#?
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/wsbndaf/Webservice/issues/10#issuecomment-433098979, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AjrVVC58CLLkrYk3DLPyS2-n2nGTqun2ks5uodpAgaJpZM4SuNvk.
E ai @LucasRocha8!
Puxa, eu não vejo a hora de acabar isso...rs Como você fez? Usou o WSDL, jogou as informações nos objetos e enviou, está armazenando o xml enviado? (Que ainda são sei se é possível resgatar o xml antes de enviar as informações.) Estou fazendo dessa forma, ainda é somente um teste.
`
var usuario = "email@email.com";
var senha = "senhadomunicipio";
var combinados = String.Format("{0}:{1}", usuario, senha);
var plainTextBytes = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(combinados);
var resultante = Convert.ToBase64String(plainTextBytes);
var autorizacao = "Basic " + resultante;
var client = new HorusWSAsyncClient();
//fazer o select do ERP
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
{
//cabeçalho
var httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = autorizacao;
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
int cont = 0;
IdentificacaoType id = new IdentificacaoType();
id.coIBGE = "12345678";
id.idOrigem = IdentificacaoTypeIdOrigem.M;
// foreach (InformarEntradaMedicamentoEmLoteType obj in lstEntrada) /// repetição dos produtos
// {
EstabelecimentoType estab = new EstabelecimentoType();
estab.coCNES = "2379244";
estab.coTipoEstabelecimento = EstabelecimentoTypeCoTipoEstabelecimento.A;
ProdutoEntradaType prod = new ProdutoEntradaType();
prod.coIUM = "";
prod.coRegistroOrigem = "123456";
prod.dtRegistro = "10-10-2018";
prod.dtValidade = "10-10-2020";
prod.noFabricanteInternacional = "";
prod.nuCNPJDistribuidor = "00530493000171";
prod.nuCNPJFabricante = "00530493000171";
prod.nuLote = "Lote123";
prod.nuNotaFiscal = "123456";
prod.nuProduto = "OBR0266630U0122";
prod.nuValorUnitario = 123456;
prod.qtProduto = "12";
prod.sgProgramaSaude = "";
prod.tpEntradaEstoque = "E-O";
InformarEntradaMedicamentoEmLoteTypeRegistro reg = new InformarEntradaMedicamentoEmLoteTypeRegistro();
reg.estabelecimento = estab;
reg.produto = prod;
InformarEntradaMedicamentoEmLoteTypeRegistro[] arrayReg = new InformarEntradaMedicamentoEmLoteTypeRegistro[1];
arrayReg[cont] = reg;
//cont++;
// }
InformarEntradaMedicamentoEmLoteType loteReg = new InformarEntradaMedicamentoEmLoteType();
loteReg.identificacao = id;
loteReg.registro = arrayReg;
respostaProtocolo resposta = await client.informarEntradaMedicamentoEmLoteAsync(loteReg);
}`
Bom dia @rodolfomuller !
Não sei se no C# tem algo parecido, mas no Delphi e C++ Builder, tem um componente THTTPRIO.
Esse componente que faz a transmissão, e nele tem os métodos BeforeExecute e AfterExecute.
Nesses eventos dá pra pegar o XML que ele gera e o que retorna.
E dentro do HTTPRIO tem o HTTPWebNode, em que você pode adicionar o usuário e senha encriptado em base64.
Provavelmente deve haver algum componente similar em C#.
Espero ter ajudado.
Abraço!
Olá @mateusrcaetano!
É exatamente isso que eu precisaria, pois no C# não estou achando um jeito, achei algumas coisas mas muito mirabolantes, quero simplificar e não complicar, mas vamos lá....
Boa tarde!
Temos um software de Gestão em Saúde, e estamos fazendo a integração também. Estou aqui para pedir ajuda de vocês, pois estamos desenvolvendo em C#, e gostaria de saber se vocês sabem como consigo informar o HEADER, ou o usuário e senha para o Web Service. Estamos em cima do prazo, e até agora não conseguimos.
Desde já, muito obrigado a todos, Abraço!