> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/interfaces-comparable-y-comparator.md).

# Interfaces: Comparable y Comparator

1. Implementa as clases correspondentes para desenvolver unha aplicación co seguinte modelo:
   1. Un **paciente** e unha persoa atendida nun centro médico que consta de nome, dni, data e hora de ingreso e unha prioridade do 1 ao 3 en función de se é leve, grave ou moi grave. Implementa un constructor, getters e setters e os métodos que estimes necesarios para a aplicación. A orde natural de atencion ao paciente será por data e hora de ingreso.&#x20;
   2. Un **Centro de saúde** e un complexo no que se atenden pacientes de acordo ao seguinte criterios:
      1. A atención segue un **criterio FIFO**, de tal forma que o primeiro en entrar debe de ser o primeiro en ser atendido. Para xestionar isto, emprega a estructura de datos definida por Java que consideres mais adecuada.
         1. A implicación do criterio FIFO e que os novos pacientes entran na estructura polo final, e a atencion realizase ao primeiro paciente na estructura.
      2. O criterio de atención pode variar, de tal forma que además de estar ordenado por orde natural, pode ser necesario o seguinte:
         1. A **atención por gravidade**, onde o paciente con maior gravidade será atendido antes. Se dous pacientes teñen a mesma gravidade, o criterio de atención será a data de ingreso
         2. A **atención por dni**, onde se van a ordenar os pacientes en función do seu DN
      3. Un **centro de saúde** pode realizar as seguintes operacións:
         1. **Engadir pacientes:** os novos pacientes son engadidos na estructura de datos polo final
         2. **Atender paciente:** o paciente na primeira posición da estructura de datos será atendido
         3. **toString():** Mostra os pacientes que estan na estructura de datos no momento que se chama ao métodos
         4. **mostrarPorOrdenChegada():** Mostra por pantalla os pacientes pendentes en función da súa orde de chegada
         5. **mostrarPorGravidade():** Mostra por pantalla os pacientes pendnetes en función da súa gravidade&#x20;
         6. **mostrarPorDNI():** Mostra por pantalla os pacientes ordenados en función do seu número de DNI
   3. Unha **App** que conten un main no que se se faga o seguinte:
      1. Crea un centro de saúde
      2. Crea os seguintes pacientes e engadeos pola orde que se indica:
         1. "78932145J", Santiago, 2/04/2025 17:00:00, 3
         2. "12356789A", Ana, 1/04/2025 11:00:00, 2
         3. "43576789K", María, 1/04/2025 09:00:00, 2
         4. "65743219Z", "Pedro", 03/04/2025 10:00:00, 1
      3. Mostra os pacientes por orden de chegada
      4. Mostra os pacientes por gravidade
      5. Mostra os pacientes por DNI

{% hint style="warning" %}
Lembra que para ordenar,debes convertir a túa estructura a lista
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/interfaces-comparable-y-comparator.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
