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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions