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:
33
CHANGELOG
33
CHANGELOG
@@ -1,3 +1,36 @@
|
||||
CREATE TABLE `qsqr_question` (
|
||||
`qsqr_question_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`questionnaire_sample_quota_row_id` bigint(20) NOT NULL,
|
||||
`lime_sgqa` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`value` varchar(2048) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`comparison` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`description` text COLLATE utf8_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`qsqr_question_id`),
|
||||
KEY `questionnaire_sample_quota_row_id` (`questionnaire_sample_quota_row_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
|
||||
|
||||
CREATE TABLE `qsqr_sample` (
|
||||
`qsqr_sample_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`questionnaire_sample_quota_row_id` bigint(20) NOT NULL,
|
||||
`exclude_var` char(128) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`exclude_val` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`comparison` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`description` text COLLATE utf8_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`qsqr_sample_id`),
|
||||
KEY `questionnaire_sample_quota_row_id` (`questionnaire_sample_quota_row_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
|
||||
|
||||
|
||||
INSERT INTO qsqr_question (questionnaire_sample_quota_row_id,lime_sgqa,value,comparison)
|
||||
SELECT questionnaire_sample_quota_row_id, lime_sgqa, value, comparison
|
||||
FROM questionnaire_sample_quota_row;
|
||||
|
||||
INSERT INTO qsqr_sample (questionnaire_sample_quota_row_id,exclude_var,exclude_val,comparison)
|
||||
SELECT questionnaire_sample_quota_row_id, exclude_var,exclude_val, 'LIKE'
|
||||
FROM questionnaire_sample_quota_row;
|
||||
|
||||
|
||||
|
||||
queXS 1.10.0 - Changes since 1.9.2
|
||||
|
||||
New Feature: Operators can choose extension (see: https://blueprints.launchpad.net/quexs/+spec/operatorextension)
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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)";
|
||||
|
||||
|
||||
@@ -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'
|
||||
@@ -178,6 +178,11 @@ if ($questionnaire_id != false)
|
||||
{
|
||||
foreach($r as $v)
|
||||
{
|
||||
print "<div><a href='?questionnaire_id=$questionnaire_id&sample_import_id=$sample_import_id&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&sample_import_id=$sample_import_id&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&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&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
|
||||
|
||||
@@ -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)";
|
||||
{
|
||||
$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
|
||||
|
||||
@@ -1362,8 +1362,39 @@ CREATE TABLE `process_log` (
|
||||
--
|
||||
|
||||
|
||||
-- Table structure for table `qsqr_question`
|
||||
--
|
||||
--
|
||||
|
||||
CREATE TABLE `qsqr_question` (
|
||||
`qsqr_question_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`questionnaire_sample_quota_row_id` bigint(20) NOT NULL,
|
||||
`lime_sgqa` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`value` varchar(2048) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`comparison` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`description` text COLLATE utf8_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`qsqr_question_id`),
|
||||
KEY `questionnaire_sample_quota_row_id` (`questionnaire_sample_quota_row_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `qsqr_sample`
|
||||
--
|
||||
|
||||
CREATE TABLE `qsqr_sample` (
|
||||
`qsqr_sample_id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`questionnaire_sample_quota_row_id` bigint(20) NOT NULL,
|
||||
`exclude_var` char(128) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`exclude_val` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`comparison` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`description` text COLLATE utf8_unicode_ci NOT NULL,
|
||||
PRIMARY KEY (`qsqr_sample_id`),
|
||||
KEY `questionnaire_sample_quota_row_id` (`questionnaire_sample_quota_row_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
|
||||
|
||||
|
||||
--
|
||||
-- Table structure for table `questionnaire`
|
||||
--
|
||||
|
||||
Reference in New Issue
Block a user