From Django
From Django
db import models
from django.utils import timezone
class Patient(models.Model):
nom = models.CharField(max_length=100)
prénom = models.CharField(max_length=100)
date_naissance = models.DateField()
sexe = models.CharField(max_length=10)
profession = models.CharField(max_length=100, blank=True, null=True)
ethnie = models.CharField(max_length=100, blank=True, null=True)
religion = models.CharField(max_length=100, blank=True, null=True)
adresse = models.TextField(blank=True, null=True)
téléphone = models.CharField(max_length=20, blank=True, null=True)
statut_matrimonial = models.CharField(max_length=20, blank=True, null=True)
nationalité = models.CharField(max_length=100, blank=True, null=True)
def __str__(self):
return f"{self.nom} {self.prénom}"
class DossierMedical(models.Model):
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
date_creation = models.DateField(default=timezone.now)
date_modification = models.DateField(auto_now=True)
etat = models.CharField(max_length=20)
def __str__(self):
return f"Dossier {self.id} pour {self.patient}"
class Consultation(models.Model):
dossier_medical = models.ForeignKey(DossierMedical, on_delete=models.CASCADE)
date = models.DateField(default=timezone.now)
motif = models.TextField()
diagnostique = models.TextField()
Traitement = models.TextField()
médecin_referant = models.CharField(max_length=100)
complication = models.BooleanField(default=False)
def __str__(self):
return f"Consultation {self.id} du {self.date}"
class Admission(models.Model):
dossier_medical = models.ForeignKey(DossierMedical, on_delete=models.CASCADE)
date_admission = models.DateField(default=timezone.now)
date_sortie = models.DateField(blank=True, null=True)
motif_admission = models.TextField()
mode_admission = models.CharField(max_length=20)
soignant_referant = models.CharField(max_length=100)
device = models.CharField(max_length=100)
is_readmission = models.BooleanField(default=False)
def __str__(self):
return f"Admission {self.id} du {self.date_admission}"
class Anamnese(models.Model):
dossier_medical = models.ForeignKey(DossierMedical, on_delete=models.CASCADE)
signes = models.TextField()
duree_evolution = models.CharField(max_length=100)
caracteristiques_symptomes = models.TextField()
def __str__(self):
return f"Anamnese {self.id}"
class Antecedent(models.Model):
dossier_medical = models.ForeignKey(DossierMedical, on_delete=models.CASCADE)
type = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return f"Antecedent {self.id} ({self.type})"
class Examen(models.Model):
consultation = models.ForeignKey(Consultation, on_delete=models.CASCADE)
type = models.CharField(max_length=100)
resultat = models.TextField()
def __str__(self):
return f"Examen {self.id} ({self.type})"
class Traitement(models.Model):
consultation = models.ForeignKey(Consultation, on_delete=models.CASCADE)
description = models.TextField()
def __str__(self):
return f"Traitement {self.id}"
class Evolution(models.Model):
dossier_medical = models.ForeignKey(DossierMedical, on_delete=models.CASCADE)
date = models.DateField(default=timezone.now)
description = models.TextField()
def __str__(self):
return f"Évolution {self.id} du {self.date}"
class Statistique(models.Model):
date = models.DateField(default=timezone.now)
type = models.CharField(max_length=100)
valeur = models.FloatField()
def __str__(self):
return f"Statistique {self.type} ({self.date})"
class EpidemiologicalReport(models.Model):
date_generated = models.DateField(auto_now_add=True)
total_patients = models.IntegerField()
total_admissions = models.IntegerField()
total_consultations = models.IntegerField()
common_diagnoses = models.TextField()
common_treatments = models.TextField()
def __str__(self):
return f'Report generated on {self.date_generated}'
class EpidemiologicalIndicator(models.Model):
date_generated = models.DateField(auto_now_add=True)
incidence_rate_nosocomial_infections = models.FloatField()
prevalence_nosocomial_infections = models.FloatField()
incidence_rate_nosocomial_bacteremia = models.FloatField()
incidence_rate_surgical_site_infections = models.FloatField()
incidence_rate_cauti = models.FloatField() # Catheter-associated urinary tract
infections
incidence_rate_vap = models.FloatField() # Ventilator-associated pneumonia
colonization_rate_mdr_bacteria = models.FloatField() # Multidrug-resistant
bacteria
mortality_rate_nosocomial_infections = models.FloatField()
readmission_rate_nosocomial_infections = models.FloatField()
device_utilization_rate = models.FloatField()
hand_hygiene_protocol_compliance = models.FloatField()
flu_vaccination_rate_healthcare_staff = models.FloatField()
patient_satisfaction_rate = models.FloatField()
adverse_event_reporting_rate = models.FloatField()
pathogen_resistance_rate = models.FloatField()
antibiotic_consumption = models.FloatField()
hospital_mortality_rate = models.FloatField()
readmission_rate = models.FloatField()
surgical_reoperation_rate = models.FloatField()
postoperative_complication_rate = models.FloatField()
average_length_of_stay = models.FloatField()
staff_vaccination_coverage = models.FloatField()
def __str__(self):
return f'Indicators generated on {self.date_generated}'
# models.py
class Infection(models.Model):
INFECTION_TYPES = [
('bacteremia', 'Bactériémie'),
('surgical_site', 'Site Opératoire'),
('cauti', 'Infection Urinaire Associée aux Cathéters (CAUTI)'),
('vap', 'Pneumonie Associée à la Ventilation Mécanique (VAP)'),
# Ajoutez d'autres types d'infection si nécessaire
]
def __str__(self):
return f'Observation {self.id} - {"Compliant" if self.compliant else "Non-
compliant"}'
class PatientSatisfactionSurvey(models.Model):
patient = models.ForeignKey('Patient', on_delete=models.CASCADE)
date_completed = models.DateField()
satisfied = models.BooleanField()
comments = models.TextField(blank=True, null=True)
def __str__(self):
return f'Survey {self.id} - {"Satisfied" if self.satisfied else "Unsatisfied"}'
class AdverseEvent(models.Model):
patient = models.ForeignKey('Patient', on_delete=models.CASCADE)
date_occurred = models.DateField()
description = models.TextField()
reported = models.BooleanField()
def __str__(self):
return f'AdverseEvent {self.id} - {self.description[:20]}'
# models.py
from django.db import models
class PathogenSample(models.Model):
patient = models.ForeignKey('Patient', on_delete=models.CASCADE)
date_collected = models.DateField()
pathogen = models.CharField(max_length=100)
resistant = models.BooleanField()
def __str__(self):
return f'Sample {self.id} - {self.pathogen}'
class AntibioticAdministration(models.Model):
patient = models.ForeignKey('Patient', on_delete=models.CASCADE)
date_administered = models.DateField()
antibiotic = models.CharField(max_length=100)
dose = models.FloatField()
def __str__(self):
return f'AntibioticAdministration {self.id} - {self.antibiotic}'
class Staff(models.Model):
name = models.CharField(max_length=100)
role = models.CharField(max_length=100)
vaccinated = models.BooleanField(default=False)
def __str__(self):
return self.name