Skip to content

feat(pubmed): implementar CopyrightInformation e CoiStatement#1247

Open
Rossi-Luciano wants to merge 1 commit into
scieloorg:masterfrom
Rossi-Luciano:feat/1238-pubmed-copyright-coi
Open

feat(pubmed): implementar CopyrightInformation e CoiStatement#1247
Rossi-Luciano wants to merge 1 commit into
scieloorg:masterfrom
Rossi-Luciano:feat/1238-pubmed-copyright-coi

Conversation

@Rossi-Luciano

Copy link
Copy Markdown
Contributor

O que esse PR faz?

Substitui os stubs vazios de xml_pubmed_copyright_information e xml_pubmed_coi_statement (packtools/sps/formats/pubmed.py) por implementações reais:

  • CopyrightInformation: extraído de .//permissions/copyright-statement.
  • CoiStatement: extraído de .//fn[@fn-type="coi-statement"]/p, ignorando o <label> (ex. "Conflito de Interesses"), que é só cabeçalho de seção, não parte do conteúdo do statement em si.

Não existe model dedicado para nenhum dos dois campos, então segui o padrão de xpath direto já usado em xml_pubmed_title_reference_list neste mesmo arquivo, em vez de criar um novo model. Uso node_plain_text (já usado em article_contribs.py) para extrair o texto sem subtags.

Onde a revisão poderia começar?

packtools/sps/formats/pubmed.py: get_copyright_information, xml_pubmed_copyright_information, get_coi_statement, xml_pubmed_coi_statement.

Como este poderia ser testado manualmente?

  1. Rodar a suíte: source .venv/bin/activate && python -m pytest tests/sps/formats/test_pubmed.py -v (50 passed: 46 originais + 4 novos).
  2. Testar com o exemplo do guia SPS 1.10 (<fn fn-type="coi-statement"> com <label> + <p>):
    from lxml import etree as ET
    from packtools.sps.formats import pubmed
    
    xml_tree = ET.fromstring('''
    <article xmlns:mml="http://www.w3.org/1998/Math/MathML"
             xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article"
             dtd-version="1.1" specific-use="sps-1.9" xml:lang="pt">
      <front><article-meta>
        <permissions>
          <copyright-statement>Copyright © 2023 The Authors</copyright-statement>
        </permissions>
        <author-notes>
          <fn fn-type="coi-statement">
            <label>Conflito de Interesses</label>
            <p>Não há conflito de interesse entre os autores do artigo.</p>
          </fn>
        </author-notes>
      </article-meta></front>
    </article>
    ''')
    xml_pubmed = ET.fromstring('<Article/>')
    pubmed.xml_pubmed_copyright_information(xml_pubmed, xml_tree)
    pubmed.xml_pubmed_coi_statement(xml_pubmed, xml_tree)
    print(ET.tostring(xml_pubmed, pretty_print=True).decode())
    Resultado esperado: <CopyrightInformation>Copyright © 2023 The Authors</CopyrightInformation> e <CoiStatement>Não há conflito de interesse entre os autores do artigo.</CoiStatement> (sem o texto do <label>).

Algum cenário de contexto que queira dar?

Parte da quebra da #1226 em sub-issues. Independente das demais — não depende nem é dependência de nenhuma outra sub-issue em aberto.

Quais são tickets relevantes?

Closes #1238. Relacionado a #1226 (issue-mãe).

Referências

Substitui os stubs vazios de xml_pubmed_copyright_information e
xml_pubmed_coi_statement por implementações reais, via xpath direto
(sem model dedicado, seguindo o padrão já usado em
xml_pubmed_title_reference_list):

- CopyrightInformation: .//permissions/copyright-statement
- CoiStatement: .//fn[@fn-type="coi-statement"]/p, ignorando o
  <label> (ex. "Conflito de Interesses"), que é só cabeçalho de
  seção, não parte do conteúdo do statement.

Usa node_plain_text (já usado em article_contribs.py) para extrair o
texto sem subtags.

Refs scieloorg#1226, scieloorg#1238
@Rossi-Luciano

Copy link
Copy Markdown
Contributor Author

Validado localmente contra a DTD oficial do PubMed (https://dtd.nlm.nih.gov/ncbi/pubmed/in/PubMed.dtd, via lxml.etree.DTD), combinando esta branch com o #1243 (#1234, necessário porque a DTD exige a raiz ArticleSet):

(O validador linkado na issue-mãe #1226 não serve para este formato — ver comentário em #1226.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pubmed XML: implementar CopyrightInformation e CoiStatement

2 participants