rm(list = ls())
###############################input data 
# Install and load required packages
if (!requireNamespace("rcrossref", quietly = TRUE)) install.packages("rcrossref")
if (!requireNamespace("rentrez", quietly = TRUE)) install.packages("rentrez")
library(rcrossref)
## Warning: package 'rcrossref' was built under R version 4.4.1
library(rentrez)

# Function to search article info by title
search_article_info <- function(title) {
  # Search for DOI and journal info
  cr_result <- cr_works(query = title, limit = 1)
  
  # Search for PubMed ID
  pm_result <- entrez_search(db = "pubmed", term = title, retmax = 1)
  
  # Extract information
  doi <- if (length(cr_result$data) > 0 && !is.null(cr_result$data$doi)) {
    paste0("https://doi.org/", cr_result$data$doi)
  } else {
    NA_character_
  }
  
  pubmed_url <- if (length(pm_result$ids) > 0) {
    paste0("https://pubmed.ncbi.nlm.nih.gov/", pm_result$ids[1], "/")
  } else {
    NA_character_
  }
  
  journal_abbrev <- if (length(cr_result$data) > 0 && !is.null(cr_result$data$container.title)) {
    cr_result$data$container.title
  } else {
    NA_character_
  }
  
  # Create a dataframe
  result_df <- data.frame(
    Title = title,
    DOI_URL = doi,
    PubMed_URL = pubmed_url,
    Journal_Abbrev = journal_abbrev,
    stringsAsFactors = FALSE
  )
  
  return(result_df)
}

# Function to search multiple titles
search_multiple_articles <- function(titles) {
  results <- lapply(titles, search_article_info)
  do.call(rbind, results)
}

###############################input data 
dir_path <- "C:\\Users\\xut2\\Desktop\\ref\\"
dir_path_name <- dir(dir_path,pattern = "*.",full.names = T, recursive =T)
library(openxlsx)
getSheetNames(grep("ref.xlsx", dir_path_name,value = T))
## [1] "Sheet1"
data_1 <- read.xlsx(grep("ref.xlsx", dir_path_name,value = T), sheet = 1)
dim(data_1) #[1] 52  2
## [1] 51 11
head(data_1, 2)
##   no              content
## 1  1 Patton K, Borshoff D
## 2  2       Funk C, Roth A
##                                                                                   X3
## 1                                                             Adverse drug reactions
## 2  Current limitations and future opportunities for prediction of DILI from in vitro
##                        X4                  X5   X6   X7   X8   X9 X10 X11
## 1             Anaesthesia       2018;73:76-84 <NA> <NA> <NA> <NA>  NA  NA
## 2  Archives of toxicology  2017;91(1):131-142 <NA> <NA> <NA> <NA>  NA  NA
# Extract titles
result_df <- search_multiple_articles(data_1$X3)
## Warning: Unknown or uninitialised column: `container.title`.
## Warning: Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
## Unknown or uninitialised column: `container.title`.
#View(result_df)
head(result_df)
##                                                                                Title
## 1                                                             Adverse drug reactions
## 2  Current limitations and future opportunities for prediction of DILI from in vitro
## 3                             Dronedarone in high-risk permanent atrial fibrillation
## 4                                                          Drug-induced liver injury
## 5                          Drug-induced mitochondrial dysfunction and cardiotoxicity
## 6                                         Animal models of drug-induced liver injury
##                                              DOI_URL
## 1           https://doi.org/10.5005/jp/books/12120_2
## 2          https://doi.org/10.1007/s00204-016-1874-9
## 3      https://doi.org/10.1016/s0019-4832(12)60031-5
## 4 https://doi.org/10.1093/med/9780198759928.003.0058
## 5      https://doi.org/10.1002/9780470372531.fmatter
## 6         https://doi.org/10.1016/j.dmpk.2020.04.284
##                                  PubMed_URL
## 1 https://pubmed.ncbi.nlm.nih.gov/39230883/
## 2 https://pubmed.ncbi.nlm.nih.gov/27766365/
## 3 https://pubmed.ncbi.nlm.nih.gov/38227804/
## 4 https://pubmed.ncbi.nlm.nih.gov/39228306/
## 5 https://pubmed.ncbi.nlm.nih.gov/39127172/
## 6 https://pubmed.ncbi.nlm.nih.gov/39228306/
##                             Journal_Abbrev
## 1 Ready Reckoner of Adverse Drug Reactions
## 2                   Archives of Toxicology
## 3                     Indian Heart Journal
## 4                   Oxford Medicine Online
## 5   Drug‐Induced Mitochondrial Dysfunction
## 6     Drug Metabolism and Pharmacokinetics
# Optionally, write to CSV
write.csv(result_df, paste0(dir_path,Sys.Date(),"-","title_doi_pubmed.csv"),row.names = FALSE,na = "")