Fila encadeada usando nó

propor e elaborar um programa que dentro de uma unidade de atendimento
cadastre vagas para internação e depois, usando um menu de opções, realize as seguintes operações:

  1. Recepção de paciente: cadastra o registro do paciente, seu nome e seu CPF (pode ser
    representado como inteiro) e insira na fila de pacientes aguardando atendimento (fila para
    atendimento).
  2. Atendimento de paciente: retira 1 paciente que estava aguardando na fila de atendimento. Este
    paciente deve responder algumas perguntas sobre seus sintomas (pesquise quais são no caso do
    covid-19 e faça com que o programa faça essas perguntas). Usando as respostas, o programa
    deve decidir se este paciente deve ser ou não internado, se não precisar de internação apenas
    avise que o paciente foi liberado.
    Se o paciente deve ser internado é preciso verificar se há vaga. Se não houver vaga, o paciente
    entra em outra fila onde deve aguardar a vaga da internação (fila para internação). Caso haja
    vaga para internação, o CPF do paciente é armazenado em uma lista de pacientes que estão
    internados nessa unidade (neste trabalho, peço que use vetor para criar essa lista).
  3. Liberação de vaga na unidade: o paciente que terá alta é identificado por seu CPF, então esse é
    retirado da lista de pacientes internados (vetor) e 1 vaga é aberta. Com a vaga liberada é
    retirado um paciente que estava na fila para internação, caso haja algum paciente aguardando
    nessa fila.

@AnnaGiuliaGatti
boa tarde, faça as adequações necessárias,segue exemplo:

Classe principal

import java.util.Scanner;

public class Atendimento {

    public static void main(String[] args) {
        new Atendimento().start();
    }

