1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
var extract_details = (pubmed_id, details) => {
var months = {
"jan": "January",
"feb": "February",
"mar": "March",
"apr": "April",
"may": "May",
"jun": "June",
"jul": "July",
"aug": "August",
"sep": "September",
"oct": "October",
"nov": "November",
"dec": "December"
};
var _date = details[pubmed_id].pubdate.split(" ");
return {
"authors": details[pubmed_id].authors.map((authobj) => {
return authobj.name;
}),
"title": details[pubmed_id].title,
"journal": details[pubmed_id].fulljournalname,
"volume": details[pubmed_id].volume,
"pages": details[pubmed_id].pages,
"month": _date.length > 1 ? months[_date[1].toLowerCase()] : "jan",
"year": _date[0],
};
};
var update_publication_details = (details) => {
Object.entries(details).forEach((entry) => {;
switch(entry[0]) {
case "authors":
$("#txt-publication-authors").val(entry[1].join(", "));
break;
case "month":
$("#select-publication-month")
.children("option")
.each((index, child) => {
console.debug(entry[1].toLowerCase());
child.selected = child.value == entry[1].toLowerCase();
});
default:
$("#txt-publication-" + entry[0]).val(entry[1]);
break;
}
});
};
var fetch_publication_abstract = (pubmed_id, pub_details) => {
$.ajax("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi",
{
"method": "GET",
"data": {
"db": "pubmed",
"id": pubmed_id,
"rettype": "abstract",
"retmode": "xml"
},
"success": (data, textStatus, jqXHR) => {
update_publication_details({
...pub_details,
...{
"abstract": Array.from(data
.getElementsByTagName(
"Abstract")[0]
.children)
.map((elt) => {return elt.textContent.trim();})
.join("\r\n")
}});
},
"error": (jqXHR, textStatus, errorThrown) => {},
"complete": (jqXHR, textStatus) => {},
"dataType": "xml"
});
};
var fetch_publication_details = (pubmed_id, complete_thunks) => {
error_display = $("#search-pubmed-id-error");
error_display.text("");
add_class(error_display, "visually-hidden");
$.ajax("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi",
{
"method": "GET",
"data": {"db": "pubmed", "id": pubmed_id, "format": "json"},
"success": (data, textStatus, jqXHR) => {
// process and update publication details
hasError = (
Object.hasOwn(data, "error") ||
Object.hasOwn(data.result[pubmed_id], "error"));
if(hasError) {
error_display.text(
"There was an error fetching a publication with " +
"the given PubMed ID! The error received " +
"was: '" + (
data.error ||
data.result[pubmed_id].error) +
"'. Please check ID you provided and try " +
"again.");
remove_class(error_display, "visually-hidden");
} else {
fetch_publication_abstract(
pubmed_id,
extract_details(pubmed_id, data.result));
}
},
"error": (jqXHR, textStatus, errorThrown) => {},
"complete": () => {
complete_thunks.forEach((thunk) => {thunk()});
},
"dataType": "json"
});
};
|