Skip to content

Implementar função e utilitário de CLI para conversão de SciELO XML (SPS 1.10) para PubMed XML #1226

Description

@robertatakenaka

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

  1. 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.
  2. 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

  • <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-title ou pelo atributo nlm-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-type do 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

  • 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:

  1. [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)
  2. https://www.ncbi.nlm.nih.gov/books/NBK3828/#publisherhelp.PubMed_XML_Tagged_Format
  3. [NCBI LinkOut/PubMed File Validator](https://www.ncbi.nlm.nih.gov/projects/linkout/doc/file-validator.html)
  4. https://www.ncbi.nlm.nih.gov/books/NBK3812/#ft.Linking_with_PIIDOI

Metadata

Metadata

Assignees

Labels

No labels
No labels
No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions