Título: Implementar função e utilitário de CLI para conversão de SciELO XML (SPS 1.10) para PubMed XML
🎯 Objetivo
Desenvolver um módulo reutilizável (função principal) e um utilitário em linha de comando (CLI) que realize o mapeamento, a extração e a conversão de metadados de artigos no formato SciELO Publishing Schema (versão 1.10) para o formato de submissão de dados de citação do PubMed (Publisher DTD / ArticleSet XML).
🛠️ Escopo Técnico
- Função Principal: Deve receber como entrada um arquivo
.xml (ou pacote .zip) padrão SciELO, processar os nós através de árvore DOM/SAX e gerar uma string ou arquivo XML válido de acordo com a DTD do PubMed.
- Utilitário de CLI: Deve expor a função de conversão para uso em terminal, aceitando argumentos de entrada (
--input ou -i) e saída (--output ou -o), além de permitir o processamento em lote.
📝 Checklist de Mapeamento e Estrutura XML (PubMed)
O desenvolvedor deve garantir que a estrutura gerada respeite estritamente a hierarquia e as obrigatoriedades (R = Required, O = Optional, O/R = Optional/Recommended) descritas no manual do PubMed, no entanto, não é porque é opcional que não será representado, se o dado existe ele tem que ser inserido no formato do PubMed:
🧱 Bloco 1: Estrutura Base, Periódico e Títulos
👥 Bloco 2: Paginação, Autoria e Instituições
📝 Bloco 3: Indexação, Resumos e Referências
🧪 Critérios de Aceitação e Validação
- O utilitário não deve quebrar nem corromper entidades XML ao processar caracteres especiais (tudo deve ser gerado estritamente em UTF-8 sem usar áreas privadas do Unicode).
- O XML de saída gerado pela ferramenta deve ser validado com sucesso no PubMed Citation Validator, retornando zero erros de DTD.
🔗 Materiais de Consulta para o Desenvolvedor:
- [Guia de Elementos e Tags SciELO SPS 1.10](https://docs.google.com/document/d/1GTv4Inc2LS_AXY-ToHT3HmO66UT0VAHWJNOIqzBNSgA/edit?tab=t.0#heading=h.phyemsrwd4ax)
- https://www.ncbi.nlm.nih.gov/books/NBK3828/#publisherhelp.PubMed_XML_Tagged_Format
- [NCBI LinkOut/PubMed File Validator](https://www.ncbi.nlm.nih.gov/projects/linkout/doc/file-validator.html)
- https://www.ncbi.nlm.nih.gov/books/NBK3812/#ft.Linking_with_PIIDOI
Título: Implementar função e utilitário de CLI para conversão de SciELO XML (SPS 1.10) para PubMed XML
🎯 Objetivo
Desenvolver um módulo reutilizável (função principal) e um utilitário em linha de comando (CLI) que realize o mapeamento, a extração e a conversão de metadados de artigos no formato SciELO Publishing Schema (versão 1.10) para o formato de submissão de dados de citação do PubMed (Publisher DTD / ArticleSet XML).
🛠️ Escopo Técnico
.xml(ou pacote.zip) padrão SciELO, processar os nós através de árvore DOM/SAX e gerar uma string ou arquivo XML válido de acordo com a DTD do PubMed.--inputou-i) e saída (--outputou-o), além de permitir o processamento em lote.📝 Checklist de Mapeamento e Estrutura XML (PubMed)
O desenvolvedor deve garantir que a estrutura gerada respeite estritamente a hierarquia e as obrigatoriedades (R = Required, O = Optional, O/R = Optional/Recommended) descritas no manual do PubMed, no entanto, não é porque é opcional que não será representado, se o dado existe ele tem que ser inserido no formato do PubMed:
🧱 Bloco 1: Estrutura Base, Periódico e Títulos
<FileHeader>(R): Cabeçalho do lote do arquivo.<ArticleSet>(R): Tag raiz do conjunto de artigos.<Article>(R): Container de cada artigo individual.<Journal>(R): Bloco de metadados do periódico.<PublisherName>(R): Nome da editora (//journal-meta/publisher/publisher-name).<JournalTitle>(R): Título da revista (//journal-meta/journal-titleou pelo atributonlm-ta).<Issn>(R): ISSN do periódico (//journal-meta/issn), separando corretamente por tipo (eletrônico/impresso).<Volume>(O/R): Volume do fascículo (//article-meta/volume).<Issue>(O/R): Número do fascículo (//article-meta/issue). Tratar suplementos e números especiais.<PubDate>(R): Data de publicação.<Year>(R): Ano (Obrigatório).<Month>(O/R): Mês (Se disponível).<Season>(O): Trimestre/Temporada (ex: Spring, Summer), se aplicável.<Day>(O): Dia (Opcional).<Replaces>(O): Tag para substituição de registros já enviados, se houver lógica de reenvio.<ArticleTitle>(O): Título principal do artigo. Priorizar a versão em inglês (promovendo de<sub-article>se o original for em outro idioma).<VernacularTitle>(O): Título no idioma original/nativo do artigo, caso o idioma principal não seja o inglês (ex:xml:lang="pt").👥 Bloco 2: Paginação, Autoria e Instituições
<FirstPage>(O/R): Página inicial (//fpage).<LastPage>(O): Página final (//lpage).<ELocationID>(O/R): Identificador eletrônico de paginação (//elocation-id), obrigatório para fluxo de Publicação Contínua (PC).<Language>(O): Idioma do artigo. Converter o padrão de 2 letras ISO 639-1 do SciELO (ex:pt) para as 3 letras exigidas pelo PubMed (ex:por).<AuthorList>(O/R): Lista de autores principais do manuscrito.<Author>(R): Entrada individual de autor.<FirstName>(O/R): Primeiro nome (mapear do início de//contrib/name/given-names).<MiddleName>(O): Nomes do meio (se houver isolamento no SciELO ou lógica de split).<LastName>(O/R): Sobrenome (//contrib/name/surname).<Suffix>(O): Sufixos honoríficos ou de parentesco (Filho, Neto, Júnior).<CollectiveName>(O): Usado para autoria institucional ou corporativa (//contrib/collab).<AffiliationInfo>(O): Container da afiliação do autor.<Affiliation>(O): Texto completo da instituição (//aff/institution[@content-type="original"]).<Identifier>(O): Identificadores do autor. Mapear o ORCID (//contrib-id[@contrib-id-type="orcid"]), limpando a URL para deixar apenas o ID.<GroupList>(O/R): Lista de grupos colaboradores secundários.<Group>(R): Container do grupo.<GroupName>(R): Nome do consórcio ou grupo de trabalho.<IndividualName>(O): Nomes de membros específicos listados dentro do grupo.📝 Bloco 3: Indexação, Resumos e Referências
<PublicationType>(O): Tipo de publicação (converter o atributo@article-typedo SciELO para os termos aceitos pelo PubMed).<ArticleIdList>(O/R): Lista de identificadores únicos do artigo.<ArticleId>(R): Elementos contendo o DOI (pub-id-type="doi") e identificadores internos (pii).<History>(O): Histórico de datas do manuscrito (Recebido, Aceito, Revisado). Mapear de//history/date.<Abstract>(O): Resumo principal do artigo. Preservar a estrutura de subseções (<sec>) se houver.<OtherAbstract>(O): Resumos secundários em outros idiomas (ex: resumo em português/espanhol do artigo principal).<CopyrightInformation>(O): Declaração de direitos autorais e licença (//permissions).<CoiStatement>(O): Declaração de conflito de interesses (//fn[@fn-type="coi-statement"]).<ObjectList>(O): Container para dados de objetos e mídias associadas.<Object>(O): Objeto individual.<Param>(O): Parâmetros de metadados do objeto.<ReferenceList>(O): Lista de referências bibliográficas do artigo (//back/ref-list).<Title>(O): Título da seção de referências.<Reference>(O/R): Cada referência individual mapeada (//ref).<Citation>(O/R): Texto completo da citação textual ou dados estruturados da mesma.<PMID>(O/R): Identificador PubMed da referência citada, se estiver disponível no XML de origem (//mixed-citation/pub-id[@pub-id-type="pmid"]).🧪 Critérios de Aceitação e Validação
🔗 Materiais de Consulta para o Desenvolvedor: