1/18
Rapports et requêtes 1
Cette formation montre un exemple simple d'extraction de données et de rapport paramétrable.

Elle doit être complétée si on veut apprendre à extraire tout type de données.

formation 5/7/2010








2/18
Introduction
J'ai un souci. On me demande parfois des données que je ne trouve pas dans Santia.
Par exemple le nombre de tests de dépistage récupérés par les patients dans le mois.
Comment faire ?

Ok, il faut d'abord s'assurer que l'information est saisie quelque part dans les écrans.
Pour les retraits de tests de dépistage, l'information est saisie dans l'écran Dépistage.
Donc on peut arriver à sortir cette donnée.
En fait, si une information est saisie, il y a toujours un moyen de l'extraire.

Puis-je faire cette extraction moi-même ?

Oui, c'est l'objectif de cette formation.








3/18
Analyse > Rapports paramétrables
Alors, comment extraire le nombre de retraits de tests de dépistage dans le mois ?

Santia permet de créer un affichage spécial de données, de créer son propre affichage de données ou de calculs.
Allons dans Analyse > Rapports paramétrables.

Ok, j'y suis.
Je sélectionne un rapport dans la liste déroulante ?

Oui. On voit des instructions dans le cadre Paramétrage.
De plus, on peut lancer le rapport, qui s'affiche dans l'écran Analyse.

Je dois créer un nouveau rapport pour extraire le nombre de retraits de tests dans le mois ?

Oui, mais auparavant, nous allons étudier un peu le stockage des données.








4/18


Je peux créer mes propres rapports, pour afficher des données.








5/18
Stockage et classement des données
Les données sont stockées sur le serveur, n'est-ce-pas ?

Oui, mais elles ne sont pas stockées en vrac, elles sont classées rigoureusement.

Quel est ce classement ?

C'est un peu comme dans un bureau: on range toutes les factures dans un classeur, les bulletins de paie dans un autre classeur, etc.

Et pour Santia ?

Il y a un classeur pour les fiches patients, un autre classeur pour les examens de laboratoire, un autre classeur pour les délivrances de médicaments, etc.

Donc, on peut retrouver les données en ouvrant le bon classeur ?

Oui, c'est ça. Notez que le classeur s'appelle la TABLE.








6/18
Table des dépistages
Quel est le classeur - enfin la TABLE - où je peux trouver tous les dépistages ?

Cette table s'appelle Depi (comme dépistage).

Je peux ouvrir la table Depi et compter le nombre de retraits de tests ?

Oui. Nous allons écrire le paramétrage du rapport qui fera cette opération.








7/18


Sur le serveur, les dépistages sont classés dans la table "Depi".








8/18
Nombre de dépistages
Comment ouvrir la table Depi et compter le nombre de dépistages ?

D'abord, on crée un nouveau rapport (bouton Créer un nouveau rapport) et on lui donne un titre, par exemple "Dépistages du mois".

Ensuite ?

