ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

SNGPC 2.0
Ir à página Anterior  1, 2, 3 ... 25, 26, 27
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Automação Comercial
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
magnosystem
Novato
Novato


Registrado: Sábado, 9 de Novembro de 2013
Mensagens: 5

MensagemEnviada: Qua Nov 13, 2013 7:36 pm    Assunto: Responder com Citação

Pessoal, com o que o Cláudio postou eu consegui chegar no hash da ANVISA. O teste tem que ser feito em cima do arquivo zip gerado na hora do envio. Não adianta baixar o xml do site e zipar. O próprio arquivo zip já vai ter um hash diferente.

Hoje por acaso fiz um envio teste para a ANVISA e guardei o arquivo zip enviado. Fiz o teste com as funções abaixo e bateu perfeitamente com o hash gerado pela ANVISA. Segue abaixo a função usada:

Código:
Function EncodeBase64 (Arquivo : TFileStream) : String;
Var
Encoder64 : TIDEncoderMime;
Begin
Try
   Encoder64 := TIDEncoderMime.Create (Nil);
   Result    := Encoder64.EncodeStream(Arquivo);
Finally
   Encoder64.Free;
End;
End;

function MD5(const fileName : string) : string;
Var
idmd5 : TIdHashMessageDigest5;
fs : TFileStream;
begin
idmd5 := TIdHashMessageDigest5.Create;
fs := TFileStream.Create(FileName, fmOpenRead OR fmShareDenyWrite);
try
   result := idmd5.HashStringAsHex(EncodeBase64(fs));
finally
   fs.Free;
   idmd5.Free;
end;
end;


Segue abaixo também a função que eu uso para enviar o arquivo zip:

Código:
Function ZiptoByte(Arquivo: String): TByteDynArray;
Var
Arq : TFileStream;
aArray : TByteDynArray;
i: integer;
Begin
Try
   Arq := TFileStream.Create(Arquivo, fmOpenRead OR fmShareDenyWrite);
   SetLength(aArray, Arq.Size);
   for i := 0 to Arq.Size do
       Arq.Read(aArray[i], 1);
   Result := aArray;
Finally
   Arq.Free;
end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
claudio.ferreira
Profissional
Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013
Mensagens: 667

MensagemEnviada: Qua Nov 13, 2013 8:51 pm    Assunto: Responder com Citação

Prezado Marcelo,

Poderia postar a sequencia de chamada das funções ?
_________________
Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
magnosystem
Novato
Novato


Registrado: Sábado, 9 de Novembro de 2013
Mensagens: 5

MensagemEnviada: Qui Nov 14, 2013 8:12 am    Assunto: Responder com Citação

A função ziptobyte é a função que gera o TByteDynArray enviado no método para o webservices.

Para dar certo você apenas tem que chamar a função MD5 em cima do arquivo zip gerado.

A encodebase64 é usada pela função MD5. Você não chama ela diretamente.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
EvertonLima
Novato
Novato


Registrado: Quarta-Feira, 13 de Novembro de 2013
Mensagens: 2

MensagemEnviada: Qui Nov 14, 2013 8:26 am    Assunto: Responder com Citação

Funcionou!

Apenas adicionei o Encode64.

Código:
meuHash := CalculaHashMD5Indy(meuArquivo);

[code]Function TForm1.CalculaHashMD5Indy(NomeArq : String) : String;
Var
  idmd5  : TIdHashMessageDigest5;
  Arq    : String;
  fs : TFileStream;
Begin
  Arq := LoadFileToStr(NomeArq);
  idmd5 := TIdHashMessageDigest5.Create;
  try
    result := idmd5.AsHex(idmd5.HashValue(EncodeBase64(Arq)));
  finally
    idmd5.Free;
  end;
end;


function TForm1.LoadFileToStr(const FileName: TFileName): String;
var
  FileStream : TFileStream;
begin
  FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
   if FileStream.Size>0 then
   begin
     SetLength(Result, FileStream.Size);
     FileStream.Read(Pointer(Result)^, FileStream.Size);
   end;
  finally
    FileStream.Free;
  end;
end;

Function TForm1.EncodeBase64(Arquivo : String) : String;
Var
  Encoder64 : TIDEncoderMime;
Begin
  Try
     Encoder64 := TIDEncoderMime.Create (Nil);
     Result    := Encoder64.EncodeString(Arquivo);
  Finally
     Encoder64.Free;
  End;
End;[/code]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
claudio.ferreira
Profissional
Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013
Mensagens: 667

MensagemEnviada: Sex Nov 15, 2013 10:28 am    Assunto: Responder com Citação

EvertonLima escreveu:
Funcionou!

Apenas adicionei o Encode64.

Código:
meuHash := CalculaHashMD5Indy(meuArquivo);

[code]Function TForm1.CalculaHashMD5Indy(NomeArq : String) : String;
Var
  idmd5  : TIdHashMessageDigest5;
  Arq    : String;
  fs : TFileStream;
Begin
  Arq := LoadFileToStr(NomeArq);
  idmd5 := TIdHashMessageDigest5.Create;
  try
    result := idmd5.AsHex(idmd5.HashValue(EncodeBase64(Arq)));
  finally
    idmd5.Free;
  end;
end;


function TForm1.LoadFileToStr(const FileName: TFileName): String;
var
  FileStream : TFileStream;
