sul-dlss / sul_pub

SUL system for harvest and managing publications for Stanford CAP, with controlled API access.
http://cap.stanford.edu
Other
8 stars 3 forks source link

Remediate MEDLINE: PMIDs #1640

Closed peetucket closed 9 months ago

peetucket commented 10 months ago

WoS REST client has been creating bad PMIDs.

Find all publications in last 5 months that have a publication identifer of type 'pmid' that starts with 'MEDLINE:':

pubs = PublicationIdentifier.where(identifier_type:'pmid').where('created_at > ?', Date.today - 5.months).filter_map {|pub| {pub_id: pub.publication_id, pmid: pub.identifier_value} if pub.identifier_value.starts_with?('MEDLINE:')}

Then remediate by removing MEDLINE prefix and updating pub hash for publication.

pubs.each do |pub|
   identifier = PublicationIdentifier.find_by(publication_id: pub[:pub_id], identifier_type: 'pmid')
   id_result = identifier.update(identifier_value: identifier.identifier_value.delete_prefix('MEDLINE:'), identifier_uri: identifier.identifier_uri.gsub('MEDLINE:',''))
   identifier.pub_hash_update
   pub_result = identifier.publication.save
   puts " #{pub[:pub_id]} : #{id_result} : #{pub_result}"
end
peetucket commented 9 months ago

Because of #1655