# cactuzzz24/-proyecto-final-poo-csti-1830-4361 architecture

> Architecture diagram of the GitHub repository cactuzzz24/-proyecto-final-poo-csti-1830-4361, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-07). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361
- Repository: https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361

## Overview

#### Purpose and Runtime
A desktop Java clinic-management system for medical consultations, disease surveillance, vaccinations, patient clinical histories, summaries, and dashboard reporting. It is an Eclipse project with packaged third-party JARs, using Swing/WindowBuilder-style visual screens rather than a web stack. Primary persisted data appears to be local serialized/data files: `ProyectoFinal/clinica.dat` and `ProyectoFinal/clinica_respaldo.dat`.

#### Entry and Session Routing
The user-facing entry point is the login UI at `ProyectoFinal/src/Visual/IniciarSesion.java`. Authentication and role selection route users into distinct principal screens:
- Administrator: `ProyectoFinal/src/Visual/PrincipalAdmin.java`
- Doctor: `ProyectoFinal/src/Visual/PrincipalMedico.java`
- Patient: `ProyectoFinal/src/Visual/PrincipalPaciente.java`

User identity and authorization are represented by `ProyectoFinal/src/Logic/Usuario.java`, with person specialization/modeling in `ProyectoFinal/src/Logic/Persona.java`, `ProyectoFinal/src/Logic/Doctor.java`, and `ProyectoFinal/src/Logic/Paciente.java`.

#### Core Domain and Aggregate Boundary
`ProyectoFinal/src/Logic/Clinica.java` is the likely central clinic aggregate/service: it owns or coordinates the application’s collections, domain operations, and persistence-facing state. The main medical record workflow is modeled through:
- Appointments: `ProyectoFinal/src/Logic/Cita.java`
- Consultations: `ProyectoFinal/src/Logic/Consulta.java`
- Clinical-history summaries: `ProyectoFinal/src/Logic/ResumenClinico.java`

This forms the principal boundary between Swing screens and business data: UI dialogs collect actions and fields; logic objects represent clinic entities and execute domain updates.

#### Clinical Operations
Consultation registration is driven by `ProyectoFinal/src/Visual/RegConsulta.java`, while appointment registration is handled by `ProyectoFinal/src/Visual/RegCita.java`. Their records can be viewed through `ProyectoFinal/src/Visual/ListarConsultas.java` and `ProyectoFinal/src/Visual/ListarCitas.java`.

Disease monitoring is modeled by `ProyectoFinal/src/Logic/Enfermedad.java` and managed through `ProyectoFinal/src/Visual/RegEnfermedad.java` / `ProyectoFinal/src/Visual/ListarEnfermedad.java`. Vaccination management uses `ProyectoFinal/src/Logic/Vacuna.java`, with registration/application screens at `ProyectoFinal/src/Visual/RegVacuna.java` and `ProyectoFinal/src/Visual/AplicarVacuna.java`.

#### Administration and Master Data
User registration is split between general administration and patient-oriented onboarding:
- `ProyectoFinal/src/Visual/RegUsuario.java`
- `ProyectoFinal/src/Visual/RegUsuarioParaPaciente.java`

Role/entity listings expose administrative read and maintenance flows: `ProyectoFinal/src/Visual/ListarAdministrador.java`, `ProyectoFinal/src/Visual/ListarDoctor.java`, and `ProyectoFinal/src/Visual/ListarPaciente.java`. These screens are clients of the domain model rather than separate service tiers.

#### Reporting and Visualization
Dashboard/chart refresh logic is concentrated in `ProyectoFinal/src/Logic/UptadeGraficas.java`. It likely transforms clinic data into chart-ready datasets for the principal interfaces. Reporting depends on bundled JFreeChart and JCommon libraries in `ProyectoFinal/lib/jfreechart-1.0.19.jar` and `ProyectoFinal/lib/jcommon-1.0.23.jar`; date input uses `ProyectoFinal/lib/jdatepicker-1.3.4.jar`.

#### Persistence, Integrations, and Deployment Shape
The application is local-first: no database schema, build system, or remote API client is present in the tree. `clinica.dat` is the main data store and `clinica_respaldo.dat` is a backup artifact, implying file-based persistence coordinated from the logic layer. `ProyectoFinal/src/server/Servidor.java` indicates a server/runtime boundary may exist, but the repository’s dominant architecture remains a Java desktop client with local domain objects and data files. Phone validation/formatting can use bundled `ProyectoFinal/lib/libphonenumber-8.13.16.jar`.

