X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lib%2FReference%2FRetrieve%2FPubMed.pm;fp=lib%2FReference%2FRetrieve%2FPubMed.pm;h=0ecc842ee1d068839004117d5a0336e09811a77b;hb=439df49d60fbad54b9970f03ab4eb5e24551b1c2;hp=1fc4dff76d4d0582086a8e930b34763c11d8df48;hpb=7ec44eb25d6d5f727e751188d7418198eccd47a6;p=reference.git
diff --git a/lib/Reference/Retrieve/PubMed.pm b/lib/Reference/Retrieve/PubMed.pm
index 1fc4dff..0ecc842 100644
--- a/lib/Reference/Retrieve/PubMed.pm
+++ b/lib/Reference/Retrieve/PubMed.pm
@@ -336,43 +336,20 @@ sub _fix_medline_journal($$$;){
if (ref $ISSN) {
$ISSN = $ISSN->{content};
}
- my $url = qq(http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=journals&term=$ISSN);
+ my $url = qq(http://www.ncbi.nlm.nih.gov/nlmcatalog/?term=${ISSN}[ISSN]&format=text&report=xml);
print STDERR "url: $url" if $DEBUG;
my $request = HTTP::Request->new('GET', $url);
my $response = $ua->request($request);
$response = $response->content;
- print STDERR "response: $response" if $DEBUG;
+ $response =~ s/\>/>/gso;
+ $response =~ s/\<///;
- my ($journal_id) = $response =~ m#\s*(\d+)\s*#i;
-
- # http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=journals&id=4559
- #
- #
- #
- #
- # 4559
- # - The Journal of biological chemistry.
- # - J Biol Chem
- # - J. Biol. Chem.
- # - 2985121R
- #
- # - 0021-9258
- # - 1083-351X
- # - 1905
- #
- # - American Society for Biochemistry and Molecular Biology
- # - eng
- #
- # - United States
- #
- #
- #
- $url = qq(http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=journals&id=$journal_id);
- print STDERR "url: $url" if $DEBUG;
- $request = HTTP::Request->new('GET', $url);
- $response = $ua->request($request);
- $response = $response->content;
print STDERR "response: $response" if $DEBUG;
+ my $xa = new XML::Simple;
+ my $ref_struct = $xa->XMLin($response,ForceArray=>['NCBICatalogRecord'],KeyAttr=>[]);
+ my $ref = $ref_struct->{NCBICatalogRecord}[0];
+ print STDERR Dumper($ref) if $DEBUG;
my %journal;
while ($response =~ m{^\s*(?:(?:\s*(\d+))| # Match ids
@@ -384,20 +361,19 @@ sub _fix_medline_journal($$$;){
else {
$journal{lc($2)} = $3;
}
- }
- my %journal_mapping = (title => q(title),
- medlineabbr => q(medabbr),
- isoabbr => q(isoabbr),
- nlmid => q(nlmid),
- issn => q(pissn),
- eissn => q(eissn),
- publisher => q(publisher),
- pmid => q(id)
- );
- my @journal_entry;
- foreach my $key (keys %journal_mapping) {
- push @journal_entry,($key=>$journal{$journal_mapping{$key}});
- }
+ }
+ my $print_issn = $ref->{JrXml}{Serial}{ISSN}[0]{IssnType} eq 'Print' ? 0 : 1;
+ my @journal_entry =
+ (title => $ref->{JrXml}{Serial}{Title},
+ medlineabbr => $ref->{JrXml}{Serial}{MedlineTA},
+ isoabbr => $ref->{JrXml}{Serial}{ISOAbbreviation},
+ nlmid => $ref->{JrXml}{Serial}{NlmUniqueID},
+ issn => $ref->{JrXml}{Serial}{ISSN}[$print_issn]{ISSN},
+ eissn => $ref->{JrXml}{Serial}{ISSN}[1-$print_issn]{ISSN},
+ publisher => $ref->{JrXml}{Serial}{publicationInfo}{Publisher},
+ pmid => $ref->{JrXml}{id},
+ );
+ print STDERR Dumper(\@journal_entry) if $DEBUG;
return @journal_entry;
}