Skip to content

abomed95/Hosgarde

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Système de suivi des primes de garde — Hôpitaux de Djibouti

Application Django 5 pour le Ministère de la Santé de Djibouti permettant de suivre, vérifier et valider les primes de garde des hôpitaux publics, tout en éliminant les fraudes où l'administration ajouterait du personnel n'ayant pas réellement effectué de garde.

Taux officiels : 50 000 FDJ par garde pour les médecins, 28 000 FDJ par garde pour le personnel paramédical.


1. Principe anti-fraude

Le système matérialise la chaîne réelle de responsabilité :

Responsable de service  →  Administration de l'hôpital  →  Ministère de la Santé
   (saisit le planning)        (consolide les sources)        (valide / rejette)
  1. Le responsable de service saisit le planning des gardes de son service pour un mois donné, puis le soumet. Le planning est alors verrouillé et devient une source officielle immuable.
  2. L'administration de l'hôpital crée une consolidation : ses lignes sont générées automatiquement à partir des plannings soumis. L'administration ne peut pas ajouter un agent absent des sources. Tout écart entre la valeur retenue et la source doit être justifié, et tout ajout hors source est signalé comme fraude potentielle.
  3. Le Ministère (Super Admin) examine l'écran de comparaison, voit les alertes, puis valide ou rejette la consolidation.

Chaque action sensible est inscrite dans un journal d'audit (« qui a fait quoi, quand, depuis quelle IP »).


2. Rôles

Rôle Groupe Django Périmètre
Responsable de service ResponsableService Plannings de son service
Administrateur Hospitalier AdminHopital Consolidations de son hôpital
Super Admin (Ministère) SuperAdminMinistere ou is_superuser Tous les hôpitaux, validation, audit

Le rattachement (hôpital / service) est porté par le modèle Profil.


3. Installation

# 1. Environnement virtuel
python3 -m venv .venv
source .venv/bin/activate          # Windows : .venv\Scripts\activate

# 2. Dépendances
pip install -r requirements.txt

# 3. Base de données
python manage.py migrate

# 4. Données de démonstration (hôpital, services, personnels, comptes, fraude)
python manage.py seed_data

# 5. (Optionnel) Super-utilisateur supplémentaire
python manage.py createsuperuser

# 6. Lancer le serveur
python manage.py runserver

Application : http://127.0.0.1:8000/ · Administration : http://127.0.0.1:8000/admin/

Variables d'environnement (optionnelles)

Variable Rôle Défaut
GARDESYS_SECRET_KEY Clé secrète Django clé de dev
GARDESYS_DEBUG 1 = debug, 0 = production 1
GARDESYS_ALLOWED_HOSTS Hôtes autorisés (séparés par des virgules) localhost,127.0.0.1,0.0.0.0
GARDESYS_CSRF_TRUSTED_ORIGINS Origines de confiance CSRF

4. Comptes de démonstration

Après seed_data, tous les comptes ont le mot de passe demo1234 :

Identifiant Rôle
ministere Super Admin — Ministère
admin_hgp Administrateur Hospitalier (Hôpital Général Peltier)
resp_urgences Responsable du service des Urgences
resp_reanimation Responsable du service de Réanimation

Le jeu de démonstration contient volontairement deux anomalies dans la consolidation pour illustrer la détection :

  • un agent ajouté hors source (absent des plannings) → marqué Hors source ;
  • un agent dont les gardes ont été gonflées au-delà du planning → marqué Écart.

5. Écrans

  1. Connexion/connexion/
  2. Tableau de bord — adapté au rôle (/)
  3. Plannings de service — liste, création, saisie des lignes, soumission, preuves
  4. Écran de consolidation/consolidations/<id>/ : tableau comparatif source vs retenu avec mise en évidence des écarts et fraudes
  5. Validation Ministère/validation/ : file d'attente, validation/rejet motivé
  6. Rapports — export CSV et PDF nominatif (totaux en FDJ)
  7. Journal d'audit/audit/ (Super Admin)

6. Structure du projet

Hosgarde/
├── manage.py
├── requirements.txt
├── README.md
├── gardesys/                  # Configuration du projet
│   ├── settings.py            # Taux FDJ, langue fr, médias, rôles…
│   ├── urls.py                # Auth + inclusion de core.urls
│   └── wsgi.py / asgi.py
├── core/                      # Application métier
│   ├── models.py              # Hopital, Service, Personnel, Planning,
│   │                          #   Consolidation, AuditLog, Profil…
│   ├── forms.py               # Formulaires + formsets (Bootstrap)
│   ├── views.py               # Vues (tableau de bord, plannings, consolidation…)
│   ├── urls.py                # Routes de l'application
│   ├── roles.py               # Groupes, contrôle d'accès, décorateur role_requis
│   ├── services.py            # Audit, génération de consolidation, export CSV
│   ├── pdf.py                 # Génération du rapport PDF (reportlab)
│   ├── admin.py               # Site d'administration
│   ├── signals.py             # Création automatique du profil
│   ├── context_processors.py  # Contexte global (ministère, taux, devise)
│   ├── templatetags/core_extras.py
│   └── management/commands/seed_data.py
├── templates/
│   ├── base.html
│   ├── registration/login.html
│   └── core/                  # Tableaux de bord, plannings, consolidation…
├── static/
└── media/                     # Preuves téléversées

7. Étendre le projet

  • Plusieurs hôpitaux — le modèle est déjà multi-hôpital. Créez les hôpitaux, services et personnels via /admin/, puis rattachez chaque utilisateur à son hôpital/service via son Profil. Le Super Admin voit automatiquement tous les hôpitaux ; chaque Admin Hôpital est confiné à son périmètre.
  • Nouveaux rôles / permissions — ajoutez un groupe dans core/roles.py et un vérificateur, puis protégez les vues avec @role_requis(...).
  • Modifier les tauxTAUX_GARDE_MEDECIN / TAUX_GARDE_PARAMEDICAL dans gardesys/settings.py.
  • Notifications, signatures électroniques, intégration paie — brancher sur les événements d'audit ou les transitions de statut de Consolidation.
  • Production — passer GARDESYS_DEBUG=0, définir GARDESYS_SECRET_KEY et GARDESYS_ALLOWED_HOSTS, servir les fichiers statiques (collectstatic) et les médias derrière un serveur web, et migrer vers PostgreSQL si besoin.

8. Notes techniques

  • Django 5.2, base SQLite par défaut (aucune dépendance lourde).
  • Bootstrap 5 + Bootstrap Icons (CDN), interface entièrement en français.
  • Audit personnalisé (AuditLog) — lecture seule, non modifiable depuis l'admin.
  • Verrouillage automatique des plannings soumis (sources immuables).
  • Génération automatique de la consolidation depuis les sources + détection des écarts et des ajouts hors source.
  • Exports CSV (UTF-8/Excel) et PDF (reportlab) avec totaux en FDJ.

About

Application de gestion de prime de garde

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors