Most of this could be done with Dynroutes, it’s a variation on what shows in this vid for the caller survey that appears at the end Introduction to Dynamic Routes VIdeo
With what you described, dynroutes will be complex, there will be one to keep track of the number of questions asked, a dynroute to play each question and another to keep track of answers, probably need dozens of separate dynroutes for this. I think if I was doing this, it would be all done in custom dialplan.
With effort I could make this work with a combination of dynroutes and AGI, even with the random component, but the complexity goes way up with the number of different questions. If I was doing this, I would just start from scratch with either pure dialplan or an AGI.
Personally I think your situation is custom such that you will just have to learn the basic parts of AGI scripting or dialplan and build it from scratch.
The Wakeup Calls module has AGI scripts written in PHP that do some good caller interaction. You can see how to play files and accept input, so someone comfortable with PHP will probably be able to proceed from that starting point.
You could also do the entire thing in asterisk dialplan if you’re more comfortable there.