IF you only have one program per stage then you can in theory query back the previous stage and the request of the program within it, however it's not ideal because you don't know for sure what the previous stage was - i.e. the stage links of your concurrent set can be set up (and changed) in any way. To get it 100% accurate you have to start looking at the set definition and it becomes very complicated. What if someone sets the starting stage to be the second stage in your set (i.e. the first stage will never run). That's a pretty common thing to do when a set fails several stages in and the previous stages are not re-runnable.
I would first recommend trying an alternative solution to what you're looking to do, failing that I would look at storing the request ID in your first stage somewhere (custom table etc) and then reading that back in the second stage program.