Fórum Alguem esta criando o arquivo de remessa para SNGPC #344959
24/08/2007
0
para a Anvisa referente a movimentação de farmacia para o SNGPC.
Alguma dica de como gerar o arquivo?
Agradeço desde ja.
Edmarfrazao
Curtir tópico
+ 0Posts
24/08/2007
Marcosrocha
Gostei + 0
25/08/2007
Edmarfrazao
Descobri um componente do delphi o
Abra um projeto.
va em file,new,other,xml(so aparece com um projeto aberto)
e escolha
XML Data Binding ( e um winzard).
sera solicitador o arquivo
sngpc200707v1_0.xsd ( esta no site da aniva)
com isto ele ira criar uma unit com toda a implementação do arquivo XML.
Se estiver no delphi 2006, depois que criar a unit, aproveite para usar o Model view e criar a UML(e automatico), da classe.
depois coloque um componente xmldocument
e implemente as chamadas as funções que forem necessario
e o xmldocumento irar gerar o arquivo xml
com pouco esforço.
Gostei + 0
27/08/2007
Randall
http://www.anvisa.gov.br/sngpc/esquemas.asp´ se puder me ajudar com mais detalhes sobre a maneira que vc fez ficarei grato.
Gostei + 0
28/08/2007
Edmarfrazao
Estou usando como escrevi na mensagens anterior.
Copia os esquemas do site da anvisa.
cria um projeto.
VA em File,New,Other,XML, e o winzard vai pedir os arquivos dos esquemas e vai criar uma unit.
esta unit tem tudo o que precisa para gerar o xml.
Depois coloca-se no formulario um componente XMLDocumento e o configura.
depois e fazer a chamada a usa unit um exemplo de como fazer no site.
http://www.drbob42.com/examine/examin23.htm
http://www.drbob42.com/examines/examin25.htm
Site
http://www.anvisa.gov.br/hotsite/sngpc/index.asp
Gostei + 0
28/08/2007
Randall
Grato.
Gostei + 0
28/08/2007
Edmarfrazao
estamaos apanhando.
fizemos o seguinte
copiamos os esquemas do site
http://www.anvisa.gov.br/hotsite/sngpc/esquemas.asp
renomeamos os .xml para .sxd
e mandamos o delphi ler o 1o
sngpc200707v1_0.xml para
sngpc200707v1_0.xsd
e pínga o delphi gera a unit.
Se tiver o 2006 tera ate o uml.
Gostei + 0
28/08/2007
Sergiokawahara
var
NodeCorpo, NodeMedicamentos, Node1 : IXMLNode;
begin
with XML do
begin
Active := True;
Version := ´1.0´;
Encoding := ´ISO-8859-1´;
AddChild(´mensagemSNGPC´,´urn:sngpc-schema´);
DocumentElement.AddChild(´cabecalho´);
DocumentElement.ChildNodes.Last.AddChild(´cnpjEmissor´).NodeValue := LimpaStr(qryEmpresa.FieldByName(´CNPJ´).AsString);
DocumentElement.ChildNodes.Last.AddChild (´cpfTransmissor´).NodeValue := LimpaStr(qryEmpresa.FieldByName(´CPF_RESP_TECNICO´).AsString);
DocumentElement.ChildNodes.Last.AddChild(´dataInicio´).NodeValue := FormatDateTime(´yyyy-mm-dd´,Date);
DocumentElement.ChildNodes.Last.AddChild(´dataFim´).NodeValue := FormatDateTime(´yyyy-mm-dd´,Date);
NodeCorpo := DocumentElement.AddChild(´corpo´);
NodeMedicamentos := NodeCorpo.AddChild(´medicamentos´);
// Entrada de medicamentos
qryEntradas.Active := True;
qryEntradas.First;
While not qryEntradas.Eof do
begin
Node1:=NodeMedicamentos.AddChild(´entradaMedicamentos´);
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´numeroNotaFiscal´].NodeValue := qryEntradas.FieldByName(´NOTA_FISCAL´).AsString;
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´1´;
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´dataNotaFiscal´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryEntradas.FieldByName(´EMISSAO_NF´).AsDateTime);
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´cnpjOrigem´].NodeValue := LimpaStr(qryEntradas.FieldByName(´CNPJ_FORNECEDOR´).AsString);
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´cnpjDestino´].NodeValue := LimpaStr(qryEmpresa.FieldByName(´CNPJ´).AsString);
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryEntradas.FieldByName(´NRM´).AsString);
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryEntradas.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryEntradas.FieldByName(´QUANTIDADE´).AsString;
Node1.ChildNodes[´dataRecebimentoMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryEntradas.FieldByName(´RECEBIDO´).AsDateTime);
qryEntradas.Next;
end;
// Saidas de Medicamentos
qryVendas.Active := True;
qryVendas.First;
while not qryVendas.Eof do
begin
Node1 := NodeMedicamentos.AddChild(´saidaMedicamentoVendaAoConsumidor´);
Node1.ChildNodes[´tipoReceituarioMedicamento´].NodeValue := qryVendas.FieldByName(´TIPO_RECEITUARIO´).AsString;
Node1.ChildNodes[´numeroNotificacaoMedicamento´].NodeValue := qryVendas.FieldByName(´NRO_NOTIFICACAO´).AsString;
Node1.ChildNodes[´dataPrescricaoMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryVendas.FieldByName(´DATA_PRESCRICAO´).AsDateTime);
Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´nomePrescritor´].NodeValue := qryVendas.FieldByName(´NOME_PRESCRITOR´).AsString;
Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´numeroRegistroProfissional´].NodeValue := LimpaStr(qryVendas.FieldByName(´NRO_REG_PROFISSIONAL´).AsString);
Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´conselhoProfissional´].NodeValue := qryVendas.FieldByName(´CONSELHO_PROFISSIONAL´).AsString;
Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´UFConselho´].NodeValue := qryVendas.FieldByName(´UF_CONSELHO´).AsString;
Node1.ChildNodes[´usoMedicamento´].NodeValue := ´1´;
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´nomeComprador´].NodeValue := qryVendas.FieldByName(´NOME_COMPRADOR´).AsString;
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´tipoDocumento´].NodeValue := qryVendas.FieldByName(´TIPO_DOC_COMPRADOR´).AsString;
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´numeroDocumento´].NodeValue := LimpaStr(qryVendas.FieldByName(´NRO_DOC_COMPRADOR´).AsString);
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´orgaoExpedidor´].NodeValue := qryVendas.FieldByName(´ORGAO_EXP_DOCTO´).AsString;
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´UFEmissaoDocumento´].NodeValue := qryVendas.FieldByName(´UF_EMISSAO_DOCTO´).AsString;
Node1.ChildNodes[´medicamentoVenda´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryVendas.FieldByName(´NRM´).AsString);
Node1.ChildNodes[´medicamentoVenda´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryVendas.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoVenda´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryVendas.FieldByName(´QUANTIDADE´).AsString;
Node1.ChildNodes[´dataVendaMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryVendas.FieldByName(´DATA_VENDA´).AsDateTime);
qryVendas.Next;
end;
// Saidas por Transferencia
qryTransferencia.Active := True;
qryTransferencia.First;
while not qryTransferencia.Eof do
begin
Node1 := NodeMedicamentos.AddChild(´saidaMedicamentoTransferencia´);
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´numeroNotaFiscal´].NodeValue := qryTransferencia.FieldByName(´NOTA_FISCAL´).AsString;
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´2´;
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´dataNotaFiscal´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryTransferencia.FieldByName(´DATA_EMISSAO´).AsDateTime);
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´cnpjOrigem´].NodeValue := qryTransferencia.FieldByName(´CNPJ_ORIGEM´).AsString;
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´cnpjDestino´].NodeValue := qryTransferencia.FieldByName(´CNPJ_DESTINO´).AsString;
Node1.ChildNodes[´medicamentoTransferencia´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryTransferencia.FieldByName(´NRM´).AsString); Node1.ChildNodes[´medicamentoTransferencia´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryTransferencia.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoTransferencia´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryTransferencia.FieldByName(´QUANTIDADE´).AsString;
Node1.ChildNodes[´dataTransferenciaMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryTransferencia.FieldByName(´DATA_TRANSFERENCIA´).AsDateTime);
qryTransferencia.Next;
end;
// Perdas
qryPerdas.Active := True;
qryPerdas.First;
while not qryPerdas.Eof do
begin
Node1 := NodeMedicamentos.AddChild(´saidaMedicamentoPerda´);
Node1.ChildNodes[´motivoPerdaMedicamento´].NodeValue := qryPerdas.FieldByName(´MOTIVO_PERDA´).AsString;
Node1.ChildNodes[´medicamentoPerda´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryPerdas.FieldByName(´NRM´).AsString);
Node1.ChildNodes[´medicamentoPerda´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryPerdas.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoPerda´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryPerdas.FieldByName(´QUANTIDADE´).AsString;
Node1.ChildNodes[´dataPerdaMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryPerdas.FieldByName(´DATA_PERDA´).AsDateTime);
qryPerdas.Next;
end;
NodeMedicamentos := NodeCorpo.AddChild(´insumos´);
Node1 := NodeMedicamentos.AddChild(´entradaInsumos´);
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´numeroNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´dataNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´cnpjOrigem´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´cnpjDestino´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´insumoEntrada´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´insumoEntrada´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´insumoEntrada´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´quantidadeInsumoEntrada´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´tipoUnidadeEntrada´].NodeValue := ´´;
Node1.ChildNodes[´dataRecebimentoInsumo´].NodeValue := ´´;
Node1 := NodeMedicamentos.AddChild(´saidaInsumoVendaAoConsumidor´);
Node1.ChildNodes[´tipoReceituarioInsumo´].NodeValue := ´´;
Node1.ChildNodes[´numeroNotificacaoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´dataPrescricaoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´nomePrescritor´].NodeValue := ´´;
Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´numeroRegistroProfissional´].NodeValue := ´´;
Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´conselhoProfissional´].NodeValue := ´´;
Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´UFConselho´].NodeValue := ´´;
Node1.ChildNodes[´usoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´nomeComprador´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´tipoDocumento´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´numeroDocumento´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´orgaoExpedidor´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´UFEmissaoDocumento´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´quantidadeDeInsumoPorUnidadeFarmacotecnica´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´unidadeDeMedidaDoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´unidadeFarmacotecnica´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´quantidadeDeUnidadesFarmacotecnicas´].NodeValue := ´´;
Node1.ChildNodes[´dataVendaInsumo´].NodeValue := ´´;
Node1 := NodeMedicamentos.AddChild(´saidaInsumoTransferencia´);
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´numeroNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´dataNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´cnpjOrigem´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´cnpjDestino´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´insumoTransferencia´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´insumoTransferencia´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´insumoTransferencia´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´quantidadeInsumoTransferencia´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´tipoUnidadeTransferencia´].NodeValue := ´´;
Node1.ChildNodes[´dataTransferenciaInsumo´].NodeValue := ´´;
Node1 := NodeMedicamentos.AddChild(´saidaInsumoPerda´);
Node1.ChildNodes[´motivoPerdaInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´insumoPerda´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´insumoPerda´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´insumoPerda´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´quantidadeInsumoPerda´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´tipoUnidadePerda´].NodeValue := ´´;
Node1.ChildNodes[´dataPerdaInsumo´].NodeValue := ´´;
Node1.ChildNodes[´cnpjFornecedorInsumo´].NodeValue := ´´;
SaveToFile(Pchar(´teste.xml´));
end;
XML.Active := False;
XML.Free;
end;
Sergio Kawahara
Gostei + 0
28/08/2007
Sergiokawahara
Obrigado
Sergio Kawahara
Gostei + 0
28/08/2007
Edmarfrazao
Creio que na semana que vem vou chegar a este ponto.
o que eu disse e se você ja alterou as propriedade do xmldocument para
nodeident para <tab>
e options
donodeautoindente para true
o meu xml fica identado assim
agora com relaçao a mensagem.
Hoje recebi a senha.
fiz um pequeno exemplo basico so o cadastro.
e deu a mesma mensagem
gera apenas o basico e confira com o exemplo da anvisa.
Gostei + 0
28/08/2007
Aldus
Também estou no mesmo dilema, a falta de informação por parte da Anvisa.
Sergio, vc usa apenas o código citado sem fazer a importação do esquema do sngpc?
Mario
Gostei + 0
28/08/2007
Sergiokawahara
Agora quero saber como posso enviar direto pelo programa sem ter que fazer upload pelo site.
Valeu abraços.
Gostei + 0
28/08/2007
Sergiokawahara
Gostei + 0
29/08/2007
Edmarfrazao
correto que passou na validação.
tentei o meu, nada, o da rotina acima também nada o exemplo do site da aniva.
Gostaria de um arquivo xml que esta correto para validação.
Gostei + 0
29/08/2007
Edmarfrazao
http://www.anvisa.gov.br/hotsite/sngpc/schemas/sngpc200608v1_0.xml
com o exemplo
a validaçao mostra outras informações.
1o tem que cadastrar um inventario no site
http://homologacao.anvisa.gov.br/sngpc
depois pode validar o arquivo, mas somente 01 dia apos o cadastro do inventario e sua finalização.
Fiz o cadastro do inventario lancei um produto que tem que ter o codigo correto
exemplo medicamento 1018002790058
insumo 00000001
finalizar o inventario
agora a validação ira passar , mas como diz que so apos 01 dias amanha terei mais informações.
Gostei + 0
29/08/2007
Pedrodkp
Error
---------------------------
System error: -2146697210.
Line: 0
---------------------------
OK
---------------------------
* Acho que é pau no arquivo, estou usando o Delphi 7.
Alguém pode mandar o sngpc200707v1_0.xsd válido?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)