hi C Warner,
to add to Abhilash's suggestion, you can use parameters to come up with any of those scenarios above. parameters can be used for dynamic grouping (change between room, doctor, city, etc.) and also you can add a filter for each field that you want to allow the end user to filter on. essentially you'd be creating an ad hoc report.
as a simple example, have a look at the attached report. please change the .txt extension to .rpt after extracting the zip contents. note that the report can be grouped (3 levels in this case, but you may only want 1) and also filtered using parameters.
-jamie