I suspect that the stored procedure is not returning any rows: Try checking your Read method return value:
if (reader.Read())
{
patient = new ClsPatient(Convert.ToString(reader["PatName"]),
Convert.ToString(reader["PatSurname"]), Convert.ToString(reader["PatAddress"]),
Convert.ToString(reader["PatTell"]), Convert.ToString(reader["PatCell"]),
Convert.ToString(reader["PatWorkTell"]), Convert.ToString(reader["PatEmail"]),
Convert.ToString(reader["PatGender"]));
}
reader.Close();