Johnson apologises for failing to wear mask on hospital visit