1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
%macro controlequalite;
proc sort DATA=alz.coherence out=alz.centres(keep=utilisateur) nodupkey; BY utilisateur;run;
proc sort DATA=alz.coherence; BY utilisateur;run;
DATA _null_;
SET alz.centres;
/*permet de creer une liste contenant centre avec un numero avec un nom de centre associé*/
call symputx('centre'||left(trim(_n_)),utilisateur);
/*compte le nombre de centres*/
call symput('nb_centre',_n_);
run;
/*genere une table avec le nom et le nombre de corpus.*/
proc freq data=alz.coherence;
tables utilisateur/ out=alz.sortieb nocum noprint;
run;
DATA _null_;
SET alz.sortieb;
/*permet de creer une liste contenant centre avec un numero avec un nom de centre associé*/
call symputx('nb_corpus'||left(trim(_n_)),count);
run;
/*enregistre dans une table temporaire les stat nationales sur les incoherences de l'age*/
proc tabulate DATA=alz.coherence out=coherenceage;
Class coh_age / ORDER=DATA ;
KEYLABEL n='Fréquence (n)' pctn='%';
Table coh_AGE='' all="Nombre de patients",
N pctn;
run;
/*boucle qui parcours tous les centres*/
%do i=1 %TO nb_centre.;
DATA temp (keep= centrenom centrenum typecentre creationmois utilisateur coh_age);
SET alz.coherence;
IF utilisateur="&¢re&i" then output;
run;
/*permet de connaitre le nombre d'acte en fonction du centre en fonction du temps*/
proc freq data=alz.bna_coherence (where=(utilisateur="&¢re&i"));
tables creationmois/ out=alz.sortietemp nocum noprint;
run;
/*Ouvres un document rtf avec un nom generique portant le nom du centre*/
ODS _all_ close;
ods listing close;
options nodate nonumber;
ods noptitle;
proc tabulate DATA=temp out=travail1;
Class coh_age / ORDER=DATA ;
KEYLABEL n='Fréquence (n)' pctn='%';
Table coh_AGE='' all="Nombre total d'actes",
N pctn;
run;
ods rtf file="\\acopier\&¢re&i...rtf" /* pour supprimer le saut de page startpage=never*/;
ods escapechar="^";
/* retire le titre des procedures dans le fichier resultat*/
ods noproctitle;
options center;
title "TABLEAU DE BORD";
title2 "Rapport Automatisé du &sysdate";
title3 "&¢re&i..";
title4 "Tableau de controle de cohérence";
ods rtf startpage=now;
ods rtf startpage=never;
options nocenter;
/*tableau croisé permettant d'avoir le detail des incoherences sur l'age*/
ods rtf text='^S={font=(Arial) fontsize=11pt fontweight=bold}{Tableau 1 : Analyse des âges extrêmes}';
proc sql;
SELECT travail1.coh_age, travail1.n as nb_centre, travail1.pctn_0 as freq_centre, coherenceage.n as nb_nat,
coherenceage.pctn_0 as freq_nat
FROM travail1 RIGHT JOIN coherenceage ON travail1.coh_age = coherenceage.coh_age;
quit;
/*referme le document rtf*/
ods _all_ close;
/*termine la boucle*/
%end;
%mend; |
Partager