Example #1
0
function evidence_get_latest_edit($variant_id, $article_pmid, $genome_id, $disease_id, $create_flag = false, $defaults = false)
{
    if (!$variant_id) {
        return null;
    }
    $edit_id = theDb()->getOne("SELECT MAX(edit_id) FROM edits\n\tWHERE variant_id=? AND article_pmid=? AND genome_id=? AND disease_id=?\n\tAND (is_draft=0 OR edit_oid=?)", array($variant_id, $article_pmid, $genome_id, $disease_id, getCurrentUser("oid")));
    if ($edit_id && theDb()->getOne("SELECT is_delete FROM edits WHERE edit_id=?", array($edit_id))) {
        $edit_id = FALSE;
    }
    if (!$edit_id && $create_flag) {
        $sql = "INSERT INTO edits\n\tSET edit_timestamp=NOW(), edit_oid=?, is_draft=1,\n\tvariant_id=?, article_pmid=?, genome_id=?, disease_id=?";
        $params = array(getCurrentUser("oid"), $variant_id, $article_pmid, $genome_id, $disease_id);
        if (is_array($defaults)) {
            foreach ($defaults as $col => $value) {
                $sql .= ", {$col}=?";
                $params[] = $value;
            }
        }
        theDb()->query($sql, $params);
        $edit_id = theDb()->getOne("SELECT LAST_INSERT_ID()");
        evidence_submit($edit_id);
    }
    return $edit_id + 0;
}
Example #2
0
    } else {
        if (eregi('([a-z0-9]+):([a-z]+)([0-9]+)([a-z]+)', $gene_aa, $r)) {
            $gene_aa = "{$r['1']} {$r['2']}{$r['3']}{$r['4']}";
        }
    }
    $variant_id = evidence_get_variant_id($gene_aa, false, false, false, true);
    if (!$variant_id && $row["rsid"]) {
        $variant_id = evidence_get_variant_id("rs" . $row["rsid"], false, false, false, true);
    }
    $edit_id = evidence_get_latest_edit($variant_id, 0, 0, 0, true, array("variant_impact" => "pharmacogenetic"));
    $latestrow = evidence_get_edit($edit_id);
    if (in_array($latestrow["variant_impact"], array("not reviewed", "none", "unknown"))) {
        $newrow = evidence_generate_edit(null, null, $latestrow);
        $newrow["variant_impact"] = "pharmacogenetic";
        $new_edit_id = evidence_save_draft(null, $newrow);
        evidence_submit($new_edit_id);
        ++$n_marked_pharma;
    }
    if (ereg('^[0-9]+$', $row["pmid"])) {
        evidence_get_latest_edit($variant_id, $row["pmid"], 0, 0, true);
    }
    $did[$variant_name] = $variant_id;
    theDb()->query("UPDATE pharmgkb SET variant_id=? WHERE pharmgkb_id=?", array($variant_id, $row["pharmgkb_id"]));
    ++$n;
    if ($n % 100 == 0) {
        print "{$n}...";
    }
}
print "{$n} ({$n_marked_pharma} existing variants changed to pharmacogenetic)\n";
print "Updating variant_external...";
theDb()->query("LOCK TABLES variant_external WRITE");
Example #3
0
                    if ($field_id == "variant_impact" && $newvalue != "unknown" && $newvalue != "none") {
                        $scores = "";
                        foreach ($oddsratio_arrays as $k => $v) {
                            if (ereg("__f_variant_quality__", $k)) {
                                $scores = $cooked[$k];
                                break;
                            }
                        }
                        $preview = evidence_qualify_impact($scores, $newvalue);
                    }
                    $preview = $gTheTextile->textileRestricted($preview);
                    $response["saved__{$clients_previous_edit_id}__{$field_id}"] = $newvalue;
                    $response["preview_" . ereg_replace("^edited_", "", $param)] = $preview;
                }
            }
        }
    } else {
        $response["errors"][] = $q->getMessage();
    }
    if ($_POST["submit_flag"]) {
        $edits_to_submit[$edit_id] = 1;
    }
}
if (!$response["errors"]) {
    foreach ($edits_to_submit as $edit_id => $x) {
        evidence_submit($edit_id);
        $response["please_reload"] = true;
    }
}
header("Content-type: application/json");
print json_encode($response);
Example #4
0
include "lib/openid.php";
evidence_create_tables();
openid_create_tables();
if ($_REQUEST["test-insert"]) {
    if (!getCurrentUser("is_admin")) {
        die("yours is not an admin account.");
    }
    header("Content-type: text/plain");
    $variant_id = evidence_get_variant_id("NPHP4", 848, "Arg", "Trp", true);
    $e = evidence_edit_id_generate(null, $variant_id);
    evidence_save_draft($e, array("variant_impact" => "unknown", "variant_dominance" => "unknown", "summary_short" => "This variant has been found together with R682X as a compound heterozygote in three nephronophthisis and retinitis pigmentosa, (Senior-Loken syndrome) patients from one family."));
    print "after evidence_save_draft\n";
    print_r(theDb()->getRow("SELECT * FROM edits WHERE edit_id=?", array($e)));
    evidence_submit($e);
    print "after evidence_submit\n";
    print_r(evidence_get_report("latest", $variant_id));
    evidence_signoff($e);
    $a = evidence_edit_id_generate(null, $variant_id);
    evidence_save_draft($a, array("article_pmid" => 12205563, "summary_short" => "Otto, E. et al. A gene mutated in nephronophthisis and retinitis pigmentosa encodes a novel protein, nephroretinin, conserved in evolution. Am J Hum Genet 71, 1161-1167, doi:S0002-9297(07)60408-X [pii]"));
    evidence_submit($a);
    evidence_signoff($a);
    $a = evidence_edit_id_generate(null, $variant_id);
    evidence_save_draft($a, array("article_pmid" => 9734597, "summary_short" => "Lemmink, H. H. et al. Novel mutations in the thiazide-sensitive NaCl cotransporter gene in patients with Gitelman syndrome with predominant localization to the C-terminal domain. Kidney Int 54, 720-730, doi:10.1046/j.1523-1755.1998.00070.x (1998)."));
    evidence_submit($a);
    print "release:\n";
    print_r(evidence_get_report("release", $variant_id));
    print "latest:\n";
    print_r(evidence_get_report("latest", $variant_id));
} else {
    header("Location: /");
}
Example #5
0
<?php

