wsbndaf / Webservice

Webservice da Base Nacional de Dados, Ações e Serviços da Assistência Farmacêutica
http://portalms.saude.gov.br/assistencia-farmaceutica/base-nacional-de-dados/sistemas/web-service?view=default
32 stars 27 forks source link

consultarResultadoProcessamento - coTipoEstabelecimento #118

Closed rogmauri closed 5 years ago

rogmauri commented 5 years ago

Enviando o protocolo para consultarResultadoProcessamento, recebemos o seguinte:

    <inconsistencias>
        <produto>
           <coRegistroOrigem>E:000000000039</coRegistroOrigem>
           <coRegistro>112334731</coRegistro>
        </produto>
        <inconsistencia>
           <idOrigem>M</idOrigem>
           <coIBGE>353900</coIBGE>
           <codigo>E001</codigo>
           <mensagem>O valor do campo &lt;nome do campo> é um dado inválido.</mensagem>
           <campo>coTipoEstabelecimento</campo>
        </inconsistencia>
     </inconsistencias>

Seguem então, algumas observações:

Segmento de construção de Estabelecimento e Produto:

        // Estabelecimento
        registro.estabelecimento = new EstabelecimentoType();
        registro.estabelecimento.coCNES = codUnidadeSUS;
        registro.estabelecimento.coTipoEstabelecimento = GetTipoEstabelecimento(tipoUnidadeComprasHorusEnum);
        // Produto
        registro.produto = new ProdutoEntradaType();
        registro.produto.coRegistroOrigem = origemMov + ":" + idMov.ToString().PadLeft(12, '0');
        registro.produto.nuProduto = codHorus;
        registro.produto.nuLote = lote;
        registro.produto.dtValidade = dtValidade.ToString("dd-MM-yyyy");
        registro.produto.qtProduto = System.Convert.ToInt32(quantidade).ToString();
        registro.produto.dtRegistro = dtEntrada.ToString("dd-MM-yyyy");
maikonfrandina commented 5 years ago

Bom dia Rogério. Segue os tipo de estabelecimentos conforme manual de integração página 11 e 12.

  1. Os estabelecimentos de saúde deverão ser identificados por meio do Código de identificação do tipo de serviço, conforme descrição a seguir: A = Almoxarifado central (estabelecimento que realiza distribuição de produtos para outros estabelecimentos. Pode ou não registrar dispensação) Manual de Integração – Web Service BNAFAR 12 R = Almoxarifado regional/ regional de saúde (estabelecimento que recebe produtos de um almoxarifado central e realiza distribuição para outros estabelecimentos. Pode ou não realizar dispensação) F = Farmácia/ unidade de saúde (estabelecimento que realiza a dispensação de medicamentos e insumos)
rogmauri commented 5 years ago

Maikon... Não é o caso de não saber o código. Estamos utilizando a própria estrutura do WebService fornecido pelo endereço e o código C# gerado pelo vínculo com as suas estruturas, tipos e eventos. Assim, os tipos gerados pelo WebService já estão qualificados como "A", "R" e "F" e são passados assim na construção da classe/tipo 'EstabelecimentoType'.

jesseazevedo commented 5 years ago

@rogmauri

Bem não programo em C#, mas deixa eu tentar entender melhor. Pelo que entendi, como em outras linguagens creio que você deva criar um objeto com os dados enviados, de resto uma classe do C# deve receber o objeto e fazer todo o trabalho de sintaxe e semântica final, correto? minha dúvida é só uma, não há nenhum restrição de semântica para o elemento cotipoestabelecimento, que embora passe por validação de nulidade e formato, aceita que seja enviado qualquer valor diferente de A, R ou F. Assim, como você passa para seu código se o estabelecimento é A, R ou F?