On clique dans le cadre Paramétrage (nous contacter pour obtenir le mot de passe) et on saisit le texte suivant (ou copier/coller c'est plus simple):

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Depi
#### affichage ####
Nombre de dépistages :
nb_depi


Que signifie ce texte de paramétrage ?

La partie #### sql #### interroge le serveur. L'instruction lui demande d'ouvrir la table Depi et de compter les dépistages.
La partie #### affichage #### définit ce qui sera affiché dans le rapport.

J'enregistre les modifications et je lance le rapport ?

Oui. Le rapport s'affiche dans Analyse: le nombre total de dépistages apparait sous "Nombre de dépistages :".








9/18
Texte de paramétrage
Ça marche, mais je ne comprends rien à ce texte de paramétrage !

C'est normal, regardons de plus près.
La partie #### sql #### contient une instruction SQL.
Le SQL (Standard Query Langage) est un langage pour dialoguer avec le serveur et obtenir des données.

C'est du chinois ?

C'est de l'anglais. Regardons en détail "SELECT COUNT(*) FROM Depi".
SELECT veut dire sélectionner, lire les données
COUNT(*) veut dire compter le nombre de données
FROM précède la table où on cherche les données
Depi est le nom de la table à ouvrir
Donc cette instruction demande de lire le nombre de données dans la table Depi, c'est-à-dire le nombre de dépistages.

Mais la ligne complète est "nb_depi<-SELECT COUNT(*) FROM Depi".

Oui, cela permet de copier le résultat (= le nombre de dépistages) dans le mot nb_depi qui est à gauche.
On peut avoir nb_depi=3, nb_depi=28, nb_depi=732, etc.

Je remarque qu'on retrouve le mot "nb_depi" dans la partie #### affichage ####, en dessous de "Nombre de dépistages :".

C'est exact. Si le mot nb_depi contient 732, le rapport va afficher 732 à l'emplacement du mot, c'est-à-dire en dessous de "Nombre de dépistages :".








10/18


Le paramétrage du rapport contient :
une partie ### sql ### qui cherche les données,
et une partie ### affichage ### qui les affiche.








11/18
Modifier le texte de paramétrage
Tout cela me paraît compliqué. Je ne sais pas comment écrire le paramétrage et je risque de me tromper.

Les erreurs n'ont pas de conséquence sur la base de données. On peut lancer un rapport avec un paramétrage erroné sans que cela pose de problème. N'ayez pas peur !
Attention toutefois à ne jamais utiliser les mots suivants qui modifient ou suppriment des données définitivement: ALTER, CREATE, INSERT, UPDATE, DELETE, DROP.(on verra plus tard qu'on peut les utiliser sur des tables temporaires).

C'est noté. Par où commencer pour apprendre à faire mon propre paramétrage ?

Commencez par modifier le paramétrage existant.
Par exemple, remplacez la ligne "Nombre de dépistages :" par "Nombre total de dépistages :".
Enregistrez les modifications et relancez le rapport.

Ah oui, je vois que j'ai modifié l'affichage du rapport. Le titre a changé.

Ok, un autre essai: saisir une deuxième ligne "nb_depi" en bas du texte:

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Depi
#### affichage ####
Nombre total de dépistages :
nb_depi
nb_depi


Ok, je vois que le nombre de dépistages est répété deux fois maintenant.

Oui, le mot nb_depi peut être placé où on veut - et plusieurs fois - dans le rapport.








12/18
Un peu de mise en page
Est-ce que je peux vraiment modifier la mise en page du rapport ?

Oui, on peut ajouter des lignes par exemple:

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Depi
#### affichage ####
Dépistages
Nombre total:
nb_depi


Ok, je peux aussi sauter des lignes. Quoi d'autre ?

On peut créer des colonnes:

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Depi
#### affichage ####
Dépistages|nb_depi


En effet, le nombre s'affiche maintenant à droite et non plus en-dessous.

C'est le signe spécial "|" qui permet de faire des colonnes.








13/18


Je peux modifier moi-même l'aspect du rapport.








14/18
Modifier le SQL
Est-ce que je peux modifier aussi la partie #### sql #### ?

Bien sûr. Remplacez le mot Depi (= le nom de la table des dépistages) par le mot Doss.
Doss est la table des dossiers:

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Doss
#### affichage ####
Nombre total de dépistages:
nb_depi


J'obtiens effectivement le nombre de dossiers.
Mais du coup, mon rapport est faux: le titre affiche le nombre de dépistages alors que le chiffre est le nombre de dossiers !

Oui, il faut que la partie #### affichage #### soit cohérente avec la partie #### sql ####.
Remplacez "Nombre total de dépistage" par "Nombre total de dossiers":

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Doss
#### affichage ####
Nombre total de dossiers:
nb_depi


Merci. Quelque chose me gêne encore, c'est le mot "nb_depi" qui fait penser à dépistages.

Ce mot nb_depi qui prend le nombre pour l'afficher, est libre. On pourrait utiliser n'importe quel mot (mais les espaces sont interdits). Il faut juste le saisir à l'identique dans la partie sql et affichage. Par exemple:

#### sql ####
nb_dossiers<-SELECT COUNT(*) FROM Doss
#### affichage ####
Nombre total de dossiers:
nb_dossiers









15/18
Augmenter le rapport
Et un rapport qui affiche à la fois le nombre de dossiers et le nombre de dépistages ?

Pas de souci.
La partie SQL peut demander au serveur plusieurs informations à la suite,
et la partie affichage peut tout afficher ensemble:

#### sql ####
nb_doss<-SELECT COUNT(*) FROM Doss
nb_depi<-SELECT COUNT(*) FROM Depi
#### affichage ####
Nombre total de dossiers:
nb_doss
Nombre total de dépistages:
nb_depi


On peut donc faire un rapport complet, avec beaucoup de lignes de chiffres et de texte ?

Tout à fait. Un rapport d'activité, des indicateurs UNGASS, etc.








16/18


Il est possible de créer des rapports plus complets.








17/18
Affiner le SQL
Au début de la formation, j'ai signalé que je voulais obtenir le nombre de retraits de tests dans le mois. Pour l'instant, nous avons plutôt le nombre total de dépistages.

Oui, nous allons affiner le calcul dans la partie sql.

! Copier/coller le texte sans saut de ligne entre "nb_depi<-SELECT..." et ..."2010-12-31".

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Depi WHERE TestRetr BETWEEN "2010-01-01" AND "2010-12-31"
#### affichage ####
Nb de dépistages retirés en 2010:
nb_depi


On a ajouté "WHERE etc.", ça signifie quoi ?

WHERE est un mot SQL qui permet de filtrer les données, il pose une condition.
Dans cet exemple, on n'obtient pas tous les dépistages, mais seulement ceux retirés en 2010.

Les mots SQL sont toujours en majuscules ?

Oui, c'est pour les distinguer. En réalité, on pourrait écrire indifféremment en minuscules ou en majuscules. Mais c'est plus clair ainsi.

Et "TestRetr" ?

TestRetr est un mot propre à Santia, comme Depi la table des dépistages.
TestRetr est une des informations contenues dans la table Depi: c'est la date du retrait du test de dépistage.

Et "BETWEEN" ?

BETWEEN est un mot SQL qui veut dire: entre telle date et telle date.
AND sépare la date de début et la date de fin de la période.

Donc cela veut dire: le nombre de dépistages dont la date de retrait est comprise entre le 1er janvier 2010 et le 31 décembre 2010 ?

Exact. Les dépistages non retirés, ou retirés en dehors de la période, ne sont plus comptés.
Notez que les dates sont sous la forme année-mois-jour (et non pas jour-mois-année) et entourées de guillemets.








18/18
Pour finir !
On arrive au bout ?

Oui, un dernier point. Il est simple de modifier la période pour obtenir le nombre de retraits de test d'un mois donné:

! Copier/coller le texte sans saut de ligne entre "nb_depi<-SELECT..." et ..."2010-03-31"

#### sql ####
nb_depi<-SELECT COUNT(*) FROM Depi WHERE TestRetr BETWEEN "2010-03-01" AND "2010-03-31"
#### affichage ####
Nb de dépistages retirés en mars 2010:
nb_depi


Ok, je peux demander n'importe quelle période.

Voilà, c'est fini.
Merci de votre attention !

A bientôt pour la suite:
- mieux connaitre le SQL
- mieux connaitre la base de données Santia (noms des tables, etc.)