-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementar um Encoder #8
Comments
A partir da documentação do pacote encoding, temos que:
Só que as interfaces definidas no pacote se chamam *(Un)Marshaler. Ou seja, a coisa coisa é confusa. Mas dando um passo para trás, você parece querer realizar um processamento que não converte de um padrão para outro e sim realiza uma reorganização. Ou seja, você não parece algo mais parecido com sort.Iterface, não? Para eu conseguir ajudar melhor, talvez vale a pena descrever melhor a funcionalidade
Esse é um Loader ou Importer. Eu particularmente gosto dos métodos do tipo |
@danielfireman vou tentar explicar melhor aqui a utilidade e depois que ficar mais compreendido, arrumo até o basicamente o SNGPC é um formado de arquivo que é gerado pelas farmácias para ser enviado para a ANVISA, informando sobre a dispensação (venda) de medicamentos que exigem controle especial (exigem receita médica, arquivar as receitas, farmacêutico responsável e tal e tal) uma utilidade do pacote seria conseguir ler esse arquivo, por isso iniciei mapeando o XML depois a ideia é poder transformar estes dados em CSV para poder gerar relatórios, sintetizando e agrupando por data, medicamentos, classificação terapêutica e afins outra coisa seria anonimizar os dados, existem muitos dados como CPF e Nome do paciente e/ou comprador, CRM e nome do médico, entre outras coisas, daí uma função de exportar já tirando estes dados, ou até gerar um novo XML com os dados removidos/embaralhados/trocados |
outra função, que eu não vejo utilidade para mim inicialmente, é poder gerar um arquivo SNGPC, tipo, ter uma API que poderia ser usado por um sistema de informação da farmácia, onde ele pegaria um CSV com a movimentação e as informações necessários , e geraria um SNGPC válido para ser enviado a ANVISA ou consumido por outro sistema de gestão de SNGPC |
Entendi sim. Obrigado pelas explicações. Pensei um pouco aqui e minha sugestão é não ter pacotes inicialmente. A coisa fluiria a partir do import padrão Se você quiser dar oportunidade de ir e vir (de formatos) e tem validações e etc no XML, pode usar os From* e To*. Por exemplo: import github.com/endersonmaia/sngpc
func main() {
f, err := sngpc.FromXMLPath("myxml.xml")
checkErr(err)
// Do stuff
csv, err := f.ToCSV() // Retornando um [][]string
checkErr(err)
..
other,err := sngpc.FromCSVPath("csv.csv")
checkErr(err)
other.ToXML()
} A vantagem dessa abordagem é a simplicidade (foi a que eu usei em tableschema-go). A desvantagem dessa é que teríamos todos os construtores no pacote e exportadores na struct. Eu gosto dessa simplicidade, até por que você não sabe exatamente quantos exportadores precisará. Outra abordagem é a usada pelo pacote encoding e separar os importadores dos exportadores (marshalers e unmarshalers) em structs diferentes. A desvantagem é uma possível explosão de structs. |
No caso em que seja necessário processar arquivos XML e reorganizá-los por períodos distintos, por ex., seria necessário um Encoder para criar um novo arquivo XML.
Não sei se a melhor nomenclatura seria
Encoder
ouMarsheler
, ainda estudando o vocabulário do adequado, ;)Outro cenário possível, é uma API para criar o XML do SNGPC importando movimentações de arquivos CSV ou de banco de dados.
The text was updated successfully, but these errors were encountered: