Display of Custom Fields based on conditional if/and according to category/tag choice

$hb1, $hb2 and $hb3 are boolean variables, therefore

if ( in_category($hb1, $this->post->ID) )

is always FALSE.

Try the following code:

$hb1 = in_category( 
           array('News','Features','Tech'), 
           $this->post->ID 
);
$hb2 = in_category( array('Research'), $this->post->ID );
$hb3 = has_tag( 
         array( 'aged care', 'anxiety/stress', 'autism', 'cognitive', 'Dementia', "Parkinson's", 'sleep' , 'well-being' ), 
         $this->post->ID
);

if ( $hb1 )
{
   the_field('media_outlet',     $this->post->ID);
   the_field('media_outlet_url', $this->post->ID);
   the_field('published_date',   $this->post->ID)
}
else if ( $hb2 && $hb3 )
{
   the_field('media_outlet',   $this->post->ID);
   the_field('published_date', $this->post->ID);
   the_field('country',        $this->post->ID)
}

Reference: