Varset
Description
Le VarSet correspond au questionnaire de Voozanoo3. Ce XML est utilisé pour définir les variables contenues dans le VarSet.
Exemple:
<varset name="patient" prefix="pat" type="std" label="Patient">
<!-- Ces variables font partie du varset_head (Cf en bas de page) -->
<!-- var id="id_data" type="primary_key"/ -->
<!-- var id="id_data" type="integer" mandatory="true" / -->
<var uid="1" id="nom" type="string" default_label="Nom du patient" default_short_label="Nom">
<string length="50"/>
</var>
<var uid="2" id="prenom" type="string" default_short_label="Prénom">
<string length="50"/>
</var>
</varset>
name
: permet d’identifier le varset, il doit être unique.prefix
: est utilisé dans le nom table liée à ce varset (Ex :*_pat_data
,*_med_data
), il doit être unique.-
type
: permet d’identifier le type du varset.std
: Varset standardjoin
: Varset de jointure (relation n-n entre deux varsets)sys
: Varset système (Ne doit normalement pas être éditable par un utilisateur)
label
: est le libellé du varset
Pour chaque variable les attribus obligatoires sont :
uid
: Abbréviation de Unique Id cet attribut permet d’identifier cette variable durablement, afin de gérer un ajout, une suppression de variable ainsi qu’une modification de nom de variable (contenu dansid
)id
: Identifiant de la variable (utilisé comme nom de colonne dans la base de données)type
: Type de la variable (Cf varset-types)id_calculated_var
: Identifiant d’une variable calculée (id_data dans {pj}_query_data)
Pour les autres attributs : varset-options-globales
Types
primary_key
Le type primary_key
permet de définir la clé primaire du varset. Aucun
paramètre supplémentaire n’est nécessaire.
<var id="id_data" type="primary_key"/>
fkey_varset
Le type fkey_varset
sert à définir un clé étrangère vers un autre
varset.
<var uid="1" id="id_commune" type="fkey_varset">
<fkey_varset varset_name="commune" key="id_data"/>
</var>
varset_name
: nom du varset sur lequel effectuer la jointure.key
: nom de la variable dans le varsetvarset_name
utilisée par le système pour faire la jointure. Cet attribut est optionnel, en son absence, la jointure se fait automatiquement sur la variableid_data
.
fkey_varset_ref
Identique au type fkey_varset
, sert dans les modules listing, filtre
et export pour considérer le varset cible comme un référentiel. Cela
permet de sélectionner une variable du référentiel et de l’afficher, au
lieu d’avoir l’identifiant.
fkey_dico
Le type fkey_dico
sert à définir une clé étrangère vers un
dictionnaire du varset dico qui est présent dans chaque projet.
<var uid="1" id="sexe" type="fkey_dico">
<fkey_dico dico_name="sexe"/>
</var>
dico_name
: nom du dictionnaire dans la table des dictionnaires
fkey_dico_ext
Le type fkey_dico_ext
permet d’avoir une relation N-N avec un
dictionnaire (correspond aux cases à cocher dans voozanoo3).
<var uid="1" id="ttt" type="fkey_dico_ext">
<fkey_dico_ext dico_name="ttt"/>
</var>
dico_name
: nom du dictionnaire
Ce type a besoin d’une table dédiée à la jointure (une table par jointure).
<varset name="pat_ttt" prefix="01_dico_ttt" type="std" label="Réponses Patient-Traitement" >
<var uid="1" id="id_pat" type="integer"/>
<var uid="2" id="id_dico" type="integer"/>
</varset>
Le nom du varset est défnie selon la nomenclature suivante: (N° varset)_dico(Nom variable). Ex: 01_dico_ttt ce qui donne e5ib_01_dico_ttt_data pour la table des données.
Dans le xml dataquery, on récupère les colonnes de type fkey_dico_ext
de la même manière que les autres colonnes :
<column_simple field_name="ttt" table_name="p"/>
En revanche les données sont renvoyées sous forme d’un tableau ( voir la page de définition du XML de dataset ). Exemple de représentation de la données dans le XML de dataset:
<mutiple name="ttt">
<value>37</value>
<value>38</value>
<value>40</value>
</multiple>
fkey_sysdico
Ce type est utilisé pour lier une variable à un dictionnaire système
(table sys_dico_data
).
Le comportement est similaire au type fkey_dico
<var uid="1" id="user_status" type="fkey_sysdico">
<fkey_sysdico dico_name="user_status"/>
</var>
fkey_sysdico_ext
Similaire au type fkey_dico_ext
excepté que c’est une dictionnaire
système qui est pointé.
<var uid="1" id="foo" type="fkey_sysdico_ext">
<fkey_sysdico_ext dico_name="bar"/>
</var>
fkey_varset_ext
Le type fkey_varset_ext
est utilisé pour définir des relations de type
N-N avec un autre varset. Dans l’exemple ci-dessous nous décrivons une
relation de type N-N entre le varset “patient”, et le varset “bilan”.
<varset name="patient" prefix="01" type="std" label="Patient">
<var uid="1" id="id_bilan" type="fkey_varset_ext">
<fkey_varset_ext varset_relation_name="pat_bil" varset_name="bilan"/>
</var>
</varset>
<varset name="bilan" prefix="02" type="std" label="Patient">
<var uid="1" id="id_patient" type="fkey_varset_ext">
<fkey_varset_ext varset_relation_name="pat_bil" varset_name="patient"/>
</var>
</varset>
<varset name="pat_bil" prefix="01_02" type="join" label="Jointure Patient-Bilan">
<var uid="1" id="id_patient" type="integer"/>
<var uid="2" id="id_bilan" type="integer"/>
</varset>
Le varset “pat_bil” représente la table de jointure entre les deux varsets.
fkey_table - Non implémenté
Le type fkey_table permet de faire une jointure sur une table de la base de données.
<var uid="1" id="id_patient" type="fkey_table">
<fkey_table table_name="e5y7_01_data" key_name="id_data" multiple="false|true"/>
</var>
- table_name: nom de la table dans la base de données
- key_name: nom de la variable utilisée pour la jointure
-
- multiple
-
- false: jointure de type 1-n.
- true: jointure de type n-n.
fkey_ws - Non implémenté
Le type fkey_ws permet de lier une variable à un webservice.
<var uid="1" id="commune" type="fkey_ws">
<fkey_ws uri="https://..." multiple="false|true"/>
</var>
- uri
-
- multiple
-
- false: jointure de type 1-n.
- true: jointure de type n-n.
string
Chaine de caractère
<var uid="1" id="nom" type="string">
<string length="50"/>
</var>
length
: longueur maximale de la chaine.
integer
Entier
<var uid="1" id="taille" type="integer">
<integer min="10" max="220"/>
</var>
min
: valeur minmax
: valeur max
float
Nombre avec décimales
<var uid="1" id="temperature" type="float">
<float min="35" max="45" accuracy="2"/>
</var>
min
: valeur minmax
: valeur maxaccuracy
: nombre de décimales possibles (précision)
date
Date
<var uid="1" id="ddn" type="date">
<date min="1900-01-01" max="2010-12-31"/>
</var>
min
: valeur minmax
: valeur max
time
Heure
<var uid="1" id="depart" type="time">
<time min="08:30:00" max="19:00:00"/>
</var>
min
: valeur minmax
: valeur max
datetime - Implémenté partiellement
Date/Heure
<var uid="1" id="date_creation" type="datetime">
</var>
text
Text multi-ligne
<var uid="1" id="commentaire" type="text"/>
boolean
Booléen
<var id="enabled" type="boolean"/>
Options globales
Ces options sont applicables à tous les types, exceptés les types
primary_key
et foreign_key
.
<var
uid="1"
id="ddn"
type="date"
mandatory="true"
default_label="Date de naissance"
default_short_label="DDN"
default_value="now()"
/>
-
mandatory
(truefalse) : variable obligatoire default_label
: libellé de la variabledefault_short_label
: libellé court, utilisé par exemple pour les en-têtes de colonne dans les tableaux.default_value
: valeur par défaut. Pour les dates mettre le format YYYY-MM-DD, pour les dictionnaires indiquer soit le code du dictionnaire soit la clé primaire.
Validateurs
Il est possible de spécifier un validateur par variable (question). Pour
cela il faut rajouter un attribut validator
au noeud enfant du noeud
<var></var>
:
<varset name="patient" prefix="01" type="std" label="Patient">
<var uid="1" id="email" type="string" default_label="Adresse email" default_short_label="Email">
<string length="100" validator="email" />
</var>
</varset>
Il est également possible de rajouter une attribut regexp
au même
noeud afin d’activer la validateur par expression régulière.
<varset name="commune" prefix="99" type="std" label="Commune">
<var uid="1" id="cp" type="string" default_label="Code postal" default_short_label="CP">
<string length="100" regexp="^[0-9]{5}$" />
</var>
</varset>
Exemples complets
<varset name="dico" prefix="dico" type="sys" label="Dictionnaire">
<var uid="1" id="dico_name" type="string" mandatory="true" default_label="Nom du dictionnaire" default_short_label="Dico">
<string length="50"/>
</var>
<var uid="2" id="label" type="string" mandatory="true" default_label="Libellé" default_short_label="Libellé">
<string length="200"/>
</var>
<var uid="3" id="short_label" type="string" mandatory="true" default_label="Libellé court" default_short_label="Libellé court">
<string length="50"/>
</var>
</varset>
<varset name="commune" prefix="99" type="std" label="Commune">
<var uid="1" id="commune" type="string" mandatory="true" default_label="Commune" default_short_label="Commune">
<string length="200"/>
</var>
<var uid="2" id="cp" type="string" mandatory="true" default_label="Code postal" default_short_label="CP">
<string length="5"/>
</var>
<var uid="3" id="code_insee" type="string" mandatory="true" default_label="Code INSEE" default_short_label="INSEE">
<string length="5"/>
</var>
</varset>
<varset name="user" prefix="user" type="sys" label="Utilisateur">
<var uid="1" id="login" type="string" mandatory="true" default_label="Login" default_short_label="Login">
<string length="200"/>
</var>
<var uid="2" id="nom" type="string" mandatory="false" default_label="Nom" default_short_label="Nom">
<string length="200"/>
</var>
<var uid="3" id="prenom" type="string" mandatory="false" default_label="Prénom" default_short_label="Prénom">
<string length="50"/>
</var>
</varset>
<varset name="patient" prefix="01" type="std" label="Patient">
<var uid="1" id="nom" type="string" mandatory="true" default_label="Nom" default_short_label="Nom">
<string length="50"/>
</var>
<var uid="2" id="sexe" type="fkey_dico" mandatory="false" default_label="Sexe" default_short_label="Sexe">
<fkey_dico dico_name="sexe"/>
</var>
<var uid="3" id="commune" type="fkey_varset" mandatory="false" default_label="Commune" default_short_label="Commune">
<fkey_varset name="commune"/>
</var>
<var uid="4" id="traitement" type="fkey_dico_ext" mandatory="false" default_label="Traitement" default_short_label="ttt">
<fkey_dico_ext varset_relation_name="pat_ttt" dico_name="ttt"/>
</var>
<var uid="5" id="medecin" type="fkey_varset" mandatory="false" default_label="Médecin" default_short_label="Med">
<fkey_varset name="user"/> <!-- e5y7_01_medecin -->
</var>
<!--relation varset_name="enquete" var_id="id_patient"/-->
</varset>
<varset name="pat_ttt" prefix="01_dico_ttt" type="std" label="Réponses Patient-Traitement">
<var uid="1" id="id_data" type="integer"/>
<var uid="2" id="id_ttt" type="integer"/>
</varset>
<varset name="enquete" prefix="03" type="std" label="Enquêtes">
<var uid="1" id="id_patient" type="fkey_varset">
<fkey_varset name="patient"/>
</var>
</varset>
Libellés
Cela reste A discuter/Valider. Actuellement aucun noeud <label>
est compris par la système.
De plus un système d’internationalisation est déjà en place (Voir partie i18n).
Ajouter les libellés des variables dans le XML (y compris les traductions).
<varset name="patient" prefix="01" type="std" label="Patient">
<var uid="1" id="nom" type="string" mandatory="true" default_label="Nom">
<string length="50"/>
<label lang="en" value="Lastname"/>
</var>
<var uid="1" id="prenom" type="string" mandatory="true" default_label="Prénom">
<string length="50"/>
<label lang="en" value="Firstname"/>
</var>
</varset>
varset_head
Le rôle du varset_head est de regrouper les variables qui sont communes à tous les varset. Il s’agit des variables d’environnement.
Il s’agit d’un fichier Xml présent coté Core qui est “fusionné” avec le
Xml de varset définit par l’utilisateur. Il est présent dans
/src/library/Resource/XML/varset_head.xml
.
<varset_head>
<var id="id_data" type="primary_key" />
<var id="id_owner" type="integer" mandatory="TRUE" />
<!-- [...] -->
</varset_head>
TODO Lister les variables d’environnement