Proyecto Java: Sistema de Gestión Clínica
La Clínica Iberoamericana, una institución médica en constante crecimiento, enfrenta
dificultades en la gestión de sus procesos administrativos y clínicos debido al manejo
manual de la información. El registro de pacientes, el seguimiento de historias clínicas y
la gestión de resultados de análisis actualmente se realiza en papel, lo que conlleva
errores frecuentes, retrasos significativos y complicaciones en la toma de decisiones.
Como parte de una iniciativa de modernización, la clínica busca implementar un
sistema de gestión hospitalaria que funcione de manera digital, a través de una
aplicación de consola en Java. Esta aplicación debe permitir a los usuarios interactuar
con diferentes módulos del sistema de forma sencilla, segura y eficiente.
Objetivo del Proyecto
Desarrollar un sistema de gestión clínica en Java utilizando clases independientes y no
relacionadas entre sí, cada una representando una entidad del sistema. El sistema debe
ejecutarse por consola y estar enfocado en la estructura, manipulación de datos, control
de errores y organización del código orientado a objetos, sin implementar bases de datos
ni relaciones entre clases.
Entidades a desarrollar (Clases independientes)
Cada clase manejará su información de forma autónoma (sin referencias entre ellas). Se
espera que los estudiantes definan claramente los atributos y las operaciones básicas de
cada clase, permitiendo registrar, consultar y mostrar datos a través del menú de la
aplicación.
1. Paciente
• Atributos sugeridos:
o ID del paciente
o Nombre completo
o DNI
o Edad
o Dirección
o Teléfono
• Descripción funcional:
Permite registrar nuevos pacientes, mostrar la lista de pacientes ingresados y
consultar información de un paciente específico.
2. Historia Clínica
• Atributos sugeridos:
o Código de historia
o Nombre del paciente (como texto plano)
o Diagnóstico inicial
o Tratamientos indicados
o Observaciones médicas
• Descripción funcional:
Permite ingresar y consultar historiales clínicos. Como no hay relaciones entre
clases, el nombre del paciente se guarda como texto, no como referencia a la
clase Paciente.
3. Resultado de Análisis
• Atributos sugeridos:
o Código de análisis
o Nombre del paciente
o Tipo de examen (sangre, orina, etc.)
o Fecha del análisis
o Resultado
• Descripción funcional:
Permite registrar resultados de análisis clínicos y consultar los datos ingresados
por paciente o por tipo de análisis.
4. Usuario (Control de acceso básico)
• Atributos sugeridos:
o Nombre de usuario
o Contraseña
o Tipo de usuario (admin, médico, etc.)
• Descripción funcional:
Maneja un inicio de sesión básico para validar el acceso a la aplicación. La
contraseña se compara en texto plano para efectos del ejercicio. No se requiere
cifrado ni persistencia.
✅ ENTREGABLE FINAL
A. OPERACIONES BÁSICAS (1–7)
1. Crear una clase Paciente y permitir ingresar 5 pacientes desde consola
(utilizando Scanner).
2. Calcular la edad promedio de todos los pacientes registrados.
3. Calcular cuántos pacientes tienen más de 60 años.
4. Crear una clase ResultadoAnalisis y permitir ingresar los valores de glucosa
de 5 pacientes. Luego, calcular el promedio.
5. Mostrar el número total de pacientes ingresados (contando objetos creados).
6. Sumar la cantidad total de análisis clínicos realizados y mostrarlos por pantalla.
7. Crear una función que, dado el nombre de un paciente y su peso y altura, calcule
su IMC y determine si está en un rango saludable.
B. CONDICIONES (8–14)
8. Validar si un paciente ingresado es mayor de edad antes de registrarlo.
9. En la clase Usuario, permitir el acceso solo si el nombre y contraseña coinciden
con valores predefinidos.
10. Si un paciente tiene un resultado de análisis fuera del rango normal, mostrar un
mensaje de alerta.
11. En la clase HistoriaClinica, mostrar un mensaje especial si el diagnóstico es
“emergencia”.
12. Mostrar un mensaje diferente dependiendo del tipo de usuario (admin, médico,
recepcionista).
13. En la creación de un paciente, si su edad es menor a 0 o mayor a 120, mostrar un
mensaje de error.
14. Si el número de análisis supera cierto límite (por ejemplo, 100), mostrar que el
sistema está saturado.
C. REPETICIONES (15–21)
15. Crear un menú interactivo en consola que se repita hasta que el usuario decida
salir.
16. Permitir el ingreso de múltiples pacientes usando un while hasta que se digite
"salir".
17. Mostrar todos los pacientes registrados usando un for o foreach.
18. Listar todos los análisis clínicos tipo “sangre” en una estructura repetitiva.
19. Leer múltiples resultados de análisis hasta que se ingrese un valor negativo.
20. Contar cuántos pacientes tienen un diagnóstico específico (por ejemplo, "asma")
en una lista.
21. Crear un sistema que permita volver al menú anterior tras cada operación (ciclo
anidado).
D. CLASES Y MÉTODOS (22–30)
22. Crear la clase Paciente con al menos 5 atributos y un método para mostrar su
información.
23. Crear la clase HistoriaClinica con un método para registrar diagnósticos
nuevos.
24. Crear una clase ResultadoAnalisis con un método que indique si el resultado
está en rango.
25. Implementar una clase Usuario con un método validarAcceso(String
usuario, String clave).
26. Crear un método que recorra una lista de pacientes y devuelva el paciente más
joven.
27. Crear un método en la clase Paciente que determine si el paciente necesita
control urgente (si tiene más de 70 años y más de 2 diagnósticos registrados).
28. Crear una clase SistemaClinica que contenga métodos para llamar a los menús
de las otras clases.
29. Diseñar un método que reciba una lista de HistoriaClinica y busque
coincidencias por palabra clave (ej: “asma”).
30. Crear un método estático que calcule la proporción de pacientes con análisis
normales vs alterados.