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" }); };