Hallo,
Für unser Projekt erhalten NutzerInnen einen individuellen Code, der mit urnDraw() aus einer Urne gezogen wird. Dieser wird dann anschließend mit panelUpdate('custom2', $code) im Panel gespeichert. Leider habe ich feststellen müssen, dass teilweise die Codes, die im Panel gespeichert waren, nicht in der Urne als gezogen vermerkt wurden, während zugleich Codes aus der Urne gezogen wurden, die nicht im Panel gespeichert waren.
Mir ist nicht klar, woran dies liegen könnte. Könnten Sie mir da weiterhelfen?
Anmerkung: In Bezug auf Ihren Kommentar hier noch eine ausführlichere Darstellung:
In unserer Studie gibt es zwei subgroups (PAS und GAS), die je nach Gruppenzuteilung Codes aus zwei verschiedenen Urnen (gas und pas) erhalten.
Zugleich werden diese auch randomisiert über zwei weitere Urnen (grpgas und grppas). Dies erfolgt über den folgenden Code:
option('nextbutton', 'Randomisierung');
$serial = caseSerial(); // Seriennummer auslesen
$info = panelData();
$disease = $info['subgroup'];
// Gruppenzuordnung: Wartegruppe oder Interventionsgruppe
if(panelData()['subgroup'] == 'GAS') {
urnDraw("grpgas",'RN04',"now");}
else {
urnDraw("grppas",'RN04',"now");}
$random = value('RN04_01');
if ($random == 1) $group = 1;
if ($random == 2) $group = 2;
panelUpdate('custom1', $group);
//Code aus der jeweiligen Urne ziehen:
if(panelData()['subgroup'] == 'GAS') {urnDraw("gas", "RN03");}
if(panelData()['subgroup'] == 'PAS') {urnDraw("pas", "RN03");}
$code = value("RN03_01");
panelUpdate('custom2', $code); //Code in das Panel eintragen
//Mail für Intervention
if ($random == 1){
mailSchedule(false, 28 , 0, ['%custom1%' => $code]);}
//Mails für Wartekontroll: Wartemail + Einladung // Rauslöschen und Link
if ($random == 2){
mailSchedule(false, 13,0);}
mailSchedule(false,22,8467200);
Leider ergibt sich dabei folgendes Problem: Wenn ich im Panel nachschaue, finden sich die folgenden beiden Probleme (siehe Bild im Anhang):
1. Aus der pas-Urne wird zwar gezogen, diese wird aber nicht geleert, dh. die Codes werden bei den NutzerInnen im Panel gespeichert, aber nicht in der Urne als gezogen vermerkt (eigentlich müssten drei Codes daraus gezogen sein - diese stehen auch im Panel).
2. Alle NutzerInnen werden unabhängig ihrer Subgroup nur anhand der grpgas-Urne randomisiert und nicht je nach subgroup aus der grpgas oder der grppas-Urne.
3. An anderer Stelle werden je nach Subgroup zwei verschiedene Links ausgegeben - auch da gab es Schwierigkeiten, den richtigen zur Gruppe passenden Link abzurufen über das Panel:
if (panelData()['subgroup']=='GAS') buttonToPage('GAS', 'Start', '%link01%', 'likelink');
if (panelData()['subgroup']=='PAS') buttonToPage('PS', 'Start', '%link01%', 'likelink');
Ich habe den Eindruck, dass es Probleme gibt, die Subgroup aus dem Panel auszulesen - ich hatte diese mal in einer Variable zwischengespeichert aber der eingespeicherte Wert war manchmal nicht korrekt. Ich komme aber nicht dahinter, wo genau die Schwierigkeit dabei liegt. Können Sie da vielleicht weiterhelfen?
EDIT:
Die Vermutung, dass es Probleme beim Panel-Abruf gibt, hat sich erhärtet. Wenn ich den folgenden Code ausführe, ergibt sich beim Panel-Abruf folgende Konsequenz (Im Panel ist GAS eingetragen):
option('nextbutton', 'Randomisierung');
$serial = caseSerial(); // Seriennummer auslesen
$info = panelData();
$disease = $info['subgroup'];
html('Folgende Subgroup:<br>');
html(panelData()['subgroup']);
html('<br>Folgende Urne zur Randomisierung:<br>');
// Gruppenzuordnung: Wartegruppe oder Interventionsgruppe
if(panelData()['subgroup'] = 'GAS') {
urnDraw("grpgas",'RN04',"now");
html('grpgas-Urne (GAS):<br>');
}
if(panelData()['subgroup'] = 'PAS') {
urnDraw("grppas",'RN04',"now");
html('grppas-Urne (Panik):<br>');
}
$random = value('RN04_01');
if ($random == 1) $group = 1;
if ($random == 2) $group = 2;
panelUpdate('custom1', $group);
html('<br>Folgende Urne zum Code Ziehen:<br>');
if(panelData()['subgroup'] = "GAS") {urnDraw("gas", "RN03", "now");
$code = value("RN03_01");
html('GAS-Urne (GAS):<br>');
$link = 'https://checkout.selfapy.com/?partner=unigiessen_gas&course=gas_study&package=basicense_code=CODE';}
if(panelData()['subgroup'] = "PAS") {urnDraw("pas", "RN03", "now");
$code = value("RN03_01");
html('PAS-Urne (Panik):<br>');
$link = 'https://checkout.selfapy.com/?partner=unigiessen_panic&course=panic_study&package=basicense_code=CODE';}
panelUpdate('custom2', $code);
html('<br>Folgender Code:<br>');
html($code);
html('<br>');
//Mail für Intervention
if ($random == 1){
mailSchedule(false, 28 , 0, ['%custom1%' => $code]);
html('Zuteilung Intervention');}
//Mails für Wartekontroll: Wartemail + Einladung // Rauslöschen und Link
if ($random == 2){
mailSchedule(false, 13,0);
html('Zuteilung Wartekontrollgruppe');
}
mailSchedule(false,22,8467200);
Ich verstehe nicht, warum jeweils BEIDE IF-Verzweigungen durchgeführt werden, obwohl im Panel GAS steht und nicht PAS. Das Panel ist soweit ich sehe auf Personenbezogen gesetzt, wobei ich nicht ausschließen kann, dass möglicherweise pseudonym auch gesetzt war. Ich habe leider nicht gefunden, wie ich das genau nachprüfen kann.