ByteNine es un sistema de gestión médica desarrollado en Python como proyecto integrador de tercer semestre. Permite administrar pacientes, historias clínicas, turnos, recetas médicas y usuarios del sistema a través de una interfaz gráfica moderna construida con CustomTkinter y una base de datos PostgreSQL.
| Integrante | GitHub | Rol en el Proyecto |
|---|---|---|
| Agustín Santarena | @AgusSantarena | Owner / Conexión BD / Turnos / Revisor de Código |
| Gabriel Santarena | @GabrielSantarena | Módulo Pacientes / Revisor de Código |
| Santiago Martín | @santy171004 | Módulo Recetas / Carga y asignación de Issues |
| Nahuel Spikerman | @nawe2 | Módulo Usuarios / Carga de la Wiki |
| Gustavo Rodríguez | @GustavoRodriguez79 | Módulo Historia Clínica / Carga del README |
| Herramienta | Versión | Descripción |
|---|---|---|
| 🐍 Python | 3.13.2 | Lenguaje principal del proyecto |
| 💻 PyCharm Community | 2025.2.6 | IDE principal de desarrollo |
| 📝 Visual Studio Code | Última versión | IDE alternativo |
| 🗄️ PostgreSQL | 18.3 | Motor de base de datos |
| 🖥️ pgAdmin 4 | Última versión | Administración visual de la BD |
| 🐙 GitHub Desktop | Última versión | Control de versiones |
| 🎨 CustomTkinter | Última versión | Interfaz gráfica moderna |
| 🔌 psycopg2 | Última versión | Conector Python-PostgreSQL |
| 🔐 python-dotenv | Última versión | Manejo de variables de entorno |
PI_TercerSemestre-ByteNine/
│
├── DB/ # Scripts SQL por módulo
│ ├── Agustin_Turnos/
│ │ └── turnos.sql
│ ├── Gabriel_Paciente/
│ │ └── paciente.sql
│ ├── Gustavo_HistoriaClinica/
│ │ └── historia_clinica.sql
│ ├── Nahuel_Usuario/
│ │ └── usuario.sql
│ ├── Santiago_Receta/
│ │ └── receta.sql
│ └── ByteNine.sql # Script completo unificado
│
├── Interfases/ # Módulos de interfaz gráfica (UI)
│ ├── UI_Historial.py # Historia Clínica — Gustavo
│ ├── UI_Paciente.py # Pacientes — Gabriel
│ ├── UI_Recetas.py # Recetas — Santiago
│ ├── UI_Turno.py # Turnos — Agustín
│ └── UI_Usuario.py # Usuarios — Nahuel
│
├── Logica/ # Módulos de lógica de negocio (CRUD)
│ ├── Logica_Historial.py # Historia Clínica — Gustavo
│ ├── Logica_Paciente.py # Pacientes — Gabriel
│ ├── Logica_Recetas.py # Recetas — Santiago
│ ├── Logica_Turno.py # Turnos — Agustín
│ └── Logica_Usuario.py # Usuarios — Nahuel
│
├── .env # Variables de entorno (NO se sube al repo)
├── .gitignore # Archivos ignorados por Git
├── Conexion.py # Módulo de conexión a PostgreSQL
├── main.py # Punto de entrada del sistema
├── README.md # Este archivo
└── requirements.txt # Dependencias del proyecto
Permite registrar, buscar, editar y eliminar pacientes del sistema. Cada paciente se identifica por su DNI único.
- Archivos:
Logica/Logica_Paciente.py·Interfases/UI_Paciente.py - Tabla BD:
public.paciente
Administra el historial médico completo de cada paciente: grupo sanguíneo, antecedentes familiares y personales, alergias, enfermedades crónicas, medicación habitual y observaciones.
- Archivos:
Logica/Logica_Historial.py·Interfases/UI_Historial.py - Tabla BD:
public.historia_clinica - Relación: FK hacia
public.paciente
Gestiona la agenda médica: registro de turnos por DNI de paciente, visualización del día, cambio de estado (Pendiente / Aceptado / Cancelado) y eliminación.
- Archivos:
Logica/Logica_Turno.py·Interfases/UI_Turno.py - Tabla BD:
public.turnos - Relación: FK hacia
public.paciente
Permite emitir recetas médicas con medicamento, dosis, frecuencia, días de tratamiento e indicaciones. Incluye historial de recetas por paciente.
- Archivos:
Logica/Logica_Recetas.py·Interfases/UI_Recetas.py - Tabla BD:
public.receta - Relación: FK hacia
public.pacienteypublic.usuario
Registro de médicos y personal del sistema con autenticación por email y contraseña hasheada (SHA-256). Soporta roles: medico, recepcionista, admin.
- Archivos:
Logica/Logica_Usuario.py·Interfases/UI_Usuario.py - Tabla BD:
public.usuario
El sistema utiliza PostgreSQL 18.3. El script completo para crear todas las tablas se encuentra en DB/ByteNine.sql.
paciente (paciente_id)
│
├──► historia_clinica (id_paciente FK)
├──► turnos (paciente_id FK)
└──► receta (paciente_id FK)
usuario (id_usuario)
└──► receta (medico_id FK)
La conexión se configura mediante variables de entorno en un archivo .env en la raíz del proyecto:
DB_USER=postgres
DB_PASSWORD=tu_contraseña
DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=nombre_bd
⚠️ El archivo.envnunca se sube al repositorio. Cada integrante crea el suyo localmente con sus propias credenciales.
git clone https://github.com/GabrielSantarena/PI_TercerSemestre-ByteNine.git
cd PI_TercerSemestre-ByteNinepython -m venv venv
# Windows
venv\Scripts\activate
# Mac/Linux
source venv/bin/activatepip install -r requirements.txt- Abrí pgAdmin 4
- Creá una base de datos nueva (ej:
Prueba) - Abrí el Query Tool, cargá
DB/ByteNine.sqly ejecutá conF5
Creá un archivo .env en la raíz del proyecto con tus credenciales:
DB_USER=postgres
DB_PASSWORD=tu_contraseña
DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=nombre_bdpython main.py| Rama | Uso |
|---|---|
main |
Código estable y final. Solo Agustín puede hacer merge acá. |
respaldo-main |
Rama de desarrollo activo del equipo. |
- Sincronización obligatoria: Antes de comenzar, siempre hacer Fetch y Pull desde
respaldo-mainen GitHub Desktop. - Trabajo secuencial: Un desarrollador comienza y termina su tarea. Solo después de revisión y aprobación el siguiente puede empezar.
- No modificar el
.gitignoresin consenso de todo el equipo. - No subir el archivo
.envni elConexion.pycon credenciales hardcodeadas.
| Archivo/Carpeta | Motivo |
|---|---|
.env |
Contiene contraseñas y datos sensibles |
venv/ |
Se regenera con pip install -r requirements.txt |
__pycache__/ |
Archivos compilados temporales, no son código fuente |
.idea/ |
Configuración personal de PyCharm |
.vscode/ |
Configuración personal de VS Code |
- Finalizás tu tarea y la probás localmente.
- Hacés commit con un mensaje descriptivo y push a
respaldo-main. - Abrís un Pull Request hacia
respaldo-main. - Los revisores (Gabriel y Agustín) aprueban o solicitan correcciones.
- Una vez aprobado, Agustín (Owner) hace el merge a
main.
- 👤 Revisores de Código: Gabriel Santarena · Agustín Santarena
- 📋 Issues y Asignación de Tareas: Santiago Martín
- 📖 Wiki del Proyecto: Nahuel Spikerman
- 📝 README del Proyecto: Gustavo Rodríguez
- 🔀 Merge a
main(Owner): Agustín Santarena
customtkinter
psycopg2-binary
python-dotenv
- Las contraseñas de usuarios se almacenan hasheadas con SHA-256, nunca en texto plano.
- La columna
fecha_actualizacionenhistoria_clinicase actualiza automáticamente conCURRENT_TIMESTAMPdesde PostgreSQL.
Desarrollado por el equipo ByteNine — Tercer Semestre Cohorte 2025