Millisecond Forums

Sessions Inquiry

https://forums.millisecond.com/Topic30719.aspx

By dillonk - 2/4/2021

To whom it may concern, 

I have a question regarding sessions. I understand that it enables tasks based on the session id. It was my understanding that Millisecond keeps track of session numbers, i.e. it will know that a participant is on a second session if they completed their first session. We created our experiment with a session set up for each study visit, but noticed that in piloting, it allowed one of our RAs to complete tasks even after her last (fourth) session. I'm wondering how we can make sure that the Millisecond tasks won't allow participants to complete millisecond tasks after they've completed their final session? Below is the experiment script for your reference; let me know if there is any other clarifying info I can provide. 

// session 1
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (1 of 4)
</batch>

// session 2
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (2 of 4)
</batch>

// session 3
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (3 of 4)
</batch>

// session 4
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (4 of 4)
</batch>
By Dave - 2/4/2021

dillonk - 2/4/2021
To whom it may concern, 

I have a question regarding sessions. I understand that it enables tasks based on the session id. It was my understanding that Millisecond keeps track of session numbers, i.e. it will know that a participant is on a second session if they completed their first session. We created our experiment with a session set up for each study visit, but noticed that in piloting, it allowed one of our RAs to complete tasks even after her last (fourth) session. I'm wondering how we can make sure that the Millisecond tasks won't allow participants to complete millisecond tasks after they've completed their final session? Below is the experiment script for your reference; let me know if there is any other clarifying info I can provide. 

// session 1
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (1 of 4)
</batch>

// session 2
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (2 of 4)
</batch>

// session 3
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (3 of 4)
</batch>

// session 4
<batch>
/ file = "cuedgonogo.iqx"
/ file = "emotiondotprobe.iqx"
/ sessions = (4 of 4)
</batch>

> We created our experiment with a session set up for each study visit, but noticed that in piloting, it allowed one of our RAs to complete tasks even after her last (fourth) session.

The session number the server keeps track of ticks up by one with every visit of the respective participant. Underlying the determination which session is administered is simple modulo arithmetic: session number modulo number of sessions. So:

1 modulo 4 = 1 -> Scripts for session #1
2 modulo 4 = 2 -> Scripts for session #2
3 modulo 4 = 3 -> Scripts for session #3
4 modulo 4 = 0 -> Scripts for session #4
5 modulo 4 = 1 -> Scripts for session #1
6 modulo 4 = 2 -> Scripts for session #2
and so forth.

This is the expected behavior and cannot currently be changed.

What you could do to absolutely prevent this would be to define a script.abort(true) condition in e.g. the go-nogo script that simply terminates the entire batch if a session number greater 4 is encountered. Eg.

<expt>
/ onexptbegin = [
    if (script.sessionid > 4) script.abort(true);
]
...
</expt>

By dillonk - 2/4/2021

Thank you!