Skip to content

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

Repository files navigation

🏥 PI_TercerSemestre-ByteNine

Sistema Médico Integrado — Proyecto Integrador Tercer Semestre

Python PyCharm PostgreSQL CustomTkinter Estado


📋 Descripción General

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.


👥 Integrantes del Equipo

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

💻 Herramientas y Tecnologías

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

🏗️ Estructura del Proyecto

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

🧩 Módulos del Sistema

👥 Gestión de Pacientes

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

📋 Historia Clínica

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

📅 Agenda de Turnos

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

🩺 Control de Recetas

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.paciente y public.usuario

🔐 Usuarios y Accesos

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

🗄️ Base de Datos

El sistema utiliza PostgreSQL 18.3. El script completo para crear todas las tablas se encuentra en DB/ByteNine.sql.

Diagrama de Relaciones

paciente (paciente_id)
    │
    ├──► historia_clinica (id_paciente FK)
    ├──► turnos (paciente_id FK)
    └──► receta (paciente_id FK)

usuario (id_usuario)
    └──► receta (medico_id FK)

Configuración de Conexión

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 .env nunca se sube al repositorio. Cada integrante crea el suyo localmente con sus propias credenciales.


🚀 Instrucciones de Instalación y Ejecución

1. Clonar el repositorio

git clone https://github.com/GabrielSantarena/PI_TercerSemestre-ByteNine.git
cd PI_TercerSemestre-ByteNine

2. Crear y activar el entorno virtual

python -m venv venv

# Windows
venv\Scripts\activate

# Mac/Linux
source venv/bin/activate

3. Instalar dependencias

pip install -r requirements.txt

4. Configurar la base de datos

  • Abrí pgAdmin 4
  • Creá una base de datos nueva (ej: Prueba)
  • Abrí el Query Tool, cargá DB/ByteNine.sql y ejecutá con F5

5. Crear el archivo .env

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_bd

6. Ejecutar el sistema

python main.py

🔄 Flujo de Trabajo y Colaboración

Ramas del Repositorio

Rama Uso
main Código estable y final. Solo Agustín puede hacer merge acá.
respaldo-main Rama de desarrollo activo del equipo.

Reglas Fundamentales

  1. Sincronización obligatoria: Antes de comenzar, siempre hacer Fetch y Pull desde respaldo-main en GitHub Desktop.
  2. Trabajo secuencial: Un desarrollador comienza y termina su tarea. Solo después de revisión y aprobación el siguiente puede empezar.
  3. No modificar el .gitignore sin consenso de todo el equipo.
  4. No subir el archivo .env ni el Conexion.py con credenciales hardcodeadas.

Archivos que NO se suben al repo

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

Proceso de Revisión

  1. Finalizás tu tarea y la probás localmente.
  2. Hacés commit con un mensaje descriptivo y push a respaldo-main.
  3. Abrís un Pull Request hacia respaldo-main.
  4. Los revisores (Gabriel y Agustín) aprueban o solicitan correcciones.
  5. Una vez aprobado, Agustín (Owner) hace el merge a main.

Roles de Gestión del Equipo


📦 Dependencias (requirements.txt)

customtkinter
psycopg2-binary
python-dotenv

⚠️ Notas Importantes

  • Las contraseñas de usuarios se almacenan hasheadas con SHA-256, nunca en texto plano.
  • La columna fecha_actualizacion en historia_clinica se actualiza automáticamente con CURRENT_TIMESTAMP desde PostgreSQL.

Desarrollado por el equipo ByteNine — Tercer Semestre Cohorte 2025

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages