John Swinney has been told to apologise to patients for his 'shameful' broken promise to end year-long waits in the NHS .