include "lib/setup.php";
$response = array();
if (!getCurrentUser()) {
    $response["errors"][] = "Not logged in";
} else {
    if ($item_id = evidence_get_latest_edit($_POST[v], $_POST[a], $_POST[g], $_POST[d])) {
        $q = theDb()->query("INSERT INTO edits SET\n\t\t\tedit_oid=?, edit_timestamp=NOW(),\n\t\t\tis_draft=1, is_delete=1,\n\t\t\tprevious_edit_id=?,\n\t\t\tvariant_id=?,\n\t\t\tarticle_pmid=?, genome_id=?, disease_id=?", array(getCurrentUser("oid"), $item_id, $_POST[v], $_POST[a], $_POST[g], $_POST[d]));
        if (theDb()->isError($q)) {
            $response["errors"][] = $q->getMessage();
        } else {
            if ($delete_id = theDb()->getOne("SELECT LAST_INSERT_ID()")) {
                evidence_submit($delete_id);
                $response["deleted"] = true;
                if ($_POST[v] && ($_POST[a] || $_POST[g]) && !$_POST[d]) {
                    // Delete per-disease entries for an article/genome entry
                    // TODO: evidence_submit() should take care of this
                    // TODO: snap_release will need special handling for this case too
                    theDb()->query("DELETE FROM snap_latest WHERE variant_id=? AND article_pmid=? AND genome_id=?", array($_POST[v], $_POST[a], $_POST[g]));
                }
            }
        }
    } else {
        $response["errors"][] = "Nothing to delete";
    }
}
header("Content-type: application/json");
print json_encode($response);
?>