Custom login for specific role
First, create a custom permission:

/**
 * Implements hook_permission().
 */
function MY_MODULE_permission() {
  return array(
    'access doctor content' =&gt; array(
      'title' =&gt; t('Access content for doctors'),
    )
  );
}


If the restricted content is a custom page you can do this:

/**
* Implements hook_menu().
*/
function MY_MODULE_menu() {
  $items = array();    
  $items['doctor_page'] = array(
    'title' =&gt; 'Doctor page',
    'page callback' =&gt; '_doctor_page_content',
    'access arguments' =&gt; array('access doctor content'),
    'type' =&gt; MENU_NORMAL_ITEM,
  );
  return $items;
}


If the restricted content is a node make sure there is a reliable way to filter that content in your code (e.g. by adding a checkbox 'Protected' to the node). Set access restrictions on nodes like this:

/**
 * Implements hook_node_access().
 */
function MY_MODULE_node_access($node, $op, $account) {
  // Check if the content is protected.
  if (!empty($node-&gt;field_protected_content[LANGUAGE_NONE][0]['value'])) {
    // If so, check if the user has access to it.
    if (user_access('access doctor content', $account)) {
      // Allow access.
      return NODE_ACCESS_ALLOW;
    }
    // Deny access.
    return NODE_ACCESS_DENY;
  }

  // Handle the default restrictions.
  return NODE_ACCESS_IGNORE;
}


Don't forget to add your custom permission to the user role via the permissions page (admin/people/permissions).