RemoveRow após Uptade em Row

Gostaria de ajuda. Sei que p código abaixo é um pouco precário (sujo) pois não segue alguns padrões de facilitação para manutenção. Mas agora que estou aprendendo utilizar o padrão MVC, estou reescrevendo os códigos neste modelo.
Mas o código abaixo já roda em um sistema de Manipulação de Medicamentos que desenvolvi para uma necessidade urgente no momento. A questão é o Seguinte:
–> AtualizaFila é um método que ao iniciar a janela de busca por data informada, ele busca a partir da query do SQL todos os pacientes que naquele dia terão que manipular os medicamentos.
Logo em seguida no código ele faz uma validação utilizando um laço, à procura em uma outra classe tb_fim (Finalizados - medicações que já forma manipuladas), e acrescentar em coluna que inicia vazia o Status : MNP (Manipulado) ou EMNP (Em manipulação), depende em qual situação ele se encontra. Tendo este status atrelado no momento da validação entre o que vai entrar para manipular e o manipulado consigo retirar as linhas de pacientes que já foram manipulados, uma vez que a Query sempre trará a mesma busca no dia pesquisado.
—> Então com isso pego estes dados e faço um outro FOR para comparar as duas tabelas e se o paciente estiver na aba FINALIZADOS e remove a linha identica na aba FILA (Utilizo um JTABLE).

Problema:

–> Tenho uma opção na aplicação que permite o usuário CANCELAR a manipulação. Com isso ele vai para a aba FINALIZADO com o STATUS C. Então percebi sempre que faço isso ele duplica as informações nas duas ABAS. Fica uma linha na Aba FILA e outra na Aba Finalizado. Ele não consegue retirar esse paciente que foi cancelado a medicação. A única diferença para os que estão manipulados e ele consegue eliminar essa linha na comparação do FOR é o Status. Fora isso está tudo OK.

Alguém consegue entender isso tudo que escrevi rsrsrs, e tentar me ajudar a encontrar onde está o problema em não conseguir eliminar os pacientes C de CANCELADOS da aba FILA e deixar somente na ABA FINALIZADOS assim como acontece com os que estão com Status M de manipulados?

Help!!! rsrs.

