I think starting with the prim's algorithm is the right way to go.
I am making a few assumptions:
That you do not care for all 4 doors of a room to have a connection.
That you do not care for the positions of the start and end rooms.
* That your rooms are aligned in the tile system and the connections between the rooms are also with tiles.
With that in mind:
Creating a graph where each room is a vertex with edges to the closest rooms is the first step using Prim's algorithm. Prim's algorithm will always create a minimum spanning tree so there will always be a path from start to end but these rooms will be in arbitrary positions in the tree.
After that you can find out which doors are closest together for each edge in the graph that was created with simple calculations (could use euclidian distance or manhattan distance for example) and comparing.
When you have decided on what doors of what rooms you want to have connected you'd use A or some other pathfinding algorithm to connect them using your tile system as nodes with edges to the N, E, S, W neighbouring tiles (could also add diagonal edges if you'd like). For this you'd use your tile system as a graph and use a distance hueristic function (again euclidion or manhattan) if you use A.
Representing a graph can be done with a dictionary with rooms as keys (vertices) pointing to a list of the other rooms that share a connection (edges).
E.g. a graph with vertices and edges:
(A -> B)
(A -> C)
(B -> C)
(B -> D)
(C -> D)
(D -> C)
(E -> F)
(F -> C)
would look like:
graph = {
'A': ['B', 'C'],
'B': ['C', 'D'],
'C': ['D'],
'D': ['C'],
'E': ['F'],
'F': ['C']
}
Feel free to ask for clarification or adjust my assumptions.