1/11
Rapports et requêtes 5
A la suite des formations Rapports et requêtes 1 à 4, abordons les points suivants:
Prophylaxie (cotrim.)
Co-infection VIH/TB
PTME et pédiatrie
Facteurs de risque (AES, etc.)

La version Santia 6/5/2010 ou ultérieure est requise pour les travaux pratiques

formation 30/7/2010








2/11
Prophylaxie 1/2
Comment compter le nombre de patients éligibles à la prophylaxie cotrimoxazole ?

On peut sortir le nombre de dossiers dont la sérologie est positive:

nb_doss_vih<-SELECT COUNT(*) FROM Doss WHERE MediSero=1

Ok, on filtre la colonne MediSero et la valeur 1 signifie VIH+.
Et pour le nombre de patients sous cotrimoxazole ?

On va calculer le nombre de patients à qui on a prescrit au moins une fois ce produit.
Il faut vérifier la désignation exacte de ce produit dans Paramètres > Listes > Pharmacie > Désignation. Normalement, la désignation précise est "sulfaméthoxazole + triméthoprime" (peu importe le dosage et la forme). Certains centres ont ajouté le produit "cotrimoxazole" ou "cotrim" voire "Bactrim". Dans ce cas, il faut indiquer cette désignation dans la ligne "set @cotrim=..." en respectant les accents, espaces, majuscules et minuscules.

set @cotrim=(SELECT Nume FROM Dci_ WHERE Desi="sulfaméthoxazole + triméthoprime")
nb_doss_cotrim<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND (Med0Dci_=@cotrim OR Med1Dci_=@cotrim OR Med2Dci_=@cotrim OR Med3Dci_=@cotrim OR Med4Dci_=@cotrim OR Med5Dci_=@cotrim)


Ce code ressemble à ce qu'on a vu lors de la formation 3 sur les ARV. On cherche les consultations médicales des dossiers et on filtre les colonnes de prescription de médicament.

Oui, quand le médecin prescrit des médicaments IO, les 6 colonnes Med0Dci_ à Med5Dci_ contiennent la désignation des produits. Le cotrimoxazole peut se trouver dans l'une des colonnes.
A la 1ère ligne, je stocke l'identifiant de la désignation du cotrimoxazole dans le mot-clé "@cotrim", pour l'utiliser dans la suite du code. La table des désignations des produits est Dci_.

Si on veut compter les patients à qui on a prescrit du cotrimoxazole seulement dans les 12 derniers mois:

set @cotrim=(SELECT Nume FROM Dci_ WHERE Desi="sulfaméthoxazole + triméthoprime")
nb_doss_cotrim<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND (Med0Dci_=@cotrim OR Med1Dci_=@cotrim OR Med2Dci_=@cotrim OR Med3Dci_=@cotrim OR Med4Dci_=@cotrim OR Med5Dci_=@cotrim) AND MediCons.Dat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR)


Ok, on peut remplacer la condition sur les 12 derniers mois "MediCons.Dat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR)" par celle qu'on a déjà utilisée avec debut_periode et fin_periode.








3/11
Prophylaxie 2/2
Comment compter les ruptures de stock de cotrimoxazole ?

Comme pour les ARV (cf. formation 4), je propose de compter les dossiers dont une prescription (= ordonnance) de cotrimoxazole n'a pas été servie.
Quand on active Paramètres > Application > Délivrer uniquement sur prescription (et on peut cocher Autoriser la dizaine d'unité supérieure), les quantités délivrées (écran Dispensation) sont enregistrées à côté des quantités prescrites. On peut alors faire la comparaison dans les données.
J'ai ajouté une condition pour ne sortir que les prescriptions non servies des 12 derniers mois.

set @cotrim=(SELECT Nume FROM Dci_ WHERE Desi="sulfaméthoxazole + triméthoprime")
nb_doss_rupt_cotrim<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND ((Med0Dci_=@cotrim AND (Med0Serv IS NULL OR Med0Serv=0)) OR (Med1Dci_=@cotrim AND (Med1Serv IS NULL OR Med1Serv=0)) OR (Med2Dci_=@cotrim AND (Med2Serv IS NULL OR Med2Serv=0)) OR (Med3Dci_=@cotrim AND (Med3Serv IS NULL OR Med3Serv=0)) OR (Med4Dci_=@cotrim AND (Med4Serv IS NULL OR Med4Serv=0)) OR (Med5Dci_=@cotrim AND (Med5Serv IS NULL OR Med5Serv=0))) AND MediCons.Dat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR)