Main entry points: [`ProyectoFinal/src/Logic/Clinica.java`](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Clinica.java) (Clinic aggregate), [`ProyectoFinal/src/Visual/PrincipalAdmin.java`](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/PrincipalAdmin.java) (Role principal screens), [`ProyectoFinal/src/Logic/UptadeGraficas.java`](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/UptadeGraficas.java) (Chart refresh), [`ProyectoFinal/src/Visual/IniciarSesion.java`](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/IniciarSesion.java) (Login & role routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Swing UI"]
  node_login["Login &amp; role routing<br/>Swing screen<br/>[IniciarSesion.java]"]
  node_principal_screens["Role principal screens<br/>Swing screens"]
  node_consultation_ui["Consultation workflow<br/>Swing screens<br/>[RegConsulta.java]"]
  node_appointment_ui["Appointment workflow<br/>Swing screens<br/>[RegCita.java]"]
  node_surveillance_ui["Disease management<br/>Swing screens<br/>[RegEnfermedad.java]"]
  node_vaccination_ui["Vaccination workflow<br/>Swing screens<br/>[RegVacuna.java]"]
  node_user_admin_ui["User administration<br/>Swing screens<br/>[RegUsuario.java]"]
end

subgraph group_domain["Clinic Domain"]
  node_clinic{{"Clinic aggregate<br/>domain service<br/>[Clinica.java]"}}
  node_identity["Users &amp; people<br/>domain model<br/>[Usuario.java]"]
  node_medical_records["Medical records<br/>domain model<br/>[Cita.java]"]
  node_disease["Disease records<br/>domain model<br/>[Enfermedad.java]"]
  node_vaccine["Vaccines<br/>domain model<br/>[Vacuna.java]"]
  node_charts["Chart refresh<br/>reporting logic"]
end

subgraph group_storage["Local Storage"]
  node_clinic_data[("Clinic data<br/>serialized data file<br/>[clinica.dat]")]
  node_backup_data[("Clinic backup<br/>serialized data file")]
end

subgraph group_libraries["Bundled Libraries"]
  node_chart_libs["JFreeChart / JCommon<br/>chart libraries"]
  node_date_picker["Date picker<br/>UI library"]
  node_phone_lib["Phone validation<br/>validation library"]
end

node_server["Server runtime<br/>Java server<br/>[Servidor.java]"]

node_login -->|"authenticates"| node_identity
node_login -->|"routes by role"| node_principal_screens
node_principal_screens -->|"uses"| node_clinic
node_consultation_ui -->|"registers and reads"| node_clinic
node_appointment_ui -->|"registers and reads"| node_clinic
node_surveillance_ui -->|"manages"| node_clinic
node_vaccination_ui -->|"manages"| node_clinic
node_user_admin_ui -->|"maintains users"| node_clinic
node_clinic -->|"coordinates"| node_identity
node_clinic -->|"coordinates"| node_medical_records
node_clinic -->|"coordinates"| node_disease
node_clinic -->|"coordinates"| node_vaccine
node_clinic -->|"persists"| node_clinic_data
node_clinic_data -.->|"backs up to"| node_backup_data
node_clinic -->|"supplies data"| node_charts
node_charts -->|"renders with"| node_chart_libs
node_principal_screens -->|"refreshes dashboards"| node_charts
node_appointment_ui -.->|"uses dates"| node_date_picker
node_user_admin_ui -.->|"validates phones"| node_phone_lib
node_server -.->|"possible access boundary"| node_clinic

click node_login "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/IniciarSesion.java"
click node_principal_screens "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/PrincipalAdmin.java"
click node_consultation_ui "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegConsulta.java"
click node_appointment_ui "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegCita.java"
click node_surveillance_ui "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegEnfermedad.java"
click node_vaccination_ui "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegVacuna.java"
click node_user_admin_ui "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegUsuario.java"
click node_clinic "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Clinica.java"
click node_identity "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Usuario.java"
click node_medical_records "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Cita.java"
click node_disease "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Enfermedad.java"
click node_vaccine "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Vacuna.java"
click node_charts "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/UptadeGraficas.java"
click node_clinic_data "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/clinica.dat"
click node_backup_data "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/clinica_respaldo.dat"
click node_server "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/server/Servidor.java"
click node_chart_libs "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/lib/jfreechart-1.0.19.jar"
click node_date_picker "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/lib/jdatepicker-1.3.4.jar"
click node_phone_lib "https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/lib/libphonenumber-8.13.16.jar"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_login,node_principal_screens,node_consultation_ui,node_appointment_ui,node_surveillance_ui,node_vaccination_ui,node_user_admin_ui toneBlue
class node_clinic,node_identity,node_medical_records,node_disease,node_vaccine,node_charts toneAmber
class node_clinic_data,node_backup_data toneMint
class node_chart_libs,node_date_picker,node_phone_lib toneRose
class node_server toneNeutral
```

## Components

### Swing UI

Role-specific screens and clinical workflows.

- [Login & role routing](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/IniciarSesion.java): Swing screen · `ProyectoFinal/src/Visual/IniciarSesion.java`
- [Role principal screens](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/PrincipalAdmin.java): Swing screens · Administrator, doctor, and patient landing screens. · `ProyectoFinal/src/Visual/PrincipalAdmin.java`
- [Consultation workflow](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegConsulta.java): Swing screens · Register and list consultations. · `ProyectoFinal/src/Visual/RegConsulta.java`
- [Appointment workflow](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegCita.java): Swing screens · Register and list appointments. · `ProyectoFinal/src/Visual/RegCita.java`
- [Disease management](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegEnfermedad.java): Swing screens · Register and list disease records. · `ProyectoFinal/src/Visual/RegEnfermedad.java`
- [Vaccination workflow](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegVacuna.java): Swing screens · Register vaccines and apply them. · `ProyectoFinal/src/Visual/RegVacuna.java`
- [User administration](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Visual/RegUsuario.java): Swing screens · User onboarding and role listings. · `ProyectoFinal/src/Visual/RegUsuario.java`

### Clinic Domain

Core entities and application state.

- [Clinic aggregate](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Clinica.java): domain service · Coordinates collections, domain operations, and persisted state. · `ProyectoFinal/src/Logic/Clinica.java`
- [Users & people](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Usuario.java): domain model · Users with doctor and patient person specializations. · `ProyectoFinal/src/Logic/Usuario.java`
- [Medical records](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Cita.java): domain model · Appointments, consultations, and clinical summaries. · `ProyectoFinal/src/Logic/Cita.java`
- [Disease records](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Enfermedad.java): domain model · `ProyectoFinal/src/Logic/Enfermedad.java`
- [Vaccines](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/Vacuna.java): domain model · `ProyectoFinal/src/Logic/Vacuna.java`
- [Chart refresh](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/Logic/UptadeGraficas.java): reporting logic · Transforms clinic data into chart-ready datasets. · `ProyectoFinal/src/Logic/UptadeGraficas.java`

### Local Storage

Serialized clinic data and backup.

- [Clinic data](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/clinica.dat): serialized data file · Primary local persisted state. · `ProyectoFinal/clinica.dat`
- [Clinic backup](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/clinica_respaldo.dat): serialized data file · `ProyectoFinal/clinica_respaldo.dat`

### Bundled Libraries

- [JFreeChart / JCommon](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/lib/jfreechart-1.0.19.jar): chart libraries · `ProyectoFinal/lib/jfreechart-1.0.19.jar`
- [Date picker](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/lib/jdatepicker-1.3.4.jar): UI library · `ProyectoFinal/lib/jdatepicker-1.3.4.jar`
- [Phone validation](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/lib/libphonenumber-8.13.16.jar): validation library · `ProyectoFinal/lib/libphonenumber-8.13.16.jar`

### Other components

- [Server runtime](https://github.com/cactuzzz24/-proyecto-final-poo-csti-1830-4361/blob/main/ProyectoFinal/src/server/Servidor.java): Java server · Potential secondary runtime boundary. · `ProyectoFinal/src/server/Servidor.java`

## Connections

- Login & role routing → Users & people: authenticates
- Login & role routing → Role principal screens: routes by role
- Role principal screens → Clinic aggregate: uses
- Consultation workflow → Clinic aggregate: registers and reads
- Appointment workflow → Clinic aggregate: registers and reads
- Disease management → Clinic aggregate: manages
- Vaccination workflow → Clinic aggregate: manages
- User administration → Clinic aggregate: maintains users
- Clinic aggregate → Users & people: coordinates
- Clinic aggregate → Medical records: coordinates
- Clinic aggregate → Disease records: coordinates
- Clinic aggregate → Vaccines: coordinates
- Clinic aggregate → Clinic data: persists
- Clinic data → Clinic backup: backs up to
- Clinic aggregate → Chart refresh: supplies data
- Chart refresh → JFreeChart / JCommon: renders with
- Role principal screens → Chart refresh: refreshes dashboards
- Appointment workflow → Date picker: uses dates
- User administration → Phone validation: validates phones
- Server runtime → Clinic aggregate: possible access boundary
