?>Array ( [lang] => fr [id] => 104 ) Scénario Cas Limite : Analyse de Données Cliniques avec Tolérance et Erreurs Contrôlées - WeAreCAS
sessionProp addFormat

Scénario Cas Limite : Analyse de Données Cliniques avec Tolérance et Erreurs Contrôlées

Scénario de test & Cas d'usage

Contexte Métier

Dans le cadre d'un essai clinique, des mesures physiologiques (température) sont collectées. Ces mesures peuvent avoir de légères imprécisions. De plus, les codes d'effets secondaires doivent être affichés dans un ordre de gravité spécifique, et non par ordre alphabétique. On veut aussi s'assurer qu'un format critique ne peut pas être écrasé par erreur.
Préparation des Données

Création d'une table `ESSAI_CLINIQUE` avec des températures (certaines légèrement hors des bornes exactes) et des codes d'effets secondaires, incluant une valeur pour 'non applicable'.

Copié !
1DATA casuser.ESSAI_CLINIQUE;
2 INPUT ID_Patient $ Temperature Code_Effet;
3 DATALINES;
4P01 36.8 3
5P02 38.6 1
6P03 37.59 2
7P04 39.1 1
8P05 37.0 999
9;
10RUN;

Étapes de réalisation

1
Création de la bibliothèque de formats 'pharmaLib'.
Copié !
1PROC CAS;
2 sessionprop.addFmtLib fmtLibName="pharmaLib";
3RUN;
2
Ajout d'un format 'StatutTemp' avec une tolérance (fuzz) pour gérer les imprécisions de mesure.
Copié !
1PROC CAS;
2 sessionprop.addFormat
3 fmtLibName="pharmaLib"
4 fmtName="StatutTemp"
5 fuzz=0.1
6 ranges={"low-37.5='Normal'", "37.6-38.5='Subfébrile'", "38.6-high='Fièvre'"};
7RUN;
3
Ajout d'un format 'GraviteEffet' avec un ordre non trié pour préserver la logique métier.
Copié !
1PROC CAS;
2 sessionprop.addFormat
3 fmtLibName="pharmaLib"
4 fmtName="GraviteEffet"
5 notSorted=true
6 ranges={"1='Grave'", "2='Modéré'", "3='Léger'", "999='Non Applicable'"};
7RUN;
4
Tentative de remplacement du format 'GraviteEffet' avec `replace=false`. Cette étape doit générer une erreur dans le log SAS.
Copié !
1PROC CAS;
2 sessionprop.addFormat
3 fmtLibName="pharmaLib"
4 fmtName="GraviteEffet"
5 replace=false
6 ranges={"1='Erreur'"};
7RUN;
5
Application des formats valides pour vérification.
Copié !
1PROC casutil;
2 load casdata="ESSAI_CLINIQUE" casout="ESSAI_CLINIQUE_FORMATE" replace;
3 setSessOpt caslib="casuser";
4 alterTable
5 TABLE={name="ESSAI_CLINIQUE_FORMATE"}
6 columns={{name="Temperature", FORMAT="StatutTemp"}, {name="Code_Effet", FORMAT="GraviteEffet"}};
7 fetch TABLE={name="ESSAI_CLINIQUE_FORMATE"};
8RUN;

Résultat Attendu


La température 37.59 doit être formatée en 'Subfébrile' grâce au paramètre `fuzz`. Les codes d'effet doivent être affichés selon l'ordre défini ('Grave', 'Modéré', 'Léger'). L'étape 4 doit échouer et un message d'erreur doit indiquer que le format existe déjà, confirmant le bon fonctionnement de `replace=false`.