Oui, le code est similaire à celui des ruptures ARV de la formation 4. J'ai relu les explications qui avaient été données.

Remarque: comme pour les ruptures ARV, les délivrances partielles ne sont pas comptées comme des ruptures.








4/11


Pour tout médicament, on peut compter les prescriptions ou les ruptures en utilisant l'identifiant de sa désignation exacte.








5/11
Co-infection VIH/TB 1/2
Je voudrais compter les patients présentant une co-infection VIH/TB.

On a déjà traité la question des IO dans la formation 2. Je suggère de s'y reporter.
J'ajoute simplement que l'IO "Tuberculose pulmonaire dans l'année précédente" est la case n°14, et "Tuberculose extra-pulmonaire" est la case n°27.

nb_doss_tb<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND (SUBSTR(ConcCase,14,1)=1 OR SUBSTR(ConcCase,27,1)=1) AND MediCons.Dat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR)

Je vois qu'on ne filtre que les 12 derniers mois.
Il manque la condition VIH+ pour la co-infection, non ?

Exact, j'ajoute cette condition, déjà utilisée pour les dossiers éligibles à la prophylaxie cotrimoxazole:

nb_doss_vih_tb<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND (SUBSTR(ConcCase,14,1)=1 OR SUBSTR(ConcCase,27,1)=1) AND MediCons.Dat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND Doss.MediSero=1








6/11
Co-infection VIH/TB 2/2
On a compté les patients co-infectés VIH/TB dans les 12 derniers mois. Je voudrais que l'on ajoute maintenant la condition "sous traitement antituberculeux et ARV".

Nous savons déjà filter les dossiers sous ARV avec la colonne Arv_Desi, voir la formation 4:

nb_doss_vih_tb_arv<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND (SUBSTR(ConcCase,14,1)=1 OR SUBSTR(ConcCase,27,1)=1) AND MediCons.Dat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND Doss.MediSero=1 AND Doss.Arv_Desi<>""

Pour le traitement antituberculeux, cela ressemble au cas du cotrimoxazole. Nous devons indiquer les désignations exactes des produits antituberculeux utilisés dans le centre. Dans l'exemple ci-dessous, je ne traite que de 2 produits.
Ajoutez les autres désignations (set @tb3=...) en respectant les accents, majuscules et minuscules, ainsi que les associations de molécules (voir Paramètres > Listes > Pharmacie > Désignation).

set @tb1=(SELECT Nume FROM Dci_ WHERE Desi="rifampicine")
set @tb2=(SELECT Nume FROM Dci_ WHERE Desi="éthambutol")
nb_doss_arv_antitb<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,MediCons WHERE Doss.Nume=MediCons.Doss AND Doss.Arv_Desi<>"" AND (Med0Dci_=@tb1 OR Med1Dci_=@tb1 OR Med2Dci_=@tb1 OR Med3Dci_=@tb1 OR Med4Dci_=@tb1 OR Med5Dci_=@tb1 OR Med0Dci_=@tb2 OR Med1Dci_=@tb2 OR Med2Dci_=@tb2 OR Med3Dci_=@tb2 OR Med4Dci_=@tb2 OR Med5Dci_=@tb2) AND MediCons.Dat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR)


