From 23c9fb379748a194c11a933b5c7e02f96374f7bb Mon Sep 17 00:00:00 2001 From: Apoorva Srinivas Appadoo Date: Tue, 12 Nov 2024 21:35:28 +0100 Subject: [PATCH 1/6] fix: add nginx conf --- cloud/frontend/Dockerfile | 2 +- cloud/frontend/nginx/nginx.conf | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 cloud/frontend/nginx/nginx.conf diff --git a/cloud/frontend/Dockerfile b/cloud/frontend/Dockerfile index 67e83bf..3dcca56 100644 --- a/cloud/frontend/Dockerfile +++ b/cloud/frontend/Dockerfile @@ -15,6 +15,6 @@ FROM nginx:stable-bookworm RUN apt-get update && apt-get install -y gettext-base && rm -rf /var/lib/apt/lists/* COPY --from=build /app/dist /usr/share/nginx/html - +COPY ./nginx/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 diff --git a/cloud/frontend/nginx/nginx.conf b/cloud/frontend/nginx/nginx.conf new file mode 100644 index 0000000..911f50f --- /dev/null +++ b/cloud/frontend/nginx/nginx.conf @@ -0,0 +1,14 @@ +server { + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri /index.html; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} \ No newline at end of file From 8136a7c31c720f1e36d479a8f1947563d6cff531 Mon Sep 17 00:00:00 2001 From: Apoorva Srinivas Appadoo Date: Tue, 12 Nov 2024 21:45:06 +0100 Subject: [PATCH 2/6] feat: deploy new version of front --- charts/poulet/Chart.yaml | 2 +- charts/poulet/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/poulet/Chart.yaml b/charts/poulet/Chart.yaml index 49fc90c..2216358 100644 --- a/charts/poulet/Chart.yaml +++ b/charts/poulet/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.74 +version: 0.1.75 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/poulet/values.yaml b/charts/poulet/values.yaml index ef93989..661f78b 100644 --- a/charts/poulet/values.yaml +++ b/charts/poulet/values.yaml @@ -443,7 +443,7 @@ analyse-haut-niveau-management: frontend: enabled: true image: - tag: 53596be130d71da9921d03a2ab3c25af334e99f3 + tag: f7c676ff7375daa3d771d5ab1af25aeac45c8328 environment: ALERT_MANAGEMENT_BASE_URL: "http://doctor.al.apoorva64.com" PATIENT_MANAGEMENT_BASE_URL: "http://doctor.al.apoorva64.com" From 7b630f79418a332d45c95d90f12adeaac0e2abc8 Mon Sep 17 00:00:00 2001 From: Melek FARHAT Date: Tue, 12 Nov 2024 21:54:57 +0100 Subject: [PATCH 3/6] add doc --- Documentation/Readme.md | 20 +++++ .../diagrams/Archi_model_de_donnees.jpg | Bin 0 -> 39966 bytes Documentation/diagrams/MS.png | Bin 0 -> 17059 bytes Documentation/diagrams/archi.jpg | Bin 0 -> 153972 bytes Documentation/sous-section/architectureMS.md | 28 +++++++ Documentation/sous-section/dataModel.md | 52 ++++++++++++ Documentation/sous-section/fonctionnement.md | 75 ++++++++++++++++++ Documentation/sous-section/intro.md | 19 +++++ Documentation/sous-section/matriceRisque.md | 15 ++++ Documentation/sous-section/perimetre.md | 24 ++++++ Documentation/sous-section/quickstart.md | 36 +++++++++ Documentation/sous-section/securite.md | 18 +++++ Documentation/sous-section/services.md | 73 +++++++++++++++++ Documentation/sous-section/structureCode.md | 0 Documentation/sous-section/techno.md | 53 +++++++++++++ Documentation/sous-section/usecases.md | 52 ++++++++++++ 16 files changed, 465 insertions(+) create mode 100644 Documentation/Readme.md create mode 100644 Documentation/diagrams/Archi_model_de_donnees.jpg create mode 100644 Documentation/diagrams/MS.png create mode 100644 Documentation/diagrams/archi.jpg create mode 100644 Documentation/sous-section/architectureMS.md create mode 100644 Documentation/sous-section/dataModel.md create mode 100644 Documentation/sous-section/fonctionnement.md create mode 100644 Documentation/sous-section/intro.md create mode 100644 Documentation/sous-section/matriceRisque.md create mode 100644 Documentation/sous-section/perimetre.md create mode 100644 Documentation/sous-section/quickstart.md create mode 100644 Documentation/sous-section/securite.md create mode 100644 Documentation/sous-section/services.md create mode 100644 Documentation/sous-section/structureCode.md create mode 100644 Documentation/sous-section/techno.md create mode 100644 Documentation/sous-section/usecases.md diff --git a/Documentation/Readme.md b/Documentation/Readme.md new file mode 100644 index 0000000..754a31b --- /dev/null +++ b/Documentation/Readme.md @@ -0,0 +1,20 @@ +# Rapport du Projet - Solution Complète + +Ce document centralisé constitue l'ensemble du rapport pour la solution complète du projet. Il est divisé en plusieurs +sections pour détailler tous les aspects du projet, y compris le POC (Proof of Concept) mais également la solution +globale qui en découle. Chaque section correspond à un domaine précis, avec des explications détaillées et des analyses +concernant différents composants et aspects du système. + +Les sections du rapport sont les suivantes : +- [Introduction](sous-section/intro.md) +- [User stories](sous-section/usecases.md) +- [Périmètre Du POC](sous-section/perimetre.md) +- [Quickstart](sous-section/quickstart.md) +- [Fonctionnement du Système](sous-section/fonctionnement.md) +- [Les Services du Système](sous-section/services.md) +- [Les choix technologiques](sous-section/techno.md) +- [Architecture pour les Microservices](sous-section/architectureMS.md) +- [Modèle de Données](sous-section/dataModel.md) +- [Sécurité des données](sous-section/securite.md) +- [Matrice de risque](sous-section/matriceRisque.md) +- [Structure de code](sous-section/structureCode.md) \ No newline at end of file diff --git a/Documentation/diagrams/Archi_model_de_donnees.jpg b/Documentation/diagrams/Archi_model_de_donnees.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b52ec7e10a28752bda900647f27f6f92ac26c3e6 GIT binary patch literal 39966 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 g4+AzYZhe(_KyRS@vvz|zXi;--|(B`hgOa{ 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⪙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

    r)^1MeTW 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 + +L'architecture est organisée en trois couches principales : + +### 1. **Couche Controller (API Layer)** +- Cette couche représente le point d'entrée des services, où sont définis les endpoints d'API. +- Elle sert d'interface de communication entre les services et les autres composants du système, assurant ainsi +les échanges de données et les interactions externes. + +### 2. **Couche Service** +- Cette couche est dédiée à la logique métier. +- Elle contient les traitements et la logique applicative, prenant en charge les opérations nécessaires pour répondre +aux demandes transmises par la couche Controller. +- Elle centralise les règles métier et le flux logique des opérations. + +### 3. **Couche DAO (Data Access Object)** +- Cette couche est responsable de l'accès aux données. +- Elle gère les interactions avec la base de données ou les sources de données externes, assurant ainsi la persistance +des données de manière sécurisée et structurée. diff --git a/Documentation/sous-section/dataModel.md b/Documentation/sous-section/dataModel.md new file mode 100644 index 0000000..a93f549 --- /dev/null +++ b/Documentation/sous-section/dataModel.md @@ -0,0 +1,52 @@ +# Modèles des Données + +Dans notre système, la structure des données repose sur deux bases de données principales, chacune jouant un rôle +essentiel dans la gestion des informations critiques : l'une dédiée aux alertes et l'autre aux données des patients. + +## Base de données des alertes +Cette base est destinée à stocker des informations détaillées pour chaque alerte émise par le système. +Chaque enregistrement d'alerte contient les champs suivants : + +- **id** : Un identifiant unique, généré automatiquement pour chaque alerte. +- **Date** : Enregistre la date et l’heure de la détection de l'alerte. +- **Type** : Identifie le déclencheur de l'alerte (par exemple, température, accélération, rythme cardiaque, ou taux de glucose). +- **Message** : Fournit une description de l'alerte. +- **gatewayId** : Permet d’associer l’alerte à un utilisateur spécifique. +- **Treated** : Indique si l’alerte a été traitée. +- **Modified** : Enregistre si l’alerte a été modifiée après sa création. +- **Value** : Indique la valeur qui a déclenché l'alerte. +- **Severity** : Définit la gravité de l'alerte. + +## Base de données des patients +Cette base contient plusieurs collections, chacune dédiée à un aspect des informations du patient. + +### Dossiers patients +Chaque dossier regroupe les informations personnelles de chaque patient : + +- **id** : Un identifiant unique, généré automatiquement pour chaque patient. +- **firstname** : Le prénom du patient. +- **lastname** : Le nom de famille du patient. +- **gender** : Le sexe du patient. +- **emergencyContactPhoneNumber** : Le numéro de téléphone d'un contact d'urgence. +- **gatewayId** : Identifiant qui lie les informations du patient aux alertes qui le concernent. + +### Consultations des patients +Cette collection enregistre les informations relatives aux consultations médicales de chaque patient : + +- **id** : Un identifiant unique, généré automatiquement pour chaque consultation. +- **Date** : La date de la consultation. +- **Entries** : Liste d'entrées, où chaque entrée contient un nom, une valeur, et une remarque pour +documenter les observations faites lors de la consultation. +- **doctorId** : Identifiant du médecin ayant effectué la consultation. +- **patientId** : Identifiant du patient concerné par la consultation. + + +### Ressentis des patients +Cette collection enregistre les ressentis des patients, ajoutés manuellement via l'interface frontend : + +- **id** : Un identifiant unique, généré automatiquement pour chaque ressenti. +- **Date** : La date à laquelle le ressenti a été enregistré. +- **Ressentis** : Description des symptômes ou sensations ressentis par le patient. +- **patientId** : Identifiant du patient ayant enregistré le ressenti. + + diff --git a/Documentation/sous-section/fonctionnement.md b/Documentation/sous-section/fonctionnement.md new file mode 100644 index 0000000..6ec6aa3 --- /dev/null +++ b/Documentation/sous-section/fonctionnement.md @@ -0,0 +1,75 @@ +# Fonctionnement du Système + + + +Le système de surveillance des patients repose sur une architecture modulaire et dynamique, permettant de collecter, +analyser et afficher des données critiques pour assurer un suivi médical efficace et en temps réel. +Ce choix d’architecture modulaire favorise une séparation claire des fonctionnalités, facilitant ainsi la maintenance et +l’évolution du système en répartissant les responsabilités par module. En outre, cette approche rend le système hautement scalable, +permettant d’ajouter facilement de nouvelles fonctionnalités ou d’augmenter la capacité de traitement sans affecter les autres composants. + +## Phase 1 : Collecte des Données des Capteurs +Le système commence par la collecte de données provenant de divers capteurs, tels que le cardiofréquencemètre, +l'accéléromètre, le thermomètre et le glucomètre, qui mesurent les signes vitaux du patient à des fréquences variées. +Ces capteurs transmettent leurs données via la technologie Zigbee à la gateway placé chez le client. Une fois les données arrivées +dans la gateway, elles sont envoyées vers un broker (RabbitMQ), qui la sauvegarde des donnée dans la gateway en attendant la transmission au serveur, il garantit une transmission fiable des données. + +## Phase 2 : Système de Détection d'Alerte Urgente +Le système de détection d'alerte, situé côté patient, surveille en temps réel les données provenant des files de chaque +capteur via RabbitMQ. Ce système est conçu pour détecter toute situation d'urgence nécessitant une intervention rapide. +Lorsqu'un état critique est identifié, un SMS est envoyé au proche. + +Pour s'assurer que le numéro de contact est valide, le système tente d'abord de récupérer le numéro de téléphone +associé à l'ID de la gateway depuis le Dossier Patient via un appel au service de gestion du Dossier Patient. +Si cette récupération échoue, un numéro localement enregistré est utilisé par défaut, garantissant ainsi qu'une alerte +soit envoyée, même en cas d'indisponibilité temporaire du service de gestion des dossiers. + +Parallèlement, une alerte est automatiquement enregistrée dans la base de données AlerteDB via le service Gestion Alerte, +ce qui permet de documenter et centraliser les événements critiques pour un suivi et une analyse ultérieurs. + +## Phase 3 : Downsampling et Communication avec le Cloud +Après la détection des alertes critiques, les données passent à une phase de réduction. La fréquence d'échantillonage est réduite pour correspondre au besoin d'analyse côté serveur. Une fréquence élevée de mesures n'est pas nécessaire une fois la détection d'alertes critiques faite. Les données sont ensuite compactés en batch puis envoyées au serveur. + +## Phase 4 : Prometheus pour la Surveillance des Données +Prometheus consomme les données pour les stocker en vue d'analyses ultérieures. Un service d'analyse de haut niveau +extrait les données de Prometheus pour fournir aux utilisateurs +des analyses plus détaillées en fonction de leur rôle. De plus, l'intégration +d'Alert Manager dans ce processus permet d'identifier des anomalies sur des périodes prolongées en générant des alertes +via le service de gestion des Alertes. + +## Phase 5 : Accès des Utilisateurs +Les utilisateurs, qu'il s'agisse de proches, de médecins ou d'infirmières, accèdent à l'interface frontend via Traefik, +qui sert de reverse proxy pour gérer le trafic et garantir la sécurité des connexions. L’authentification et +l’autorisation des utilisateurs sont gérées par Keycloak, qui assure un contrôle précis des accès en fonction des rôles, +permettant ainsi de limiter l'accès aux informations sensibles uniquement aux personnes autorisées. + +## Phase 6 : Affichage des Données et Alertes via le Frontend +Le frontend affiche les états des patients à l'aide de graphiques générés par Grafana, qui récupère les données stockées +dans Prometheus. Cette visualisation permet aux utilisateurs de suivre facilement l'évolution de la santé des patients +en temps réel. Les analyses et les alertes provenant du Service d'Analyse de Haut Niveau et du Service Gestion Alerte +sont accessibles aux utilisateurs autorisés, notamment aux médecins, aux infirmières et aux proches des patients. + +Grâce à ce frontend, les médecins peuvent créer des dossiers pour les patients et leur associer un identifiant de +passerelle (gateway ID). De plus, les médecins et les infirmières ont la possibilité de rédiger des rapports médicaux, +qui sont ensuite stockés dans la base de données patient. Cette intégration assure une dépendance forte entre les dossiers +et les rapports médicaux, permettant une visualisation cohérente et un accès rapide à l’information cruciale sur la santé des patients. + +Le frontend permet également aux patients de participer activement au suivi de leur état de santé en ajoutant leurs +ressentis directement depuis l'interface. Cette fonctionnalité est rendue possible grâce au microservice Patient, qui +gère la soumission et le stockage de ces ressentis dans la base de données des patients. Ces ressentis sont accessibles +aux médecins et aux infirmières dans les dossiers médicaux, contribuant à une prise en charge plus complète et personnalisée des soins. + +## Phase 7 : La Partie VPN +Pour assurer la maintenance et la gestion des gateways installées chez les patients, nous utilisons Tailscale, un réseau overlay distribué peer-to-peer. Tailscale, basé sur le protocole WireGuard, permet d’établir une connexion sécurisée et simplifiée aux gateways sans nécessiter de configuration VPN complexe ou de redirection de ports, garantissant ainsi une communication sécurisée entre les appareils. + +Les mises à jour logicielles des gateways s’effectuent via un processus de polling utilisant Docker Compose. Chaque gateway est configurée pour interroger régulièrement une API de gestion dédiée, qui indique si des mises à jour de services conteneurisés sont disponibles. Cette API fournit les versions actualisées des fichiers Docker Compose, permettant ainsi de télécharger et de redéployer les services en fonction des nouvelles configurations. + +Cette méthode de mise à jour par polling offre plusieurs avantages : + +- Mises à jour automatisées : Les services conteneurisés sur les gateways peuvent être mis à jour sans intervention manuelle, garantissant la continuité des correctifs de sécurité et des nouvelles fonctionnalités. + +- Fiabilité accrue : En récupérant les nouvelles configurations depuis une API centrale, chaque gateway est assurée de rester synchronisée avec les mises à jour nécessaires. + +- Gestion centralisée : L’API de gestion fournit une visibilité globale sur l’état des versions et des configurations, facilitant le suivi et la maintenance de l’ensemble des gateways. + +En combinant Tailscale pour un accès direct et un système de mise à jour via Docker Compose et polling, cette architecture garantit un support continu et sécurisé pour la maintenance à distance des gateways, assurant ainsi la fiabilité et l’évolution du système en temps réel. diff --git a/Documentation/sous-section/intro.md b/Documentation/sous-section/intro.md new file mode 100644 index 0000000..2b8afb0 --- /dev/null +++ b/Documentation/sous-section/intro.md @@ -0,0 +1,19 @@ +# Introduction + +Dans un contexte de vieillissement de la population et de besoin croissant en services de santé, le suivi médical +des personnes âgées devient un enjeu de société majeur. Nombreuses sont les familles et les professionnels de santé +confrontés aux défis de la surveillance des paramètres vitaux des personnes âgées en temps réel, notamment pour prévenir +les incidents tels que les chutes, les anomalies de fréquence cardiaque, ou les variations de température corporelle. +Afin de répondre à cette problématique, ce projet propose de concevoir un système de suivi médical pour les personnes +âgées, destiné à fournir une surveillance complète et continue, et à faciliter la coordination entre différents acteurs +impliqués dans leur prise en charge. + +L’objectif principal de ce système est de centraliser et d’automatiser le suivi des paramètres vitaux d’une +personne âgée en utilisant des capteurs pour mesurer la température corporelle, le rythme cardiaque et détecter +d'éventuelles chutes. Le système intègre également un module permettant d’ajouter manuellement des données spécifiques, +comme le taux de glucose sanguin, afin de couvrir un éventail plus large de besoins médicaux. +Ces informations sont mises à la disposition des différents acteurs de l’entourage de la personne âgée, +incluant les médecins, les infirmiers, et les proches, via une interface accessible sur authentification sécurisée. + +Dans cette étude, nous réaliserons une analyse des besoins fonctionnels et techniques, en identifiant les différentes +fonctionnalités nécessaires pour répondre aux exigences des utilisateurs. diff --git a/Documentation/sous-section/matriceRisque.md b/Documentation/sous-section/matriceRisque.md new file mode 100644 index 0000000..82e12b0 --- /dev/null +++ b/Documentation/sous-section/matriceRisque.md @@ -0,0 +1,15 @@ +# Matrice des Risques + +Dans le cadre de notre projet, voici une analyse des risques potentiels. Cette matrice identifie les risques majeurs, leur probabilité et leur impact, ainsi que les mesures de mitigation envisagées pour réduire leur occurrence ou leurs effets. + +| **Risque** | **Description** | **Probabilité** | **Impact** | **Stratégie de Mitigation** | +|------------|-----------------|-----------------|------------|-----------------------------| +| Envoi de fausses alertes par SMS| L'algorithme de détection côté client peut déclencher des alertes en fonction de valeurs erronées, générant ainsi de fausses alertes. | Élevée| Moyen| Difficulté de contrôle côté client en raison de ressources limitées. Les utilisateurs peuvent vérifier manuellement l'alerte en appelant la personne âgée pour s'assurer de sa situation.| +| Envoi des alertes SMS à la mauvaise personne | Le numéro d’urgence est récupéré via un appel au service patient. En cas d’indisponibilité de ce service n'aurait pas le possiblite de recuperere le numéro| Moyenne| Élevé| Conserver une copie locale du numéro de téléphone d’urgence avec l'ID du gateway pour un envoi de secours en cas de panne du service patient.| +| Indisponibilité d’un service| Certains services peuvent devenir momentanément indisponibles ou surchargés, affectant le système global.| Moyenne| Élevé| Héberger plusieurs instances de chaque service avec un load balancer pour répartir la charge, assurant une haute disponibilité et limitant les interruptions en cas de surcharge.| +| Problème de connexion client-cloud| Si Prometheus devient indisponible pour surcharge ou autre problème, les données peuvent ne pas être enregistrées correctement.| Moyenne| Élevé| Utiliser un broker de messages pour stocker temporairement les données en file d’attente, permettant leur transmission une fois la connexion rétablie. | +| Indisponibilité de la base de données| Si la base de données MongoDB est indisponible en raison d’une surcharge ou d'un problème de serveur, cela peut entraîner des interruptions. | Moyenne | Élevé | Déployer plusieurs instances de la base de données avec une synchronisation continue pour garantir la disponibilité et répartir les requêtes. | +| Coupure d’électricité| Une coupure de courant au niveau du gateway pourrait interrompre le fonctionnement du système de détection d’alerte.| Faible| Élevé| Installer une batterie de secours dans le gateway pour garantir une alimentation continue en cas de coupure électrique. | +| Risques de sécurité| Des vulnérabilités peuvent affecter les communications entre microservices, exposant le système aux attaques.| Moyenne| Élevé| Assurer une communication sécurisée en utilisant HTTPS entre les microservices pour protéger les données contre les interceptions et les attaques.| +| Mauvaise gestion des accès| Un accès non sécurisé pourrait compromettre l'intégrité et la confidentialité des données du système.| Moyenne| Élevé| Mettre en place un système d'authentification robuste et sécurisé pour garantir la sécurité des accès au sein de l’application.| +| Non-conformité réglementaire| Le non-respect des réglementations sur la protection des données personnelles peut exposer l’organisation à des sanctions.| Moyenne| Élevé| Adopter une politique de protection des données en conformité avec le RGPD ou autres réglementations locales. Effectuer des audits de conformité réguliers et former le personnel.| diff --git a/Documentation/sous-section/perimetre.md b/Documentation/sous-section/perimetre.md new file mode 100644 index 0000000..0180c8f --- /dev/null +++ b/Documentation/sous-section/perimetre.md @@ -0,0 +1,24 @@ +# Définition du périmètre du POC + +Pour notre étude, nous nous sommes concentrés sur un POC qui porte principalement sur la collecte, le traitement +et la gestion des données de santé des patients âgés, en intégrant un système d'alerte pour les médecins. + +## Objectifs du POC + +### Collecte des données des patients +Mise en place d'un système IoT pour recueillir des informations en temps réel sur les signes vitaux des patients. +Cette collecte inclut les données provenant de capteurs. + +### Détection et gestion des alertes +Développement de modules d'analyse des données de santé pour détecter des situations potentiellement urgentes. +En cas de détection d'anomalies, des alertes urgentes sont générées. Le système permet également l'envoi automatique de +SMS aux proches afin d'assurer une réponse rapide en cas de besoin. + +### Consultation des informations par les médecins +Intégration d'une interface de visualisation permettant aux médecins d’accéder aux données médicales et d'effectuer +un suivi précis de l’état de santé des patients. Ce module facilite la consultation de l'historique des alertes ainsi +que de l'état général des patients. + +### Gestion des comptes des patients +Création et administration de comptes patients dans le système, offrant un moyen structuré pour les professionnels +de santé de suivre l’évolution des patients, de mettre à jour leurs informations et d'ajouter des capteurs assignés. diff --git a/Documentation/sous-section/quickstart.md b/Documentation/sous-section/quickstart.md new file mode 100644 index 0000000..1499bfa --- /dev/null +++ b/Documentation/sous-section/quickstart.md @@ -0,0 +1,36 @@ +# Quickstart + +This project is composed of 3 parts : +- Sensors +- Gateway +- WebApp + +**Launch the Webapp** by deploying the 2 docker compose : +- [Prometheus stack](../../docker-compose.yaml) +- [Services](../../cloud/backend/docker-compose.yml) + +**Launch the webapp portail** directly on the [frontend directory](../../cloud/frontend/) +``` +npm install +``` +pour installer les dépendances +``` +npm run start +``` +pour lancer le serveur de développement + +Access the frontend at [http://localhost:8080](http://localhost:8080) + - Register a new patient + - Connect to the mongoDB and retrieve his gateway ID + +Replace the gateway id in the corresponding environment variables in the [gateway docker compose](../../gateway/docker-compose.yml) +**Launch the gatway** by deploying the following docker compose : + +- [Gateway](../../gateway/docker-compose.yml) + + +After this two steps you can execute the simulate.py script that will emulate data to the gateway adapter as if you were using sensors. The gateway will then compute the measures and send it to the prometheus server. + + +You can now explore you're metrics directly on the prometheus server : +[http://localhost:9090](http://localhost:9090) \ No newline at end of file diff --git a/Documentation/sous-section/securite.md b/Documentation/sous-section/securite.md new file mode 100644 index 0000000..1cd773a --- /dev/null +++ b/Documentation/sous-section/securite.md @@ -0,0 +1,18 @@ +# Sécurité des données + +## Risque : +##### Perte des données : +**Coupure internet :** +En cas de coupure de la connexion entre la gateway et le serveur, la gateway ne peut plus déverser les mesures prises dans le serveur. La solution implémentée embarque un broker [RabbitMQ](https://www.rabbitmq.com/). Ce broker permet de stocker les métriques récoltées sur le disque de la gateway en s'assurant de leur transmission avant de les supprimer du disque. + +**Incident côté serveur :** +Grâce à la technologie cloud et à la réplication possible avec le serveur Prometheus, les données des patients peuvent être sauvegardées en différents endroits, garantissant qu'en cas de perte d'un serveur, le deuxième puisse prendre le relais sans perte de données. + +Des sauvegardes de la base de données sont également réalisées toutes les 4 heures. + +##### Vol des données : +**Côté gateway :** +Les données des patients sont stockées sur la gateway de manière anonyme. Chaque patient se voit attribuer une gateway possédant son propre identifiant. Les données sont remontées au serveur avec l’identifiant de la gateway et non celui du patient. Le lien entre l'identité du patient et les données récoltées n'est fait qu'au moment de la visualisation. + +**Pendant l'envoi :** +Les envois de données sont réalisés de manière sécurisée avec le protocole HTTPS, qui permet un envoi chiffré des données. \ No newline at end of file diff --git a/Documentation/sous-section/services.md b/Documentation/sous-section/services.md new file mode 100644 index 0000000..452a459 --- /dev/null +++ b/Documentation/sous-section/services.md @@ -0,0 +1,73 @@ +# Description des Services du Système + +Dans cette section, nous détaillons les principaux services du système, chacun jouant un rôle spécifique dans la gestion, +le traitement et la transmission des données de santé des patients. Ces services assurent une surveillance +en temps réel ainsi que la gestion des alertes. + +## Côté Client + +1. **[Détection Alerte Service](../../gateway/dataManager/alerter.go)** + Ce service est essentiel pour identifier les situations critiques en détectant des valeurs anormales dans les données + de santé des patients. Lorsqu'une valeur critique est repérée, une alerte est envoyée par SMS au numéro de téléphone + d'un proche stocké localement. Le service utilise une clé 4G pour garantir la transmission des alertes, assurant ainsi + une notification immédiate aux proches en cas d'urgence. + + Ce service se situe avant la phase de downsampling pour garantir que les utilisateurs, tels que les proches ou les + soignants, sont informés de tout problème de santé potentiel dès qu'il survient. En détectant et en envoyant + une alerte immédiatement, nous maximisons la réactivité et la sécurité. En plus de l'envoi automatique du SMS, + il est recommandé de procéder à une vérification supplémentaire, comme un appel au patient ou à son proche + pour confirmer la situation. + +2. **[Down-sampling Service](../../gateway/dataManager/downsampler.go)** + Ce service optimise la transmission des informations vers le cloud en réduisant la quantité de données envoyées. + En filtrant les informations pour ne conserver que les données pertinentes, le service minimise la consommation des ressources réseau et diminue les risques de fausses alertes. Ainsi, seules les données essentielles sont transmises pour un suivi de qualité. + +3. **[PushGateway Service](../../gateway/dataManager/compacter.go)** + Ce service transmet les données vers le cloud après avoir atteint un seuil de collecte prédéfini. Le PushGateway + permet une transmission contrôlée et périodique des données, facilitant ainsi la centralisation et l'archivage des + informations de santé pour une accessibilité future. + +## Côté Cloud + +1. **[GestionAlertService](../../cloud/backend/alert-management/)** + Ce service gère l’ensemble des alertes, les stocke dans une base de données dédiée, et permet diverses opérations : + - Récupération d’une alerte spécifique + - Récupération des alertes liées à un gateway spécifique + - Consultation de toutes les alertes stockées + - Filtrage des alertes par gravité et par état (traitées ou non traitées) + - Création de nouvelles alertes + - Mise à jour ou suppression des alertes existantes + - Notification automatique des médecins pour les alertes non traitées + + Ce service assure une gestion et un traitement efficaces des alertes pour un suivi rigoureux des incidents de santé. + +2. **[AlertManager](../../cloud/config/alertmanager/)** + Ce composant gère les alertes générées par Prometheus pour le suivi de la glycémie, du rythme cardiaque et de la + température corporelle du patient. Les alertes peuvent être basées sur la détection de variations rapides + (alertes dérivées) ou sur des prédictions de niveaux futurs (alertes prédictives). + + AlertManager centralise la gestion des alertes pour réduire les notifications redondantes et améliorer la réactivité + face aux situations critiques. Il permet de configurer des niveaux de gravité, de regrouper des alertes similaires et + de les envoyer de manière ciblée. + + Une fois générées Les alertes sont ensuite envoyées au service de gestion des alertes pour être stockées + dans la base de données, assurant une traçabilité et facilitant l’analyse des tendances à long terme. + +3. **[Service Analyse Haut Niveau](../../cloud/backend/analyse-haut-niveau-management/)** + Ce service réalise un traitement avancé des données stockées afin de détecter des comportements inhabituels. + Il transforme les données brutes en valeurs plus lisibles et compréhensibles pour les médecins, infirmiers et proches, + facilitant ainsi leur interprétation et la prise de décisions médicales. + +4. **[Service Gestion Dossiers Patients](../../cloud/backend/patient-management/)** + Ce service assure la gestion des dossiers patients pour une organisation précise des informations de chaque patient. + Les principales fonctionnalités incluent : + - Récupération d'un patient par ID, gatewayID, ou nom et prénom + - Création de nouveaux dossiers patients + - Suppression des dossiers patients + +5. **[Service Gestion Consultation Patient](../../cloud/backend/patient-management/)** + Ce service facilite la gestion des consultations des médecins et des infirmiers, permettant de conserver un historique + détaillé des interactions médicales. Ses principales fonctionnalités incluent : + - Récupération d'une consultation par ID, par patientID, par DoctorID, ou par nurseID + - Création d'une nouvelle consultation + - Suppression d'une consultation diff --git a/Documentation/sous-section/structureCode.md b/Documentation/sous-section/structureCode.md new file mode 100644 index 0000000..e69de29 diff --git a/Documentation/sous-section/techno.md b/Documentation/sous-section/techno.md new file mode 100644 index 0000000..68c0eb4 --- /dev/null +++ b/Documentation/sous-section/techno.md @@ -0,0 +1,53 @@ +# Choix Technologiques + +## 1. **Java Quarkus** +Quarkus est conçu pour les environnements cloud natifs, facilitant la gestion, le déploiement et la scalabilité +des services. Il se distingue par sa rapidité de démarrage et sa faible utilisation de la mémoire, réduisant les coûts +en ressources. Ces atouts sont cruciaux pour un déploiement cloud efficace et réactif. Comparé à d'autres langages +ou frameworks, Quarkus offre un compromis optimal entre la robustesse de l'écosystème Java et la performance, ce qui +le rend idéal pour des architectures de microservices dans le cloud. + +## 2. **Prometheus** +Prometheus est conçu spécifiquement pour gérer des données chronologiques (time-series), ce qui est idéal pour +des mesures prises à intervalles réguliers, comme les métriques de santé des utilisateurs. Contrairement à une base +de données classique, Prometheus est optimisé pour stocker, interroger et analyser rapidement des séries temporelles, +ce qui facilite la détection de tendances, d'anomalies et l'analyse historique des données. Cette capacité est cruciale +pour évaluer l'état de santé général des patients et générer des alertes. + +## 3. **Grafana** +Grafana est un excellent choix pour visualiser les données de santé collectées. Il permet de créer des dashboards +interactifs et personnalisés à partir des métriques de séries temporelles stockées dans des bases de données comme +Prometheus. Grafana permet d'afficher des données en temps réel de manière claire et visuellement engageante, ce qui +aide les utilisateurs à analyser facilement les données. De plus, il peut être intégré directement dans une application +front-end pour faciliter l'accès aux données. + +## 4. **Go** +Go est un excellent choix pour les systèmes IoT en raison de sa performance élevée et de sa faible empreinte mémoire. +Ces caractéristiques sont essentielles pour des appareils souvent limités en ressources. De plus, Go offre une syntaxe +simple, facilitant la maintenance du code, et sa gestion automatique de la mémoire assure des performances optimales +tout en réduisant la complexité du développement. + +## 5. **MongoDB** +MongoDB est choisi pour sa capacité à garantir une scalabilité efficace grâce à son modèle de données orienté document. +Cela permet une gestion indépendante des données par chaque service sans nécessiter des insertions dans d'autres tables, +ce qui le rend idéal pour des transactions indépendantes. De plus, MongoDB favorise l'eventual consistency plutôt +qu'une cohérence immédiate, offrant ainsi une meilleure disponibilité des services, particulièrement dans +un environnement de microservices distribués. + +## 6. **RabbitMQ** +RabbitMQ est sélectionné pour sa gestion asynchrone des files de messages, garantissant une transmission fiable +des données même en cas de pics de trafic. Il est particulièrement adapté aux systèmes nécessitant une livraison +garantie de messages et un traitement rapide. De plus, RabbitMQ est optimisé pour des environnements à ressources +limitées, offrant un excellent compromis entre performance et consommation des ressources. + +## 7. **Traefik** +Traefik sert de reverse proxy pour diriger le trafic vers le frontend et permettre un accès fluide à certaines +fonctionnalités. Il simplifie la gestion des points d’entrée pour différents types d’utilisateurs grâce à un routage +dynamique et la gestion des certificats SSL pour sécuriser les connexions. Traefik est compatible avec des environnements +comme Docker et Kubernetes, facilitant ainsi le déploiement et la gestion du système dans le cloud, ce qui rend l’architecture évolutive. + +## 8. **Keycloak** +Keycloak est utilisé pour la gestion de l'authentification et de l’autorisation basée sur les rôles des utilisateurs +(proches, médecins, infirmiers). En centralisant la gestion des identités, Keycloak offre une solution complète, sécurisée +et modulable pour contrôler les accès aux différentes parties du système. Il garantit que seuls les utilisateurs autorisés +peuvent accéder aux informations sensibles, ce qui est crucial pour assurer la confidentialité des données de santé. diff --git a/Documentation/sous-section/usecases.md b/Documentation/sous-section/usecases.md new file mode 100644 index 0000000..c54ea57 --- /dev/null +++ b/Documentation/sous-section/usecases.md @@ -0,0 +1,52 @@ +# Use Case + +Dans cette section, nous décrivons les cas d'utilisation sur lesquels repose notre étude, en identifiant les actions, +les rôles des utilisateurs et les objectifs pour chaque fonctionnalité du système. Chaque cas d'utilisation est conçu +pour répondre aux besoins spécifiques des différents acteurs (médecins, infirmiers, proches, patients, développeurs +et système IoT) et contribue à la prise en charge et à la surveillance efficace des personnes âgées. + +## 1. Médecin +- **En tant que médecin**, je veux enregistrer un rapport de consultation, afin de suivre l'évolution du patient +et partager des informations avec d'autres professionnels de santé. +- **En tant que médecin**, je veux visualiser les rapports médicaux détaillés, afin de disposer d'une vue complète +sur l'historique de santé du patient. +- **En tant que médecin**, je veux assigner des capteurs à un patient, afin de surveiller en temps réel ses signes +vitaux et recevoir des alertes en cas d'incidents. +- **En tant que médecin**, je veux gérer des patients, afin de pouvoir créer, supprimer et modifier les comptes +pour organiser le suivi. + +## 2. Médecin ou Infirmier +- **En tant que médecin ou infirmier**, je veux gérer les proches des patients, afin de leur donner la possibilité +de suivre l'état de santé du patient. +- **En tant que médecin ou infirmier**, je veux être notifié lorsque les capteurs cessent d'envoyer des données +pendant une période prolongée, afin de pouvoir intervenir et éviter toute perte d'information ou problème de santé non détecté. + +## 3. Infirmier +- **En tant qu'infirmier**, je veux enregistrer un rapport de santé du patient, afin de mettre à jour +les informations médicales régulièrement. +- **En tant qu'infirmier**, je veux pouvoir renseigner des mesures manuelles dans le système, afin d’ajouter +des informations supplémentaires non collectées par les capteurs, comme le taux de glucose. +- **En tant qu'infirmier**, je veux pouvoir visualiser les données des capteurs, afin de suivre l'état de santé +de la personne de manière proactive. + +## 4. Proche du Patient +- **En tant que membre de la famille**, je veux visualiser l'état général du patient, afin d’avoir un aperçu de +sa santé sans accéder aux données médicales sensibles. +- **En tant que membre de la famille ou infirmier**, je veux être notifié en cas d'urgence, afin d'intervenir +le plus tôt possible si nécessaire. + +## 5. Patient +- **En tant que patient**, je veux remplir un formulaire de ressenti sur mon état de santé, afin de partager +mon vécu quotidien et mes symptômes avec les professionnels de santé pour un suivi plus personnalisé. + +## 6. Développeur +- **En tant que développeur**, je veux administrer les utilisateurs, afin d'assurer un accès sécurisé et limité +aux informations sensibles. +- **En tant que développeur**, je veux configurer et mettre à jour le système, afin de garantir la bonne intégration +des nouveaux capteurs et la sécurité des données. + +## 7. Système IoT +- **En tant que système IoT**, je veux remonter automatiquement les données, afin de surveiller en temps réel l'état +du patient. +- **En tant que système IoT**, je veux notifier automatiquement les utilisateurs en cas de dysfonctionnement ou d'alerte, +afin qu'ils puissent réagir rapidement en cas de problème. From 0aa8e9f2f8929720da9627f6b081dd46085bb8d9 Mon Sep 17 00:00:00 2001 From: Tsukoyachi Date: Tue, 12 Nov 2024 22:06:20 +0100 Subject: [PATCH 4/6] fix: Put the dashboard button before the alerts --- cloud/frontend/src/components/profil/Profil.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cloud/frontend/src/components/profil/Profil.tsx b/cloud/frontend/src/components/profil/Profil.tsx index 9218a1d..0940746 100644 --- a/cloud/frontend/src/components/profil/Profil.tsx +++ b/cloud/frontend/src/components/profil/Profil.tsx @@ -72,13 +72,6 @@ export default function Profil() { - - - Alerts - - - - Dashboards @@ -92,6 +85,13 @@ export default function Profil() { + + + Alerts + + + + ) : ( From 1f777fc527152046053085b28a40e8464ae25594 Mon Sep 17 00:00:00 2001 From: Apoorva Srinivas Appadoo Date: Tue, 12 Nov 2024 22:12:19 +0100 Subject: [PATCH 5/6] fix: prom rules --- charts/poulet/Chart.yaml | 2 +- charts/poulet/values.yaml | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/charts/poulet/Chart.yaml b/charts/poulet/Chart.yaml index 2216358..d830623 100644 --- a/charts/poulet/Chart.yaml +++ b/charts/poulet/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.75 +version: 0.1.76 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/poulet/values.yaml b/charts/poulet/values.yaml index 661f78b..14fc05d 100644 --- a/charts/poulet/values.yaml +++ b/charts/poulet/values.yaml @@ -199,7 +199,7 @@ prometheus: labels: severity: "MEDIUM" type: "glucose_deriv" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -213,7 +213,7 @@ prometheus: labels: severity: "MEDIUM" type: "glucose_deriv" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -229,7 +229,7 @@ prometheus: labels: severity: "MEDIUM" type: "heartrate_deriv" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -243,7 +243,7 @@ prometheus: labels: severity: "HIGH" type: "heartrate_deriv" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -259,7 +259,7 @@ prometheus: labels: severity: "MEDIUM" type: "temperature_deriv" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -273,7 +273,7 @@ prometheus: labels: severity: "MEDIUM" type: "temperature_deriv" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -289,7 +289,7 @@ prometheus: labels: severity: "WARNING" type: "glucose_predict" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -303,7 +303,7 @@ prometheus: labels: severity: "WARNING" type: "glucose_predict" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -319,7 +319,7 @@ prometheus: labels: severity: "WARNING" type: "heartrate_predict" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -333,7 +333,7 @@ prometheus: labels: severity: "WARNING" type: "heartrate_predict" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -349,7 +349,7 @@ prometheus: labels: severity: "WARNING" type: "temperature_predict" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: @@ -363,7 +363,7 @@ prometheus: labels: severity: "WARNING" type: "temperature_predict" - gatewayId: "671aaecbbf1f103b28e58788" + gatewayId: "{{ $labels.gateway_id }}" value: "{{ $value }}" annotations: From d6aff73a4b5e0251f7cb95e6162c61345bca28e1 Mon Sep 17 00:00:00 2001 From: Apoorva Srinivas Appadoo Date: Tue, 12 Nov 2024 22:32:26 +0100 Subject: [PATCH 6/6] feat: add rules --- charts/poulet/Chart.yaml | 2 +- charts/poulet/values.yaml | 130 +++++++++++++++++++++++++++++++++----- 2 files changed, 116 insertions(+), 16 deletions(-) diff --git a/charts/poulet/Chart.yaml b/charts/poulet/Chart.yaml index d830623..0b8e296 100644 --- a/charts/poulet/Chart.yaml +++ b/charts/poulet/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.76 +version: 0.1.77 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/poulet/values.yaml b/charts/poulet/values.yaml index 14fc05d..dd806d1 100644 --- a/charts/poulet/values.yaml +++ b/charts/poulet/values.yaml @@ -195,7 +195,7 @@ prometheus: rules: - alert: RapidIncreaseGlucose expr: deriv(glucose[30s]) > 10 - for: 15s + for: 10s labels: severity: "MEDIUM" type: "glucose_deriv" @@ -209,7 +209,7 @@ prometheus: - alert: RapidDecreaseGlucose expr: deriv(glucose[30s]) < -10 - for: 15s + for: 10s labels: severity: "MEDIUM" type: "glucose_deriv" @@ -225,7 +225,7 @@ prometheus: rules: - alert: RapidIncreaseHeartRate expr: deriv(heartrate[30s]) > 15 - for: 15s + for: 10s labels: severity: "MEDIUM" type: "heartrate_deriv" @@ -239,7 +239,7 @@ prometheus: - alert: RapidDecreaseHeartRate expr: deriv(heartrate[30s]) < -15 - for: 15s + for: 10s labels: severity: "HIGH" type: "heartrate_deriv" @@ -255,7 +255,7 @@ prometheus: rules: - alert: RapidIncreaseTemperature expr: deriv(temperature[30s]) > 0.5 - for: 15s + for: 10s labels: severity: "MEDIUM" type: "temperature_deriv" @@ -269,7 +269,7 @@ prometheus: - alert: RapidDecreaseTemperature expr: deriv(temperature[30s]) < -0.5 - for: 15s + for: 10s labels: severity: "MEDIUM" type: "temperature_deriv" @@ -285,7 +285,7 @@ prometheus: rules: - alert: PredictedHighGlucose expr: predict_linear(glucose[30m], 30 * 60) > 180 - for: 1m + for: 10s labels: severity: "WARNING" type: "glucose_predict" @@ -314,8 +314,8 @@ prometheus: - name: heartrate-predict-alerts rules: - alert: PredictedHighHeartRate - expr: predict_linear(heartrate[5m], 10 * 60) > 100 - for: 1m + expr: predict_linear(heartrate[10s], 10 * 60) > 100 + for: 10s labels: severity: "WARNING" type: "heartrate_predict" @@ -328,8 +328,8 @@ prometheus: message: "Predicted heart rate value in 10 minutes: {{ $value }} bpm" - alert: PredictedLowHeartRate - expr: predict_linear(heartrate[5m], 10 * 60) < 50 - for: 1m + expr: predict_linear(heartrate[10s], 10 * 60) < 50 + for: 10s labels: severity: "WARNING" type: "heartrate_predict" @@ -344,8 +344,8 @@ prometheus: - name: temperature-predict-alerts rules: - alert: PredictedHighTemperature - expr: predict_linear(temperature[5m], 10 * 60) > 40 - for: 1m + expr: predict_linear(temperature[10s], 10 * 60) > 40 + for: 10s labels: severity: "WARNING" type: "temperature_predict" @@ -358,8 +358,8 @@ prometheus: message: "Predicted temperature value in 10 minutes: {{ $value }}°C" - alert: PredictedLowTemperature - expr: predict_linear(temperature[5m], 10 * 60) < 35 - for: 1m + expr: predict_linear(temperature[10s], 10 * 60) < 35 + for: 10s labels: severity: "WARNING" type: "temperature_predict" @@ -371,8 +371,108 @@ prometheus: description: "The temperature is predicted to drop below 35°C within the next 10 minutes." message: "Predicted temperature value in 10 minutes: {{ $value }}°C" + - name: acceleration-alerts + rules: + - alert: HighAcceleration + expr: acceleration > 1 + #for: 10s + labels: + severity: "WARNING" + type: "acceleration" + gatewayId: "{{ $labels.gateway_id }}" + value: "{{ $value }}" + annotations: + summary: "High Acceleration Alert" + description: "Acceleration exceeds 80 units." + message: "Current acceleration value: {{ $value }}" + + - name: glucose-alerts + rules: + - alert: HighGlucose + expr: glucose > 180 + for: 30s + labels: + severity: "WARNING" + type: "glucose" + gatewayId: "{{ $labels.gateway_id }}" + value: "{{ $value }}" + + annotations: + summary: "High Glucose Alert" + description: "Glucose level is above 180 mg/dL." + message: "Current glucose value: {{ $value }}" + - alert: LowGlucose + expr: glucose < 70 + for: 30s + labels: + severity: "WARNING" + type: "glucose" + gatewayId: "{{ $labels.gateway_id }}" + value: "{{ $value }}" + annotations: + summary: "Low Glucose Alert" + description: "Glucose level is below 70 mg/dL." + message: "Current glucose value: {{ $value }}" + - name: heartrate-alerts + rules: + - alert: HighHeartRate + expr: heartrate > 100 + for: 30s + labels: + severity: "WARNING" + type: "heartrate" + gatewayId: "{{ $labels.gateway_id }}" + value: "{{ $value }}" + + annotations: + summary: "High Heart Rate Alert" + description: "Heart rate is above 100 bpm." + message: "Current heart rate value: {{ $value }}" + + - alert: LowHeartRate + expr: heartrate < 50 + for: 30s + labels: + severity: "WARNING" + type: "heartrate" + gatewayId: "{{ $labels.gateway_id }}" + value: "{{ $value }}" + + annotations: + summary: "Low Heart Rate Alert" + description: "Heart rate is below 50 bpm." + message: "Current heart rate value: {{ $value }}" + - name: temperature-alerts + rules: + - alert: HighTemperature + expr: temperature > 40 + for: 30s + labels: + severity: "WARNING" + type: "temperature" + gatewayId: "{{ $labels.gateway_id }}" + value: "{{ $value }}" + + annotations: + summary: "High Temperature Alert" + description: "Temperature is above 40°C." + message: "Current temperature value: {{ $value }}" + + - alert: LowTemperature + expr: temperature < 35 + for: 10s + labels: + severity: "WARNING" + type: "temperature" + gatewayId: "{{ $labels.gateway_id }}" + value: "{{ $value }}" + + annotations: + summary: "Low Temperature Alert" + description: "Temperature is below 35°C." + message: "Current temperature value: {{ $value }}" keycloak: enabled: true