2
0
mirror of https://github.com/ACSPRI/queXS synced 2024-04-02 12:12:16 +00:00

New tables created for complex quotas

Conversion of code to handle new schema begun
This commit is contained in:
Adam Zammit
2014-01-28 14:58:05 +11:00
parent 73d1256d4f
commit 892525d80f
6 changed files with 130 additions and 37 deletions

View File

@@ -158,6 +158,22 @@ if (isset($_POST['questionnaire_id']) && isset($_POST['submit']))
$db->Execute($sql);
$sql = "DELETE FROM qsqr_question
WHERE questionnaire_sample_quota_row_id IN (
SELECT questionnaire_sample_quota_row_id
FROM questionnaire_sample_quota_row
WHERE questionnaire_id = $questionnaire_id)";
$db->Execute($sql);
$sql = "DELETE FROM qsqr_sample
WHERE questionnaire_sample_quota_row_id IN (
SELECT questionnaire_sample_quota_row_id
FROM questionnaire_sample_quota_row
WHERE questionnaire_id = $questionnaire_id)";
$db->Execute($sql);
$sql = "DELETE FROM `questionnaire_sample_quota_row`
WHERE questionnaire_id = $questionnaire_id";

View File

@@ -179,11 +179,12 @@ if ($questionnaire_id)
//a. (Standard quota) Monitor outcomes of questions in completed questionnaires, and exclude selected sample records when completion limit is reached
//b. (Replicate quota) Exclude selected sample records (where lime_sgqa == -1)
$sql = "SELECT questionnaire_sample_quota_row_id,lime_sgqa,value,completions,quota_reached,lime_sid,comparison,exclude_var,exclude_val,qsq.description,current_completions, priority, autoprioritise
FROM questionnaire_sample_quota_row as qsq, questionnaire as q
$sql = "SELECT questionnaire_sample_quota_row_id,qsqr_question.lime_sgqa,value,completions,quota_reached,lime_sid,qsq.description,current_completions, priority, autoprioritise
FROM questionnaire_sample_quota_row as qsq, questionnaire as q, qsqr_question
WHERE qsq.questionnaire_id = '$questionnaire_id'
AND qsq.sample_import_id = '$sample_import_id'
AND q.questionnaire_id = '$questionnaire_id'";
AND q.questionnaire_id = '$questionnaire_id'
AND qsqr_question.questionnaire_sample_quota_row_id = qsq.questionnaire_sample_quota_row_id";
$r = $db->GetAll($sql);
@@ -210,9 +211,23 @@ if ($questionnaire_id)
//We need to calc Sample size, Sample drawn, Sample remain
$sql = "SELECT (c.sample_id is not null) as type, count(*) as count
FROM sample as s
JOIN questionnaire_sample as qs ON (qs.questionnaire_id = '$questionnaire_id' and qs.sample_import_id = s.import_id)
JOIN sample_var as sv ON (sv.sample_id = s.sample_id AND sv.var LIKE '{$v['exclude_var']}' AND sv.val LIKE '{$v['exclude_val']}')
LEFT JOIN `case` as c ON (c.questionnaire_id = qs.questionnaire_id and c.sample_id = s.sample_id)
JOIN questionnaire_sample as qs ON (qs.questionnaire_id = '$questionnaire_id' and qs.sample_import_id = s.import_id) ";
$sql2 = "SELECT exclude_val,exclude_var,comparison
FROM qsqr_sample
WHERE questionnaire_sample_quota_row_id = {$v['questionnaire_sample_quota_row_id']}";
$rev = $db->GetAll($sql2);
//reduce sample by every item in the qsqr_sample table
$x = 1;
foreach($rev as $ev)
{
$sql .= " JOIN sample_var as sv$x ON (sv$x.sample_id = s.sample_id AND sv$x.var LIKE '{$ev['exclude_var']}' AND sv$x.val {$ev['comparison']} '{$ev['exclude_val']}') ";
$x++;
}
$sql .= " LEFT JOIN `case` as c ON (c.questionnaire_id = qs.questionnaire_id and c.sample_id = s.sample_id)
WHERE s.import_id = '$sample_import_id'
GROUP BY (c.sample_id is not null)";

View File

