Modélisation des données pour la grille AGGIR (Autonomie Gérontologique – Groupes Iso-Ressources) – 1/2

Cet article présente le modèle conceptuel et logique des données nécessaire à l’implémentation des calculs de la grille AGGIR dans une base de données à l’aide d’une seule requête SQL.

La grille AGGIR est une grille d’évaluation de l’autonomie des patients pour la gestion de l’APA (Allocation Personnalisée d’Autonomie). Elle fournit un indice AGGIR à partir d’éléments obtenu par l’observation des activités effectuées par la personne âgée.

L’intérêt de modéliser ceci en base de données est double :

  • d’une part, en cas de changement du paramétrage, l’algorithme est toujours fonctionnel. Il ne s’agit plus que de remplacer une valeur dans une table par une autre.
  • d’autre part l’indexation des données, permet de calculer l’ensemble des indices AGGIR de façon incommensurablement plus rapide que ne le ferais un code itératif, comme ceux qui figurent dans les applications courantes de gestion médicale.

NOTA : Ce système de calcul est en vigueur dans une base de données d’ERP que j’ai modélisé à Santé Service (HAD).

1 – ALGORITHME

L’algoritme utilise différents éléments que sont :

  • les variables discriminantes (au nombre de 10 : Cohérence, Orientation, Toilette,
    Habillage, Alimentation, Élimination, Transfert, Déplacement à l’intérieur,
    Déplacement à l’extérieur, Communication à distance) qualifiant les activités vitales de la personne et permettant d’obtenir le Groupe Iso Ressource (ou GIR)
  • les variables illustratives (au nombre de 7 : gestion, cuisine, ménage, transports, achats, suivi du traitement, activité de temps libre) qualifiant les activités personnelles du patient
  • Les adverbes (au nombre de 4, définissant si la personne agit ou fait seule de manière : spontanée, totale, correcte et habituelle) donnant un indice d’autonomie
  • Les GIR (Groupe Iso Ressources) publiés au journal officiel de la République Française

On trouvera quelques exemple descriptifs de l’algorithmes de calcul de l’indice AGGIR aux URL suivantes :
http://papidoc.chic-cm.fr/19texteaggir.html
http://www.acacia-sophora.fr/documentation.htm#Doc
http://www.bevernage.com/geronto/aggir.htm
http://www.ibou.fr/aggir/

Groupes Iso Ressources :

Publié au JO du 30/04/1997 (p 6529 à 6538) et mis à jour au JO du 21/11/2001.

Classement des six Groupes Iso Ressources

o GIR 1 : personnes âgées confinées au lit ou au fauteuil, dont les fonctions intellectuelles sont gravement altérées, et qui nécessitent une présence indispensable et continue d’intervenants. Dans ce groupe se trouvent les personnes en fin de vie.

o GIR 2 comprend deux groupes de personnes âgées:
– celles qui sont confinées au lit ou au fauteuil, dont les fonctions intellectuelles ne sont pas totalement altérées et qui nécessitent une prise en charge pour la plupart des activités de la vie courantes
– celles dont les fonctions mentales sont altérées mais qui ont conservé leur capacité de se déplacer (souvent dénommées les « déments ambulants »).

o GIR 3 correspond aux personnes âgées ayant conservé leurs fonctions intellectuelles, partiellement leur capacité à se déplacer mais qui nécessitent plusieurs fois par jour des aides pour leur autonomie corporelle. De plus, la majorité d’entre elles n’assurent pas seules l’hygiène de l’élimination tant anale qu’urinaire.

o GIR 4 comprend deux groupes de personnes:
– celles qui n’assument pas seules leur transfert mais qui, une fois levées, peuvent se déplacer à l’intérieur du logement. Elles doivent parfois être aidées pour la toilette ou l’habillage. La grande majorité d’entre elles s’alimente seule.
– celles qui n’ont pas de problèmes pour se déplacer mais qu’il faut aider pour les activités corporelles ainsi que les repas.

o GIR 5 correspond aux personnes qui assurent seules leurs déplacements à l’intérieur du logement, s’alimentent et s’habillent seules. Elles nécessitent une aide ponctuelle pour la toilette, la préparation des repas et le ménage.

o GIR 6 regroupe toutes les personnes qui n’ont pas perdu leur autonomie pour les actes discriminants de la vie courante.

L’allocation d’autonomie :

L’allocation d’autonomie attribuée est de 100% si le patient est classé au groupe iso ressource 1, puis est dégressive jusqu’à 7 % dans le groupe 6.

Voici en résumé le tableau algorithmique :
Tableau AGGIR du JO

2 – MCD (Modèle Conceptuel de Données)

Le MCD ci-dessous est en notation MERISE.

L’entité T_R_AGGIR_VARIABLE_TYPE_VBT définit le type de variable : « Discriminante » ou « Illustrative »

L’entité T_X_AGGIR_VARIABLE_VBL contient l’ensemble des variables :

DISCRIMINANTES :
– COHÉRENCE : converser et/ou se comporter de façon sensée
– ORIENTATION : se repérer dans le temps, les moments de la journée et dans les lieux
– TOILETTE : concerne l’hygiène corporelle
– HABILLAGE : s’ habiller, se déshabiller, se présenter
– ALIMENTATION : manger les aliments préparés
– ÉLIMINATION : assumer l’hygiène de l’élimination urinaire et fécale
– TRANSFERTS : se lever, se coucher, s’asseoir
– DÉPLACEMENT A L’INTÉRIEUR : avec ou sans canne, déambulateur, fauteuil roulant…
– DÉPLACEMENT A L’EXTÉRIEUR : à partir de la porte d’entrée sans moyen de transport
– COMMUNICATION A DISTANCE : utiliser les moyens de communication, téléphone, sonnette, alarme…

ILLUSTRATIVES :
– GESTION : gérer ses propres affaires, son budget, ses biens
– CUISINE : préparer ses repas et les conditionner pour être servis
– MÉNAGE : effectuer l’ensemble des travaux ménagers
– TRANSPORT : prendre et/ou commander un moyen de transport
– ACHATS : acquisition directe ou par correspondance
– SUIVI DU TRAITEMENT : se conformer à l’ordonnance du médecin
– ACTIVITÉS DE TEMPS LIBRE : activités sportives, culturelles, sociales, de loisir ou de passe-temps

L’entité T_X_AGGIR_ADVERBE_AVB contient les adverbes : Spontanément, Totalement, Correctement, Habituellement

L’association « évaluation » contient les réponses (booléen oui/non) aux 4 adverbes pour les 17 variables pour chacun des patients évalués.

Les autres entités contiennent les variables intermédiaires du calcul :
– T_X_AGGIR_RESULTAT_VARIABLE_LETTRE_RVL : transformation coche en lettres (A ou C)
– T_X_AGGIR_RESULTAT_GROUPE_LETTRE_RGL : transformation lettre unitaire en lettre de groupe
– T_X_AGGIR_GROUPE_AGG : lettres de groupe (de A à H)
– T_X_AGGIR_ALGO_AGA : indices
– T_X_AGGIR_RANG_ARG : rangs
– T_X_AGGIR_GIR : GIR (résultat final).

3 – MPD (Modèle Physique de Données)

Ce MPD correspond à une base Microsoft SQL Server.

4 – Paramétrage

Voici les insertions primales à effectuer dans les divers tables pour le paramétrage du calcul.


-- insertion du référentiel AGGIR
 
-- table des adverbes
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_ADVERBE_AVB ON;
INSERT INTO S_XMD.T_X_AGGIR_ADVERBE_AVB  
          (AVB_ID, AVB_CODE, AVB_ADVERBE, AVB_ORDRE)
   VALUES (1,      'S', 'Spontanément', 1),
          (2,      'T', 'Totalement', 2),
          (3,      'C', 'Correctement', 3),
          (4,      'H', 'Habituellement', 4);
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_ADVERBE_AVB OFF;          
           
-- types de variables
SET IDENTITY_INSERT S_REF.T_R_AGGIR_VARIABLE_TYPE_VBT ON;
INSERT INTO S_REF.T_R_AGGIR_VARIABLE_TYPE_VBT  
          (VBT_ID, VBT_CODE, VBT_LIBELLE, VBT_BASE, VBT_ORDRE)
   VALUES (1, 'DISCRI', 'Discriminante', 1, 1),
          (2, 'ILLUST', 'Illustrative', 1, 2);
SET IDENTITY_INSERT S_REF.T_R_AGGIR_VARIABLE_TYPE_VBT OFF;          
 
-- référence de codage : http://papidoc.chic-cm.fr/19texteaggir.html
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_VARIABLE_VBL ON;
INSERT INTO S_XMD.T_X_AGGIR_VARIABLE_VBL
          (VBL_ID, VBL_NOM, VBL_DESCRIPTION,  
           VBL_ORDRE_APA, VBL_ORDRE_CNAMTS, VBL_ID_MERE, VBL_RESULTAT_LETTRE_DEFAUT, VBT_ID,  
           VBL_AIDE_SAISIE)
   VALUES (1, 'Cohérence', 'Converser et/ou se comporter de façon logique et sensée par rapport aux normes admises par la société dans laquelle on vit.',  
           1, 17, NULL, 'B', 1,  
           'PRECISIONS
* logique : de raison, raisonnable,
* sensée : qui a du bon sens, le sens commun,
* correcte : conforme aux convenances et usages admis et acceptés en référence aux normes sociales.
OBSERVATION
* Dans le cas où la personne est cohérente et logique mais dans son propre système de pensée, il convient d''évaluer en tenant compte des écarts par rapport à ce qui est considéré comme logique et correct par la société.'
          ),
          (2, 'communication', 'évalue si la personne a un système de communication fiable et suffisamment complexe pour communiquer dans la vie quotidienne avec autrui',  
           1.1, 17.1, 1, 'B', 1,  
           'LA PERSONNE COMMUNIQUE SEULE...
* Spontanément : sans stimulation, sans médiation et sans rappel à l''ordre ?
* Totalement : dans l''ensemble de ses activités et avec tous ses interlocuteurs ?
* Correctement : de façon compréhensible, logique et sensée, conformément aux convenances et usages admis et acceptés en référence aux normes sociales, sans exigences outre mesure ?
* Habituellement : de façon permanente dans le temps ?'
          ),
          (3, 'comportement', 'évalue si la personne sait vivre parmi les autres et/ou assumer sa solitude : si elle ne présente aucune tendance visant à nuire à l''autre, à l''humilier ou à le détruire et/ou ne présente aucune tendance à retourner l''agressivité contre elle-même, si elle réagit de façon adaptée devant une situation dangereuse pour elle même ou pour les autres et si elle ajuste ses réactions aux lois et aux conventions sociales de courtoisie habituelle dans notre société. ',  
           1.2, 17.2, 1, 'B', 1,  
           'LA PERSONNE SE COMPORTE ET AGIT SEULE...
* Spontanément = sans stimulation, sans médiation et sans rappel à l''ordre ?
* Totalement = dans l''ensemble de ses activités et avec tous ses interlocuteurs ?
* Correctement = conformément aux convenances et usages admis et acceptés en référence aux normes sociales, sans exigences outre mesure ?
* Habituellement = de façon permanente dans le temps ?'
          ) ,
          (4, 'Orientation', 'Se repérer dans le temps, les moments de la journée, dans les lieux et leur contenu.',  
           2, 16, NULL, 'B', 1,  
           'PRÉCISIONS
* Il s''agit d''une fonction cognitive temporo-spatiale.
  o Attention aux "limites" de l''orientation :
    + La personne sait-elle se situer par rapport aux saisons, au moment de la journée (matin, soir), dans les lieux de vie habituels (la maison ou l''appartement, le quartier, l''unité de vie) ?
    + Connaît-elle l''année, le mois en cours ?
      # Elle peut très normalement ne pas connaître la date exacte.
    + De même pour le repérage dans les lieux, il convient d''observer si la personne sait se situer précisément dans des lieux de vie habituels et plus globalement dans des lieux nouveaux pour elle.'
          ),
          (5, 'dans le temps', NULL,  
           2.1, 16.1, 4, 'B', 1,  
           'LA PERSONNE S''ORIENTE SEULE DANS LE TEMPS...
* Spontanément = sans stimulation, sans médiation et sans indications ?
* Totalement = pour tous les repères temporels (saisons, journéesÉ) ?
* Correctement = sans erreurs ?
* Habituellement = sans variation significative d''un moment à l''autre de la journée, sans fluctuations d''un jour sur l''autre ?'
          ),
          (6, 'dans l''espace', NULL,  
           2.2, 16.2, 4, 'B', 1,  
           'LA PERSONNE S''ORIENTE SEULE DANS L''ESPACE
* Spontanément = sans stimulation, sans médiation et sans indications ?
* Totalement = dans tous les lieux de vie habituels, et lieux nouveaux ?
* Correctement = sans erreurs ?
* Habituellement = sans variation significative dans le temps, sans fluctuations d''un jour sur l''autre ?'
          ),
          (7, 'Toilette', 'Assurer son hygiène corporelle',  
           3, 3, NULL, 'B', 1,  
           'PRÉCISIONS
* La toilette concerne l''hygiène c''est-à-dire la propreté corporelle, répondant sans excès aux contraintes de la vie collective Elle inclut la préparation des affaires indispensables à sa réalisation (eau, savon, serviettes).
* Les installations (salle de bains, baignoire, douche) ne doivent pas influencer l''évaluation de cette variable.
  o On peut être propre sans posséder de telles installations.
* Il importe également de ne pas imposer ses propres règles d''hygiène à une personne qui est propre mais avec d''autres règles culturelles.
* Aller à la salle de bain relève de l''item Déplacement intérieur, se déshabiller pour se laver de la variable Habillage, la propreté de la salle de bains, du lavabo, du linge de toiletteÉ de la variable Ménage, et l''achat des produits de la variable Achats.
Pour renseigner la variable toilette il convient d''abord de codifier la toilette des parties hautes puis des parties basses du corps, ces deux activités nécessitant des capacités motrices et fonctionnelles sensiblement différentes.'
          ),
          (8, 'du haut', 'Elle concerne le visage (y compris le rasage et le coiffage), le tronc, les membres supérieurs et les mains.
* Pour le coiffage, c''est le coup de peigne ou de brosse qui est retenu. Le travail de la coiffeuse professionnelle n''est évidemment pas évalué ici.
* Le dos est volontairement ignoré car après 80 ans, se laver le dos est une opération difficile pour la grande majorité des personnes.
* Le nettoyage de la denture a été supprimé car la très grande majorité des personnes de 80 ans ne se lave pas plus les dents qu''elle ne nettoie son dentier (introduire "les dents" ferait donc perdre toute sensibilité à l''évaluation sur une variable très importante).',  
           3.1, 3.1, 7, 'B', 1,  
           'LA PERSONNE FAIT SEULE...
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour l''ensemble des activités entrant dans le champ ?
* Correctement = aboutissant à une propreté corporelle satisfaisante ?
* Habituellement = autant que de besoins ?'
          ),
          (9, 'du  bas', 'Elle concerne les régions intimes, les membres inférieurs et les pieds.
* Les ongles des orteils ne sont pas pris en compte, car la majorité des personnes de plus de 80 ans ont des difficultés réelles à ce niveau (l''intervention de la pédicure n''est pas évaluée ici).',  
           3.2, 3.2, 7, 'B', 1,  
           'LA PERSONNE FAIT SEULE...
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour l''ensemble des activités entrant dans le champ ?
* Correctement = aboutissant à une propreté corporelle satisfaisante ?
* Habituellement = autant que de besoins ?'
          ),
          (10, 'Habillage', 'C''est l''habillage, le déshabillage et la présentation.',  
           4, 5, NULL, 'B', 1,  
           'PRÉCISIONS
* Le choix des vêtements, leur préparation (les prendre dans le lieu de rangement), leur mise à disposition et la décision de change font partie de l''activité d''habillage.
  o La pose de bas de contention ayant fait l''objet d''une prescription médicale est exclue de l''évaluation de cette variable.
  o La tenue des vêtements (lavage, repassage, travaux de couture) n''entre pas dans le champ de cette activité mais est évaluée par la variable Ménage.
  o Le coup de peigne relève de la variable Toilette.'
          ),
          (11, 'du haut', 'C''est le fait de passer, d''enfiler, les vêtements par la tête et/ou les bras (on ne tient pas compte des chapeaux éventuels non indispensables sous nos climats)',  
           4.1, 5.1, 10, 'B', 1,  
           'LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = en effectuant tous les actes nécessaires : choisir et préparer les vêtements, les mettre et les enlever (habillage et déshabillage) ?
* Correctement = conformément aux usages, dans le bon sens et dans le bon ordre, et adapté aux conditions météorologiques, au moment de la journée, aux activités à réaliser ?
* Habituellement = régulièrement dans le temps, chaque fois que nécessaire ?'
          ),
          (12, 'moyen', 'C''est le fait de fermer un vêtement (boutons, fermeture éclair, pressions, velcro) et de mettre une ceinture, des bretelles, un soutien gorge',  
           4.2, 5.2, 10, 'B', 1,  
           'LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = en effectuant tous les actes nécessaires : choisir et préparer les vêtements, les mettre et les enlever (habillage et déshabillage) ?
* Correctement = conformément aux usages, dans le bon sens et dans le bon ordre, et adapté aux conditions météorologiques, au moment de la jour-née, aux activités à réaliser ?
* Habituellement = régulièrement dans le temps, chaque fois que nécessaire ?'
          ),
          (13, 'du bas', 'C''est le fait de passer, d''enfiler, les vêtements par le bas du corps, y compris les chaussettes et les chaussures (en excluant les bas de contentions prescrits) ',  
           4.3, 5.3, 10, 'B', 1,  
           'LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = en effectuant tous les actes nécessaires : choisir et préparer les vêtements, les mettre et les enlever (habillage et déshabillage) ?
* Correctement = conformément aux usages, dans le bon sens et dans le bon ordre, et adapté aux conditions météorologiques, au moment de la jour-née, aux activités à réaliser ?
* Habituellement = régulièrement dans le temps, chaque fois que nécessaire ?'
          ),
          (14, 'Alimentation', 'Cette variable concerne deux activités : se servir et manger',  
           5, 7, NULL, 'B', 1,  
           'PRÉCISIONS
* Ces deux activités concernent des aliments conditionnés et apportés sur la table et sont évaluées à partir du moment où la personne s''en "débrouille" seule.
  o Préparer la table, mettre le couvert se retrouvent dans l''activité Ménage.
  o La préparation et le conditionnement des aliments relèvent de l''item Cuisine.
    + Le conditionnement (aliments hachés ou mixés par exemple relevant d''une décision médicale, ou une salade de fruits à la place d''un fruit à peler), peut avoir une forte influence sur ces deux activités, mais relève bien de la variable Cuisine.'
          ),
          (15, 'se servir', 'C''est couper la viande, ouvrir un pot de yaourt, peler un fruit, remplir son verre',  
           5.1, 7.1, 14, 'B', 1,  
           'LA PERSONNE SE SERT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour l''ensemble des divers actes requis ?
* Correctement = dans l''ordre, selon les usages et sans "en mettre partout" ?
* Habituellement = à tous les repas ? '
          ),
          (16, 'manger', 'C''est porter les aliments et les boissons à sa bouche et avaler.',  
           5.2, 7.2, 14, 'B', 1,  
           'LA PERSONNE MANGE SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour tous les éléments du repas, y compris les boissons ?
* Correctement = proprement dans le respect des autres et sans fausses routes ?
* Habituellement = à tous les repas ?'
          ),
          (17, 'Élimination', 'C''est assurer l''hygiène de l''élimination urinaire et fécale',  
           6, 4, NULL, 'B', 1,  
           'PRÉCISIONS
* Il ne s''agit pas de maîtriser l''élimination (l''incontinence est un diagnostic médical) mais d''évaluer comment la personne assure l''hygiène de ses éliminations, c''est-à-dire la propreté de ses éliminations.
  o Avoir une bonne hygiène dans ce domaine c''est éliminer dans un lieu ou un ustensile approprié, et assurer la propreté sur soi.
* Une personne peut être incontinente et assumer parfaitement la gestion de ses fuites (protections à usage unique) et rester propre.
  o Aller au WC relève de l''item Déplacement intérieur, baisser son pantalon de l''item Habillage, s''asseoir sur la cuvette de Transferts, la propreté des sanitaires (WC, cuvette, chasse d''eau), le vidage de l''urinal ou de la chaise percée de la variable Ménage.
ATTENTION -  Situation particulière :
* Si la personne, alitée, élimine spontanément ou non dans un urinal ou dans un bassin et qu''elle renverse toujours l''urinal ou le bassin dans son lit, le codage de la sous variable concernée sera C par convention (répondez NON aux quatre adverbes).'
          ),
          (18, 'urinaire', NULL,  
           6.1, 4.1, 17, 'B', 1,  
           'LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = en effectuant la totalité des actes nécessaires ?
* Correctement = où il faut et comme il faut, dans un lieu ou un ustensile adéquat, sans se salir ?
* Habituellement = aussi souvent que de besoins ?'
          ),
          (19, 'fécale', NULL,  
           6.2, 4.2, 17, 'B', 1,  
           'LA PERSONNE FAIT SEULE
# Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
# Totalement = en effectuant la totalité des actes nécessaires ?
# Correctement = où il faut et comme il faut, dans un lieu ou un ustensile adéquat, sans se salir ?
# Habituellement = aussi souvent que de besoins ?'
          ),
          (20, 'Transferts', 'C''est assurer ses transferts : se lever, se coucher, s''asseoir. Passer de l''une de ses trois positions à une autre, dans les deux sens.',  
           7, 1, NULL, 'B', 1,  
           'PRÉCISIONS
* Cette variable s''intéresse aux seuls changements de position et ne concerne pas les déplacements évalués par les Déplacements à l''intérieur et Déplacements à l''extérieur.
  o Nombreux sont les modèles qui n''incluent pas cette différenciation pourtant évidente et essentielle : dans de nombreux cas, on observe des personnes ne faisant pas les transferts mais qui, une fois levées, se déplacent sans problèmes.
  o Un matériel adapté peut permettre d''assurer les transferts en toute indépendance : lit à hauteur variable, potences, sièges adaptés...
LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = en assurant l''ensemble des transferts dans les deux sens ?
* Correctement = sans se mettre en danger et en utilisant éventuellement les aides techniques adaptées ?
* Habituellement = chaque fois que cela est nécessaire et souhaité ?
  o Les changements de position lever / coucher dans les deux sens, non spontanés, non corrects et non habituels, entrent dans le cas général et seront codés C avec les quatre adverbes non conformes'
          ),
          (21, 'Déplacements internes', 'C''est se déplacer à l''intérieur du lieu de vie',  
           8, 2, NULL, 'B', 1,  
           'PRÉCISIONS
* Au domicile ou en institution le lieu de vie comporte les pièces habituelles, les locaux collectifs éventuels d''une résidence (restaurant, hall où se trouvent les boîtes aux lettres, local poubellesÉ), jusqu''à la porte d''entrée sur la rue.
* L''utilisation par la personne seule de cannes, d''un déambulateur ou d''un fauteuil roulant peut lui permettre d''être parfaitement indépendante pour ses déplacements.
LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = dans tous les lieux de vie, jusqu''à la porte d''entrée sur la rue ?
* Correctement = à bon escient et de façon adaptée aux possibilités ?
* Habituellement = chaque fois que la personne en a le désir ou le besoin ? '
          ),
          (22, 'Déplacements externes', 'On est à l''extérieur quand on est en dehors du lieu de vie tel qu''il a été défini pour la variable Déplacements à l''intérieur',  
           9, 11, NULL, 'B', 1,  
           'PRÉCISIONS
* Cette variable permet d''apprécier si la personne reste confinée chez elle, c''est-à-dire si elle ne franchit pas la porte d''entrée sur la rue de son domicile ou de l''institution.
  o "Prendre l''air" dans son jardin privatif ou dans le parc de l''institution n''est pas sortir à l''extérieur.
  o L''utilisation des moyens de transport est appréciée par la variable Transports.
LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler de le faire, à lui expliquer et à lui rappeler pourquoi et comment faire ?
* Totalement = pour l''ensemble du déplacement, jusqu''au retour à domicile ?
* Correctement = à bon escient, en gérant le parcours, avec un but, et de façon adapté à ses possibilités ?
* Habituellement = chaque fois qu''elle en a le désir ou le besoin ?'
          ),
          (23, 'Alerter (communication)', 'C''est utiliser un moyen de communication à distance : téléphone, alarme, sonnette, télé-alarme dans le but d''alerter en cas de besoin. ',  
           10, 10, NULL, 'B', 1,  
           'LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui montrer, à lui rappeler comment faire ?
* Totalement = avec un moyen approprié pour avoir une réponse à son alerte ?
* Correctement = à bon escient ?
* Habituellement = à tout moment opportun ? '
          ),
          (24, 'Gestion', 'Cette variable regroupe trois types d''activités :
* gérer ses affaires, son budget et ses biens,
* reconnaître la valeur monétaire des pièces et des billets, se servir de l''argent et connaître la valeur des choses,
* effectuer les démarches administratives, remplir les formulaires.',  
           11, 15, NULL, 'B', 2,  
           'PRÉCISIONS
* Les achats sont évalués dans la rubrique Achats.
LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour l''ensemble des trois types d''activités ?
* Correctement = sans erreurs ?
* Habituellement = chaque fois que nécessaire ?'
          ),
          (25, 'Cuisine', 'C''est préparer les repas et les conditionner pour qu''ils puissent être servis.',  
           12, 6, NULL, 'B', 2,  
           'PRÉCISIONS
* Cette variable ne porte pas sur la vaisselle qui est prise en compte dans les activités de Ménage, ni sur l''achat des denrées pris en compte dans la variable Achats, ni sur le respect des régimes ordonnancés évalué dans la variable Suivi du traitement.
LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour l''ensemble de la préparation de chacun des différents repas de la journée ?
* Correctement = selon les usages culinaires, ses compétences et ses goûts ?
* Habituellement = tous les jours sans tenir compte des repas pris à l''extérieur ?'
          ),          
          (26, 'Ménage', 'C''est effectuer l''ensemble des travaux ménagers courants. ',  
           13, 9, NULL, 'B', 2,  
           'PRÉCISIONS
* Par ensemble des travaux ménagers, on entend :
  o le nettoyage des locaux
  o le rangement
  o l''entretien du linge
  o dresser la table, faire la vaisselle
* Il importe, comme pour la variable Toilette, de ne pas imposer ses propres règles de propreté et de rangement à une personne qui est propre et ordonné mais avec d''autres règles culturelles.
* Étant donné la complexité, le volume et l''importance des activités entrant dans ce domaine, il n''est pas surprenant qu''elles ne soient pas toutes réalisées à un âge avancé.
LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour l''ensemble des activités décrites plus haut ?
* Correctement = de façon à maintenir l''intérieur de la maison propre ?
* Habituellement = chaque fois que nécessaire ?'
          ),          
          (27, 'Transports', 'C''est utiliser volontairement un moyen de transport collectif ou individuel. ',  
           7, 12, NULL, 'B', 2,  
           'LA PERSONNE FAIT SEULE
* Spontanément = sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = sans auto-limitation ou limitation liée à l''environnement (absence de transports, limites des horaires ou absence de tiers) ?
* Correctement = en utilisant le moyen de transport approprié, en fonction de la destination ?
* Habituellement = chaque fois qu''elle en a le désir ou le besoin ? '
          ),          
          (28, 'Achats', 'C''est l''acquisition volontaire de biens de manière directe ou par correspondance.',  
           15, 14, NULL, 'B', 2,  
           'LA PERSONNE FAIT SEULE
* Spontanément = elle-même ou en faisant exécuter par un tiers à son initiative, sans avoir à lui dire, à lui rappeler, à lui expliquer, à lui montrer ?
* Totalement = pour l''intégralité de ses achats ?
* Correctement = en fonction des besoins et des moyens financiers ?
* Habituellement = chaque fois qu''elle en a le désir ou le besoin ?'
          ),          
          (29, 'Suivi du traitement', 'C''est respecter l''ordonnance du médecin et gérer soi-même son traitement. ',  
           16, 8, NULL, 'B', 2,  
           'LA PERSONNE FAIT SEULE
* Spontanément = sans que quelqu''un prépare les médicaments et sans avoir à lui dire de les prendre, ou à lui expliquer de façon itérative comment les prendre ?
* Totalement = pour l''intégralité des traitements prescrits, y compris les régimes diététiques ?
* Correctement = en suivant la prescription à la lettre, en respectant les doses et le rythme des prises ?
* Habituellement = à chaque prise, et aussi longtemps que l''indique la prescription ? '
          ),  
          (30, 'Activité de temps libre', 'C''est pratiquer volontairement, seul ou en groupe, diverses activités qui créent des événements rompant la monotonie de la vie du quotidien.',  
           17, 13, NULL, 'B', 2,  
           'PRÉCISIONS
* Il ne s''agit pas d''évaluer la qualité culturelle, intellectuelle ou physique des activités.
LA PERSONNE FAIT SEULE
* Spontanément = en choisissant les activités et en décidant elle-même de les réaliser, sans avoir à lui dire, à lui montrer, à lui rappeler ?
* Totalement = sans limitation de son choix ?
* Correctement = de manière adaptée à ses désirs et à son état ?
* Habituellement = de façon non occasionnelle et avec une certaine régularité ?'
          );  
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_VARIABLE_VBL OFF;
 
-- insertion de la transformation coche en lettres
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_RESULTAT_VARIABLE_LETTRE_RVL ON;
INSERT INTO S_XMD.T_X_AGGIR_RESULTAT_VARIABLE_LETTRE_RVL
          (RVL_ID, VBL_ID, RVL_MASQUE_BIN, RVL_LETTRE)
   VALUES (1,  2,  0x1111, 'A'), -- cohérence / communication, tout coché
          (2,  2,  0x0000, 'C'), -- cohérence / communication, rien coché
          (3,  3,  0x1111, 'A'), -- cohérence / comportement, tout coché
          (4,  3,  0x0000, 'C'), -- cohérence / comportement, rien coché
          (5,  5,  0x1111, 'A'), -- orientation / dans le temps, tout coché
          (6,  5,  0x0000, 'C'), -- orientation / dans le temps, rien coché      
          (7,  6,  0x1111, 'A'), -- orientation / dans l'espace, tout coché
          (8,  6,  0x0000, 'C'), -- orientation / dans l'espace, rien coché      
          (9,  8,  0x1111, 'A'), -- toilette / du haut, tout coché
          (10, 8,  0x0000, 'C'), -- toilette / du haut, rien coché      
          (11, 9,  0x1111, 'A'), -- toilette / du bas, tout coché      
          (12, 9,  0x0000, 'C'), -- toilette / du bas, rien coché
          (13, 11, 0x1111, 'A'), -- habillage / du haut, tout coché      
          (14, 11, 0x0000, 'C'), -- habillage / du haut, rien coché
          (15, 12, 0x1111, 'A'), -- habillage / moyen, tout coché      
          (16, 12, 0x0000, 'C'), -- habillage / moyen, rien coché  
          (17, 13, 0x1111, 'A'), -- habillage / du bas, tout coché
          (18, 13, 0x0000, 'C'), -- habillage / du bas, rien coché
          (19, 15, 0x1111, 'A'), -- alimentation / se servir, tout coché
          (20, 15, 0x0000, 'C'), -- alimentation / se servir, rien coché
          (21, 16, 0x1111, 'A'), -- alimentation / manger, tout coché
          (22, 16, 0x0000, 'C'), -- alimentation / manger, rien coché  
          (23, 18, 0x1111, 'A'), -- élimination / urinaire, tout coché
          (24, 18, 0x0000, 'C'), -- élimination / urinaire, rien coché  
          (25, 19, 0x1111, 'A'), -- élimination / fécale, tout coché
          (26, 19, 0x0000, 'C'), -- élimination / fécale, rien coché  
          (27, 20, 0x1111, 'A'), -- transferts, tout coché
          (28, 20, 0x0000, 'C'), -- transferts, rien coché  
          (29, 21, 0x1111, 'A'), -- délacements internes, tout coché
          (30, 21, 0x0000, 'C'), -- délacements internes, rien coché  
          (31, 22, 0x1111, 'A'), -- délacements externes, tout coché
          (32, 22, 0x0000, 'C'), -- délacements externes, rien coché  
          (33, 23, 0x1111, 'A'), -- alerter, tout coché
          (34, 23, 0x0000, 'C'), -- alerter, rien coché  
          (35, 24, 0x1111, 'A'), -- gestion, tout coché
          (36, 24, 0x0000, 'C'), -- gestion, rien coché  
          (37, 25, 0x1111, 'A'), -- cuisine, tout coché
          (38, 25, 0x0000, 'C'), -- cuisine, rien coché  
          (39, 26, 0x1111, 'A'), -- ménage, tout coché
          (40, 26, 0x0000, 'C'), -- ménage, rien coché  
          (41, 27, 0x1111, 'A'), -- transports, tout coché
          (42, 27, 0x0000, 'C'), -- transports, rien coché  
          (43, 28, 0x1111, 'A'), -- achats, tout coché
          (44, 28, 0x0000, 'C'), -- achats, rien coché  
          (45, 29, 0x1111, 'A'), -- suivi du traitement, tout coché
          (46, 29, 0x0000, 'C'), -- suivi du traitement, rien coché  
          (47, 30, 0x1111, 'A'), -- suivi du traitement, tout coché
          (48, 30, 0x0000, 'C'); -- suivi du traitement, rien coché  
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_RESULTAT_VARIABLE_LETTRE_RVL OFF;
 
-- insertion de la transformation lettre unitaire en lettre de groupe
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_RESULTAT_GROUPE_LETTRE_RGL ON;
INSERT INTO S_XMD.T_X_AGGIR_RESULTAT_GROUPE_LETTRE_RGL
          (RGL_ID, VBL_ID, RGL_MASQUE_ALPHA, RGL_LETTRE_GROUPE)
   VALUES (1,  1,  'AA',  'A'), -- groupe cohérence, tout en A
          (2,  1,  'C_',  'C'), -- groupe cohérence, C au début
          (3,  1,  '_C',  'C'), -- groupe cohérence, C à la fin
          (4,  4,  'AA',  'A'), -- groupe orientation, tout en A
          (5,  4,  'C_',  'C'), -- groupe orientation, C au début
          (6,  4,  '_C',  'C'), -- groupe orientation, C à la fin            
          (7,  7,  'AA',  'A'), -- groupe toilette, tout en A
          (8,  7,  'CC',  'C'), -- groupe toilette, tout en C
          (9,  10, 'AAA', 'A'), -- groupe habillage, tout en A
          (10, 10, 'CCC', 'C'), -- groupe habillage, tout en C
          (11, 14, 'AA', 'A'), -- groupe alimentation, tout en A          
          (12, 14, 'CC', 'C'), -- groupe alimentation, tout en C          
          (13, 14, 'CB', 'C'), -- groupe alimentation, C/B          
          (14, 14, 'BC', 'C'), -- groupe alimentation, C/B  
          (15, 17, 'AA', 'A'), -- groupe élimination, tout en A        
          (16, 17, 'C_', 'C'), -- groupe élimination, C au début
          (17, 17, '_C', 'C'); -- groupe élimination, C au à la fin        
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_RESULTAT_GROUPE_LETTRE_RGL OFF;
 