private void AtualizaFila (){
    //*********INICIO DE CAST DE DATA******************
      String dia = dt_ini.getText().substring(0, 2);
      String mes = dt_ini.getText().substring(3, 5);
      String ano = dt_ini.getText().substring(6);
      
      String dia1 = dt_final.getText().substring(0, 2);
      String mes1 = dt_final.getText().substring(3, 5);
      String ano1 = dt_final.getText().substring(6); 
    //*********FIM DE CAST DE DATA********************* 
    
    //Conecta ao DB e preenche com o retorno da consulta da Query na Table Fila  
    //Faz- uma busca no Table de Manipulação e Table Finalizado, e valida se não há registro duplicado
    //Caso houver remove a linha da Table FILA
    if (tb_fila.getRowCount() == 0 || tb_fila.getRowCount() != 0){ //Preenche a tabela se a linha for igual ou diferente de 0
        try {
        conn = conexao.getConnection();
       //Titulos das Colunas da Tabela
       String[]titulos =new String[]{"Reg","Pront","Nome", "Esquema", "Medicamento", "Dose","User_Solic", "Psc_Num","Data_Solic","MNP", "Psc_APM", "Cod_Barra"};
       //Query de consulta  
        String SQL;
           SQL = "SELECT pac.pac_reg, pac.pac_pront, pac.pac_nome, bul.bul_nome, adp.adp_nome, apl.apl_dose,sma.sma_usr_login_sol, sma.sma_data, apl.apl_psc_num, psc.psc_apm, "
                        + " (CAST (psc.psc_pac AS VARCHAR(10)) + CAST (psc.psc_num AS VARCHAR(10)) + CAST (psc.psc_apm AS VARCHAR(10))) as Cod_Barra "
                        + " FROM psc"
                        + " join pac on "
                        + "   ( pac.pac_reg = psc.psc_pac )"
                        + " join apl on"
                        + "   ( apl.apl_psc_hsp = psc.psc_hsp ) and"
                        + "   ( apl.apl_psc_num = psc.psc_num ) and"
                        + "   ( apl.apl_psc_pac = psc.psc_pac )"
                        + " join apm on"
                        + "   ( apm.apm_pac = psc.psc_pac ) and"
                        + "   ( apm.apm_hsp = psc.psc_hsp ) and"
                        + "   ( apm.apm_num = psc.psc_apm )"
                        + " join sma on"
                        + "   (sma.sma_serie = apm.apm_sma_serie) and"
                        + "   (sma.sma_num   = apm.apm_sma_num)"
                        + " join bul on"
                        + "   (bul.bul_med = psc.psc_cod)"
                        + " join adp on"
                        + "   (adp.adp_cod = psc.psc_adp)"
                        + " join cnv on"
                        + "   ( cnv.cnv_cod = pac.pac_cnv )"
                        + " join psv on"
                        + "   ( psc.psc_med = psv.psv_cod )"
                        + " FULL join psv ps on"
                        + "   ( psc.psc_med2 = ps.psv_cod )"
                        + " WHERE"
                        // Retornar as prescrições (Aplicações) do dia
                        + "  apl.apl_dthr_aplic >= '"+ano+"-"+mes+"-"+dia+" 00:00:00' and"
                        + "  apl.apl_dthr_aplic <= '"+ano1+"-"+mes1+"-"+dia1+" 23:59:59' and"
                        // Retornar as Solicações (Enfermagem) do dia     
                        + "  sma.sma_data >= '"+ano+"-"+mes+"-"+dia+" 00:00:00' and"
                        + "  sma.sma_data <= '"+ano1+"-"+mes1+"-"+dia1+" 23:59:59' and"
                        + "  pac.pac_nome not like 'xxx%' and"
                        + "  apl.apl_status in('A','N') And"
                        + "  bul.bul_farm2 = 2 AND bul.bul_farm1 = 62"
                        + " ORDER BY pac.pac_nome ASC ";
                   //+ " ORDER BY sma.sma_data DESC ";
                       

        model =new DefaultTableModel(null, titulos);

        sent = conn.createStatement();
        ResultSet rs = sent.executeQuery(SQL);

        String []fila = new String[12];

        while (rs.next()){
                
            fila [0]=rs.getString("pac_reg");
            fila [1]=rs.getString("pac_pront");
            fila [2]=rs.getString("pac_nome");
            fila [3]=rs.getString("adp_nome");
            fila [4]=rs.getString("bul_nome");
            fila [5]=rs.getString("apl_dose");
            fila [6]=rs.getString("sma_usr_login_sol");
            fila [7]=rs.getString("apl_psc_num");
            fila [8]=rs.getString("sma_data");
            fila [9]=null;//Inicia a variavel vazia
            fila [10] =rs.getString("psc_apm");
            fila [11] =rs.getString("Cod_Barra");
            
            //For para validar registro FILA igual a tabela Em Manipulação com Status de *Em Manipulação*
            for ( int m = 0; m < tb_manip.getRowCount() ; m++)
               {
                 if (fila [0].equals(tb_manip.getValueAt(m, 0)) && fila [7].equals(tb_manip.getValueAt(m, 11)) && fila [10].equals(tb_manip.getValueAt(m, 12)))
                     {
                     fila [9]="EMNP";
                     }
               }
            //For para validar registro FILA igual a tabela Finalizado com Status de *Manipulado*
            for ( int f = 0; f < tb_fim.getRowCount() ; f++)
               {
                 if (fila [0].equals(tb_fim.getValueAt(f, 0)) && fila [7].equals(tb_fim.getValueAt(f, 12)) && fila [10].equals(tb_fim.getValueAt(f, 13)) )
                     {
                     fila [9]="MNP";
                     }
               }
              
              model.addRow(fila);                   
        }
        conn.close();
        tb_fila.setModel(model);
        tb_fila.setDefaultEditor(Object.class, null);
        //Colunas que deverão ser ocultadas E redimensionadas
        tb_fila.setAutoResizeMode(javax.swing.JTable.WIDTH );
        tb_fila.getColumnModel().getColumn(0).setMinWidth(0);
        tb_fila.getColumnModel().getColumn(0).setMaxWidth(0);
        tb_fila.getColumnModel().getColumn(1).setMinWidth(60);
        tb_fila.getColumnModel().getColumn(1).setMaxWidth(60);
        tb_fila.getColumnModel().getColumn(2).setMinWidth(200);
        tb_fila.getColumnModel().getColumn(2).setMaxWidth(200);
        tb_fila.getColumnModel().getColumn(5).setMinWidth(60);
        tb_fila.getColumnModel().getColumn(5).setMaxWidth(60);
        tb_fila.getColumnModel().getColumn(6).setMinWidth(80);
        tb_fila.getColumnModel().getColumn(6).setMaxWidth(80);
        tb_fila.getColumnModel().getColumn(7).setMinWidth(0);
        tb_fila.getColumnModel().getColumn(7).setMaxWidth(0);
        tb_fila.getColumnModel().getColumn(8).setMinWidth(50);//150
        tb_fila.getColumnModel().getColumn(8).setMaxWidth(50);//150
        tb_fila.getColumnModel().getColumn(9).setMinWidth(50);//0
        tb_fila.getColumnModel().getColumn(9).setMaxWidth(50);//0
        tb_fila.getColumnModel().getColumn(10).setMinWidth(0);
        tb_fila.getColumnModel().getColumn(10).setMaxWidth(0);
        //Selecionar somente uma linha por vez
        tb_fila.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
       
        }catch (SQLException ex){
            JOptionPane.showMessageDialog(this, "Erro na Consulta ao Banco Smart!", "Erro",JOptionPane.ERROR_MESSAGE);
            JOptionPane.showMessageDialog(this, ex);
        }catch (Exception e){
            JOptionPane.showMessageDialog(this, e);
          }
        
             //Valida se o valor adicionado já existe na Tabela Finalizado
             //Se existe, remove da Tabela linha, para não gerar duplicidade
                for ( int f = tb_fila.getRowCount()-1; f >=0; f--)//Decrementa contador devido ao Array iniciar com 0
                 {
                   if (tb_fila.getValueAt(f, 9) == ("MNP") || tb_fila.getValueAt(f, 9) == ("EMNP") )
                     {
                  //Remove da FILA os já Manipulados, Em Manipulação e Cancelados
                   model.removeRow(f);
                     }
                 }//Finaliza o FOR para Tabela Finalizado   
        }//Finaliza o IF para Tabela Finalizado   
}//Encerra Classe Atualiza();

Quais classes representam o Model?
Quais classes representam a View?
Quais classes representam o Controller?

Boa tarde! Pelo que pude ler no teu código, apesar de saber pouco, não vejo uma classe modelo, visão ou de controle. O que estou vendo é apenas um método que fazer o carregamento de uma tabela usando DefaultTableModel

Staroski, obrigado pelo retorno. Só que, como disse no começo, essa aplicação como foi a primeira que desenvolvi não segue o modelo MVC. Sendo assim se observar no código tenho um model (que é utilizado para criar a estrutura da minha linhas e colunas), tenho uma query, que joga os dados do DB dentro do JTABLE criado pelo model, e quando o usuário clica em Buscar, ele chama este método que coloquei o código, então ele monta os dados dentro da JTABLE, tudo ocorre lá dentro.
tb_fila = JTABLE
model = DefaultTableModel
dt_ini = JFormattedTextField
dt_fim = JFormattedTextField

Segue outros dados:

public final class Final extends javax.swing.JFrame {
DefaultTableModel model;
Connection conn;
Statement sent;

public Final() {
    initComponents();
    conn = conexao.getConnection();
    setSize(1200, 700);
   // UpdateBancoAuto();
    HoraAtual();
    DataAtual();
    //Ocultar botões de outras abas ao iniciar o sistema
    bt_updaterelat.setVisible(false);
    lbl_title_relat.setVisible(false);
    lbl_total_manip.setVisible(false);
    bt_filtrar.setVisible(false);
    cb_status.setVisible(false);
    lbl_status.setVisible(false);

}

Botão que chama o método:

private void bt_findActionPerformed(java.awt.event.ActionEvent evt) {                                        
//Armazena no label o usuário logado
   lbl_usuario.setText(usuario);

//Verifica se os campos de datas estão vazios
   if (dt_ini.getText().equals("  /  /    ") || dt_final.getText().equals("  /  /    ")){
       JOptionPane.showMessageDialog(null, "Favor verificar se os campos de datas\nestao preenchidos.","Campo Data", JOptionPane.ERROR_MESSAGE);
     }else { 
       // Se data for preenchida, executa a conexão e pesquisa no DB
       // Chama a classe que executa o preenchimento da Tabela Fila              
       AtualizaFila(); 
       txt_cod_barra.requestFocus();
   }