    void start() {
        try {
            new UnidadeAtendimento(new Scanner(System.in));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

Classe da fila

import lombok.AllArgsConstructor;
import java.util.ArrayList;
import java.util.List;

@AllArgsConstructor
public class Fila {

    private String nome;
    private final List<Paciente> pacientes = new ArrayList();

    public String getNome() {
        return nome;
    }

    public Paciente getProximo() {
        return pacientes.size() > 0 ? pacientes.get(0) : null;
    }

    public int getQuantidadePacientes() {
        return pacientes.size();
    }

    public void addPaciente(Paciente paciente) {
        pacientes.add(paciente);
    }

    public void removerPaciente(Paciente paciente) {
        pacientes.remove(pacientes.indexOf(paciente));
    }

}

Classe com perguntas e respostas para covid-19

import lombok.Data;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

@Data
public class Covid19 {

    private String[] perguntas = {
            "Sente dor de cabeça ou mal-estar geral?",
            "Sente dor muscular generalizada?",
            "Sente cansaço excessivo?",
            "Tem congestão nasal ou cor,iza?",
            "Está com tosse intensa, especialmente seca?",
            "Sente dor intensa ou pressão persistente no peito?",
            "Tem febre acima de 38ºC?",
            "Sente dificuldade para respirar ou falta de ar?",
            "Está com os lábios ou rosto ligeiramente azulados?",
            "Está com dor de garganta?",
            "Esteve em algum local com elevado número de casos de COVID-19, nos últimos 14 dias?",
            "Acha que teve contato com alguém que possa estar com COVID-19, nos últimos 14 dias?"
    };
    private Map<Integer, Boolean> respostas = new HashMap();

    public void executarQuestionario(Scanner input) {
        for (int i = 0; i < perguntas.length; i++) {
            System.out.print(perguntas[i].concat(" [S/N] > "));
            respostas.put(i, "S".equalsIgnoreCase(input.next()));
        }
    }

    public boolean verificarNecessidadeInternacao() {
        int contagemPerguntasChaves = 0;
        for (Map.Entry<Integer, Boolean> entry : respostas.entrySet()) {
            if (Arrays.asList(0, 1, 2, 5, 6, 7, 8, 10, 11).contains(entry.getKey())) {
                contagemPerguntasChaves += entry.getValue() ? 1 : 0;
            }
        }
        if (contagemPerguntasChaves >= 4) {
            System.out.println("Internar paciente");
            return true;
        } else {
            System.out.println("Liberar paciente");
            return false;
        }
    }

}

Classe com a lógica da unidade de atendimento

import java.util.Scanner;

public class UnidadeAtendimento {

    private Paciente[] internacoes;
    private Fila filaAtendimento = new Fila("Atendimento");
    private Fila filaInternacao = new Fila("Fila para internação");

    public UnidadeAtendimento(Scanner input) {
        cadastrarVagasInternacao(input);
        iniciarAtendimentos(input);
    }

    private void cadastrarVagasInternacao(Scanner input) {
        System.out.print("Quantas vagas de internação vão disponibilizar: ");
        internacoes = new Paciente[input.nextInt()];
    }

    private void iniciarAtendimentos(Scanner input) {
        boolean encerrar = false;
        while (!encerrar) {
            switch (printMenuPrincipal(input)) {
                case 1:
                    cadastrarPacientes(input);
                    break;
                case 2:
                    atenderPaciente(input);
                    break;
                case 3:
                    liberacaoVagaUnidade(input);
                    break;
                case 4:
                    encerrar = true;
                    break;
                default:
                    System.out.println("Opção inválida");
            }
        }
    }

    private void atenderPaciente(Scanner input) {
        boolean continuarAtendimento = true;
        while (continuarAtendimento) {
            if (filaAtendimento.getQuantidadePacientes() > 0) {
                Paciente paciente = filaAtendimento.getProximo();
                Covid19 covid19 = new Covid19();
                covid19.executarQuestionario(input);
                if (covid19.verificarNecessidadeInternacao()) {
                    if (!verificarVagaInternacao(paciente)) {
                        filaInternacao.addPaciente(paciente);
                        System.out.println("Não há vagas para internação o paciente foi inserido em uma fila de espera");
                    } else {
                        System.out.println("O paciente foi internado seguindo protocolo para Covid-19");
                    }
                }
                filaAtendimento.removerPaciente(paciente);
                System.out.print("Atender próximo paciente? [S/N] > ");
                continuarAtendimento = verificarResposta(input.next());
            } else {
                continuarAtendimento = false;
                System.out.println("Não há mais pacientes em espera para atendimento");
            }
        }
    }

    private void liberacaoVagaUnidade(Scanner input) {
        System.out.print("Informe o CPF do paciente > ");
        Long cpf = input.nextLong();
        Paciente paciente = null;
        for (int i = 0; i < internacoes.length; i++) {
            paciente = internacoes[i];
            if (paciente.getCpf().equals(cpf)) {
                System.out.println(String.format("Paciente %s teve alta", paciente.getNome()));
                internacoes[i] = null;
                if (filaInternacao.getQuantidadePacientes() > 0) {
                    internacoes[i] = filaInternacao.getProximo();
                    System.out.println(String.format("Paciente %s que estava em fila de espera foi internado", internacoes[i].getNome()));
                }
                break;
            }
        }
        if (paciente == null) {
            System.out.println("Paciente não encontrado");
        }
    }

    private void cadastrarPacientes(Scanner input) {
        boolean cadastrar = true;
        while (cadastrar) {
            Paciente paciente = new Paciente();
            System.out.print("Qual o nome do paciente > ");
            paciente.setNome(input.next());
            System.out.print("Qual o CPF do paciente (sem pontuações) > ");
            paciente.setCpf(input.nextLong());
            filaAtendimento.addPaciente(paciente);
            System.out.print("Continuar cadastrando pacientes [S/N] > ");
            cadastrar = verificarResposta(input.next());
        }
    }

    private int printMenuPrincipal(Scanner input) {
        System.out.print("\n-=-=-=-=-=-=Menu de Opções=-=-=-=-=-=-\n"
                + "1-Recepção de paciente\n"
                + "2-Atendimento de paciente\n"
                + "3-Liberação de vaga na unidade\n"
                + "4-Encerrar\n\nOpção > ");
        return input.nextInt();
    }

    private boolean verificarResposta(String resposta) {
        return "S".equalsIgnoreCase(resposta);
    }

    private boolean verificarVagaInternacao(Paciente paciente) {
        for (int i = 0; i < internacoes.length; i++) {
            if (internacoes[i] == null) {
                internacoes[i] = paciente;
                return true;
            }
        }
        return false;
    }

}