private int insert(Paciente p) {
        Connection con = null;
        PreparedStatement pstm = null;
        int retorno = -1;

        try {
            //(nome, telefone, celular, data_nascimento, rg, enderecocodigo)
            con = ConnectionFactory.getConnection();
            pstm = con.prepareStatement(INSERT, Statement.RETURN_GENERATED_KEYS);
            pstm.setString(1, p.getNome());
            pstm.setString(2, p.getTelefone());
            pstm.setString(3, p.getCelular());
            pstm.setDate(4, new java.sql.Date(p.getDataNascimento().getTime()));
            pstm.setString(5, p.getRg());
            pstm.setString(6, p.getEndereco());
            pstm.setString(7, p.getCidade());
            pstm.setString(8, p.getEstado());
            pstm.setInt(9, p.getConvenio().getCodigo());
            pstm.execute();
            try (ResultSet rs = pstm.getGeneratedKeys()) {
                if (rs.next()) {
                    retorno = rs.getInt(1);
                }
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao inserir paciente: " + ex.getMessage());
        } finally {
            try {

                ConnectionFactory.closeConnection(con, pstm);

            } catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Erro ao finalizar conexão em inserir paciente: " + e.getMessage());
            }
        }
        return retorno;
    }