@@ -112,12 +112,12 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sgqa']) && isset($_GET['va
if (isset($_GET['questionnaire_id']) && isset($_GET['questionnaire_sample_quota_row_id']))
{
//need to remove quota
//need to edit quota
$questionnaire_id = bigintval($_GET['questionnaire_id']);
$questionnaire_sample_quota_row_id = bigintval($_GET['questionnaire_sample_quota_row_id']);
open_row_quota($questionnaire_sample_quota_row_id);
//open_row_quota($questionnaire_sample_quota_row_id);
}
$questionnaire_id = false;
@@ -160,9 +160,9 @@ if ($questionnaire_id != false)
print "<h3>" . T_("Copied quotas") . "</h3>";
}
print "<h1>" . T_("Current row quotas (click to delete)") . "</h1>";
print "<h1>" . T_("Current row quotas (click to edit)") . "</h1>";
$sql = "SELECT questionnaire_sample_quota_row_id,lime_sgqa,value,completions,quota_reached,lime_sid,comparison,exclude_var,exclude_val,current_completions
$sql = "SELECT questionnaire_sample_quota_row_id,qsq.description
FROM questionnaire_sample_quota_row as qsq, questionnaire as q
WHERE qsq.questionnaire_id = '$questionnaire_id'
AND qsq.sample_import_id = '$sample_import_id'
@@ -177,7 +177,12 @@ if ($questionnaire_id != false)
else
{
foreach($r as $v)
{
{
print "<div><a href='?questionnaire_id=$questionnaire_id&amp;sample_import_id=$sample_import_id&amp;questionnaire_sample_quota_row_id={$v['questionnaire_sample_quota_row_id']}'>" . $v['description'] . "</a>";
}
/*
if ($v['lime_sgqa'] == -1)
print "<div><a href='?questionnaire_id=$questionnaire_id&amp;sample_import_id=$sample_import_id&amp;questionnaire_sample_quota_row_id={$v['questionnaire_sample_quota_row_id']}'>" . T_("Replicate: Where") . " " . $v['exclude_var'] . " " . T_("like") . " " . $v['exclude_val'] . "</a> - ";
else if ($v['lime_sgqa'] == -2)
@@ -197,30 +202,9 @@ if ($questionnaire_id != false)
print "</div>";
}
*/
$sql = "SELECT s.sample_import_id as value,s.description, '' AS selected
FROM sample_import as s, questionnaire_sample as q
WHERE q.questionnaire_id = $questionnaire_id
AND q.sample_import_id = s.sample_import_id
AND s.sample_import_id != '$sample_import_id'";
$ss = $db->GetAll($sql);
if (!empty($ss))
{
print "<form action='?questionnaire_id=$questionnaire_id&amp;sample_import_id=$sample_import_id' method='post'><p>" . T_("Copy quotas for this sample to (No error/duplicate checking): ");
display_chooser($ss,"copy_sample_import_id","copy_sample_import_id",false,false,false,false);
print "<input type='submit' id='submit' value=\"" . T_("Copy") . "\"/></p></form>";
print "<form action='?questionnaire_id=$questionnaire_id&amp;sample_import_id=$sample_import_id' method='post'><p>" . T_("Copy quotas for this sample to (No error/duplicate checking) with adjusting: ");
display_chooser($ss,"copy_sample_import_id_with_adjustment","copy_sample_import_id_with_adjustment",false,false,false,false);
print "<input type='submit' id='submit' value=\"" . T_("Copy adjustments") . "\"/></p></form>";
}
}
//new quota
print "<h1>" . T_("Select a question for the row quota") . "</h1>";
$sql = "SELECT lime_sid

View File

@@ -77,9 +77,23 @@ function sample_call_attempt_report($questionnaire_id = false, $sample_id = fals
$s = "JOIN sample as s ON (s.sample_id = c.sample_id AND s.import_id = '$sample_id')";
$qs = "";
if ($qsqri !== false)
$qs = "JOIN questionnaire_sample_quota_row as q ON (q.questionnaire_sample_quota_row_id = '$qsqri')
JOIN sample_var ON (sample_var.sample_id = c.sample_id AND sample_var.var LIKE q.exclude_var AND sample_var.val LIKE q.exclude_val)";
if ($qsqri !== false)
{
$sql2 = "SELECT exclude_val,exclude_var,comparison
FROM qsqr_sample
WHERE questionnaire_sample_quota_row_id = $qsqri";
$rev = $db->GetAll($sql2);
//reduce sample by every item in the qsqr_sample table
$x = 1;
foreach($rev as $ev)
{
$qs .= " JOIN sample_var as sv$x ON (sv$x.sample_id = c.sample_id AND sv$x.var LIKE '{$ev['exclude_var']}' AND sv$x.val {$ev['comparison']} '{$ev['exclude_val']}') ";
$x++;
}
}
$sql = "SELECT ca1 AS callattempts, COUNT( ca1 ) AS sample
FROM ( SELECT count( ca.call_attempt_id ) AS ca1