TID et HID

Chaque enregistrement dans Goupile dispose de trois identifiants uniques :

Utilisez le TID pour faire la jointure entre les différentes tables dans les données exportées. La valeur du TID est disponible dans la colonne __tid de chaque table.

Compteurs personnalisés

Compteurs incrémentaux

Il est possible de créer des compteurs personnalisés, qui sont incrémentés pour chaque enregistrement (en commençant à 1) en fonction de conditions définies par le code.

La fonction meta.count(key, secret = false) est utilisée pour créer un compteur.

L'exemple ci-dessous illustre l'utilisation de cette fonctionnalité pour diviser les patients en 3 groupes. Après chaque enregistrement, l'un des trois compteurs suivant est incrémenté et affecté au participant :

form.enum("tabagisme", "Tabagisme", [
    ["actif", "Tabagisme actif"],
    ["sevre", "Tabagisme sevré"],
    ["non", "Non fumeur"]
])

if (values.tabagisme)
    meta.count("tabac_" + values.tabagisme)

Après inclusion de plusieurs patients, la valeur du compteur de chaque participant est disponible dans l'export, dans l'onglet @counters du fichier XLSX. La capture ci-dessous contient 3 participants : le premier est un ancien fumeur, les deux suivants sont des fumeurs actifs :

Randomisation

Le système de randomisation de Goupile est une extension des compteurs introduits précédemment.

Utilisez la fonction meta.randomize(key, max, secret = false) pour assigner un compteur. Le compteur randomisé n'est pas séquentiel, chaque participant reçoit une valeur aléatoire entre 1 et max, par bloc de taille max. Une fois que max participants ont été inclus, le compteur est remis à zéro pour les inclusions suivantes.

Par exemple, une valeur maximale de 4 garantit que les 4 premiers participants auront les valeurs 1, 2, 3 et 4 dans un ordre randomisé. Il en sera de même pour les 4 suivants :

meta.randomize("groupe", 4)

Comme dans l'exemple sur les compteurs séquentiels, vous pouvez stratifier la randomisation en utilisant une clé différente, qui peut dépendre d'une variable présente dans le formulaire.

L'exemple ci-dessous effectue une randomisation stratfiée par le genre, les patients auront une numéro de randomisation qui dépend de leur genre :

form.enum("genre", "Genre", [
    ["H", "Homme"],
    ["F", "Femme"],
    ["NB", "Non-binaire"]
])

if (values.genre)
    meta.count("groupe_" + values.genre)

La valeur de chaque compteur randomisé est disponible dans l'onglet @counters du fichier d'export. La capture ci-dessous illustre le groupe affecté à 8 inclusions, avec un appel à meta.randomize("groupe", 4).

Par défaut, les compteurs ne sont pas secrets, c'est à dire qu'ils peuvent être lus depuis une autre page du formuaire, et affichés ou utilisés pour adapter les pages.

Pour définir un compteur secret, qui ne sera disponible que dans le fichier d'export final, mettez le troisième paramètre secret de la fonction de randomisation à true :

// Randomisation secrète
meta.randomize("groupe", 4, true)

Personnalisation des identifiants

HID personnalisé

L'identifiant HID qui est affiché dans le tableau de suivi correspond par défaut à l'identifiant séquentiel qui est généré pour chaque enregistrement.

Vous pouvez cependant le personnaliser pour inclure d'autres éléments (dont le numéro de séquence, si vous le souhaitez). Pour cela, assignez une valeur à meta.hid dans le script de formulaire.

L'exemple ci-dessous répartit les inclusions en deux groupes randomisés, et inclut le groupe choisit dans l'identifiant qui prend la forme SEQUENCE-GROUPE.

form.number("*age", "Âge", {
    min: 0,
    max: 120
})

let rnd = meta.randomize('G', 4)
let groupe = "AABB"[rnd - 1] // Index must be 0 to 3, but the random value is between 1 and 4

meta.hid = thread.sequence + '-' + groupe

Summary

Pour chaque page du formulaire, il est possible de définir une information supplémentaire dite summary, qui sera affichée à la place de la date dans le tableau récapitulatif des enregistrements (voir capture ci-dessous), dans la colonne correspondant à la page.

Pour cela, assignez une valeur à meta.summary dans le script de formulaire. Dans l'exemple ci-dessous, la valeur affichée dans la colonne « Introduction » est construite en fonction de l'âge indiqué dans la variable correspondante :

form.number("*age", "Âge", {
    min: 0,
    max: 120
})

if (values.age != null)
    meta.summary = values.age + (values.age > 1 ? ' ans' : ' an')

Vous pouvez utiliser cette fonctionnalité pour afficher un numéro d'inclusion créé manuellement (par exemple si le numéro d'inclusion est créé en dehors de Goupile), comme le montre l'exemple ci-dessous :

form.number("num_inclusion", "Numero d'inclusion")
meta.summary = values.num_inclusion