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