This is how ShapePopulationViewer looks:
The idea is that it defines a custom layout containing a custom widget. When entering the module, it remembers the current layout and switches to the custom one. When leaving the module, then it restores the previous layout. It’s nice because it fits into the layout logic without any hacking, and I also like module selection controlling it.
For the DICOM module, we could now have something meaningful in the module panel such as image preview, database directory selector, etc. If the user clicks the DCM button then it switches to the module as currently but the layout would be replaced by the DICOM browser custom layout. Then when the user wants to do something, they need to switch to another module, in which case they get back the viewers. We could also automatically switch to the Data module after successful loading to make the new data appear in both the data tree and the viewers.