Tabela não atualiza em tempo de execução

Associei uma AbstractTableModel a uma List, mas a tabela não atualiza em tempo de execução.
Segue os codigos:

public List<PacienteBEAN> listPaciente() {
        Connection con = ConnectionFactory.Conexao();
        PreparedStatement stmt = null;
        ResultSet rs = null;
        List<PacienteBEAN> pacientes = new ArrayList<>();

        try{
            stmt = con.prepareStatement("SELECT * FROM paciente");
            rs = stmt.executeQuery();

            while (rs.next()) {
                PacienteBEAN paciente = new PacienteBEAN();
                    paciente.setNome(rs.getString("nome"));
                    paciente.setApelido(rs.getString("apelido"));                    
                    paciente.setSexo(rs.getString("sexo"));
                    paciente.setNascimento(rs.getString("nascimento"));
                    paciente.setCpf(rs.getString("cpf"));
                    paciente.setSus(rs.getString("sus"));
                    paciente.setEstado(rs.getString("estado"));
                    paciente.setCidade(rs.getString("cidade"));
                    paciente.setRua(rs.getString("rua"));
                    paciente.setBairro(rs.getString("bairro"));
                    paciente.setNumero(rs.getString("numero"));
                    paciente.setCelular(rs.getString("celular"));
                    paciente.setEmail(rs.getString("email"));
                pacientes.add(paciente);
            }
        } catch (SQLException ex) {
            Logger.getLogger(PacienteDAO.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            ConnectionFactory.closeConnection(con, stmt, rs);
        }
        return pacientes;
    }

public Paciente() {
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        initComponents();
        PacienteDAO sql = new PacienteDAO();
        TableModelPaciente model = new TableModelPaciente(sql.listPaciente());
        jtbPacientes.setModel(model);
        model.fireTableDataChanged();
    }

package Model.DAO;

import Model.BEAN.PacienteBEAN;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class TableModelPaciente extends AbstractTableModel{
    private static final int ColNome = 0;
    private static final int ColApelido = 1;
    private static final int ColSexo = 2;
    private static final int ColNascimento = 3;
    private static final int ColCPF = 4;
    private static final int ColSUS = 5;
    private static final int ColEstado = 6;
    private static final int ColCidade = 7;
    private static final int ColRua = 8;
    private static final int ColBairro = 9;
    private static final int ColNumero = 10;
    private static final int ColTelefone = 11;
    private static final int ColEmail = 12;
    private final List<PacienteBEAN> pacientes;
    private final String colunas[] = {"Nome", "Apelido","Sexo", "Nascimento", "CPF", "Cartão SUS", "Estado", "Cidade", "Rua", "Bairro", "Numero", "Telefone", "E-mail"};
    
    public TableModelPaciente(List<PacienteBEAN> listPaciente) {
        this.pacientes = listPaciente;
    }

    @Override
    public int getRowCount() {
        return this.pacientes.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
        
    }
    @Override
    public String getColumnName(int column){
        return colunas[column];
    }
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        switch(columnIndex){
            case ColNome:
                return pacientes.get(rowIndex).getNome();
            case ColApelido:
                return pacientes.get(rowIndex).getApelido();           
            case ColSexo:
                return pacientes.get(rowIndex).getSexo();
            case ColNascimento:
                return pacientes.get(rowIndex).getNascimento();
            case ColCPF:
                return pacientes.get(rowIndex).getCpf();
            case ColSUS:
                return pacientes.get(rowIndex).getSus();
            case ColEstado:
                return pacientes.get(rowIndex).getEstado();
            case ColCidade:
                return pacientes.get(rowIndex).getCidade();
            case ColRua:
                return pacientes.get(rowIndex).getRua();
            case ColBairro:
                return pacientes.get(rowIndex).getBairro();
            case ColNumero:
                return pacientes.get(rowIndex).getNumero();
            case ColTelefone:
                return pacientes.get(rowIndex).getCelular();
            case ColEmail:
                return pacientes.get(rowIndex).getEmail();   
                default:
                throw new IndexOutOfBoundsException("columnIndex out of bounds");

        }
        
    }
    
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex){
        return false;
    }
    
    //define o tipo de dados que as colunas recebem, se for a coluna 0 que é meu ID, vai ser inteiro, senão for a coluna 0 então é a coluna 1 que é 
    @Override
    public Class<?> getColumnClass(int columnIndex){
        switch(columnIndex){
            case ColNome:
                return String.class;
            case ColApelido:
                return String.class;
            case ColSexo:
                return String.class;
            case ColNascimento:
                return String.class;
            case ColCPF:
                return String.class;
            case ColSUS:
                return String.class;
            case ColEstado:
                return String.class;
            case ColCidade:
                return String.class;
            case ColRua:
                return String.class;
            case ColBairro:
                return String.class;
            case ColNumero:
                return String.class;
            case ColTelefone:
                return String.class;
            case ColEmail:
                return String.class;
            default:
                throw new IndexOutOfBoundsException("columnIndex out of bounds");
        }
    }
}