24.04.2014 Views

Pratique de Sas Windows ...9.3 Volume 2 - Ined

Pratique de Sas Windows ...9.3 Volume 2 - Ined

Pratique de Sas Windows ...9.3 Volume 2 - Ined

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapitre 1 ODS complément au V1:<br />

PROC TEMPLATE Ma<strong>de</strong><br />

Easy: A Gui<strong>de</strong> for <strong>Sas</strong> Users<br />

By Kevin D. Smith<br />

Avril 2013<br />

<strong>de</strong>ux types <strong>de</strong> proc template<br />

1 Data Component + 1 Template <strong>de</strong> Table =<br />

1 Output Object ornementé par 1 Gabarit<br />

(ou template <strong>de</strong> style)<br />

et parfois restructuré par un template <strong>de</strong> type tagset.<br />

https://support.sas.com/pubscat/book<strong>de</strong>tails.jsp?catid=1&pc=62007<br />

1.1 Le template <strong>de</strong> table<br />

1.1.1 Introduction<br />

Déjà usager <strong>de</strong> l’ODS (qui, <strong>de</strong>puis la 9.2, contient 4 types <strong>de</strong> template table/style/tagsets/graph), vous avez pu cotoyer<br />

certains templates <strong>de</strong> table (par vous-même ou en me lisant en V1_p123-125). L’objectif est <strong>de</strong> vous montrer<br />

qu’il est relativement facile <strong>de</strong> créer un résultat structuré et présenté par vous, n’appelant aucune procédure à<br />

votre secours.<br />

Pour vous ai<strong>de</strong>r, 2 points <strong>de</strong> départ : la fiche <strong>Sas</strong> http://support.sas.com/rnd/base/ods/scratch/table-tips.pdf et la<br />

présentation <strong>de</strong> Kevin D. Smith « Proc Template tables from Scratch » du SGF forum <strong>de</strong> 2007 déjà<br />

mentionnée en V1 https://support.sas.com/rnd/base/ods/scratch/tables-from-sc-paper.pdf<br />

N’ayant point déjà creusé la question à partir <strong>de</strong> zéro, je tente ici un exemple ex-nihilo en ne disposant<br />

que d’une table <strong>Sas</strong> contenant <strong>de</strong>s données médicales concernant <strong>de</strong>s mala<strong>de</strong>s chroniques relevant <strong>de</strong> la<br />

néphrologie. Et le programmeur <strong>de</strong> l’hôpital cherche à présenter les résultats <strong>de</strong>s examens au mé<strong>de</strong>cin.<br />

Cet exemple élémentaire n’a pas été poussé au-<strong>de</strong>là <strong>de</strong> la sortie tabulaire élémentaire. Et pour le<br />

contenu, vous pouvez consulter ce document : http://lescercles<strong>de</strong>laennec.com/insuffisance renale chronique.pdf<br />

Vous pourrez poursuivre ensuite sur le sujet <strong>de</strong>s fiches en lisant les excellents papiers complémentaires<br />

suivant : « Creating Customized Patient Profiles using <strong>Sas</strong> ODS RTF and PROC TEMPLATE» <strong>de</strong> Andrea<br />

Ritter http://www.lexjansen.com/pharmasug/2011/TT/PharmaSUG-2011-TT03.pdf et<br />

celui <strong>de</strong> S.Matange et D.Heath « Create Comprehensive Patient Profiles with <strong>Sas</strong> »<br />

http://www.lexjansen.com/pharmasug/2010/<strong>Sas</strong>/<strong>Sas</strong>-CC-<strong>Sas</strong>01.pdf , incitant à créer le complément graphique à<br />

l’ai<strong>de</strong> <strong>de</strong> ce qui sera vu dans ce second volume : http://support.sas.com/kb/39/892.html<br />

1.1.2 Construction d’un template <strong>de</strong> table<br />

libname tpl "d:\My <strong>Sas</strong> Files\tpl";<br />

ods path (prepend) tpl.tabtpl(update);<br />

libname a "d:\notes\test";<br />

proc template;<br />

<strong>de</strong>fine table Biol.patientH;<br />

notes "Essai d'exemple <strong>de</strong> fiche homme";<br />

dynamic name_width_max name_width;<br />

mvar type;<br />

column date age poids taille surfcorp creat<br />

Cockgault clN Mdrd tacro (cholt hdl trig)<br />

phosfo potas uree ;<br />

<strong>de</strong>fine hea<strong>de</strong>r entete;<br />

text "Fiche patient" ;<br />

end;<br />

<strong>de</strong>fine hea<strong>de</strong>r entete1;<br />

text " INFO Débit Filtration Glomérulaire";<br />

start=creat; end=mdrd;<br />

end;<br />

<strong>de</strong>fine hea<strong>de</strong>r entete3;<br />

text "Lipi<strong>de</strong>s etc."; start=cholt; end=uree;<br />

end;<br />

<strong>de</strong>fine surfcorp;<br />

compute as ((poids*taille)/3600)**0.5 ;<br />

hea<strong>de</strong>r="Surface Corp. Mosteller";<br />

format= 7.3;<br />

end;<br />

Je définis un lieu <strong>de</strong> stockage personnel pour<br />

mon template <strong>de</strong> table.<br />

L’entrepôt <strong>de</strong> nom tabtpl contiendra un casier<br />

Biol dans lequel j’aurai le template patientH<br />

représentant la forme d’une fiche patient<br />

masculin.<br />

Notes désigne une info interne au co<strong>de</strong>.<br />

Dynamic désigne <strong>de</strong>s MacroVariables<br />

automatiques <strong>de</strong> template, mais mvar désigne<br />

une MVariable personnelle que je passerai.<br />

Column nomme les variables existantes ou<br />

créées retenues pour ce template. Entre ( ), ce<br />

qui est à regrouper.<br />

Des <strong>de</strong>fine porteront sur <strong>de</strong>s en-têtes (hea<strong>de</strong>r),<br />

<strong>de</strong>s bas_<strong>de</strong>_tableaux (footer) ou sur les<br />

colonnes à nommer.<br />

Des hea<strong>de</strong>rs/footer successifs doivent être<br />

nommés.<br />

Certains hea<strong>de</strong>rs peuvent chapeauter plusieurs<br />

colonnes grâce à start/end.<br />

Text ce qui sera mis dans la case hea<strong>de</strong>r <strong>de</strong> la<br />

ou <strong>de</strong>s colonne(s).<br />

Les <strong>de</strong>fine se terminent par un end ;<br />

On peut calculer <strong>de</strong> nouvelles valeurs pour<br />

une nouvelle colonne et bien sûr formater ce<br />

résultat et donner un texte d’en-tête.<br />

15 INED Service Informatique Wielki

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!