Skip to content

BarMan555/hospital-management-system

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

112 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏥 Hospital Management System (HMS)

Hospital Management System — это современный REST API микросервис для управления поликлиникой, построенный на строгих принципах Clean Architecture. Приложение позволяет управлять записями пациентов к врачам, собирать аналитику и обрабатывать внешние потоки данных в реальном времени с использованием gRPC Bidirectional Streaming. Оркестрация сервисов и базы данных полностью автоматизирована через .NET Aspire.

🚀 Ключевые особенности

  • Чистая архитектура (Clean Architecture): Строгое разделение ответственности на слои Domain, Application, Infrastructure и API. Бизнес-логика полностью изолирована от деталей работы базы данных и сети.
  • Микросервисное взаимодействие (gRPC): Реализован паттерн Producer-Consumer. Отдельный микросервис-генератор непрерывно стримит новые данные по HTTP/2, а основное API асинхронно потребляет их через BackgroundService без блокировки основных контроллеров.
  • Cloud-Native Оркестрация: Использование .NET Aspire для бесшовного локального запуска всех компонентов (Main API, gRPC Generator, MongoDB) и сбора телеметрии одной кнопкой.
  • NoSQL Database: Использование документоориентированной БД MongoDB через Entity Framework Core Provider.

🏗 Структура проекта

Решение разделено на логические слои и микросервисы:

  • 📁 Hospital.Domain — Ядро системы. Содержит бизнес-модели (Patient, Doctor, Appointment), Enums и абстракции репозиториев.
  • 📁 Hospital.Application & Hospital.Application.Contracts — Слой бизнес-логики. Содержит сервисы (CRUD и аналитика), DTO и профили AutoMapper для маппинга данных.
  • 📁 Hospital.Infrastructure.EfCore — Слой доступа к данным. Реализация паттерна Repository поверх DbContext для работы с MongoDB.
  • 📁 Hospital.Api — Основной веб-интерфейс (REST API контроллеры) и фоновый gRPC-клиент.
  • 📁 Hospital.Grpc.Server & Hospital.GrpcContracts — Независимый микросервис-генератор данных и общие Protobuf-контракты.
  • 📁 Hospital.AppHost — Проект оркестрации .NET Aspire.

🛠 Технологический стек

  • Платформа: C#, .NET 8
  • База данных: MongoDB, Entity Framework Core 9
  • Межсервисное взаимодействие: gRPC (Bidirectional Streaming, Protobuf)
  • Оркестрация и Телеметрия: .NET Aspire
  • Маппинг данных: AutoMapper
  • Тестирование и мокирование: xUnit, Bogus

⚙️ Установка и запуск (Локальная разработка)

Благодаря использованию .NET Aspire, запуск сложной распределенной системы сводится к одной команде. Вам не нужно вручную поднимать Docker-контейнеры с базой данных — Aspire сделает это автоматически.

Требования

  • .NET 8 SDK
  • Docker Desktop
  • Aspire Workload (устанавливается командой dotnet workload install aspire)

Запуск системы

Перейдите в корневую директорию проекта и запустите AppHost:

dotnet run --project Hospital/Hospital.AppHost

Доступ к сервисам

После запуска в консоли появится ссылка на Aspire Dashboard. Перейдите по ней в браузере, чтобы увидеть:

  • Единый интерфейс управления контейнером MongoDB, REST API и gRPC-сервером.
  • Логи всех запущенных сервисов.
  • Распределенную трассировку (Traces) и метрики производительности.

Для тестирования REST-эндпоинтов кликните на ссылку проекта hospital в дашборде Aspire. Снимок экрана 2026-03-30 в 00 05 23

База данных автоматически заполняется начальным seed-набором данных при первом запуске.

About

REST API сервис для управления поликлиникой

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C# 100.0%