The rooms would need to be pretty standardized, otherwise youd need some custom-built logic to ensure all the pieces fit together. Meaning what youre asking isnt exactly simple.
The SIMPLEST solution is finding something on the market place that does this.
The BEST solution is to custom make some logic that fits your needs.
If you really wanna go down that path though, I’ve been toying with an idea where you have buildings of standardized “grid lenghts” with the rooms following the same standardized convention. You then procedurally (meaning with great effortt on your part to ensure rooms are all accessible with a decently randomized feel [the logic i ended up with tended to make the layouts fall into a pattern]) fill out each grid section with an approriate room or room segment. One (or more) of those segments must be pre-desigbated as an entrance or exit. Some logicmust also be able to differentiate between exterior faces of segments (i.e. where you put windows).
The problems I ran into concepting this method is how to handle buldings of non-standard shapes,and automating a system that connects the different floors (basically, I havent gotten as far as concepting how to best tackle an automated stairwell/elevator system)