Ok, pour chaque produit qu'on ajoute, il faut ajouter ensuite les conditions sur les 6 colonnes de prescription: Med0Dci_=@tb3, etc.








7/11


La co-infection VIH/TB est une application de ce qui a déjà été étudié pour les IO et les prescriptions.








8/11
PTME et pédiatrie 1/2
Passons à la PTME. Comment compter les femmes enceintes VIH+ ?

La table PtmeGros contient les grossesses des patientes.

Pour le nombre de femmes VIH+ qui ont eu une grossesse dans les 12 derniers mois:

nb_doss_gros<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,PtmeGros WHERE Doss.Nume=PtmeGros.Doss AND Doss.MediSero=1 AND PtmeGros.SaisDat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR)

La colonne SaisDat_ est la date de saisie de la grossesse.

Ok.
Autre chose: dans l'écran Dossier > PTME > Grossesse, le médecin renseigne le protocole PTME choisi: "Trithérapie, AZT, NVP, AZT+NVP, Poursuite traitement en cours". Comment compter les patientes selon ce protocole ?

C'est simple, il suffit d'ajouter une condition sur cette colonne qui est Arv_Trai. Par exemple pour le protocole "AZT+NVP":

set @prot="AZT+NVP"
nb_doss_gros_prot<-SELECT COUNT( DISTINCT Doss.Nume ) FROM Doss,PtmeGros WHERE Doss.Nume=PtmeGros.Doss AND Doss.MediSero=1 AND PtmeGros.SaisDat_>DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND PtmeGros.Arv_Trai=@prot









9/11
PTME et pédiatrie 2/2
Comment compter les enfants VIH+ suivis au centre ? Ceux qui sont éligibles aux ARV, sous ARV ou sous cotrimoxazole ?

Nous avons déjà fait ces calculs pour l'ensemble des dossiers. On peut donc reprendre les même calculs et ajouter une condition sur l'âge, par exemple inférieur ou égal à 5 ans: AND Doss.RensAge_<=5.

Ok. Toutefois, dans l'écran Dossier > PTME > Enfant, je vois qu'on peut saisir les consultations de suivi des enfants nés des grossesses.

Oui, c'est la table PtmeEnfaCons, mais si l'enfant est séropositif et suivi au centre, on lui ouvre un dossier comme à un adulte.








10/11


La table PtmeGros contient les grossesses des patientes.
Les dossiers des enfants nés des grossesses font partie du total des dossiers.








11/11
Facteurs de risque
Pour finir, je voudrais compter les dossiers selon les facteurs de risques. J'ai vu qu'on saisit cette information à l'ouverture du dossier, dans l'écran Dossier > Ouverture: facteurs de risque.

Oui, il y a différentes cases à cocher. Par exemple, pour l'accident d'exposition au sang (AES) dans le cadre professionnel, on peut utiliser la case "piqûre accidentelle".

Les noms des colonnes correspondantes aux cases sont:
MediRisqMult: Multipartenariat
MediRisqOcca: Partenaire occasionnel
MediRisqPoly: Polygamie
MediRisqPart: Partenaire VIH+
MediRisqHomo: Rapports homosexuels
MediRisqTran: Transfusion
MediRisqScar: Scarification
MediRisqPiqu: Piqûre accidentelle
MediRisqMere: Mère VIH+

Donc pour compter les dossiers avec la case "piqûre accidentelle" cochée:

nb_doss_piqu<-SELECT COUNT(*) FROM Doss WHERE MediRisqPiqu=1

Et pour compter parmi ces dossiers ceux qui ont été mis sous ARV ?

On ajoute la condition habituelle du traitement ARV:

nb_doss_piqu_arv<-SELECT COUNT(*) FROM Doss WHERE MediRisqPiqu=1 AND Arv_Desi<>""

Oui, nous l'avons déjà vue plusieurs fois.

Voilà, c'est tout pour cette fois-ci,
merci de votre attention,
bonne continuation avec Santia !