From 7faab4596dbfcc41cc91806e8a5d4c6649d3a975 Mon Sep 17 00:00:00 2001 From: Rossi-Luciano Date: Fri, 3 Jul 2026 20:14:25 -0300 Subject: [PATCH] =?UTF-8?q?fix(pubmed):=20usar=20journal-id[nlm-ta]=20em?= =?UTF-8?q?=20JournalTitle=20em=20vez=20da=20abrevia=C3=A7=C3=A3o=20SciELO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit get_journal_title() usava journal_meta.Title.abbreviated_journal_title (abrev-journal-title[@abbrev-type="publisher"], a abreviação genérica da SciELO). O guia SPS 1.10 e a DTD do PubMed esperam a abreviação registrada no PubMed, disponível em journal-id[@journal-id-type="nlm-ta"] quando o periódico é indexado. Passa a usar journal_meta.JournalID.nlm_ta, com fallback para abbreviated_journal_title quando nlm-ta está ausente (JournalTitle é obrigatório na DTD do PubMed). Refs #1226, #1235 --- packtools/sps/formats/pubmed.py | 12 ++++++++++- tests/sps/formats/test_pubmed.py | 35 ++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/packtools/sps/formats/pubmed.py b/packtools/sps/formats/pubmed.py index f99b2651d..7c03d387a 100644 --- a/packtools/sps/formats/pubmed.py +++ b/packtools/sps/formats/pubmed.py @@ -45,8 +45,18 @@ def xml_pubmed_publisher_name_pipe(xml_pubmed, xml_tree): def get_journal_title(xml_tree): - journal_title = journal_meta.Title(xml_tree) + """ + JournalTitle deve ser a abreviação do periódico registrada no PubMed + (journal-id[@journal-id-type="nlm-ta"]), presente apenas quando o + periódico é indexado no PubMed. Cai para a abreviação genérica da + SciELO quando nlm-ta está ausente, já que JournalTitle é obrigatório + na DTD do PubMed. + """ + nlm_ta = journal_meta.JournalID(xml_tree).nlm_ta + if nlm_ta: + return nlm_ta + journal_title = journal_meta.Title(xml_tree) return journal_title.abbreviated_journal_title diff --git a/tests/sps/formats/test_pubmed.py b/tests/sps/formats/test_pubmed.py index a8afad598..ed46ad13a 100644 --- a/tests/sps/formats/test_pubmed.py +++ b/tests/sps/formats/test_pubmed.py @@ -179,6 +179,41 @@ def test_xml_pubmed_journal_title_pipe_without_title(self): self.assertEqual(obtained, expected) + def test_xml_pubmed_journal_title_pipe_uses_nlm_ta_over_abbrev(self): + expected = ( + '
' + '' + 'Rev Saude Publica' + '' + '
' + ) + xml_pubmed = ET.fromstring( + '
' + '' + '
' + ) + xml_tree = ET.fromstring( + '
' + '' + '' + 'Rev Saude Publica' + '' + 'Revista de Saúde Pública' + 'Rev. saúde pública' + '' + '' + '' + '
' + ) + + xml_pubmed_journal_title_pipe(xml_pubmed, xml_tree) + + obtained = ET.tostring(xml_pubmed, encoding="utf-8").decode("utf-8") + + self.assertEqual(obtained, expected) + def test_xml_pubmed_issn_pipe(self): expected = ( '
'