# franklin171808/gestion-citas-medicas architecture

> Architecture diagram of the GitHub repository franklin171808/gestion-citas-medicas, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/franklin171808/gestion-citas-medicas
- Repository: https://github.com/franklin171808/gestion-citas-medicas

## Overview

This is a Java console system for medical-clinic reception. A receptionist selects a patient (registering one if needed), doctor, available date and slot, and room; the system schedules the appointment, collects payment when required or confirms exempt appointments, and supports attendance, receipts, reports and persistence. The graph separates workflow, domain, reporting and storage. Some menu actions and integrations are documented rather than fully shown in source excerpts; those links cite the README.

Main entry points: [`src/main/java/app/MenuPrincipal.java`](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/app/MenuPrincipal.java) (Console menu), [`src/main/java/modelo/Cita.java`](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/Cita.java) (Appointment lifecycle), [`src/main/java/modelo/CentroSalud.java`](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/CentroSalud.java) (Clinic registry), [`src/main/java/dao/CitaDAO.java`](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/dao/CitaDAO.java) (Appointment DAO)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Reception workflow"]
  node_console["Console menu<br/>[MenuPrincipal.java]"]
  node_console_io["Console input<br/>[LectorConsola.java]"]
  node_payments["Payment methods<br/>[MetodoPago.java]"]
end

subgraph group_domain["Clinic domain"]
  node_clinic["Clinic registry<br/>[CentroSalud.java]"]
  node_appointment["Appointment lifecycle<br/>[Cita.java]"]
  node_clinician["Doctor availability<br/>[Medico.java]"]
  node_patient["Patient coverage<br/>[Paciente.java]"]
  node_entities["Clinic entities"]
end

subgraph group_reporting["Receipts and reports"]
  node_receipt["Appointment receipt"]
  node_availability_report["Availability report"]
  node_report_formats["HTML / XML export<br/>[Reporte.java]"]
end

subgraph group_persistence["Persistence"]
  node_jdbc["SQL connection<br/>[ConexionBD.java]"]
  node_appointment_dao["Appointment DAO<br/>[CitaDAO.java]"]
  node_clinic_dao["Clinic loader<br/>[CentroDAO.java]"]
  node_sqlserver[("SQL Server")]
  node_serialized_state["Serialized clinic state<br/>[CentroSalud.java]"]
end

node_receptionist(("Receptionist"))

node_receptionist -->|"uses"| node_console
node_console -->|"reads input"| node_console_io
node_console -->|"manages appointments"| node_clinic
node_console -->|"saves appointments"| node_appointment_dao
node_console -->|"tests connection"| node_jdbc
node_clinic -->|"creates and restores"| node_appointment
node_appointment -->|"checks availability"| node_clinician
node_appointment -->|"checks coverage"| node_patient
node_appointment -->|"processes payment"| node_payments
node_console -->|"generates receipt"| node_receipt
node_console -->|"shows availability"| node_availability_report
node_console -->|"exports HTML/XML"| node_report_formats
node_report_formats --> node_sqlserver
node_clinic_dao -->|"opens connection"| node_jdbc
node_appointment_dao -->|"opens connection"| node_jdbc
node_clinic_dao -->|"loads clinic data"| node_sqlserver
node_appointment_dao -->|"reads and writes"| node_sqlserver
node_clinic -->|"serializes state"| node_serialized_state
node_console -->|"loads on startup"| node_clinic_dao

