I started with this MIB for detailed module info: MIB-2-ENTITY-MIB. I did a walk on this OID 1.3.6.1.2.1.47.1.1.1.1.13, to get info about the modules.
I started with this MIB for module status: CISCO-ENTITY-FRU-CONTROL-MIB. I did a walk on this OID 1.3.6.1.4.1.9.9.117.1.2.1.1.2 to get the status of the modules.
As you do a walk and see the various OIDs, you'll see that there is a pattern connected to the slot in which they are installed. I've also seen that slots with no cards will not return data, so if you configure UnDPs for the specific OIDs like I do, it'll give the message "no data", which is easy enough to filter in the alerts.
I found it easier to deal with the individual OIDs that I want to poll. For the cards in slots 3 and 4:
Slot 3 contents: 1.3.6.1.2.1.47.1.1.1.1.13.3000
slot 3 status: 1.3.6.1.4.1.9.9.117.1.2.1.1.2.3000
Slot 4 contents: 1.3.6.1.2.1.47.1.1.1.1.13.4000
Slot 4 status: 1.3.6.1.4.1.9.9.117.1.2.1.1.2.4000
The status OID actually returns a number. You can see what each number represents here Cisco SNMP Object Navigator.
I wonder if this is the best way to handle this, but it works for now. On a side note, I use this same method to poll various chassis models for module contents and status for all slots.
Romeo