Medical problem solving often involves large amounts of data, This poses problems for experts solving the problem as well as for students learning to do so. There are often many different ways to solve a single problem. We have been studying the construction of tutoring systems for problems involving the interpretation of data. A system was built to detect errors in solving the problem of red blood cell antibody identification. The system has at its core a monitoring shell and a representation of problem solving. The shell provides a general method for monitoring that can be used in any domain for which an appropriate representation can be built. The shell and representation could also be used as part of a critiquing system to aid medical problem solving.