click node_console "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/app/MenuPrincipal.java"
click node_console_io "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/util/LectorConsola.java"
click node_clinic "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/CentroSalud.java"
click node_appointment "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/Cita.java"
click node_clinician "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/Medico.java"
click node_patient "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/Paciente.java"
click node_entities "https://github.com/franklin171808/gestion-citas-medicas/tree/main/src/main/java/modelo"
click node_payments "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/pagos/MetodoPago.java"
click node_receipt "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/reportes/ComprobanteCita.java"
click node_availability_report "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/reportes/ReporteDisponibilidad.java"
click node_report_formats "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/reportes/Reporte.java"
click node_jdbc "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/dao/ConexionBD.java"
click node_appointment_dao "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/dao/CitaDAO.java"
click node_clinic_dao "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/dao/CentroDAO.java"
click node_serialized_state "https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/CentroSalud.java"

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_console,node_console_io,node_payments toneBlue
class node_clinic,node_appointment,node_clinician,node_patient,node_entities toneAmber
class node_receipt,node_availability_report,node_report_formats toneMint
class node_jdbc,node_appointment_dao,node_clinic_dao,node_sqlserver,node_serialized_state toneRose
class node_receptionist toneIndigo
```

## Components

### Reception workflow

- [Console menu](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/app/MenuPrincipal.java): `src/main/java/app/MenuPrincipal.java`
- [Console input](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/util/LectorConsola.java): `src/main/java/util/LectorConsola.java`
- [Payment methods](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/pagos/MetodoPago.java): `src/main/java/pagos/MetodoPago.java`

### Clinic domain

- [Clinic registry](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/CentroSalud.java): `src/main/java/modelo/CentroSalud.java`
- [Appointment lifecycle](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/Cita.java): `src/main/java/modelo/Cita.java`
- [Doctor availability](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/Medico.java): `src/main/java/modelo/Medico.java`
- [Patient coverage](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/Paciente.java): `src/main/java/modelo/Paciente.java`
- [Clinic entities](https://github.com/franklin171808/gestion-citas-medicas/tree/main/src/main/java/modelo): `src/main/java/modelo`

### Receipts and reports

- [Appointment receipt](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/reportes/ComprobanteCita.java): `src/main/java/reportes/ComprobanteCita.java`
- [Availability report](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/reportes/ReporteDisponibilidad.java): `src/main/java/reportes/ReporteDisponibilidad.java`
- [HTML / XML export](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/reportes/Reporte.java): `src/main/java/reportes/Reporte.java`

### Persistence

- [SQL connection](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/dao/ConexionBD.java): `src/main/java/dao/ConexionBD.java`
- [Appointment DAO](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/dao/CitaDAO.java): `src/main/java/dao/CitaDAO.java`
- [Clinic loader](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/dao/CentroDAO.java): `src/main/java/dao/CentroDAO.java`
- **SQL Server**
- [Serialized clinic state](https://github.com/franklin171808/gestion-citas-medicas/blob/main/src/main/java/modelo/CentroSalud.java): `src/main/java/modelo/CentroSalud.java`

### Other components

- **Receptionist**

## Connections

- Receptionist → Console menu: uses (evidence: `README.md`)
- Console menu → Console input: reads input (evidence: `src/main/java/app/MenuPrincipal.java`)
- Console menu → Clinic registry: manages appointments (evidence: `src/main/java/app/MenuPrincipal.java`)
- Console menu → Appointment DAO: saves appointments (evidence: `src/main/java/app/MenuPrincipal.java`)
- Console menu → SQL connection: tests connection (evidence: `src/main/java/app/MenuPrincipal.java`)
- Clinic registry → Appointment lifecycle: creates and restores (evidence: `src/main/java/modelo/CentroSalud.java`)
- Appointment lifecycle → Doctor availability: checks availability (evidence: `src/main/java/modelo/Recepcionista.java`)
- Appointment lifecycle → Patient coverage: checks coverage (evidence: `src/main/java/modelo/Cita.java`)
- Appointment lifecycle → Payment methods: processes payment (evidence: `src/main/java/modelo/Cita.java`)
- Console menu → Appointment receipt: generates receipt (evidence: `README.md`)
- Console menu → Availability report: shows availability (evidence: `README.md`)
- Console menu → HTML / XML export: exports HTML/XML (evidence: `src/main/java/app/MenuPrincipal.java`)
- HTML / XML export → SQL Server
- Clinic loader → SQL connection: opens connection (evidence: `src/main/java/dao/CentroDAO.java`)
- Appointment DAO → SQL connection: opens connection (evidence: `src/main/java/dao/CitaDAO.java`)
- Clinic loader → SQL Server: loads clinic data (evidence: `README.md`)
- Appointment DAO → SQL Server: reads and writes (evidence: `README.md`)
- Clinic registry → Serialized clinic state: serializes state (evidence: `README.md`)
- Console menu → Clinic loader: loads on startup (evidence: `src/main/java/app/Main.java`)