-- insertion des lettres groupe (de A à H)
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_GROUPE_AGG ON;
INSERT INTO S_XMD.T_X_AGGIR_GROUPE_AGG (AGG_ID, AGG_VALEUR)
   VALUES (1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E'), (6, 'F'), (7, 'G'), (8, 'H');  
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_GROUPE_AGG OFF;
 
--  insertion ALGO
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_ALGO_AGA ON;
INSERT INTO S_XMD.T_X_AGGIR_ALGO_AGA  
          (AGA_ID, AGG_ID, VBL_ID, AGA_LETTRE, AGA_VALEUR)
          -- résultat pour groupe A          
   VALUES (11,  1, 1,  'C', 2000),  -- cohérence sort en C
          (12,  1, 1,  'B', 0),     -- cohérence sort en B
          (13,  1, 4,  'C', 1200),  -- orientation sort en C      
          (14,  1, 4,  'B', 0),     -- orientation sort en B                        
          (15,  1, 7,  'C', 40),    -- toilette sort en C                
          (16,  1, 7,  'B', 16),    -- toilette sort en B  
          (17,  1, 10, 'C', 40),    -- habillage sort en C
          (18,  1, 10, 'B', 16),    -- habillage sort en B
          (19,  1, 14, 'C', 60),    -- alimentation sort en C
          (110, 1, 14, 'B', 20),    -- alimentation sort en B
          (111, 1, 17, 'C', 100),   -- élimination sort en C
          (112, 1, 17, 'B', 16),    -- élimination sort en B
          (113, 1, 20, 'C', 800),   -- transferts sort en C
          (114, 1, 20, 'B', 120),   -- transferts sort en B
          (115, 1, 21, 'C', 200),   -- délacements internes sort en C
          (116, 1, 21, 'B', 32),    -- délacements internes sort en B
          (117, 1, 22, 'C', 0),     -- délacements internes sort en C
          (118, 1, 22, 'B', 0),     -- délacements internes sort en B
          (119, 1, 23, 'C', 0),     -- alerter sort en C
          (120, 1, 23, 'B', 0),     -- alerter sort en B
 
          -- résultat pour groupe B          
          (21,  2, 1,  'C', 1500),  -- cohérence sort en C
          (22,  2, 1,  'B', 320),   -- cohérence sort en B
          (23,  2, 4,  'C', 1200),  -- orientation sort en C      
          (24,  2, 4,  'B', 120),   -- orientation sort en B                        
          (25,  2, 7,  'C', 40),    -- toilette sort en C                
          (26,  2, 7,  'B', 16),    -- toilette sort en B  
          (27,  2, 10, 'C', 40),    -- habillage sort en C
          (28,  2, 10, 'B', 16),    -- habillage sort en B
          (29,  2, 14, 'C', 60),    -- alimentation sort en C
          (210, 2, 14, 'B', 0),     -- alimentation sort en B
          (211, 2, 17, 'C', 100),   -- élimination sort en C
          (212, 2, 17, 'B', 16),    -- élimination sort en B
          (213, 2, 20, 'C', 800),   -- transferts sort en C
          (214, 2, 20, 'B', 120),   -- transferts sort en B
          (215, 2, 21, 'C', -80),   -- délacements internes sort en C
          (216, 2, 21, 'B', -40),   -- délacements internes sort en B
          (217, 2, 22, 'C', 0),     -- délacements internes sort en C
          (218, 2, 22, 'B', 0),     -- délacements internes sort en B
          (219, 2, 23, 'C', 0),     -- alerter sort en C
          (220, 2, 23, 'B', 0),     -- alerter sort en B
           
          -- résultat pour groupe C          
          (31,  3, 1,  'C', 0),     -- cohérence sort en C
          (32,  3, 1,  'B', 0),     -- cohérence sort en B
          (33,  3, 4,  'C', 0),     -- orientation sort en C      
          (34,  3, 4,  'B', 0),     -- orientation sort en B                        
          (35,  3, 7,  'C', 40),    -- toilette sort en C                
          (36,  3, 7,  'B', 16),    -- toilette sort en B  
          (37,  3, 10, 'C', 40),    -- habillage sort en C
          (38,  3, 10, 'B', 16),    -- habillage sort en B
          (39,  3, 14, 'C', 60),    -- alimentation sort en C
          (310, 3, 14, 'B', 20),    -- alimentation sort en B
          (311, 3, 17, 'C', 160),   -- élimination sort en C
          (312, 3, 17, 'B', 20),    -- élimination sort en B
          (313, 3, 20, 'C', 1000),  -- transferts sort en C
          (314, 3, 20, 'B', 200),   -- transferts sort en B
          (315, 3, 21, 'C', 400),   -- délacements internes sort en C
          (316, 3, 21, 'B', 40),    -- délacements internes sort en B
          (317, 3, 22, 'C', 0),     -- délacements internes sort en C
          (318, 3, 22, 'B', 0),     -- délacements internes sort en B
          (319, 3, 23, 'C', 0),     -- alerter sort en C
          (320, 3, 23, 'B', 0),     -- alerter sort en B
           
          -- résultat pour groupe D          
          (41,  4, 1,  'C', 0),     -- cohérence sort en C
          (42,  4, 1,  'B', 0),     -- cohérence sort en B
          (43,  4, 4,  'C', 0),     -- orientation sort en C      
          (44,  4, 4,  'B', 0),     -- orientation sort en B                        
          (45,  4, 7,  'C', 0),     -- toilette sort en C                
          (46,  4, 7,  'B', 0),     -- toilette sort en B  
          (47,  4, 10, 'C', 0),     -- habillage sort en C
          (48,  4, 10, 'B', 0),     -- habillage sort en B
          (49,  4, 14, 'C', 2000),  -- alimentation sort en C
          (410, 4, 14, 'B', 200),   -- alimentation sort en B
          (411, 4, 17, 'C', 400),   -- élimination sort en C
          (412, 4, 17, 'B', 200),   -- élimination sort en B
          (413, 4, 20, 'C', 2000),  -- transferts sort en C
          (414, 4, 20, 'B', 200),   -- transferts sort en B
          (415, 4, 21, 'C', 200),   -- délacements internes sort en C
          (416, 4, 21, 'B', 0),     -- délacements internes sort en B
          (417, 4, 22, 'C', 0),     -- délacements internes sort en C
          (418, 4, 22, 'B', 0),     -- délacements internes sort en B
          (419, 4, 23, 'C', 0),     -- alerter sort en C
          (420, 4, 23, 'B', 0),     -- alerter sort en B
           
          -- résultat pour groupe E          
          (51,  5, 1,  'C', 400),   -- cohérence sort en C
          (52,  5, 1,  'B', 0),     -- cohérence sort en B
          (53,  5, 4,  'C', 400),   -- orientation sort en C      
          (54,  5, 4,  'B', 0),     -- orientation sort en B                        
          (55,  5, 7,  'C', 400),   -- toilette sort en C                
          (56,  5, 7,  'B', 100),   -- toilette sort en B  
          (57,  5, 10, 'C', 400),   -- habillage sort en C
          (58,  5, 10, 'B', 100),   -- habillage sort en B
          (59,  5, 14, 'C', 400),   -- alimentation sort en C
          (510, 5, 14, 'B', 100),   -- alimentation sort en B
          (511, 5, 17, 'C', 800),   -- élimination sort en C
          (512, 5, 17, 'B', 100),   -- élimination sort en B
          (513, 5, 20, 'C', 800),   -- transferts sort en C
          (514, 5, 20, 'B', 100),   -- transferts sort en B
          (515, 5, 21, 'C', 200),   -- délacements internes sort en C
          (516, 5, 21, 'B', 0),     -- délacements internes sort en B
          (517, 5, 22, 'C', 0),     -- délacements internes sort en C
          (518, 5, 22, 'B', 0),     -- délacements internes sort en B
          (519, 5, 23, 'C', 0),     -- alerter sort en C
          (520, 5, 23, 'B', 0),     -- alerter sort en B
 
          -- résultat pour groupe F          
          (61,  6, 1,  'C', 200),   -- cohérence sort en C
          (62,  6, 1,  'B', 100),   -- cohérence sort en B
          (63,  6, 4,  'C', 200),   -- orientation sort en C      
          (64,  6, 4,  'B', 100),   -- orientation sort en B                        
          (65,  6, 7,  'C', 500),   -- toilette sort en C                
          (66,  6, 7,  'B', 100),   -- toilette sort en B  
          (67,  6, 10, 'C', 500),   -- habillage sort en C
          (68,  6, 10, 'B', 100),   -- habillage sort en B
          (69,  6, 14, 'C', 500),   -- alimentation sort en C
          (610, 6, 14, 'B', 100),   -- alimentation sort en B
          (611, 6, 17, 'C', 500),   -- élimination sort en C
          (612, 6, 17, 'B', 100),   -- élimination sort en B
          (613, 6, 20, 'C', 500),   -- transferts sort en C
          (614, 6, 20, 'B', 100),   -- transferts sort en B
          (615, 6, 21, 'C', 200),   -- délacements internes sort en C
          (616, 6, 21, 'B', 0),     -- délacements internes sort en B
          (617, 6, 22, 'C', 0),     -- délacements internes sort en C
          (618, 6, 22, 'B', 0),     -- délacements internes sort en B
          (619, 6, 23, 'C', 0),     -- alerter sort en C
          (620, 6, 23, 'B', 0),     -- alerter sort en B
           
          -- résultat pour groupe G          
          (71,  7, 1,  'C', 150),   -- cohérence sort en C
          (72,  7, 1,  'B', 0),     -- cohérence sort en B
          (73,  7, 4,  'C', 150),   -- orientation sort en C      
          (74,  7, 4,  'B', 0),     -- orientation sort en B                        
          (75,  7, 7,  'C', 300),   -- toilette sort en C                
          (76,  7, 7,  'B', 200),   -- toilette sort en B  
          (77,  7, 10, 'C', 300),   -- habillage sort en C
          (78,  7, 10, 'B', 200),   -- habillage sort en B
          (79,  7, 14, 'C', 500),   -- alimentation sort en C
          (710, 7, 14, 'B', 200),   -- alimentation sort en B
          (711, 7, 17, 'C', 500),   -- élimination sort en C
          (712, 7, 17, 'B', 200),   -- élimination sort en B
          (713, 7, 20, 'C', 400),   -- transferts sort en C
          (714, 7, 20, 'B', 200),   -- transferts sort en B
          (715, 7, 21, 'C', 200),   -- délacements internes sort en C
          (716, 7, 21, 'B', 100),   -- délacements internes sort en B
          (717, 7, 22, 'C', 0),     -- délacements internes sort en C
          (718, 7, 22, 'B', 0),     -- délacements internes sort en B
          (719, 7, 23, 'C', 0),     -- alerter sort en C
          (720, 7, 23, 'B', 0),     -- alerter sort en B
           
          -- résultat pour groupe H          
          (81,  8, 1,  'C', 0),     -- cohérence sort en C
          (82,  8, 1,  'B', 0),     -- cohérence sort en B
          (83,  8, 4,  'C', 0),     -- orientation sort en C      
          (84,  8, 4,  'B', 0),     -- orientation sort en B                        
          (85,  8, 7,  'C', 3000),  -- toilette sort en C                
          (86,  8, 7,  'B', 2000),  -- toilette sort en B  
          (87,  8, 10, 'C', 3000),  -- habillage sort en C
          (88,  8, 10, 'B', 2000),  -- habillage sort en B
          (89,  8, 14, 'C', 3000),  -- alimentation sort en C
          (810, 8, 14, 'B', 2000),  -- alimentation sort en B
          (811, 8, 17, 'C', 3000),  -- élimination sort en C
          (812, 8, 17, 'B', 2000),  -- élimination sort en B
          (813, 8, 20, 'C', 1000),  -- transferts sort en C
          (814, 8, 20, 'B', 2000),  -- transferts sort en B
          (815, 8, 21, 'C', 1000),  -- délacements internes sort en C
          (816, 8, 21, 'B', 1000),  -- délacements internes sort en B
          (817, 8, 22, 'C', 0),     -- délacements internes sort en C
          (818, 8, 22, 'B', 0),     -- délacements internes sort en B
          (819, 8, 23, 'C', 0),     -- alerter sort en C
          (820, 8, 23, 'B', 0);     -- alerter sort en B
           
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_ALGO_AGA OFF;  
 
-- insertion des rangs        
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_RANG_ARG ON;            
INSERT INTO  S_XMD.T_X_AGGIR_RANG_ARG  
       (ARG_ID, ARG_RANG_IN, ARG_RANG_OUT, ARG_LIMITE, ARG_REPORT)
       -- calcul groupe A
VALUES (1,  1, 1,    4380, NULL),
       (2,  1, 2,    4140, NULL),
       (3,  1, 3,    3390, NULL),
       (4,  1, NULL, NULL, 2),    -- report groupe B
       -- calcul groupe B  
       (5,  2, 4,    2016, NULL),
       (6,  2, NULL, NULL, 3),    -- report groupe C
       -- calcul groupe C
       (7,  3, 5,    1700, NULL),
       (8,  3, 6,    1432, NULL),
       (9,  3, NULL, NULL, 4),    -- report groupe D
       -- calcul groupe D
       (10, 4, 7,    2400, NULL),
       (11, 4, NULL, NULL, 5),    -- report groupe E
       -- calcul groupe E
       (12, 5, 8,    1200, NULL),
       (13, 5, NULL, NULL, 6),    -- report groupe F
       -- calcul groupe F
       (14, 6, 9,    800, NULL),
       (15, 6, NULL, NULL, 7),    -- report groupe G
       -- calcul groupe G
       (16, 7, 10,    650, NULL),
       (17, 7, NULL, NULL, 8),    -- report groupe H
       -- calcul groupe H
       (18, 8, 11,   4000, NULL),
       (19, 8, 12,   2000, NULL),
       (20, 8, 13,   NULL, NULL);
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_RANG_ARG OFF;  
                     
-- insertion des GIR        
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_GIR ON;            
INSERT INTO  S_XMD.T_X_AGGIR_GIR
          (GIR_ID, ARG_ID, GIR_VALEUR)
   VALUES (1, 1, 1),
          (2, 2, 2),
          (3, 3, 2),  
          (4, 5, 2),
          (5, 7, 2),
          (6, 8, 2),
          (7, 10, 2),
          (8, 12, 3),
          (9, 14, 3),
          (10, 16, 4),
          (11, 18, 4),
          (12, 19, 5),
          (13, 20, 6);
SET IDENTITY_INSERT S_XMD.T_X_AGGIR_GIR OFF;

5 – Requête SQL

Cette requête permet de calculer l’indice AGGIR de tous les patients d’un seul coup.


WITH  
T0 AS
(-- calcul du nombre d'adverbe
SELECT COUNT(*) AS N
FROM S_XMD.T_X_AGGIR_ADVERBE_AVB
),
T1 AS
(-- concaténation des réponses aux adverbes en hexadécimal                        
SELECT EVP_ID, VBL_ID,  
       CAST(SUM(CAST(EPV_OUI AS INT)  
           * POWER(16, T0.N - AVB_ORDRE)) AS VARBINARY(2))  AS HEXA
FROM   S_PAT.T_J_AGGIR_EVALUATION_PATIENT_VALEUR_EPV AS EPV
       INNER JOIN S_XMD.T_X_AGGIR_ADVERBE_AVB AS AVB
             ON EPV.AVB_ID = AVB.AVB_ID
       CROSS JOIN T0
GROUP  BY EVP_ID, VBL_ID
),
-- jointure pour trouver les lettres en sortie de variable d'après les masques HEXA
T2 AS
(
SELECT EVP_ID, T1.VBL_ID, VBL_ID_MERE,  
       COALESCE(RVL_LETTRE, VBL_RESULTAT_LETTRE_DEFAUT) AS LETTRE,
       SIGN(VBL_ID_MERE) * ROW_NUMBER() OVER (PARTITION BY VBL_ID_MERE ORDER BY T1.VBL_ID) AS N  
FROM   T1
       LEFT OUTER JOIN S_XMD.T_X_AGGIR_RESULTAT_VARIABLE_LETTRE_RVL AS RVL
             ON T1.VBL_ID = RVL.VBL_ID AND HEXA = RVL_MASQUE_BIN
       INNER JOIN S_XMD.T_X_AGGIR_VARIABLE_VBL AS VBL
             ON T1.VBL_ID = VBL.VBL_ID
),
-- concaténation des lettres
T3 AS
(
SELECT EVP_ID, COALESCE(VBL_ID_MERE, VBL_ID) AS VBL_ID,  
       CAST(LETTRE AS VARCHAR(max)) AS LETTRES, N
FROM   T2
WHERE  N = 1 OR N IS NULL
UNION ALL
SELECT T2.EVP_ID, COALESCE(T2.VBL_ID_MERE, T2.VBL_ID) AS VBL_ID,  
       T3.LETTRES + T2.LETTRE, T2.N
FROM   T2
       INNER JOIN T3
             ON T2.EVP_ID = T3.EVP_ID
                AND T2.VBL_ID_MERE = T3.VBL_ID
                AND T3.N = T2.N - 1),
-- obtention de la concaténation finale
T4 AS
(
SELECT EVP_ID, VBL_ID, LETTRES,  
       ROW_NUMBER() OVER(PARTITION BY VBL_ID ORDER BY N DESC) AS N
FROM   T3),
-- jointure pour trouver la lettres en sortie de variable de groupe d'après les masques ALPHA
T5 AS  
(
SELECT EVP_ID, T4.VBL_ID,  
       CASE  
          WHEN LEN(LETTRES) = 1 THEN LETTRES
          ELSE COALESCE(RGL_LETTRE_GROUPE, VBL_RESULTAT_LETTRE_DEFAUT)  
       END AS LETTRE
FROM   T4
       LEFT OUTER JOIN S_XMD.T_X_AGGIR_RESULTAT_GROUPE_LETTRE_RGL AS RGL
             ON T4.VBL_ID = RGL.VBL_ID AND LETTRES LIKE RTRIM(RGL_MASQUE_ALPHA)
       INNER JOIN S_XMD.T_X_AGGIR_VARIABLE_VBL AS VBL
             ON T4.VBL_ID = VBL.VBL_ID
WHERE  N = 1
),
-- jointure pour estimer valeur de rang dans toutes les valeurs
T6 AS  
(
SELECT EVP_ID, AGG_VALEUR, SUM(AGA_VALEUR) AS VALRANG  
FROM   T5
       INNER JOIN S_XMD.T_X_AGGIR_ALGO_AGA AS AGA
             ON T5.VBL_ID = AGA.VBL_ID
                anD T5.LETTRE = AGA_LETTRE
       INNER JOIN S_XMD.T_X_AGGIR_GROUPE_AGG AS AGG
             ON AGA.AGG_ID = AGG.AGG_ID
GROUP  BY EVP_ID, AGG_VALEUR),
-- calcul des fourchette de valeur de rang
TF AS
(
SELECT T.ARG_ID, T.ARG_RANG_IN, T.ARG_RANG_OUT,  
       COALESCE((SELECT MIN(ARG_LIMITE) - 1
                 FROM   S_XMD.T_X_AGGIR_RANG_ARG
                 WHERE  ARG_RANG_IN = T.ARG_RANG_IN
                   AND  ARG_LIMITE > T.ARG_LIMITE),  
                200000000 * SIGN(ARG_RANG_OUT)) AS ARG_LIMTE_MIN,
       ARG_LIMITE AS ARG_LIMTE_MAX, ARG_REPORT  
FROM   S_XMD.T_X_AGGIR_RANG_ARG AS T
)            
SELECT EVP_ID, AGG_VALEUR, VALRANG, TF.*
FROM   T6
       INNER JOIN TF
             ON T6.VALRANG BETWEEN ARG_LIMTE_MIN
                               AND ARG_LIMTE_MAX;

SUITE et FIN : http://blog.developpez.com/sqlpro/p9426/langage-sql-norme/modelisation-des-donnees-pour-la-grille-2/

——–
Frédéric BROUARD, Spécialiste modélisation, bases de données, optimisation, langage SQL.
Le site sur le langage SQL et les S.G.B.D. relationnels : http://sqlpro.developpez.com/
Expert SQL Server http://www.sqlspot.com : audit, optimisation, tuning, formation
* * * * * Enseignant au CNAM PACA et à l’ISEN à Toulon * * * * *

2 réflexions au sujet de « Modélisation des données pour la grille AGGIR (Autonomie Gérontologique – Groupes Iso-Ressources) – 1/2 »

Laisser un commentaire