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 = ( '
'