В вашем случае срез надо объявлять нулевой длины, и резервировать память под предполагаемый размер (третий параметр make()):
patients := make([]Patient, 0, 1000)
//...
for row.Next() {
var patient Patient
row.Scan(&patient.Patientid, &patient.Tel)
patients = append(patients, patient)
}
Здесь данных будет столько, сколько разместишь, и даже если их будет больше 1000, все поместятся в этот срез, просто он будет медленней работать.