Is it possible to make a bunch of smaller chunks of a level then piece them together at run time?

The method that I would like to do most would be to have a bunch of basic rooms and hallways that have doors. I want it to pick one of the available doors, choose a correspond room or hallway, check if there is enough room, then place that room or hallway in that location.

I’ll then decide how many of each type of room or hall I want to appear ect.

And that’s really it. So all I do as a level designer is build interesting rooms and hallways with doors on them and have the game string them together in a logical way. With that said each of these areas need to have a lot of objects, static meshes spawn points ect. Its for a first person shooter template I am working on so the levels should expect to be pretty detailed with static light maps and everything.

So which method would be the most effective for this scenario? Will streaming allow me to grab maps and then place them where I want them to be ect?