rb4: rb7 on change interrupt
You would check the state of the PORTB pins you are interested. You can also store their status on a global variable for comparison on the next time around, this would allow you to determine which pins have changed. Here is a sample of what your CN ISR might look like:

void __attribute__((interrupt,auto_psv)) _CNInterrupt(void)
{
    unsigned char ChangeVector;

    IFS1bits.CNIF = 0;  //clear interrupt flag

    ChangeVector = (PORTB&amp;0xf0)^LastPortB;  //bit vector of changed pins of interest
    LastPortB = PORTB&amp;0xf0; //store value of PORTB pins of interest for the next ISR

    if (ChangeVector&amp;0x10)  // routine for RB4
    {&lt;do stuff here&gt;}
    if (ChangeVector&amp;0x20)  // routine for RB5
    {&lt;do stuff here&gt;}
    &lt;...repeat for other pins&gt;
}