11/17
IO sous ARV 1/2
Je voudrais le nombre de patients sous ARV depuis plus de 6 mois qui font une infection opportuniste (IO).

Qui font une infection opportuniste actuellement ? On va considérer les IO saisies dans les consultations médicales des 60 derniers jours par exemple.

On sait déjà compter les patients sous ARV depuis plus de 6 mois et non décédés (voir Survie sous ARV):

nb_arv6<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND (MediCons.Arv0Prsc<>"" OR MediCons.Arv1Prsc<>"" OR MediCons.Arv2Prsc<>"" OR MediCons.Arv3Prsc<>"") AND MediCons.Dat_<=DATE_SUB(CURDATE(),INTERVAL 180 DAY) AND Doss.Arv_Desi<>"" AND Doss.RensDeceDat_=0

Je me souviens du rapport IO dans la formation 2. On lisait la colonne ConcCase de la table MediCons pour obtenir la valeur des cases à cocher d'infections opportunistes.

Oui, dès qu'une case IO est cochée (classification OMS, palu..), la valeur de ConcCase change.

Toutefois, on a un petit souci. Comme on lit les consultations médicales de plus de 6 mois (pour déterminer si le patient est sous ARV depuis plus de 6 mois), on ne peut pas demander en même temps les consultations de moins de 2 mois (qui contiennent une IO récente). C'est contradictoire: une consultation médicale ne peut être à la fois ancienne (plus de 6 mois) et récente (moins de 2 mois).
On va donc passer par une table temporaire pour stocker d'abord les dossiers sous ARV depuis plus de 6 mois.
Je ne réexplique pas cette partie car nous l'avons vue précédemment pour Perdus de vue:

DROP TABLE IF EXISTS Temp
CREATE TEMPORARY TABLE Temp (Doss INT)
INSERT INTO Temp (Doss) SELECT DISTINCT MediCons.Doss FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND (MediCons.Arv0Prsc<>"" OR MediCons.Arv1Prsc<>"" OR MediCons.Arv2Prsc<>"" OR MediCons.Arv3Prsc<>"") AND MediCons.Dat_<=DATE_SUB(CURDATE(),INTERVAL 180 DAY) AND Doss.Arv_Desi<>"" AND Doss.RensDeceDat_=0