Entering edit mode
11.8 years ago
AP
▴
60
Hi,
I have an xml code which searches for a drug names from a kegg in an article. the list of drug names are given in the http://rest.kegg.jp/list/drug . the code is working fine and gives me the desired output. but now problem is the list of drug mentioned in kegg has some names which arent drug and need to be excluded like the first name in the list is water. how could i remove these names during search. am sharing ma code.
<Content type="html" view="profile">
//This will hold all the drug code
//The key/index will be the drug names
var drugReference = [];
//The url using which master list of drugs can be downloaded
var drugListUrl = "http://rest.kegg.jp/list/drug";
//Prefix of the url using which specifications of a particular drug
//can be fetched
var drugSpecsUrlPrefix = "http://www.kegg.jp/entry/"
//This will hold the entire article content
var articleContent = "";
//This will hold the drugs to be ignored
var ignoredDrugNames = [ "water","1-","15-","4-" ];
//This method ensures the button and cursor
//are in appropriate states when the drug find
//action is in progress
//While in progress disables the div that shows
//the drug names that are found in the article
function drugFindInProgress() {
document.getElementById("listterms").style.display="none";
document.getElementById("submit").disabled=true;
document.getElementById("submit").value="Finding Drugs..";
document.body.style.cursor = 'wait';
}
//This method ensures that the button and cursor
//are in appropriate states after the drug find
//action is completed
//After completion the div that shows
//the drug names that are found in the article
function drugFindCompleted() {
document.getElementById("listterms").style.display="block";
document.getElementById("submit").value="Find Drugs";
document.getElementById("submit").disabled=false;
document.body.style.cursor = 'default';
}
//This method is used to make a call to retrieve the article content
function getContent(){
drugFindInProgress();
gadgets.sciverse.getArticleContent(getContentCallback);
}
//The getContent callback function
//After retrieving the article content make a call to the function
//that will link the drug names
function getContentCallback(response){
if (response != null){
articleContent = response.toUpperCase();
linkText();
}else{
drugFindCompleted();
alert("Sorry!!!. Unable to retrieve the article content");
}
}
//This method is used to make a request to get the entire list of drug names
function linkText(){
var params ;
gadgets.sciverse.makeRequest(drugListUrl, requestCallBack, params);
}
//The makeRequest callback function
function requestCallBack (response){
//Get the contents of the drug listing
var relevantData = response.text;
//Each line represents a particular drug.
//Split and get each drug into an array
var drugs = relevantData.split("\n");
//Array to hold the terms to be linked in the article
var terms = [];
for(var i=0; i < drugs.length; i++) {
//Each line will have a drug code and multiple drug names
//seperated by a tab. Split the drug code and names first
var drug = drugs[i].split('\t');
//This check is to avoid invalid entries like empty lines
//Ideally a drug should have a drug code and name
//seperated by a tab
if(drug.length != 2){
continue;
}
var drugCode = drug[0];
var drugNames = drug[1].split(";");
//Split the multiple drug names and map each name to the drug code
for(var j = 0; j < drugNames.length ; j++){
var temp = drugNames[j].toUpperCase();
//From the drug names, extract only the names
//and exclude the words in the paranthesis
//Ex : dr:D07380 Letosteine (INN); Viscotiol (TN)
//we will extract only the words LETOSTEINE
//and VISCOTIOL and then map these to the drug code dr:D07380
//we do not consider (INN) and (TN) which are part of the
//drug names. This is because in an article we may not
//find the terms such as the ones in the paranthesis
var index = temp.lastIndexOf("(");
if(index > 0){
temp = temp.substring(0,index);
}
//Trim any extra whitespace characters and get the drug name
var actDrugName = $.trim(temp);
//Store the drug code with the drug name as the key to it
drugReference[actDrugName] = drugCode;
//If the drug name is found in the article content
//then add it to the list of terms to be linked
if(jQuery.inArray(actDrugName,ignoredDrugNames) > -1){
continue;
} else if(jQuery.inArray(actDrugName,terms) == -1
&& articleContent.indexOf(actDrugName) > -1){
//Following code is to consider the term
//only if it matches as a whole word
var drugNameRegExp = "\\b(" + actDrugName + ")\\b";
if(articleContent.search(drugNameRegExp) > -1){
terms.push(actDrugName);
}
}
}
}
//other required parameters to be used while linking
var categories = ["all"];
var frequency = "every";
var occurrence = 1;
// Link the drug names that have been added to the terms array
gadgets.sciverse.linkText(terms,categories,frequency,occurrence,'linkTextCallback',linkTextCallback);
//Following code is used to show the drugs that are present in the article
//in the drug finder window
if(terms.length > 0){
var message="Following drugs were found in the article :";
var divContent = "
" + message +"
";
for(var i = 0; i < terms.length; i++){
divContent = divContent+"- "+terms[i]+"
";
}
divContent=divContent + "
";
document.getElementById("listterms").innerHTML=divContent;
}
//The drug find action has completed
drugFindCompleted();
}
// The linkText callback function.
function linkTextCallback(term, posx, posy){
openDrugSpecs(term);
}
//This method is used to open a new window
//with specifications of the drug on which
//the user clicked
function openDrugSpecs(term){
var drugName = term.toUpperCase();
//Get the drug code for the drug that has been selected
var drugCode = drugReference[drugName]
//Open window with the specifications for the drug that is selected
var drugSpecsUrl = drugSpecsUrlPrefix + drugCode;
window.open(drugSpecsUrl,'DrugSpecifications','fullscreen=1,resizable=1,scrollbars=1');
}
//Resize the gadget on load
gadgets.util.registerOnLoadHandler(function() {gadgets.window.adjustHeight();});
</script>
Find Drug Names from the current article.
]]>
</Content>
</Module>