Skip to content
This repository was archived by the owner on Aug 29, 2026. It is now read-only.

Repository files navigation

MaincipitoApp — Plataforma de Hospitalización Domiciliaria y Gestión Clínica

.NET C# Base de Datos Docker Pruebas Misión TIC

MaincipitoApp es una aplicación web empresarial diseñada para la gestión clínica de pacientes ambulatorios en programas de hospitalización en casa, seguimiento de historias clínicas, registro y monitoreo de parámetros fisiológicos (signos vitales) y asignación de personal médico.

Originado como proyecto integrador en el programa Misión TIC 2022 (Universidad de Caldas), este repositorio ha sido completamente refactorizado y modernizado a .NET 8, adoptando Arquitectura N-Capas, el Patrón de Repositorio Genérico 100% Asíncrono (Async/Await), gobernanza de seguridad con Secret Manager (user-secrets) y persistencia en contenedor Microsoft SQL Server 2022 con Docker Compose.


🏛️ Arquitectura y Estructura de la Solución

La solución está estructurada bajo principios de separación de responsabilidades y Domain-Driven Design (DDD), dividida formalmente en src/ (código de producción) y tests/ (suite de pruebas automatizadas):

Maincipito/
├── src/
│   ├── Maincipito.Domain/          # Capa de Dominio pura: Entidades, Enums, Contratos de Repositorios (DIP)
│   ├── Maincipito.Persistence/     # Capa de Infraestructura: DbContext EF Core 8, Repositorios Async, Migraciones
│   └── Maincipito.Web/             # Capa de Presentación: ASP.NET Core 8 Razor Pages, Identity UI y Tokens de Diseño
└── tests/
    ├── Maincipito.Domain.Tests/    # Pruebas unitarias: Invariantes de dominio y validación DataAnnotations
    └── Maincipito.Persistence.Tests/# Pruebas de integración: Repositorios aislados con EF Core InMemory DB

Principales Aspectos de Ingeniería

  1. Principio de Inversión de Dependencias (DIP): Las interfaces de persistencia (IRepository<T>, IPatientRepository, etc.) residen en la capa de Dominio, mientras que las implementaciones de base de datos están aisladas en Persistencia, garantizando desacoplamiento del framework.
  2. C# 12 Moderno: Adopción de File-scoped namespaces, análisis de nulabilidad estricto (<Nullable>enable</Nullable>), Primary Constructors, Collection Expressions ([]) y Pattern Matching.
  3. Acceso a Datos Asíncrono de Alto Rendimiento: Consultas optimizadas con Task<T>, CancellationToken, AsNoTracking() para lecturas y mitigación de explosión cartesiana mediante QuerySplittingBehavior.SplitQuery.
  4. Seguridad y Gestión de Secretos: Eliminación total de credenciales en código fuente mediante dotnet user-secrets en desarrollo y parametrización con .env para Docker.

📸 Capturas de la Interfaz

Gestión y Detalles del Paciente Historia Clínica y Soporte de Decisiones
Detalles del Paciente Historia Clínica
Acceso y Autenticación Segura Registro de Pacientes
Inicio de Sesión Listado de Pacientes

🛠️ Stack Tecnológico

Componente Tecnología
Lenguaje y Runtime C# 12 / .NET 8.0 SDK
Presentación Web ASP.NET Core 8 Razor Pages (Minimal Hosting en Program.cs)
Autenticación y Seguridad ASP.NET Core Identity (Autenticación basada en cookies)
ORM y Persistencia Entity Framework Core 8.0 (Microsoft.EntityFrameworkCore.SqlServer)
Motor de Base de Datos Microsoft SQL Server 2022 (Linux Container vía Docker Compose)
Suite de Pruebas xUnit, FluentAssertions, EF Core In-Memory Database Provider
Diseño y UI Bootstrap 5, FontAwesome, Tokens de Diseño CSS con numeración tabular

🚀 Guía de Instalación y Ejecución Local

Prerrequisitos

1. Clonar el repositorio

git clone https://github.com/Novav20/MaincipitoApp.git
cd MaincipitoApp

2. Configurar Entorno e Iniciar SQL Server

# Copiar plantilla de variables de entorno
cp .env.example .env

# Levantar el contenedor de SQL Server 2022 en segundo plano
docker compose up -d

3. Configurar Secretos de Desarrollo (User Secrets)

# Configurar secretos del proyecto Web
dotnet user-secrets init --project src/Maincipito.Web
dotnet user-secrets set "ConnectionStrings:MyAppContext" "Server=localhost,1433;Database=MaincipitoAppDb;User Id=sa;Password=MaincipitoStrongPass2026!;TrustServerCertificate=True;MultipleActiveResultSets=true" --project src/Maincipito.Web
dotnet user-secrets set "ConnectionStrings:IdentityDataContextConnection" "Server=localhost,1433;Database=MaincipitoIdentityDb;User Id=sa;Password=MaincipitoStrongPass2026!;TrustServerCertificate=True;MultipleActiveResultSets=true" --project src/Maincipito.Web

# Configurar secretos del proyecto Persistence (para migraciones en tiempo de diseño)
dotnet user-secrets init --project src/Maincipito.Persistence
dotnet user-secrets set "ConnectionStrings:MyAppContext" "Server=localhost,1433;Database=MaincipitoAppDb;User Id=sa;Password=MaincipitoStrongPass2026!;TrustServerCertificate=True;MultipleActiveResultSets=true" --project src/Maincipito.Persistence

4. Aplicar Migraciones de Base de Datos

# Aplicar migraciones del Dominio
dotnet ef database update --project src/Maincipito.Persistence --startup-project src/Maincipito.Persistence --context MaincipitoDbContext

# Aplicar migraciones de Seguridad e Identidad
dotnet ef database update --project src/Maincipito.Web --startup-project src/Maincipito.Web --context IdentityDataContext

5. Iniciar la Aplicación Web

dotnet run --project src/Maincipito.Web

Abre en tu navegador: http://localhost:5000 (o https://localhost:5001).


🧪 Ejecución de Pruebas Automatizadas

Ejecuta la suite completa de pruebas unitarias y de integración:

dotnet test

📄 Licencia

Este proyecto es de código abierto y está disponible bajo la licencia MIT.

About

Plataforma de Hospitalización Domiciliaria y Gestión Clínica en .NET 8. Implementa Arquitectura N-Capas, EF Core con SQL Server 2022 en Docker, Razor Pages, Patrón Repositorio Genérico y suite de pruebas xUnit.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages