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