|
1 | | -# MedHead Enterprise Real-Time Emergency Response System Proof of Concept |
2 | | -> This Github repository own a Proof of Concept about Event-Driven & Microservices Architecture, as part of the implementation of a real-time emergency response system for the MedHead Consortium. |
3 | | -> |
4 | | -> A consortium of four leading companies has come together to consolidate the efforts, data, applications and roadmaps of each to develop a next-generation, patient-centric platform capable of improving the basic care offered, while being responsive, operational in real time and capable of making decisions in emergency situations, taking all data into account. |
5 | | -
|
6 | | -## Setup your local environment |
7 | | - |
8 | | -First and foremost, clone this project. |
9 | | - |
10 | | -### Run a Docker PostgreSQL container |
| 1 | +# Système de Réponse d'Urgence en Temps Réel - MedHead Enterprise (Proof of Concept) |
11 | 2 |
|
12 | | -Setup a postgres container to have a database and store persisted data. Otherwise, application won't start. |
| 3 | +> Ce dépôt GitHub contient une preuve de concept basée sur une architecture orientée événements et microservices, dans le cadre de la mise en place d’un système de réponse d’urgence en temps réel pour le consortium MedHead. |
| 4 | +> |
| 5 | +> Un consortium composé de quatre entreprises leaders s’est formé pour mutualiser leurs efforts, données, applications et feuilles de route, afin de développer une plateforme de nouvelle génération, centrée sur le patient. Celle-ci vise à améliorer les soins de base tout en étant réactive, opérationnelle en temps réel et capable de prendre des décisions critiques en situation d’urgence, en tenant compte de toutes les données disponibles. |
| 6 | +
|
| 7 | +## 📁 Structure du projet |
| 8 | +Le dépôt est organisé de la manière suivante : |
| 9 | + |
| 10 | +```bash |
| 11 | +├── .github/workflows/ # Fichiers de configuration CI/CD (GitHub Actions) |
| 12 | +├── backend/ # Code source backend (services, domaine, API, etc.) |
| 13 | +├── doc/ # Documentation du projet |
| 14 | +├── frontend/realtime-emergency-app/ # Application frontend (React, Angular, etc.) |
| 15 | +├── jmeter/ # Scénarios de test de performance JMeter |
| 16 | +├── .gitignore # Fichiers à ignorer par Git |
| 17 | +├── LICENSE # Licence du projet |
| 18 | +├── README.md # Fichier de documentation principal |
| 19 | +├── compose.yml # Configuration Docker Compose pour les microservices |
| 20 | +``` |
13 | 21 |
|
14 | | -1. [**Install Docker desktop**](https://docs.docker.com/desktop/) on your machine. |
| 22 | +## ⚙️ Configuration de votre environnement local |
15 | 23 |
|
16 | | -2. Copy and paste this command in your terminal to run a functional container and match this project local config : |
| 24 | +Avant toute chose, clonez ce projet sur votre machine. |
17 | 25 |
|
18 | | -```shell |
19 | | -docker run --rm -d --name medhead-db -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password -p 5432:5432 postgres:latest |
20 | | -``` |
| 26 | +### 📦 Démarrer les composants liés aux microservices |
21 | 27 |
|
22 | | -### Run manually Liquibase Database migration & seeding (For now) |
| 28 | +Pour stocker les données de manière persistante et permettre à l’application de démarrer correctement, ainsi qu'assurer la communication des évènements, vous devez démarrer certains composants : |
| 29 | +- PostgreSQl : Système de gestion de base de donnée relationelle. Pour cette PoC, une seule DB est démarrée, et chaque microservice utilise son propre schéma. En production, chaque micro service utilise sa propre instance de DB |
| 30 | +- Kafka : Plateforme de messagerie distribuée qui permet aux services de communiquer en temps réel via des événements. |
| 31 | +- Kafka UI : Interface web pour superviser les brokers Kafka, et notamment les événements liés à la réservation de lit. |
23 | 32 |
|
24 | | -To versioning data changes, handle data migrations and test data seeding, we use the broadly adopted Liquibase tool. |
| 33 | +1. [**Installez Docker Desktop**](https://docs.docker.com/desktop/) sur votre machine. |
25 | 34 |
|
26 | | -We use [JPA Buddy IntelliJ Plugin](https://plugins.jetbrains.com/plugin/15075-jpa-buddy) to [create changelog from JPA Entities](https://www.jetbrains.com/help/idea/jpa-buddy-database-versioning.html#ddl-by-entities) and avoid manual scripts. **All change comes from our domain model**. |
| 35 | +2. Exécutez la commande `docker compose up` depuis la racine du projet pour démarrer les composants : |
27 | 36 |
|
28 | | -At this time, you need to do some actions : |
| 37 | +## 🧱 Gestion des migrations de données avec Liquibase |
| 38 | +Nous utilisons Liquibase pour versionner les changements de structure, gérer les migrations de données, et peupler la base avec des données de test. |
29 | 39 |
|
30 | | -- In IntelliJ IDEA, setup the datasource for the project. you can copy [app properties for URl, user/password](https://github.com/swyth-dev/realtime-emergency-response-system/blob/d723e64aa94af62ffbe5eed8cecb03ac7e4d66e6/hospital-service/src/main/resources/application.yaml) |
31 | | -- Create a new postgres schema `hospital-service` |
32 | | -- Now you can run Liquibase Update. it will check db changelog, create tables and columns, and seed database from [data CSV files](https://github.com/swyth-dev/realtime-emergency-response-system/blob/52221e1ba7a20c39e5829a550d8d92c67f38f217/hospital-service/src/main/resources/db/changelog/data). |
| 40 | +> 💡 Nous utilisons le plugin [IntelliJ JPA Buddy](https://plugins.jetbrains.com/plugin/15075-jpa-buddy) pour générer les changelogs à partir des entités JPA, évitant ainsi les scripts SQL manuels. |
| 41 | +> Toutes les modifications proviennent directement du modèle de domaine. |
0 commit comments