Widget:PillIdentifier: Difference between revisions

Jump to navigation Jump to search
No edit summary
No edit summary
 
(49 intermediate revisions by the same user not shown)
Line 1: Line 1:
<includeonly>
<includeonly>


<script content-type= "application/javascript" src="http://www.wikidoc.org/includes/raty/md5.js"></script>
<script content-type= "application/javascript" src="http://www.wikidoc.org/extensions/raty/md5.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
Line 19: Line 19:
}
}
})();
})();
$("#firstHeading").remove();
$("#searchbox").remove();
$('#submit').click(runQuery);
$('#submit').click(runQuery);
$('.navTool').click(nav);
$('.navTool').click(nav);
        $("#reset").click(resetForm);
$(".pillShapeOption").click(function(){
$(".pillShapeOption").children("img").css("border","");
$(this).children("img:first").css("border","thin solid black");
$(this).children("img:first").css("border-radius","10%");
});
$(".pillColorOption").click(function(){
$(".pillColorOption").children("img").css("border","");
$(this).children("img:first").css("border","thin solid black");
$(this).children("img:first").css("border-radius","10%");
});
$(".pillScoreOption").click(function(){
$(".pillScoreOption").children("img").css("border","");
$(this).children("img:first").css("border","thin solid black");
$(this).children("img:first").css("border-radius","10%");
});
$("#slider").slider({
$("#slider").slider({
min: 0,
min: 0,
Line 63: Line 82:
$('.pillColorOption').click(updateFormClick);
$('.pillColorOption').click(updateFormClick);
$('.pillScoreOption').click(updateFormClick);
$('.pillScoreOption').click(updateFormClick);
$('.pillMiscContainer').change(updateFormText);
$('.pillMiscContainer').change(updateFormText);
};
};
 
function resetForm(){
$('.pillShapeOption').children("img").css("border","");
$('.pillColorOption').children("img").css("border","");
$('.pillScoreOption').children("img").css("border","");
 
$("#selectedShape").val("");
$("#selectedColor").val("");
$("#selectedScoring").val("");
$("#selectedImprint").val("");
$("#selectedNDC").val("");
$("#selectedIngred").val("");
 
$(".propertyContainerActive").attr("class", "propertyContainerInactive");
$("#queryContainer_Shape").attr("class", "propertyContainerActive");
 
$("#back").css("visibility","hidden");
$('#resultsTable-container').html('');
    };
 
function buildQueryParameters(){
function buildQueryParameters(){
var queryShape = "";
var queryShape = "";
Line 118: Line 155:
return queryShape+queryColor+queryScoring+queryImprint+queryMinSize+queryMaxSize+queryNDC+queryIngred;
return queryShape+queryColor+queryScoring+queryImprint+queryMinSize+queryMaxSize+queryNDC+queryIngred;
};
};
function runQuery() {
function runQuery() {
$('#resultsTable-body tr').remove();
$('#resultsTable-container').html('');
var queryParameters = buildQueryParameters();
var queryParameters = buildQueryParameters();
var printoutRequests = "|?Pill%20Imprint|?Pill%20Dosage|?Pill%20Ingred|?Pill%20Color|?Pill%20Shape|?Pill%20Size%20(mm)|?Pill%20Scoring|?NDC|?Pill%20Name";
var printoutRequests = "|?Pill%20Imprint|?Pill%20Dosage|?Pill%20Ingred|?Pill%20Color|?Pill%20Shape|?Pill%20Size%20(mm)|?Pill%20Scoring|?NDC|?Pill%20Name";
var jsonURL = "http://www.wikidoc.org/api.php?action=ask&query="+queryParameters+printoutRequests+"&format=json";
var jsonURL = "http://www.wikidoc.org/api.php?action=ask&query="+queryParameters+printoutRequests+"&format=json";
$.getJSON(jsonURL, function (data) {
$.getJSON(jsonURL, function (data) {
$.each(data.query.results, function(ind, val) {
if(countProperties(data.query.results) > 0){
/////////////////////////////////////////////////////////////////////////
$.each(data.query.results, function(ind, val) {
//////                  Store each returned result                //////
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//////                  Store each returned result                //////
//
/////////////////////////////////////////////////////////////////////////
//If the .getJSON() function is able to successfully receive information
//
//from the WikiDoc API, it will begin to execute the unnamed function we
//If the .getJSON() function is able to successfully receive information
//have provided.  The data that is returned is in JSON format, meaning  
//from the WikiDoc API, it will begin to execute the unnamed function we
//that we will have lots of objects within objects.  Our function says  
//have provided.  The data that is returned is in JSON format, meaning  
//that for EACH property of data.query.results (that is, each returned  
//that we will have lots of objects within objects.  Our function says  
//result from the query) we should perform the following operations.
//that for EACH property of data.query.results (that is, each returned  
//
//result from the query) we should perform the following operations.
//We will first store all the results as local variables. Some of these
//
//results will need to be converted to a string, so don't be alarmed if  
//We will first store all the results as local variables. Some of these
//you see some string() methods. After storing our variables,we
//results will need to be converted to a string, so don't be alarmed if  
//construct a hyperlink and image URL.  Lastly, we add a row to the  
//you see some string() methods. After storing our variables,we
//our results table.
//construct a hyperlink and image URL.  Lastly, we add a row to the  
//
//our results table.
//The EACH loop will run through all of the described steps before
//
//starting with the next returned result.  Doing this will build a table
//The EACH loop will run through all of the described steps before
//of our results, row by row.
//starting with the next returned result.  Doing this will build a table
//of our results, row by row.
drugNameFull = val.fulltext;
drugNameShort = drugNameFull.split("#")[0];
drugNameFull = val.fulltext;
pillImprint = val.printouts["Pill Imprint"];
drugNameShort = drugNameFull.split("#")[0];
pillDosage = val.printouts["Pill Dosage"];
pillImprint = val.printouts["Pill Imprint"];
pillIngred = val.printouts["Pill Ingred"];
pillDosage = val.printouts["Pill Dosage"];
pillColor = val.printouts["Pill Color"];
pillIngred = val.printouts["Pill Ingred"];
pillShape = val.printouts["Pill Shape"];
pillColor = val.printouts["Pill Color"];
pillSize = val.printouts["Pill Size (mm)"];
pillShape = val.printouts["Pill Shape"];
pillScoring = val.printouts["Pill Scoring"];
pillSize = val.printouts["Pill Size (mm)"];
ndc = val.printouts["NDC"];
pillScoring = val.printouts["Pill Scoring"];
pillName = String(val.printouts["Pill Name"][0]).split(' ').join('_');
ndc = val.printouts["NDC"];
/////////////////////////////////////////////////////////////////////////
pillName = String(val.printouts["Pill Name"][0]).split(' ').join('_');
//////                  Generate the URL to the image.            //////
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//////                  Generate the URL to the image.            //////
//
/////////////////////////////////////////////////////////////////////////
//When a picture is uploaded, the server will place the file in a   
//
//directory. This directory is based upon the MD5 hashed name of file. A
//When a picture is uploaded, the server will place the file in a   
//file named "Example.jpg" will have an MD5 hashed name of:
//directory. This directory is based upon the MD5 hashed name of file. A
// "a91fe217e45a700fc2dab0cc476f01c7."   
//file named "Example.jpg" will have an MD5 hashed name of:
//The file would then be located at the following URl:
// "a91fe217e45a700fc2dab0cc476f01c7."   
// "http://static.wikidoc.org/a/a9/Example.jpg"
//The file would then be located at the following URl:
//To generate the URL, we use the MD5 method provided in the CryptoJS lib
// "http://static.wikidoc.org/a/a9/Example.jpg"
//This means http://www.wikidoc.org/includes/raty/md5.js must be loaded
//To generate the URL, we use the MD5 method provided in the CryptoJS lib
//First we create the MD5 hash of the pill name
//This means http://www.wikidoc.org/includes/raty/md5.js must be loaded
md5 = String(CryptoJS.MD5(pillName));
//First we create the MD5 hash of the pill name
//Next we build the directory name using the first two characters  
md5 = String(CryptoJS.MD5(pillName));
imageDirect = 'http://static.wikidoc.org/' + md5.charAt(0) + '/' + md5.substring(0,2) + '/' + pillName
//Next we build the directory name using the first two characters  
imageDirect = 'http://static.wikidoc.org/' + md5.charAt(0) + '/' + md5.substring(0,2) + '/' + pillName;
/////////////////////////////////////////////////////////////////////////
//////                Create the Drug Name Hyperlink              //////
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//////                Create the Drug Name Hyperlink              //////
//Turn the spaces into underscores
/////////////////////////////////////////////////////////////////////////
linkName = String(drugNameShort).split(' ').join('_')
//Turn the spaces into underscores
//String together appropiate text to create the link
linkName = String(drugNameShort).split(' ').join('_');
drugNameLink = '<a href="http://www.wikidoc.org/index.php/'+linkName+'">'+drugNameShort+'</a>'
//String together appropiate text to create the link
drugNameLink = 'http://www.wikidoc.org/index.php/'+linkName;
/////////////////////////////////////////////////////////////////////////
//////  Add each iteration of query  results to the Results Table  //////
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//////  Add each iteration of query  results to the Results Table  //////
//
/////////////////////////////////////////////////////////////////////////
//Adding the results parameters works in the following way.
//
//  The location of a specific table within the document is assigned to
//Adding the results parameters works in the following way.
//  the variable "table"
//  The location of a specific table within the document is assigned to
//  
//  the variable "table"
//  A row is added the to table at the index location (ind being the
//  
//  index of the .each() loop.   
//  A row is added the to table at the index location (ind being the
//
//  index of the .each() loop.   
//  Cells are then added to each row with a named corresponding to the
//
//  column header.  For example, Drug Name is the header of the first
var pillContainer ='<div class="pillResult">' +
//  column, so the cell in the 0 index (the first cell of the row) will
'<a href="'+drugNameLink+'">' +
//  have a variable name of cellDrugName
'<img src="'+imageDirect+'" alt"'+drugNameShort+'">' +
//
'</a>' +
//  The cells are then populated with
' <div class="pillResult-text">' +
//Find a <table> element with id="resultsTable-body":
'<h1><a href="'+drugNameLink+'">'+drugNameShort+'</a></h1>' +
table = document.getElementById("resultsTable-body");
'<h2>'+pillDosage+' (' + pillImprint + ')</h2>' +
'<p>'+pillShape+', '+pillColor+', '+pillSize+' mm, Scored ' + pillScoring +', NDC: '+ndc+'</p>'+
//Create an empty <tr> element and add it to the 1st position of the table:
'<p>'+pillIngred+'</p>' +
row = table.insertRow(ind);
'</div>' +
'</div>';
//Insert new cells(<td> elements) into the "new" <tr> element:
cellDrugName = row.insertCell(0);
//Add Values to the cells:
cellPillImprint = row.insertCell(1);
$("#resultsTable-container").append(pillContainer);
cellPillDosage = row.insertCell(2);
});
cellPillIngred = row.insertCell(3);
} else {
cellPillColor = row.insertCell(4);
$("#resultsTable-container").append('<div style="margin:auto"><span style="font-size:36px;">No Results Found. Please Check Back Later.</span></div>');
cellPillShape = row.insertCell(5);
}
cellPillSize = row.insertCell(6);
cellPillSocring = row.insertCell(7);
cellNDC = row.insertCell(8);
cellPillName = row.insertCell(9);
//Add Values to the cells:
cellDrugName.innerHTML = drugNameLink;
cellPillImprint.innerHTML = pillImprint;
cellPillDosage.innerHTML = pillDosage;
cellPillIngred.innerHTML = pillIngred;
cellPillColor.innerHTML = pillColor;
cellPillShape.innerHTML = pillShape;
cellPillSize.innerHTML = pillSize;
cellPillSocring.innerHTML = pillScoring;
cellNDC.innerHTML = ndc;
cellPillName.innerHTML = '<img class="pillImages" src="' + imageDirect + '" />';
});
});
});
$('#resultsTable-container').css("visibility", "visible");
$('#resultsTable-container').css("visibility", "visible");
};
 
}
function updatePillSizeImages() {
function updatePillSizeImages() {
Line 292: Line 314:
$("#"+selectedProperty).val(selectedValue);
$("#"+selectedProperty).val(selectedValue);
}
}
function nav(){
function nav(){
Line 319: Line 340:
var newActiveDiv = positionArr[position][dirIndex];
var newActiveDiv = positionArr[position][dirIndex];
console.log(newActiveDiv);
$(".propertyContainerActive").attr("class", "propertyContainerInactive");
$(".propertyContainerActive").attr("class", "propertyContainerInactive");
$(newActiveDiv).attr("class", "propertyContainerActive");
$(newActiveDiv).attr("class", "propertyContainerActive");
Line 326: Line 345:
var nextPosition = $(newActiveDiv).data()["order"];
var nextPosition = $(newActiveDiv).data()["order"];
console.log(nextPosition);
console.log(positionArr[nextPosition][0]);
console.log(positionArr[nextPosition][1]);
if (positionArr[nextPosition][0] == ""){
if (positionArr[nextPosition][0] == ""){
$("#back").css("visibility","hidden");
$("#back").css("visibility","hidden");
Line 346: Line 361:
}
}
};
};
function countProperties (obj) {
    var count = 0;
    for (var property in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, property)) {
            count++;
      }
    }
    return count;
}
</script>
</script>
<style type="text/css">
<style type="text/css">
Line 406: Line 433:
width: 100px;
width: 100px;
margin: 50px;
margin: 50px;
cursor:pointer;
}
}
.pillColorOption {
.pillColorOption {
Line 412: Line 440:
width: 100px;
width: 100px;
margin: 50px;
margin: 50px;
cursor:pointer;
}
}
.pillScoreOption {
.pillScoreOption {
Line 418: Line 447:
width: 100px;
width: 100px;
margin: 50px;
margin: 50px;
cursor:pointer;
}
}
Line 488: Line 518:
}
}
.check{
#pillIDNav div{
z-index:2;
display:inline-block;
cursor:pointer;
}
 
#formConatiner div{
display:inline-block;
padding:5px;
}
#formContainer{
background:#6e6e6e;
    width: 60%;
    margin: auto;
    margin-top: 15px;
    padding: 15px;
    border-radius: 20px;
    color:white;
}
 
    #formContainer h2{
    margin-top: 0;
    color: white;
    text-shadow: 1px 1px 1px #000;
    }
 
.pillResult{
display:table-row;
}
 
.pillResult img{
width:150px;
height:auto;
display:table-cell;
vertical-align: middle;
border-radius:50%;
margin:10px;
}
.pillResult-text{
display:table-cell;
vertical-align:top;
padding-left:5px;
}
.pillResult-text h1{
margin:0px;
font-size:24px;
}
.pillResult-text h2{
margin:0px;
font-size:18px;
}
.pillResult-text p{
margin:0px;
font-size:16px;
}
}
</style>
</style>


Line 497: Line 584:
<div id="pillIdentiferTitle">
<div id="pillIdentiferTitle">
     <span>Pill Identifier</span>
     <span>Pill Identifier</span>
    </div>
</div>
        <div id="formContainer">
            <h2>Selected Properties</h2>
            <form id="selectedProperties" action="" method="get">
            <div id="selectedShape-container" class="ui-button">
                <span>Shape:</span><input readonly type="text" name="selectedShape" id="selectedShape" size="10" value="">
            </div>
            <div id="selectedColor-container" class="ui-button">
                <span>Color:</span><input readonly type="text" name="selectedColor" id="selectedColor" size="10" value="">
            </div>
            <div id="selectedScoring-container" class="ui-button">
                <span>Scoring:</span><input readonly type="text" name="selectedScoring" id="selectedScoring" size="5" value="">
            </div>         
            <div class="ui-button" id="selectedMinSize-container">
                <span>Size:</span><input readonly type="text" name="selectedMinSize" size="3" id="selectedMinSize" value="5"><span>&nbsp;to&nbsp;</span><input readonly type="text" name="selectedMaxSize" size="3" id="selectedMaxSize" value="20">
            </div><br> 
            <div class="ui-button" id="selectedImprint-container">
                <span>Imprint:</span><input readonly type="text" name="selectedImprint" id="selectedImprint" value="">
            </div>
            <div class="ui-button" id="selectedNDC-container">
                <span>NDC:</span><input readonly type="text" name="selectedNDC" id="selectedNDC" value="">
            </div>
            <div class="ui-button" id="selectedIngred-container">
                <span>Ingredients:</span><input readonly type="text" name="selectedIngred" id="selectedIngred" value="">
            </div>
            </form>
        </div>
     <div id="queryContainer">
     <div id="queryContainer">
         <div id="queryContainer_Shape" class="propertyContainerActive" data-order="1">
         <div id="queryContainer_Shape" class="propertyContainerActive" data-order="1">
Line 610: Line 723:
</div>
</div>
     </div>
     </div>
    <div id="formContainer">
 
    <form id="selectedProperties" action="" method="get">
        <input type="hidden" name="selectedShape" id="selectedShape" value="">
            <input type="hidden" name="selectedColor" id="selectedColor" value="">
            <input type="hidden" name="selectedScoring" id="selectedScoring" value="">
            <input type="hidden" name="selectedMinSize" id="selectedMinSize" value="5">
            <input type="hidden" name="selectedMaxSize" id="selectedMaxSize" value="20">
            <input type="hidden" name="selectedImprint" id="selectedImprint" value="">
            <input type="hidden" name="selectedNDC" id="selectedNDC" value="">
            <input type="hidden" name="selectedIngred" id="selectedIngred" value="">
        </form>
    </div>
     <div id="pillIDNav">
     <div id="pillIDNav">
    <div id="reset">
        <img src="http://static.wikidoc.org/a/a9/Pid_resetbutton.png" alt="reset">
    </div>
     <div id="back" class="navTool" data-direction="back" style="visibility:hidden">
     <div id="back" class="navTool" data-direction="back" style="visibility:hidden">
         <img src="http://static.wikidoc.org/8/83/Pid_backbutton.png" alt="back">
         <img src="http://static.wikidoc.org/8/83/Pid_backbutton.png" alt="back">
Line 635: Line 740:
</div>
</div>
<div id="resultsTable-container" style="visibility:collapse;">
<div id="resultsTable-container" style="visibility:collapse;">
    <table id="resultsTable" class="resultsTable-class">
        <thead>
            <th>
            Drug Name
            </th>
           
            <th>
            Pill Imprint
            </th>
           
            <th style="width:60px;">
            Dosage
            </th>
           
            <th>
            Ingredients
            </th>
           
            <th style="width:60px;">
            Pill Color
            </th>
           
            <th style="width:60px;">
            Pill Shape
            </th>
           
            <th>
            Pill Size (mm)
            </th>
           
            <th style="width:60px;">
            Score
            </th>
           
            <th>
            NDC
            </th>
           
            <th style="width:360px;">
            Pill Image
            </th>
        </thead>
       
        <tbody id="resultsTable-body">
       
        </tbody>
</table>
</div>
</div>


</includeonly>
</includeonly>

Latest revision as of 02:37, 3 August 2015