8
« en: 31 de Octubre 2023, 05:08 »
Hola buen día, estoy queriendo hacer un programa que simule una clínica en Java, haciendo uso de interfaz gráfica.
He definido algunas clases, como 'Paciente', 'Vacuna', 'Cita' y 'Expediente'.
Necesito que este programa permita las siguientes operaciones:
- Gestión de pacientes: agregar, editar, mostrar y eliminar pacientes.
- Gestión de vacunas: agregar vacunas a un paciente, editar vacunas de un paciente, mostrar las vacunas aplicadas de un paciente y eliminar vacunas aplicadas de un paciente.
- Gestión de citas: crear citas a un paciente, editar citas de un paciente, mostrar las citas de un paciente y eliminar citas de un paciente.
- Crear un expediente a un paciente: el expediente debe tomar la información del paciente su información (datos de la clase Paciente), sus vacunas, y permitir ingresar su diagnóstico, así como mostrar el expediente de un paciente.
Mi principal desafío radica en cómo relacionar estas clases para que puedan comunicarse entre sí y realizar las operaciones necesarias. Por ejemplo, ¿cómo puedo agregar vacunas a un paciente?, o ¿cómo puedo crearle un expediente a un paciente que tome su información y la de sus vacunas junto con su diagnóstico, y luego que permita ver el expediente del paciente?
Agradecería cualquier orientación que puedan ofrecerme.
Adjunto las clases que he creado hasta el momento.
Clase Paciente:
public class Paciente {
private String numIdentificacionPaciente;
private String nombrePaciente;
private int edadPaciente;
private String sexoPaciente;
private double alturaPaciente;
private double pesoPaciente;
private String fechaNacPaciente;
public Paciente() {
}
public Paciente(String numIdentificacionPaciente, String nombrePaciente, int edadPaciente, String sexoPaciente, double alturaPaciente, double pesoPaciente, String fechaNacPaciente) {
this.numIdentificacionPaciente = numIdentificacionPaciente;
this.nombrePaciente = nombrePaciente;
this.edadPaciente = edadPaciente;
this.sexoPaciente = sexoPaciente;
this.alturaPaciente = alturaPaciente;
this.pesoPaciente = pesoPaciente;
this.fechaNacPaciente = fechaNacPaciente;
}
public String getNumIdentificacionPaciente() {
return numIdentificacionPaciente;
}
public String getNombrePaciente() {
return nombrePaciente;
}
public int getEdadPaciente() {
return edadPaciente;
}
public String getSexoPaciente() {
return sexoPaciente;
}
public double getAlturaPaciente() {
return alturaPaciente;
}
public double getPesoPaciente() {
return pesoPaciente;
}
public String getFechaNacPaciente() {
return fechaNacPaciente;
}
public void setNumIdentificacionPaciente(String numIdentificacionPaciente) {
this.numIdentificacionPaciente = numIdentificacionPaciente;
}
public void setNombrePaciente(String nombrePaciente) {
this.nombrePaciente = nombrePaciente;
}
public void setEdadPaciente(int edadPaciente) {
this.edadPaciente = edadPaciente;
}
public void setSexoPaciente(String sexoPaciente) {
this.sexoPaciente = sexoPaciente;
}
public void setAlturaPaciente(double alturaPaciente) {
this.alturaPaciente = alturaPaciente;
}
public void setPesoPaciente(double pesoPaciente) {
this.pesoPaciente = pesoPaciente;
}
public void setFechaNacPaciente(String fechaNacPaciente) {
this.fechaNacPaciente = fechaNacPaciente;
}
@Override
public String toString() {
return "Paciente{" + "numIdentificacionPaciente=" + numIdentificacionPaciente + ", nombrePaciente=" + nombrePaciente + ", edadPaciente=" + edadPaciente + ", sexoPaciente=" + sexoPaciente + ", alturaPaciente=" + alturaPaciente + ", pesoPaciente=" + pesoPaciente + ", fechaNacPaciente=" + fechaNacPaciente + '}';
}
}
Clase PantallaPaciente:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.HashMap;
public class PantallaPaciente extends JFrame implements ActionListener {
private JTextField txtNumIdentificacionPaciente;
private JTextField txtNombrePaciente;
private JTextField txtEdadPaciente;
private JTextField txtSexoPaciente;
private JTextField txtAlturaPaciente;
private JTextField txtPesoPaciente;
private JTextField txtFechaNacPaciente;
private JTextArea txtResultado;
private HashMap<String, Paciente> pacientes;
public PantallaPaciente() {
pacientes = new HashMap<>();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1000, 700);
setLayout(new BorderLayout());
setResizable(false);
setLocationRelativeTo(null);
JPanel panelFormulario = new JPanel(new GridLayout(5, 6, 10, 10));
panelFormulario.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));
JLabel lblNumIdentificacionPaciente = new JLabel("Número de Identificación del Paciente:");
txtNumIdentificacionPaciente = new JTextField();
JLabel lblNombrePaciente = new JLabel("Nombre del Paciente:");
txtNombrePaciente = new JTextField();
JLabel lblEdadPaciente = new JLabel("Edad del Paciente:");
txtEdadPaciente = new JTextField();
JLabel lblSexoPaciente = new JLabel("Sexo del Paciente:");
txtSexoPaciente = new JTextField();
JLabel lblAlturaPaciente = new JLabel("Altura del Paciente:");
txtAlturaPaciente = new JTextField();
JLabel lblPesoPaciente = new JLabel("Peso del Paciente:");
txtPesoPaciente = new JTextField();
JLabel lblFechaNacPaciente = new JLabel("Fecha de Nacimiento:");
txtFechaNacPaciente = new JTextField();
panelFormulario.add(lblNumIdentificacionPaciente);
panelFormulario.add(txtNumIdentificacionPaciente);
panelFormulario.add(lblNombrePaciente);
panelFormulario.add(txtNombrePaciente);
panelFormulario.add(lblEdadPaciente);
panelFormulario.add(txtEdadPaciente);
panelFormulario.add(lblSexoPaciente);
panelFormulario.add(txtSexoPaciente);
panelFormulario.add(lblAlturaPaciente);
panelFormulario.add(txtAlturaPaciente);
panelFormulario.add(lblPesoPaciente);
panelFormulario.add(txtPesoPaciente);
panelFormulario.add(lblFechaNacPaciente);
panelFormulario.add(txtFechaNacPaciente);
JButton btnAgregarPaciente = new JButton("Agregar");
btnAgregarPaciente.addActionListener(this);
JButton btnMostrarPacientes = new JButton("Mostrar");
btnMostrarPacientes.addActionListener(this);
JButton btnEditarPacientes = new JButton("Editar");
btnEditarPacientes.addActionListener(this);
JButton btnEliminarPaciente = new JButton("Eliminar");
btnEliminarPaciente.addActionListener(this);
JButton btnSalir = new JButton("Salir");
btnSalir.addActionListener(this);
panelFormulario.add(btnAgregarPaciente);
panelFormulario.add(btnMostrarPacientes);
panelFormulario.add(btnEditarPacientes);
panelFormulario.add(btnEliminarPaciente);
panelFormulario.add(btnSalir);
txtResultado = new JTextArea();
txtResultado.setEditable(false);
JScrollPane scrollPane = new JScrollPane(txtResultado);
scrollPane.setPreferredSize(new Dimension(560, 200));
JPanel panelPrincipal = new JPanel(new BorderLayout());
panelPrincipal.add(panelFormulario, BorderLayout.NORTH);
panelPrincipal.add(scrollPane, BorderLayout.CENTER);
panelPrincipal.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
add(panelPrincipal);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Agregar")) {
String numIdentificacionPaciente = txtNumIdentificacionPaciente.getText();
String nombrePaciente = txtNombrePaciente.getText();
String sexoPaciente = txtSexoPaciente.getText();
String fechaNacPaciente = txtFechaNacPaciente.getText();
String alturaPacienteStr = txtAlturaPaciente.getText();
String pesoPacienteStr = txtPesoPaciente.getText();
String edadPacienteStr = txtEdadPaciente.getText();
if (!numIdentificacionPaciente.isEmpty() && !nombrePaciente.isEmpty()
&& !fechaNacPaciente.isEmpty() && !alturaPacienteStr.isEmpty()
&& !pesoPacienteStr.isEmpty() && !edadPacienteStr.isEmpty()) {
try {
int edadPaciente = Integer.parseInt(edadPacienteStr);
double alturaPaciente = Double.parseDouble(alturaPacienteStr);
double pesoPaciente = Double.parseDouble(pesoPacienteStr);
Paciente nuevoPaciente = new Paciente(numIdentificacionPaciente, nombrePaciente,
edadPaciente, sexoPaciente,
alturaPaciente, pesoPaciente,fechaNacPaciente);
pacientes.put(numIdentificacionPaciente, nuevoPaciente);
txtResultado.setText("El paciente se ha añadido correctamente.");
} catch (NumberFormatException ex) {
txtResultado.setText("Los valores numéricos o las fechas deben ser válidos.");
}
} else {
txtResultado.setText("Por favor ingrese todos los datos requeridos.");
}
}
if (e.getActionCommand().equals("Editar")) {
String numIdentificacionPaciente = txtNumIdentificacionPaciente.getText();
if (pacientes.containsKey(numIdentificacionPaciente)) {
Paciente pacienteExistente = pacientes.get(numIdentificacionPaciente);
pacienteExistente.setNombrePaciente(txtNombrePaciente.getText());
pacienteExistente.setEdadPaciente(Integer.parseInt(txtEdadPaciente.getText()));
pacienteExistente.setSexoPaciente(txtSexoPaciente.getText());
pacienteExistente.setAlturaPaciente(Double.parseDouble(txtAlturaPaciente.getText()));
pacienteExistente.setPesoPaciente(Double.parseDouble(txtPesoPaciente.getText()));
pacienteExistente.setFechaNacPaciente(txtFechaNacPaciente.getText());
txtResultado.setText("Los datos del paciente han sido actualizados.");
} else {
String nombrePaciente = txtNombrePaciente.getText();
String sexoPaciente = txtSexoPaciente.getText();
String fechaNacPaciente = txtFechaNacPaciente.getText();
String alturaPacienteStr = txtAlturaPaciente.getText();
String pesoPacienteStr = txtPesoPaciente.getText();
String edadPacienteStr = txtEdadPaciente.getText();
if (!numIdentificacionPaciente.isEmpty() && !nombrePaciente.isEmpty()
&& !sexoPaciente.isEmpty() && !fechaNacPaciente.isEmpty()
&& !alturaPacienteStr.isEmpty() && !pesoPacienteStr.isEmpty()
&& !edadPacienteStr.isEmpty()) {
try {
int edadPaciente = Integer.parseInt(edadPacienteStr);
double alturaPaciente = Double.parseDouble(alturaPacienteStr);
double pesoPaciente = Double.parseDouble(pesoPacienteStr);
Paciente nuevoPaciente = new Paciente(numIdentificacionPaciente, nombrePaciente,
edadPaciente, sexoPaciente,
alturaPaciente, pesoPaciente,fechaNacPaciente);
pacientes.put(numIdentificacionPaciente, nuevoPaciente);
txtResultado.setText("El paciente se ha añadido correctamente.");
} catch (NumberFormatException ex) {
txtResultado.setText("Los valores numéricos o las fechas deben ser válidos.");
}
} else {
txtResultado.setText("Por favor ingrese todos los datos requeridos.");
}
}
} else if (e.getActionCommand().equals("Mostrar")) {
txtResultado.setText("");
if (pacientes.isEmpty()) {
txtResultado.setText("No hay pacientes registrados.");
} else {
for (Paciente paciente : pacientes.values()) {
txtResultado.append(paciente.toString() + "\n");
}
}
} else if (e.getActionCommand().equals("Eliminar")) {
String numIdentificacionPaciente = txtNumIdentificacionPaciente.getText();
if (pacientes.containsKey(numIdentificacionPaciente)) {
pacientes.remove(numIdentificacionPaciente);
txtResultado.setText("El paciente ha sido eliminado correctamente.");
} else {
txtResultado.setText("No se encontró un paciente con el número de identificación proporcionado.");
}
} else if (e.getActionCommand().equals("Salir")) {
dispose();
}
}
}
Clase Vacuna:
public class Vacuna {
private String numIdentificacionVacuna;
private String fechaAplicacion;
private String nombreVacuna;
public Vacuna() {
}
public Vacuna(String numIdentificacionVacuna, String fechaAplicacion, String nombreVacuna) {
this.numIdentificacionVacuna = numIdentificacionVacuna;
this.fechaAplicacion = fechaAplicacion;
this.nombreVacuna = nombreVacuna;
}
public String getNumIdentificacionVacuna() {
return numIdentificacionVacuna;
}
public String getFechaAplicacion() {
return fechaAplicacion;
}
public String getNombreVacuna() {
return nombreVacuna;
}
public void setNumIdentificacionVacuna(String numIdentificacionVacuna) {
this.numIdentificacionVacuna = numIdentificacionVacuna;
}
public void setFechaAplicacion(String fechaAplicacion) {
this.fechaAplicacion = fechaAplicacion;
}
public void setNombreVacuna(String nombreVacuna) {
this.nombreVacuna = nombreVacuna;
}
@Override
public String toString() {
return "Vacuna"
+ " NumI dentificacion Vacuna: " + numIdentificacionVacuna + "\n"
+ " Fecha de Aplicacion: " + fechaAplicacion + "\n"
+ " Nombre Vacuna: " + nombreVacuna + "\n";
}
}
Clase PantallaVacuna:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PantallaVacuna extends JFrame implements ActionListener {
private JTextField txtNumIdentificacionPaciente;
private JTextField txtNumIdentificacionVacuna;
private JTextField txtFechaAplicacion;
private JTextField txtNombreVacuna;
private JTextArea txtResultado;
public PantallaVacuna() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 500);
setLayout(new BorderLayout());
setResizable(false);
setLocationRelativeTo(null);
JPanel panelFormulario = new JPanel(new GridLayout(4, 2, 10, 10));
panelFormulario.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));
JLabel lblNumIdentificacionPaciente = new JLabel("Número de Identificación del Paciente:");
txtNumIdentificacionPaciente = new JTextField();
JLabel lblNumIdentificacionVacuna = new JLabel("Número de Identificación de la Vacuna:");
txtNumIdentificacionVacuna = new JTextField();
JLabel lblFechaAplicacion = new JLabel("Fecha de Aplicación:");
txtFechaAplicacion = new JTextField();
JLabel lblNombreVacuna = new JLabel("Nombre de la Vacuna:");
txtNombreVacuna = new JTextField();
panelFormulario.add(lblNumIdentificacionPaciente);
panelFormulario.add(txtNumIdentificacionPaciente);
panelFormulario.add(lblNumIdentificacionVacuna);
panelFormulario.add(txtNumIdentificacionVacuna);
panelFormulario.add(lblFechaAplicacion);
panelFormulario.add(txtFechaAplicacion);
panelFormulario.add(lblNombreVacuna);
panelFormulario.add(txtNombreVacuna);
JButton btnAgregarVacuna = new JButton("Agregar Vacuna");
btnAgregarVacuna.addActionListener(this);
JButton btnMostrarVacunas = new JButton("Mostrar Vacunas");
btnMostrarVacunas.addActionListener(this);
JButton btnEliminarVacuna = new JButton("Eliminar Vacuna");
btnEliminarVacuna.addActionListener(this);
JButton btnSalir = new JButton("Salir");
btnSalir.addActionListener(this);
panelFormulario.add(btnAgregarVacuna);
panelFormulario.add(btnMostrarVacunas);
panelFormulario.add(btnEliminarVacuna);
panelFormulario.add(btnSalir);
txtResultado = new JTextArea();
txtResultado.setEditable(false);
JScrollPane scrollPane = new JScrollPane(txtResultado);
scrollPane.setPreferredSize(new Dimension(560, 200));
JPanel panelPrincipal = new JPanel(new BorderLayout());
panelPrincipal.add(panelFormulario, BorderLayout.NORTH);
panelPrincipal.add(scrollPane, BorderLayout.CENTER);
panelPrincipal.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
add(panelPrincipal);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Agregar Vacuna")) {
String numIdentificacionPaciente = txtNumIdentificacionPaciente.getText();
String numIdentificacionVacuna = txtNumIdentificacionVacuna.getText();
String fechaAplicacion = txtFechaAplicacion.getText();
String nombreVacuna = txtNombreVacuna.getText();
} else if (e.getActionCommand().equals("Mostrar Vacunas")) {
String numIdentificacionPaciente = txtNumIdentificacionPaciente.getText();
} else if (e.getActionCommand().equals("Eliminar Vacuna")) {
String numIdentificacionPaciente = txtNumIdentificacionPaciente.getText();
String numIdentificacionVacuna = txtNumIdentificacionVacuna.getText();
} else if (e.getActionCommand().equals("Salir")) {
dispose();
}
}
}
Clase Cita:
public class Cita {
private String numIdentificacionCita;
private String fecha;
private String hora;
}
Clase Expediente:
public class Expediente {
private String numIdentificacionExpediente;
private String diagnostico;
}