begin
  FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
   if FileStream.Size>0 then
   begin
     SetLength(Result, FileStream.Size);
     FileStream.Read(Pointer(Result)^, FileStream.Size);
   end;
  finally
    FileStream.Free;
  end;
end;

Function TForm1.EncodeBase64(Arquivo : String) : String;
Var
  Encoder64 : TIDEncoderMime;
Begin
  Try
     Encoder64 := TIDEncoderMime.Create (Nil);
     Result    := Encoder64.EncodeString(Arquivo);
  Finally
     Encoder64.Free;
  End;
End;[/code]



Prezado EvertonLima, postei uma mensagem para voce no private message.
_________________
Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Cambiaghi
Novato
Novato


Registrado: Quinta-Feira, 21 de Fevereiro de 2013
Mensagens: 57

MensagemEnviada: Qua Nov 20, 2013 6:52 am    Assunto: Responder com Citação

Bom dia Prezados.

Como não tenho recebido email de notificação de novas postagens ( não sei porque ), não tinha mais acessado achando que isso aqui estava parado, e fiquei surpreso ao acessar hoje.

Quanto ao HASH, que bom que conseguiram chegar ao cálculo correto.

Eu respondi a um email dias atrás de um colega dizendo que nem tento mais calcular o HASH, passo um argumento qualquer como valor de hash, e pego o retornado pelo SNGPC para armazenar na minha base de dados.

Como existe uma validação pelo SNGPC do XML recebido, o HASH é inútil no meu ponto de vista, sendo que não é necessário comparar o que estou enviando com o que estão devolvendo, já que se o XML chegar corrompido lá, haverá um erro de tags incompletas.

Parabéns a todos os colegas, e faço minhas as palavras do Cláudio, "tem quem saiba resolver os problemas, ou de tanto tentar acaba descobrindo como, mas só vem aqui fazer perguntas.".

Abraços,
Fernando Luís Cambiaghi.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Cambiaghi
Novato
Novato


Registrado: Quinta-Feira, 21 de Fevereiro de 2013
Mensagens: 57

MensagemEnviada: Seg Nov 25, 2013 1:39 pm    Assunto: Programa Mais Médicos Responder com Citação

Boa tarde pessoal.

Gostaria de saber como vocês estão fazendo com os receituários prescritos pelos médicos do programa mais médicos?

Para o SNGPC, a princípio ainda não enviaremos essas prescrições ( de acordo com a própria coordenadora no dia do encontro de desenvolvedores ).

E quanto ao aceite de tais receituários? Eles podem prescrever psicotrópicos e antibióticos?

Se aceitamos o receituário, começamos e ter divergências entre o saldo da farmácia e o saldo constante no SNGPC, visto que não podemos enviar a prescrição para eles.

Se alguém puder compartilhar algum conhecimento sobre o assunto, poderá ajudar a muitos aqui.

Atenciosamente,
Fernando Luís Cambiaghi
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michelbreyer
Novato
Novato


Registrado: Terça-Feira, 1 de Dezembro de 2009
Mensagens: 25

MensagemEnviada: Sex Dez 06, 2013 9:39 am    Assunto: Schema Incorreto Responder com Citação

Bom dia,

O GGTIN divulgou uma nota técnica informando que alterou o schema para que o sistema não aceite quantidades negativas, porém assim que realizaram essa alteração ao enviar as movimentações está aparecendo a seguinte mensagem:
[EA]The 'urn:sngpc-schema:quantidadeDeInsumoPorUnidadeFarmacotecnica' element has an invalid value according to its data type..

Verificando os schemas no site verifiquei que retornaram para 4 casas decimais, sendo que em agosto foi alterado para 6. (conforme nota: http://www.anvisa.gov.br/sngpc/21082013.html)

Alguém está com o mesmo problema ? Já tem alguma solução ?

Att,
Michel
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
claudio.ferreira
Profissional
Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013
Mensagens: 667

MensagemEnviada: Ter Mai 06, 2014 6:24 pm    Assunto: Responder com Citação

Prezados boa tarde,

Gostaria de anunciar aqui, lançamento recente de programa para envio de arquivos XML para o SNGPC, indicado para aqueles que não desenvolveram em
seus sistemas de escrituração, a transmissão via web-service e que por esse motivo indicam o hot-site do SNGPC para os farmacêuticos transmitirem seus arquivos.

Sabendo-se que o hot-site do SNGPC sofre constantes instabilidades, congestionamentos e erros de todo tipo, quem sofre e se stressam bastante são os farmacêuticos que não conseguem realizar seu trabalho a contento.

Não são poucos os sistemas de farmácia que ainda se utilizam do site do SNGPC para transmitir e verificar o resultado da validação do arquivo.

Pensando numa solução para esses casos, desenvovemos o SNGPC Transmissor, programa que transmite o XML e recebe o resultado da validação. O programa tem login pelo farmacêutico, transmite XML e ZIP, histórico de transmissões realizadas e o mais importante é GRATUITO para quem transmite 1 vez por semana.

No primeiro mês de uso tem transmissões liberadas todos os dias. Download e maiores informações : www.sngpcsoft.com.br

PS : Aceitamos algum tipo de parceria para venda em conjunto com seu software de escrituração (sob consulta)
_________________
Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Automação Comercial Todos os horários são GMT - 3 Horas
Ir à página Anterior  1, 2, 3 ... 25, 26, 27
Página 27 de 27

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB