Compare commits

...

25 Commits

Author SHA1 Message Date
f143bf9395 WIP draft gestion doublons
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-24 23:17:33 +02:00
d4bb0bf552 Merge pull request 'Ajout des notifications sur les actions et les documents dans les évaluations + Household composition dans la génération de documents' (#4) from nouveautes-notifications into main
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
Reviewed-on: #4
2023-05-22 07:39:27 +00:00
fcf088443b Merge branch 'main' into nouveautes-notifications
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-05-22 07:34:50 +00:00
02cf7861f3 Documentation for HouseholdComposition in doc generation
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-05-17 16:08:33 +02:00
b43db4a066 notifications dans les actions et évaluations
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-28 10:21:19 +02:00
44a37b9837 plus d'explication sur les parcours 2023-04-28 10:13:58 +02:00
996373775c page nouveautes dans le manuels 2023-04-28 10:13:34 +02:00
361cca96a8 Merge pull request 'Parallelization of drone builds, where possible' (#3) from drone/parallelization into main
Some checks reported errors
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build was killed
Reviewed-on: #3
2023-04-27 21:06:51 +00:00
34af210f7f parallelization
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-04-27 23:04:53 +02:00
476b0b31c1 fix generation
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-27 23:00:39 +02:00
b9a0949236 Explications changement de statut du parcours
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2023-04-27 22:57:20 +02:00
44deae9cee Explanation for address not synchronized 2023-04-27 22:46:47 +02:00
47654378b4 ajout mention des exemples de modèle de documents
Some checks are pending
continuous-integration/drone/tag Build is running
continuous-integration/drone/push Build is passing
2023-03-06 11:43:54 +01:00
2178f99eee Ajout gabarits de documents
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-06 11:42:02 +01:00
0e11e35caa Fixed: [docgen] capture d'écran dans la génératio nde document
Some checks are pending
continuous-integration/drone/push Build is running
continuous-integration/drone/tag Build is running
2023-02-10 00:20:57 +01:00
9a90bb24dd Fix: [docgen] correct image for insert renvoi
Some checks are pending
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is running
2023-02-10 00:12:38 +01:00
81610bcf52 admin/docgen: ré-ordonne les objets par ordre alphabétique + uniquement les objets pour toutes les instances
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-10 00:06:43 +01:00
ca7a42af0b docgen: mise à jour des principes et utilisation dans Libre office
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-09 23:49:37 +01:00
c08df4ec8c replace variable name
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2022-10-19 21:44:47 +02:00
6120aee787 add missing doc for ThirdPartyProfession and ThirdPartyCategory and fixes delegation and tuteur 2022-10-19 21:44:47 +02:00
6d5a56c9b2 Documentation pour la date createdAtDate 2022-10-19 21:44:47 +02:00
3716e0e060 Document generation: add context "person with 3party" and fixes some
missing values in ThirdParty, Address
2022-10-19 21:44:47 +02:00
nobohan
019356f8c6 add field 'comment' in accompanyingperiodresource following issue 612
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-18 15:32:14 +02:00
058d7851f5 Fixed: do not try to publish manuel if no tag
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-07-12 00:36:33 +02:00
6a4e2ac8e3 Feature: page de démarrage de la configuration de chill #admin 2022-07-12 00:34:52 +02:00
20 changed files with 647 additions and 472 deletions

View File

@@ -18,12 +18,16 @@ steps:
commands:
- git lfs fetch
- git lfs checkout
depends_on:
- clone
- name: pandoc
image: pandoc/core:2.18-alpine
commands:
- sh build-pandoc.sh latex user > user/user-manual.tex
- sh build-pandoc.sh latex admin > admin/admin-manual.tex
depends_on:
- fetch images
- name: build-latex-user
image: texlive/texlive
@@ -31,6 +35,8 @@ steps:
- cd user
- latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode -xelatex user-manual.tex
- mv user-manual.pdf ../Manuel\ utilisateur.pdf
depends_on:
- pandoc
- name: build-latex-admin
image: texlive/texlive
@@ -38,6 +44,8 @@ steps:
- cd admin
- latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode -xelatex admin-manual.tex
- mv admin-manual.pdf ../Manuel\ administrateur.pdf
depends_on:
- pandoc
- name: release
image: plugins/gitea-release
@@ -49,11 +57,14 @@ steps:
- "Manuel administrateur.pdf"
- "Manuel utilisateur.pdf"
title: ${DRONE_TAG:=latest}
when:
event:
- tag
depends_on:
- build-latex-user
- build-latex-admin
when:
event:
- tag
---
kind: signature
hmac: dc200b08e09b83e734ff829ac62c7daf5f80986f725edac1b974b07793adb4b0
hmac: a83892d8f9bb967bd2a6335e2b34008e05f9bec482f270237c6764918434f97c
...

Binary file not shown.

BIN
admin/generation-documents-templates/template parcours.odt (Stored with Git LFS) Normal file

Binary file not shown.

BIN
admin/generation-documents-templates/template personne.odt (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -11,7 +11,20 @@ Seuls les documents suivants peuvent être utilisés:
* .ods
* .odp
## Rappel du parcours des utilisateurs
Des exemples sont disponibles [en ligne](https://gitea.champs-libres.be/Chill-project/manuals/src/branch/main/admin/generation-documents-templates).
## Rappel de "l'expérience utilisateur": comment les utilisateurs génèrent un document ?
Les utilisateurs peuvent générer un document depuis plusieurs contextes du logiciel:
- les documents du dossier d'usager;
- les documents du parcours;
- les documents dans les évaluations;
- les activités / échanges;
- les rendez-vous.
Chaque contexte peut être dédiée à un usage précis. Par exemple, l'utilisateur peut générer une invitation à un rendez-vous depuis la page "rendez-vous". Depuis les évaluations, un formulaire officiel pourrait être pré-rempli. Et un document récapitulatif du parcours peut être généré dans ses documents.
Lors de la génération de document, les utilisateurs parcourrent trois étapes, dont l'un est optionnelle:
@@ -21,7 +34,7 @@ Lors de la génération de document, les utilisateurs parcourrent trois étapes,
Ce formulaire est soit:
* natif au nœud. Dans ce cas, il apparait systématiquement ou dans certaines conditions;
* natif au contexte. Dans ce cas, il apparait systématiquement ou dans certaines conditions;
* configuré par l'admnistrateur fonctionnel parmi des options disponibles;
2. le document est effectivement généré en arrière-plan. Cela peut nécessiter éventuellement quelques secondes;
@@ -29,11 +42,21 @@ Lors de la génération de document, les utilisateurs parcourrent trois étapes,
Notez que, pour que la redirection soit effective, l'utilisateur doit fermer **dans l'interface de l'éditeur**: fermer la fenêtre ou l'onglet fait perdre les informations de redirection - cependant, le document est normalement enregistré.
## Syntaxe de génération d'un document
## Préparation des documents
Les documents sont préparés par l'administrateur fonctionnel.
Les documents sont préparés par l'administrateur fonctionnel. Il s'agit d'un document "traitement de texte" (ou tableur, ou présentation).
## Indiquer un champ dans un document
Le document est préparé de manière habituelle: le texte y est écrit, le logo de l'association inséré, etc. Ensuite, l'administrateur définit certaines zones qui seront remplacées par des informations qui sont collectées dans le logiciel.
Le travail de préparation consiste à préciser les endroits où ces informations doivent être insérées: des champs spécifiques.
::: .note
Le fonctionnement de la génération de document est assez semblable au "publi-postage": des champs sont définis dans le document, et le logiciel de traitement de texte vient les remplacer par ceux provenant d'une base de donnée.
:::
## Indiquer un champ dans un document en utilisant Libre Office
Aux endroits où cela est nécessaire, l'administrateur indique un "champ substituant".
@@ -41,58 +64,90 @@ Cela est accessible via le menu "Insertion > Renvoi...", puis choisir l'onglet "
La valeur à indiquer dans le champ "substituant" est à déduire des informations ci-dessous.
## Principes liés au variables
![Menu Insertion > Renvoi dans LibreOffice](./img/generation-document/libre-office-insert-renvoi.png)
### Nommage de variables
TODO
#### Exemple: application aux objets "date"
Les dates sont disponibles dans deux formats:
* le format "court", ou dd/mm/yyyy (par exemple, 15/06/1980, 18/08/2021, …). Ce format est accessible par le champ `short`;
* le format "long": 15 juin 1980, 18 août 2021, … Ce format est accessible par le champ `long`;
lorsqu'une date est disponible, il est donc possible d'avoir accès à son format en précisant sa chaine de caractère. Exemple avec la date de naissance de la personne:
```
person.Birthdate.Short=15/06/1980
person.Birthdate.Long=15 juin 1980
```
![Insérer un substituant. Ici, le substituant est l'identifiant (numéro, `id`) du parcours: `v.course.id`](./img/generation-document/libre-office-fonction-substituant.png)
### Cas où une variable est optionnelle
## Nature (type) des variables
Lorsqu'une variable est optionnelle, si sa valeur est inconnue ou vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
Pour chaque contexte où un document est généré, les variables disponibles sont listées [dans la section suivante](#sec:gendoc-champs-documents).
L'arbre des variables est toujours identique, sur toute la profondeur de celles-ci. L'administrateur est garanti qu'un champ existera, même si sa valeur n'est pas présente dans la base de donnée.
Chaque variable comporte un type: il peut s'agir de:
## Variables disponibles par document
- un nombre;
- un texte;
- un bouléen (`vrai` ou `faux`)
- un objet;
- ou une liste d'objets, de nombres, ou de textes.
Pour chaque contexte où un document est généré, les variables disponibles sont listées [dans la section suivante](#sec:gendoc-champs-documents). Le type des variables est indiqué.
Les variables et leur type sont décrites [dans la section suivante](#sec:gendoc-champs-objets). Le type est indiqué entre parenthèse:
Les variables pour chaque type sont décrites [dans la section suivante](#sec:gendoc-champs-objets):
* si le type commence par une majuscule, alors cette variable comporte des sous-champs, et il faut se reporter à la description des variables pour ce type;
* si le type commence par une majuscule, alors cette variable est un object. Il comporte des sous-champs, et il faut se reporter à la description de l'objet correspondant;
* si le type commence par une minuscule, alors cette variable peut être utilisée directement dans le document:
* s'il s'agit d'un booléen (`bool`), le champ peut être utilisé dans des tests;
* les champs `text` et `int` peuvent faire l'objet de test sur l'égalité;
* les champs de type `int` peuvent faire l'objet de comparaison sur l'ordre de grandeur (par exemple, le champs `age` des objets de type `Person` peut être filtré `> 18` ou `< 18` pour distinguer les adultes des enfants).
### Pour chaque document { #sec:gendoc:champs-documents }
### Cas où le contenu d'une variable est vide
#### Paramètres pour l'administrateur fonctionnel
Si une variable est vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
Les administrateurs fonctionnels peuvent activer les paramètres suivants:
L'arbre des variables est toujours identique, sur toute la profondeur de celles-ci. L'administrateur est garanti qu'un champ existera, même si sa valeur n'est pas présente dans la base de donnée.
* un champ "lieu", qui permettra de choisir parmi les lieux pré-enregistrés. Le lieu pré-sélectionné sera celui choisi par l'utilisateur;
### Exemple: la date de naissance d'une personne
Dans le contexte "personne", les informations de la personne sont disponibles sous le champ `v.person`. Il s'agit d'un objet de type `Person` qui comporte une sous-variable appelée `birthdate`, qui est lui-même disponible dans un objet de type `Date`.
Les objets `Date` proposent deux sous-champs, qui correspondent au format de la date:
* le format "court", ou dd/mm/yyyy (par exemple, 15/06/1980, 18/08/2021, …). Ce format est accessible par le champ `short`;
* le format "long": 15 juin 1980, 18 août 2021, … Ce format est accessible par le champ `long`;
Donc, pour insérer la date de naissance, on utilisera les substituants suivants:
```
v.person.birthdate.short
v.person.birthdate.long
```
Ce qui donnera (pour une personne née le 15 décembre 1980):
```
15/12/1980
15 décembre 1980
```
Si, par contre, la date de naissance de la personne n'est pas renseignée, deux lignes vides s'afficheront dans le document:
```
```
## Paramètres pour l'administrateur fonctionnel
Pour chaque gabarit, l'administrateur peut activer certaines options. Par exemple:
* permettre de sélectionner une personne parmi les usagers du parcours;
* configurer le libellé qui s'affichera pour l'utilisateur devant l'usager.
Les options disponibles dépendent du contexte.
Par exemple, pour un courrier généré dans un contexte "parcours", l'utilisateur pourra choisir un usager du parcours pour un courrier; l'administrateur indiquera qu'il s'agira du "destinataire" du courrier. Tandis que pour un formulaire officiel, l'administrateur configurera un "demandeur" et "co-demandeur", et ce sont ces libellés qui s'afficheront.
## Variables par contexte
### Pour tous les contextes { #sec:gendoc:champs-documents }
#### Variables
* `creator`: (User) le créateur;
* `createdAt` (Date): la date de création;
* `createdAt` (Date): la date et l'heure de création;
* `createdAtDate` (Date): la date de la création (sans l'heure). Utilisable pour indiquer la date d'un courrier, par exemple;
* `location` (Location): le lieu sélectionné par le créateur, au moment de la génération **ou** celui choisi par l'étape 1.
### Document générés pour un parcours
@@ -103,7 +158,7 @@ Les administrateurs fonctionnels peuvent activer les paramètres suivants:
* un champ "usager 1", qui permet ensuite à l'utilisateur de choisir un usager parmi ceux concernés par le parcours, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
* un champ "usager 2", qui permet aux utilisateurs de choisir un deuxième usager parmis ceux concernés par le parcours, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
* un champ "usager principal du parcours", qui permet, cette fois, de choisir parmi les usagers concernés par le parcours,, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
* un champ "usager principal du parcours", qui permet, cette fois, de choisir parmi les usagers concernés par le parcours, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
#### Variables
@@ -147,26 +202,34 @@ Il est possible également d'injecter des dossiers d'usagers, parmi ceux associ
* si `usager 1` est coché, une variable `person1`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`;
### Documents générés dans le dossier d'une personne
### Documents générés dans le dossier d'une personne: contexte "personne basique"
* une variable `person`, de type Person, avec les variants `relations`, `household` (ménage) et `budget`.
* une variable `person`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`.
### Documents générés dans le dossier d'une personne: contexte "personne avec un tiers"
Ce contexte permet de générer un courrier avec, en paramètre, un tiers.
Cela peut être utile pour, par exemple, générer un courrier vers un tiers déjà enregistré dans la base de donnée de Chill.
Les variables disponibles sont les suivantes:
* une variable `person`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`.
* une variable `thirdParty`, de type `ThirdParty`;
### Document générés dans un contexte "rendez-vous"
Les champs suivant sont disponibles:
* une variable `calendar` (Calendar), qui contient les données du rendez-vous;
* une variable `mainPerson` (Person), la personne principale parmi les personnes participant au rendez-vous. Cette variable n'est présente que si l'administrateur fonctionnel l'a configurée.
* une variable `thirdParty` (ThirdParty): un tiers participant au rendez-vous. Cette variable n'est présente que si l'administrateur fonctionnel l'a configurée.
## Principes liés au variables
## Champs par objet { #sec:gendoc-champs-objets }
Les champs ci-dessous étendent les variables disponibles dans les documents.
Par exemple, le document généré à partir d'un parcours présente la variable `startDate` qui contient la date de début du parcours. Ce champ peut être exploité de la manière suivante:
```
${courseStartDateLong} // 15 janvier 2021
ou dans la forme courte:
${courseStartDateShort} // 15/01/2021
```
### AccompanyingPeriod
### AccompanyingPeriod (Parcours)
* `id` (texte): l'identifiant du parcours
* `type` (texte): toujours égal à `accompanying_course`
@@ -212,20 +275,22 @@ ${courseStartDateShort} // 15/01/2021
* `comments` (liste de AccompanyingPeriodComment): liste des commentaires;
* `pinnedComment` (AccompanyingPeriodComment): commentaire épinglé;
### AccompanyingPeriodComment
### AccompanyingPeriodComment (Commentaire du parcours)
* `id` (int): identifiant
* `content` (texte): contenu du commentaire
* `createdAt` (Date): date de création
* `creator` (User): Créateur du commentaire
### AccompanyingPeriodOrigin
### AccompanyingPeriodOrigin (Origine du parcours)
* `id` (int): identifiant;
* `label` (texte): libellé de l'origine;
### AccompanyingPeriodParticipation
### AccompanyingPeriodParticipation (Participation à un parcours)
Cet objet effectue la jointure entre les parcours et les usagers concernés à un parcours. Elle permet d'avoir accès à des informations supplémentaires, comme la date de début et l'éventuelle date de fin de la participation à un parcours.
* `id` (int): identifiant
* `person` (Person): usager associé au parcours;
@@ -233,11 +298,50 @@ ${courseStartDateShort} // 15/01/2021
* `endDate` (Date): date de fin. Vide si la participation est toujours en cours;
### AccompanyingPeriodResource
### AccompanyingPeriodResource (Interlocuteur privilégiés dans un parcours)
* `id` (int): identifiant;
* `person` (Person): usager ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est un tiers);
* `thirdParty` (ThirdParty): tiers ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est une personne);
* `comment` (texte): commentaire associé à la personne ressource.
### AccompanyingPeriodWork (Action d'accompagnement)
* `id` (texte): l'identifiant de l'action;
* `note` (texte): la note;
* `persons` (liste de Person): liste des usagers concernés par l'action
* `results` (liste de Result): liste des résultats directement associé au parcours (résultats sans objectifs)
* `socialAction` (SocialAction): type d'action sociale;
* `startDate` (Date): la date de début de l'action (vide si inexistant)
* `endDate` (Date): la date de début de l'action (vide si inexistant)
* `thirdParties` (liste de ThirdParty): les tiers associés à l'action comme tiers intervenants;
* `updatedBy` (User): utilisateur ayant fait la mise à jour;
* `updatedAt` (Date): date de mise à jour;
* `handlingThierParty` (ThirdParty): tiers traitant;
* `goals` (AccompanyingPeriodWorkGoal): objectifs
* `createdBy` (Date): date de mise à jour;
* `createdAt` (User): utilisateur ayant fait la mise à jour;
* `createdAutomatically` (bool): `true` si l'action a été créée automatiquement (par exemple, en créant un échange);
* `evaluations` (AccompanyingPeriodWorkEvaluation): liste des évaluations générées;
* `referrers` (liste de User): liste des agents traitants;
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement)
* `id` (texte): l'identifiant de l'évaluation;
* `type` (texte): le libellé de l'évaluation;
* `startDate` (Date): la date de début de l'évaluation;
* `endDate` (Date) la date de fin de l'évaluation;
* `maxDate` (Date): la date d'échéance de l'évaluation;
* `comment` (texte): le commentaire de l'évaluation;
* `createdBy` (User): le créateur de l'évaluation;
* `createdAt` (Date): la date de création de l'évaluation;
* `evaluation` (Evaluation): le type d'évaluation;
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement)
* `id` (texte): identifiant
* `goal` (Goal): objectif d'une action
* `results` (liste de Result): liste des résultats
### Activity (échange)
@@ -271,32 +375,154 @@ Ce variant comporte les mêmes attributs, avec les différences suivantes:
* le champ `reasons` n'est pas présent;
* le champ `comment` est également présenté avec le variant `light`.
### ActivityType
### ActivityType (Type d'activité)
Type d'activité.
* `id` (int): identifiant;
* `name` (texte): libellé
### ActivityPresence
### ActivityPresence (Présence à l'échange)
Présence à l'échange
* `id` (int): identifiant;
* `name` (texte): libellé
### ClosingMotive
### Address (Une adresse)
* `address_id` (int): l'identifiant de l'adresse;
* `text` (texte): une chaine de caractère représentant l'adresse complète;
* `street` (texte): le nom de la rue (exemple: "RUE DES ÉGLANTIERS");
* `streetNumber` (texte): le numéro de police;
* `postcode` (PostCode): le code postal;
* `country` (Country): le pays de l'adresse;
* `floor` (texte): l'étage;
* `corridor` (texte): le couloir;
* `flat` (texte): l'appartement;
* `buildingName` (texte): le nom du bâtiment / résidence;
* `distribution` (texte): service particulier de distribution;
* `extra` (texte): champs extras
* `validFrom` (Date): date de début de validité;
* `validTo` (Date): date de fin de validité (vide si toujours valide);
* `lines` (liste de texte): les lignes de l'adresses, comme elles devraient être formatées dans une adresses
Il est possible de représenter l'adresse au format postal en effectuant une boucle sur les lignes. Par exemple, pour l'adresse d'une personne (chaque ligne est un "renvoi > substituant" dans l'exemple ci-dessous):
```
for each="line in v.person.address.lines
line
/for
```
### Comment (Commentaire)
Certains champs commentaire enregistrent également l'utilisateur qui a effectué la dernière mise à jour, et la date de celle-ci, en plus du commentaire en tant que tel. Ces champs ont les attributs suivants:
* `comment` (texte): le commentaire en tant que tel;
* `date` (Date): la date de la dernière modification;
* `user` (User): l'utilisateur qui a effectué la dernière modification;
#### Variant `light`
Dans le variant `light`,
* le champ `date` n'est pas présent;
* le champ `user` n'est pas présent.
Seul le champ `comment` est donc disponible.
### Civility (Civilité)
* `abbreviation` (texte): abbréviation;
* `id` (int): identifiant (utile pour des comparaisons);
* `name` (texte): titre, label de la civilité;
### ClosingMotive (Motif de cloture)
* `id` (int): identifiant;
* `name` (texte): libellé
### Date
### Country (Pays)
* `id` (int): identifiant
* `name` (texte): nom du pays
* `code` (texte): deux lettres du code ISO pays
### Date (Date)
* `short` (texte): la date au format dd/mm/yyyy, vide si la date est absente;
* `long` (texte): la date au format jour mois années: 15 août 1980, vide si al date est absente;
### Person
### Evaluation (type d'évaluation)
* `id` (texte): l'identifiant du type d'évaluation;
* `title` (texte): le titre du type d'évaluation;
### Goal (objectif d'une action)
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Household (Ménage)
* `id` (int): l'identifiant du ménage;
* `current_address` (Adress) : adresse actuelle du ménage
* `current_composition` (HouseholdComposition): Composition **actuelle** du ménage
* `currentMembers` (liste de HouseholdMember): liste des membres **actuels** du ménage;
* `members` (liste de HouseholdMember): liste des membres du ménages. Cette liste inclut également les anciens membres;
* `waitingForBirth` (bool): `true` si une naissance est attendue;
* `waitingForBirthDate` (Date): date de la naissance attendue;
### HouseholdComposition
La composition du ménage entre deux dates. Cette entité associe une `HouseholdCompositionType` avec une date de début et une date de fin
* `id` (int): L'identifiant de la composition
* `startDate` (Date): date de début de validité de la composition du ménage;
* `endDate` (Date): date de fin de validité de la composition du ménage (vide si actif)
* `numberOfChildren` (int): nombre d'enfants
* `householdCompositionType` (HouseholdCompositionType): Type de composition choisie, entre deux dates
### HouseholdCompositionType
* `id` (int): L'identifiant du type de composition
* `label` (texte): Le libellé de la composition
### HouseholdMember (Membre d'un ménage)
* `comment` (texte): texte du commentaire;
* `id` (int): identifiant de la participation au ménage;
* `endDate` (Date): date de fin de participation au ménage;
* `holder` (bool): `true` si le participant est titulaire;
* `person` (Person): l'usager qui est membre du ménage;
* `position` (HouseholdPosition): la position du membre dans le ménage;
* `startDate` (Date): date de début de participation au ménage;
### HouseholdPosition (Position du membre dans le ménage)
* `id` (int): identifiant de la position;
* `label` (texte): label de la position dans le ménage;
### Location (lieu)
* `id` (int): identifant;
* `name` (texte): nom;
* `address` (Address): adresse du lieu;
* `phonenumber1` (texte): numéro de téléphone;
* `phonenumber2` (texte): numéro de téléphone;
* `email` (email): email
* `locationType` (LocationType): le type de lieu
### LocationType (type de lieu)
* `id` (int): identifant;
* `title` (texte): titre du type de lieu;
### Person (Personne, usager)
* `id` (texte): Identifiant du dossier usager;
* `isNull` (bool): `true` si le dossier usager est vide;
@@ -323,150 +549,6 @@ Présence à l'échange
* `address` (Adresse): l'adresse actuelle
* `resources` (PersonResource): les personnes ressources, ajoutées depuis le dossier de l'usager.
::: { .vendee }
Au 23 mars 2022, ces champs ne sont plus disponibles:
* `numCaf` (texte): le numéro CAF;
* `numSS` (texte): le numéro de sécurité sociale;
* `numMSA` (texte): le numéro MSA;
* `mutuelle` (texte): le nom de la mutuelle
* `doctor` (ThirdParty): le médecin traitant;
* `situationProf` (texte): la situation professionnelle;
* `situationProfDate` (Date): date de la situation professionnelle;
Par ailleurs, la nature de ces champs a changé:
* `statutLogement`
* `niveauEtude`
Ces champs sont disponibles, dès le 22 mars:
* `extras.majeur.isNull` (bool): si un dossier "majeur" a été créé
* `extras.majeur.numeroCAF` (texte): le numéro CAF;
* `extras.majeur.numeroSecuriteSociale` (texte): le numéro de sécurité sociale;
* `extras.majeur.numMSA` (texte): le numéro MSA;
* `extras.majeur.mutuelle` (texte): le nom de la mutuelle
* `extras.majeur.medecinTraintant` (ThirdParty): le médecin traitant;
* `extras.majeur.situationProfessionelle` (texte): la situation professionnelle;
* `extras.majeur.situationProfessionelleComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.situationProfessionelleStartDate` (Date)
* `extras.majeur.statutLogement` (StatutLogement): statut au regard du logement;
* `extras.majeur.niveauEtude` (NiveauEtude): le niveau d''étude;
* `extras.majeur.identifiantPoleEmploi` (texte)
* `extras.majeur.accompagnementMissionLocale` (texte)
* `extras.majeur.gensDuVoyage` (bool): `true` si la personne fait partie des gens du voyage
* `extras.majeur.titreDeSejour` (TitreDeSejour): entité TitreDeSejour
* `extras.majeur.titreDeSejourComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.situationProfessionelle` (SituationProfessionelle): entité SituationProfessionelle
* `extras.majeur.aidantFamilial` (bool): `true` si la personne fait partie des gens du voyage
* `extras.majeur.tempsDeTravail` (TempsDeTravail): entité TempsDeTravail
* `extras.majeur.niveauEtude` (NiveauEtude): entité NiveauEtude
* `extras.majeur.mobilite` (mMbilite): entité Mobilite
* `extras.majeur.permisDeConduire` (bool): `true` si la personne a un permis de conduire
* `extras.majeur.moyenDeTransport` (bool): `true` si la personne a un moyen de transport
* `extras.majeur.infoSocioProComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.entourage` (Entourage): entité Entourage
* `extras.majeur.entourageComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.numeroSecuriteSociale` (texte)
* `extras.majeur.caisseSecuriteSociale` (texte)
* `extras.majeur.pasDeMedecinTraitant` (bool): `true` si la personne n'a pas de médecin traitant
* `extras.majeur.medecinTraitant` (Tiers): entité ThirdParty
* `extras.majeur.medecinTraitantTexteLibre` (texte)
* `extras.majeur.mdph` (texte)
* `extras.majeur.mdphStartDate` (Date)
* `extras.majeur.mdphEndDate` (Date)
* `extras.majeur.mdphComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.aah` (texte)
* `extras.majeur.aahStartDate` (Date)
* `extras.majeur.aahEndDate` (Date)
* `extras.majeur.aahComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.rqth` (texte)
* `extras.majeur.rqthStartDate` (Date)
* `extras.majeur.rqthEndDate` (Date)
* `extras.majeur.rqthComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.pcdh` (texte)
* `extras.majeur.pcdhStartDate` (Date)
* `extras.majeur.pcdhEndDate` (Date)
* `extras.majeur.pcdhComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.adpa` (texte)
* `extras.majeur.adpaStartDate` (Date)
* `extras.majeur.adpaEndDate` (Date)
* `extras.majeur.adpaComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.gir` (texte)
* `extras.majeur.girStartDate` (Date)
* `extras.majeur.girEndDate` (Date)
* `extras.majeur.girComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.infoMedicaleComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.statutLogement` (StatutLogement): entité StatutLogement
* `extras.majeur.statutLogementComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.caisseDeRetraitePrincipale` (texte)
* `extras.majeur.caisseDeRetraiteComment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `extras.majeur.caisseDeRetraiteComplementaire` (liste de texte): les caisses de retraite complémentaires, en liste de texte;
* `extras.majeur.caissesDeRetraiteComplementairesText` (texte): les caisses de retraite complémentaires, dans un seul champ texte, séparé par des virgules;
En outre, si la personne est mineure, on a accès aux champs suivants:
* `extras.majeur.isNull` (bool): si un dossier "mineur" a été créé
* `extras.mineur.enfantConfie` (bool): `true` si enfant confié
* `extras.mineur.dossierASE` (texte)
* `extras.mineur.autoriteParentale` (texte)
* `extras.mineur.autoriteParentaleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.identificationAutoriteParentale1` (texte)
* `extras.mineur.identificationAutoriteParentale2` (texte)
* `extras.mineur.autoriteParentale1Date` (Date)
* `extras.mineur.autoriteParentale2Date` (Date)
* `extras.mineur.retraitAutoriteParentale` (bool): `true` si retraitAutoriteParentale
* `extras.mineur.retraitAutoriteParentaleDate` (Date)
* `extras.mineur.retraitAutoriteParentaleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.delegation` (bool): `true` si délégation
* `extras.mineur.delegationDate` (Date)
* `extras.mineur.delegationComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.delegationThirdParty` (tiers): entité ThirdParty
* `extras.mineur.delegationPerson` (person): entité Person
* `extras.mineur.tuteur` (texte)
* `extras.mineur.tuteurThirdParty` (tiers): entité ThirdParty
* `extras.mineur.administrateurAdhoc` (bool): `true` si administrateurAdhoc
* `extras.mineur.administrateurAdhocDate` (Date)
* `extras.mineur.administrateurAdhocComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.pupilleEtat` (bool): `true` si pupilleEtat
* `extras.mineur.pupilleEtatDate` (Date)
* `extras.mineur.pupilleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.tuteurPerson` (person): entité Person
* `extras.mineur.enfantEmancipe` (bool): `true` si enfantEmancipe
* `extras.mineur.enfantEmancipeDate` (Date)
* `extras.mineur.gardeAlternee` (bool)
* `extras.mineur.decisionJAF` (bool): `true` si decisionJAF
* `extras.mineur.decisionJAFDate` (Date)
* `extras.mineur.decisionJAFEnfantConfie` (bool): `true` si decisionJAFEnfantConfie
* `extras.mineur.decisionJAFDateEnfantConfie` (Date)
* `extras.mineur.fratrieComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.droitDeVisiteComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.infoFamilialeComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.residenceMineur` (texte)
* `extras.mineur.derniereVisiteMedicaleDate` (Date)
* `extras.mineur.visiteMedicaleText` (texte)
* `extras.mineur.prochaineVisiteMedicaleDate` (Date)
* `extras.mineur.autresRDV` (texte)
* `extras.mineur.infoMedicaleComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.scolarise` (bool): `true` si scolarisé
* `extras.mineur.derniereClasseScolaire` (texte)
* `extras.mineur.etablissementScolaire` (texte)
* `extras.mineur.classeScolaire` (texte)
* `extras.mineur.alternance` (bool): `true` si alternance
* `extras.mineur.alternanceEntreprise` (texte)
* `extras.mineur.enseignantReferant` (texte)
* `extras.mineur.scolariteComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.mineurComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.autresIntervenantsComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.dispositifs` (texte)
* `extras.mineur.dossierMDPH` (texte)
* `extras.mineur.notificationMDPH` (texte)
* `extras.mineur.notificationMDPHStartDate` (Date)
* `extras.mineur.notificationMDPHEndDate` (Date)
* `extras.mineur.dispositifsComment` (Comment): Commentaire (avec la date de la dernire mise à jour)
* `extras.mineur.adresseDeRelais` (adresse): liste d'adresses
:::
#### variant `household`
* `household` (Household): le ménage actuel de l'usager;
@@ -516,20 +598,6 @@ Les attributs suivants sont disponibles, pour chaque objet `Person` qui a un var
* `budget.household.resources.<clé du type de ligne de budget>` (Ligne de budget): une ligne de budget pour la ressource dont la clé est indiquée par `<clé du type de ligne de budget>`. La liste des clés est à obtenir auprès de l'administrateur technique. Les lignes de budget de tous les usagers actuels du ménages sont globalisées, ainsi que les lignes de budget associées directement au dossier ménage;
* `budget.household.charges.<clé du type de ligne de budget>` (Ligne de budget): une ligne de budget pour la charge dont la clé est indiquée par `<clé du type de ligne de budget>`. La liste des clés est à obtenir auprès de l'administrateur technique. Les lignes de budget de tous les usagers actuels du ménages sont globalisées, ainsi que les lignes de budget associées directement au dossier ménage;
#### Exemple d'utilisation
```
Nom de la personne: ${personLastname} // Dupuis
Prénom de la personne: ${personFirstname} // Gérard
Date de naissance: ${personBirthdateLong} // le 7 juillet 1974
Nom du père: ${personFatherLastName} ${personFatherFirstname} // Dupuis Marcel
Téléphone du père: ${personFatherFirstphonenumber} // 01 23 45 67 89
```
::: { .vendee }
### PersonResource (Ressources associée à l'usager)
Pour rappel, les ressources peuvent être:
@@ -550,164 +618,14 @@ Pour rappel, les ressources peuvent être:
### PersonResourceKind (Type de personne ressource)
* `id` (int)
* `title` (texte)
* `title` (texte)
### StatutLogement
* `id` (int): identifiant (utile pour des comparaisons);
* `active` (bool): si le statut est encore utilisé;
* `name` (texte): titre
### NiveauEtude
* `id` (int): identifiant (utile pour des comparaisons);
* `active` (bool): si le niveau d'étude est encore utilisé;
* `name` (texte): titre
### SituationProfessionelle
* `id` (int): identifiant (utile pour des comparaisons);
* `active` (bool): si la situation professionelle est encore utilisée
* `name` (texte): titre
:::
### Civility
* `abbreviation` (texte): abbréviation;
* `id` (int): identifiant (utile pour des comparaisons);
* `name` (texte): titre, label de la civilité;
::: { .vendee }
### Entourage
* `person` (person): entité Person
* `thirdParty` (tiers): entité ThirdParty
* `text` (texte)
* `comment` (comment): Commentaire (avec la date de la dernire mise à jour)
* `aidantProche` (bool): `true` si aidantProche
:::
### Household
* `id` (int): l'identifiant du ménage;
* `members` (liste de HouseholdMember): liste des membres du ménages;
* `waitingForBirth` (bool): `true` si une naissance est attendue;
* `waitingForBirthDate` (Date): date de la naissance attendue;
### HouseholdMember
* `comment` (texte): texte du commentaire;
* `id` (int): identifiant de la participation au ménage;
* `endDate` (Date): date de fin de participation au ménage;
* `holder` (bool): `true` si le participant est titulaire;
* `person` (Person): l'usager qui est membre du ménage;
* `position` (HouseholdPosition): la position du membre dans le ménage;
* `startDate` (Date): date de début de participation au ménage;
### HouseholdPosition
* `id` (int): identifiant de la position;
* `label` (texte): label de la position dans le ménage;
::: { .vendee }
### Mobilite, NiveauEtude, SituationProfessionelle, StatutLogement, TempsDeTravail, TitreDeSejour
* `active` (bool): `true` si active
* `name` (texte)
:::
### ThirdParty
* `id` (int): identifiant du tiers;
* `acronym` (text): acronyme;
* `address` (Adress): adresse du tiers
* `categories` (liste de ThirdPartyCategory): liste des catégories;
* `civility` (Civility): civilité
* `contactDataAnonymous` (bool): `true` si le tiers est anonyme;
* `email` (texte): email;
* `name` (texte): nom du tiers;
* `nameCompany` (texte): nom du service du tiers (pour une personne morale);
* `parent` (ThirdParty): tiers parent (pour les contacts)
* `profession` (ThirdPartyProfession)
* `telephone` (texte): numéro de téléphone du tiers
### ThirdPartyCategory (catégorie de tiers)
TODO
### ThirdPartyProfession (profession du tiers)
TODO
### Adresse
* `address_id` (int): l'identifiant de l'adresse;
* `text` (texte): une chaine de caractère représentant l'adresse complète;
* `street` (texte): le nom de la rue (exemple: "RUE DES ÉGLANTIERS");
* `streetNumber` (texte): le numéro de police;
* `postcode` (PostCode): le code postal;
* `country` (Country): le pays de l'adresse;
* `floor` (texte): l'étage;
* `corridor` (texte): le couloir;
* `flat` (texte): l'appartement;
* `buildingName` (texte): le nom du bâtiment / résidence;
* `distribution` (texte): service particulier de distribution;
* `extra` (texte): champs extras
* `validFrom` (Date): date de début de validité;
* `validTo` (Date): date de fin de validité (vide si toujours valide);
### Postcode
### Postcode (Code Postal)
* `id` (int): identifiant
* `name` (texte): localité
* `code` (texte): code postal
### Country
* `id` (int): identifiant
* `name` (texte): nom du pays
* `code` (texte): deux lettres du code ISO pays
### User { #sec:gendoc-var-user }
* `id` (int): identifant
* `type` (texte): vaut toujours `user`
* `username` (texte): le login
* `email` (texte): l'email de l'utilisateur
* `text` (texte): le libellé complet de l'utilisateur (avec son métier et son service entre parenthèse);
* `label` (texte): le libellé de l'utilisateur, tel qu'il est enregistré par l'administrateur fonctionnel
* `main_scope` (Scope): service principal
* `user_job.label` (texte): métier principal
* `current_location` (Location): lieu de l'utilisateur, celui actuellement choisi par l'utilisateur par le menu "utilisateur";
* `main_location` (Location): localisation de l'utilisateur définie par l'administrateur fonctionnel (parfois appelé "résidence administrative"). L'utilisateur ne peut pas la modifier lui-même;
* `civility` (Civility): la civilité de l'utilisateur;
### Location (lieu)
* `id` (int): identifant;
* `name` (texte): nom;
* `address` (Address): adresse du lieu;
* `phonenumber1` (texte): numéro de téléphone;
* `phonenumber2` (texte): numéro de téléphone;
* `email` (email): email
* `locationType` (LocationType): le type de lieu
### LocationType (type de lieu)
* `id` (int): identifant;
* `title` (texte): titre du type de lieu;
### Social Issue (problématique sociale)
* `name`: le nom de la problématique seule
* `text`: le nom de la problématique et des problématiques parentes
### Relationship (relations (filiations) entre usagers)
Pour faciliter l'usager, les relations sont toujours représentée à partir d'un usager d'origine.
@@ -723,42 +641,11 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
**Note**: la différence entre `fromPerson` et `toPerson` est arbitraire.
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement)
### Result (résultat d'une action)
* `id` (texte): l'identifiant de l'évaluation;
* `type` (texte): le libellé de l'évaluation;
* `startDate` (Date): la date de début de l'évaluation;
* `endDate` (Date) la date de fin de l'évaluation;
* `maxDate` (Date): la date d'échéance de l'évaluation;
* `comment` (texte): le commentaire de l'évaluation;
* `createdBy` (User): le créateur de l'évaluation;
* `createdAt` (Date): la date de création de l'évaluation;
* `evaluation` (Evaluation): le type d'évaluation;
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Evaluation (type d'évaluation)
* `id` (texte): l'identifiant du type d'évaluation;
* `title` (texte): le titre du type d'évaluation;
### AccompanyingPeriodWork (Action d'accompagnement)
* `id` (texte): l'identifiant de l'action;
* `note` (texte): la note;
* `persons` (liste de Person): liste des usagers concernés par l'action
* `results` (liste de Result): liste des résultats directement associé au parcours (résultats sans objectifs)
* `socialAction` (SocialAction): type d'action sociale;
* `startDate` (Date): la date de début de l'action (vide si inexistant)
* `endDate` (Date): la date de début de l'action (vide si inexistant)
* `thirdParties` (liste de ThirdParty): les tiers associés à l'action comme tiers intervenants;
* `updatedBy` (User): utilisateur ayant fait la mise à jour;
* `updatedAt` (Date): date de mise à jour;
* `handlingThierParty` (ThirdParty): tiers traitant;
* `goals` (AccompanyingPeriodWorkGoal): objectifs
* `createdBy` (Date): date de mise à jour;
* `createdAt` (User): utilisateur ayant fait la mise à jour;
* `createdAutomatically` (bool): `true` si l'action a été créée automatiquement (par exemple, en créant un échange);
* `evaluations` (AccompanyingPeriodWorkEvaluation): liste des évaluations générées;
* `referrers` (liste de User): liste des agents traitants;
### SocialAction (type d'action d'accompagnement)
@@ -766,36 +653,63 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
* `text` (texte): texte, avec les parents inclus, séparés par un ` > `;
* `title`: titre du type d'action, sans les parents;
### Result (résultat d'une action)
### Social Issue (problématique sociale)
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
* `name`: le nom de la problématique seule
* `text`: le nom de la problématique et des problématiques parentes
### Goal (objectif d'une action)
### ThirdParty (Tiers)
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
* `id` (int): identifiant du tiers;
* `acronym` (text): acronyme;
* `address` (Adress): adresse du tiers
* `categories` (liste de ThirdPartyCategory): liste des catégories;
* `civility` (Civility): civilité
* `contactDataAnonymous` (bool): `true` si le tiers est anonyme;
* `email` (texte): email;
* `name` (texte): nom du tiers;
* `firstname` (texte): Prénom du tiers;
* `parent` (ThirdParty): tiers parent (pour les contacts)
* `profession` (ThirdPartyProfession)
* `telephone` (texte): numéro de téléphone du tiers
* `kind` (texte): permet de distinguer les personnes morales, les contacts et les personnes physiques (voir ci-après)
* `child` (bool) vaut TRUE s'il existe un parent (contact), false sinon;
* `parent` (ThirdParty): s'il s'agit d'un contact d'une personne morale, contient la fiche d'une personne morale
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement)
* `id` (texte): identifiant
* `goal` (Goal): objectif d'une action
* `results` (liste de Result): liste des résultats
`kind` vaut:
### Comment
* `company` lorsqu'il s'agit d'une personne morale
* `child` lorsuq'il s'agit d'un contact d'une personne morale
* `contact` lorsqu'il s'agit d'une personne **physique** (à ne pas confondre avec un contact d'une personne morale)
Certains champs commentaire enregistrent également l'utilisateur qui a effectué la dernière mise à jour, et la date de celle-ci, en plus du commentaire en tant que tel. Ces champs ont les attributs suivants:
### ThirdPartyCategory (catégorie de tiers)
* `comment` (texte): le commentaire en tant que tel;
* `date` (Date): la date de la dernière modification;
* `user` (User): l'utilisateur qui a effectué la dernière modification;
* `id` (int): identifiant
* `name` (texte)
#### Variant `light`
Dans le variant `light`,
### ThirdPartyProfession (profession du tiers)
* le champ `date` n'est pas présent;
* le champ `user` n'est pas présent.
* `id` (int): identifiant
* `name` (texte)
Seul le champ `comment` est donc disponible.
### User (Utilisateur) { #sec:gendoc-var-user }
* `id` (int): identifant
* `type` (texte): vaut toujours `user`
* `username` (texte): le login
* `email` (texte): l'email de l'utilisateur
* `text` (texte): le libellé complet de l'utilisateur (avec son métier et son service entre parenthèse);
* `label` (texte): le libellé de l'utilisateur, tel qu'il est enregistré par l'administrateur fonctionnel
* `main_scope` (Scope): service principal
* `user_job` (UserJob): métier principal
* `current_location` (Location): lieu de l'utilisateur, celui actuellement choisi par l'utilisateur par le menu "utilisateur";
* `main_location` (Location): localisation de l'utilisateur définie par l'administrateur fonctionnel (parfois appelé "résidence administrative"). L'utilisateur ne peut pas la modifier lui-même;
* `civility` (Civility): la civilité de l'utilisateur;
### UserJob (Métier)
* `id` (int): identifiant
* `label` (texte): nom du métier

Binary file not shown.

BIN
admin/img/generation-document/libre-office-insert-renvoi.png (Stored with Git LFS) Normal file

Binary file not shown.

77
admin/start.md Normal file
View File

@@ -0,0 +1,77 @@
# Démarrer la configuration de Chill
A la livraison, Chill ne dispose d'aucune configuration, vous recevez l'instance avec une base de donnée vide.
Voici les premières étapes à configurer pour pouvoir commencer à l'utiliser.
## Se connecter en tant qu'administrateur
Sur la page d'accueil de votre nouvelle instance, utilisez le login d'administration et le mot de passe qui vous a été fourni.
Vous serez alors redirigé vers l'interface d'administration.
## Que faut-il créer ?
### Premier utilisateurs, et les droits minimums
Pour qu'un utilisateur puisse utiliser Chill, voici les opérations à réaliser:
* Créer un Centre.
Choisissez un nom qui représente votre service. Si vous n'en utilisez qu'un seul, il ne sera que très rarement visible des utilisateurs.
* Créer un Cercle;
Si vous choisissez de laisser visibles tous les éléments, il ne sera jamais visualisés par les utilisateurs. Dans le cas inverse, utilisez un nom de service qui soit cohérent avec la séparation que vous voulez réaliser.
* Créer un Groupe de permissions
C'est sans doute la phase la plus complexe: elle vise à créer un groupe de droits cohérents. Chaque droit s'exerce sur un cercle défini.
Si vous choississez de laisser accessibles toutes les informations, indiquez les permissions les plus larges, et le cercle que vous avez créé.
* Créer un utilisateur
Les seuls champs obligatoires sont son nom d'utilisateur (qu'il rentrera pour s'authentifier il n'est pas sensible à la casse), son adresse de courriel et un libellé (le nom qui s'affichera dans tous les menus). Vous devez également indiquer un mot de passe.
Les autres champs sont optionnels.
Une fois créé, associez votre nouvel utilisateur avec le groupe de permission, et le centre.
Avec ces premières étapes, un utilisateur devrait déjà être capable de s'authentifier et, si les droits sont configurés correctement, créer un premier dossier de personne.
### Le nécessaire pour un premier parcours
Continuez pour pouvoir saisir un premier parcours (si vous utilisez cette fonctionnalité):
* Créer un "type de localisation". Le type de localisation permettra d'indiquer le lieu où sera localisé le parcours. Un des types les plus courants est, par exemple, un type "implantation".
Par la suite, vous pourrez créer des types de lieux pour, par exemple, le "domicile de l'usager", "rendez-vous en hôpital", etc.
* Créer une "localisation", que vous allez attacher au "type de localisation" créé précédemment.
* Créer une "Origine" pour les parcours.
Par exemple: "Appel téléphonique", "Rencontre en maraude", etc.
* Créer une première "problématique sociale"
Impossible de confirmer un parcours sans problématique!
* Créer un Métier
Le métier sera nécessaire pour pouvoir confirmer le parcours. Vous pouvez associer le premier utilisateur créé au métier: il sera plus aisément sélectionné.
Vous êtes maintenant en mesure de créer un usager et un parcours!
### Une première activité !
Pour pouvoir créer une activité (tant dans un parcours qu'auprès d'une personne), ajoutez un "type d'activité".
### Une configuration minimale...
Cette première configuration est minimale! Elle suffit pour commencer.
Par la suite, vous pourrez vous plonger dans les différents menus pour alimenter votre instance de Chill et qu'elle soit à votre image.

View File

@@ -36,10 +36,13 @@ if [ $kind = 'user' ]; then
notifications.md
tasks.md
workflows.md
choisir_une_adresse.md
adresses.md
gestion-doublon.md
nouveautes.md
"
elif [ $kind = 'admin' ]; then
export files="
start.md
generation-documents.md
"
else

66
user/adresses.md Normal file
View File

@@ -0,0 +1,66 @@
\newpage
# Gestion des adresses
## Choisir une adresse {#sec:choisir-une-adresse}
Que ce soit dans un ménage, dans un tiers ou encore pour localiser un échange, il y a plusieurs endroits où vous pouvez saisir une adresse dans Chill.
### Création d'une d'adresse
Lorsque le formulaire d'adresse s'ouvre, vous pouvez soit sélectionner une adresse "de référence", soit en saisir une nouvelle. Il est en effet possible de pré-charger une liste d'adresses de référence provenant de sources officielles dans Chill. Suivant votre installation, cela a peut-être été fait pour votre région, votre département ou le pays entier.
![Création d'une d'adresse](./img/choisir-une-adresse.png)
La case à cocher "Adresse confidentielle" permet d'indiquer qu'une adresse doit apparaitre par défaut floutée dans le logiciel ou tout document exporté du logiciel.
La case à cocher "Pas d'adresse complète" permet d'indiquer une adresse uniquement en indiquant la pays et une localité, sans définir la rue et le numéro de bâtiment. Si cette case n'est pas cochée, vous devez remplir la rue et le numéro de bâtiment.
Si des adresses de référence ont été pré-chargées dans le logiciel, vous pouvez successivement choisir la localité (ville ou village), puis l'adresse précise (rue et numéro de bâtiment). Si l'adresse est inconnue par le logiciel, que ce soit au niveau de la localité ou de l'adresse précise, écrivez le nom dans le champ correspondant et le formulaire vous proposera de saisir une nouvelle adresse. Attention, la recherche d'une adresse pré-chargée est sensible à des fautes de frappes ou d'orthographe, donc assurez-vous de l'orthographe de votre saisie avant de créer une nouvelle adresse.
Lorsqu'une adresse de référence est sélectionnée, la localisation de l'adresse est connue et le pointeur se déplace sur la carte à l'endroit de l'adresse. Lors de la création d'une adresse inconnue par le logiciel, la localisation ne peut pas être définie.
En bas du formulaire, une série de champs optionnels peuvent être complétés pour préciser l'adresse (étage, couloir, escalier, complément d'adresse, etc.). En remplissant adéquatement ces champs, le logiciel pourra générer des adresses postales valides utiles pour la génération de documents.
### Dates de validité
Dans le cas d'une adresse d'un ménage, lors de la création d'une adresse, une date de validité doit être choisie, indiquant à partir de quand l'adresse est valide. Lors d'un changement d'adresse, le logiciel va garder l'historique des adresses d'un ménage en tenant compte de ces dates de validité.
## Édition d'une adresse existante
Dans le cas d'une erreur, ou bien dans le cas d'un changement d'adresse d'un tiers, il est possible d'éditer une adresse existante en cliquant sur le bouton "Modifier l'adresse".
## Visualiser les détails d'une adresse
A côté de chaque adresse, un bouton indiquant une carte permet de visualiser les détails d'une adresse, et notamment:
- visualiser l'adresse sur une carte;
- ouvrir, dans une nouvelle fenêtre ou un nouvel onglet, une carte détaillée sur Google maps ou OpenStreetMap, pour visualiser l'endroit de manière plus confortable et éventuellement calculer un itinéraire;
- lister les zones statistiques géographiques qui recouvrent l'adresse.
::: {.note}
La page de visualisation sur Google Maps où OpenStreetMap s'ouvre dans un nouvel onglet, ou une nouvelle fenêtre.
:::
![Une adresse, le bouton avec une carte permettant de visualiser les détails de cette adresse](img/address_inline_with_button.png)
![Visualisation des détails d'une adresse](img/address_details_modal.png)
## Mise à jour des adresses de référence
Les adresses de références devraient être régulièrement mises à jour. Il est probable que des changements aient lieu dans des adresses de référence qui sont associées aux adresses des tiers et des ménages.
Dans ce cas, cela est indiqué dans l'affichage de l'adresse et dans la modale qui permet de visualiser les détails. Vous pouvez alors choisir de mettre à jour cette adresse ou d'ignorer les changements.
![Adresse dont l'adresse de référence a été modifiée](img/address_inline_with_button_and_warning.png)
![Mettre à jour une adresse de référence modifiée](img/address_details_modal_with_address_reference_change.png)
::: {.note}
Il existe un filtre permettant de lister les ménages dont l'adresse de référence a fait l'objet d'une mise à jour.
:::

View File

@@ -1,30 +0,0 @@
\newpage
# Choisir une adresse {#sec:choisir-une-adresse}
Que ce soit dans un ménage, dans un tiers ou encore pour localiser un échange, il y a plusieurs endroits où vous pouvez saisir une adresse dans Chill.
## Création d'une d'adresse
Lorsque le formulaire d'adresse s'ouvre, vous pouvez soit sélectionner une adresse prédéfinie soit en saisir une nouvelle. Il est en effet possible de pré-charger une liste d'adresses dans Chill. Suivant votre installation, cela a peut-être été fait pour votre région, votre département ou le pays entier.
![Création d'une d'adresse](./img/choisir-une-adresse.png)
La case à cocher "Adresse confidentielle" permet d'indiquer qu'une adresse doit apparaitre par défaut floutée dans le logiciel ou tout document exporté du logiciel.
La case à cocher "Pas d'adresse complète" permet d'indiquer une adresse uniquement en indiquant la pays et une localité, sans définir la rue et le numéro de bâtiment. Si cette case n'est pas cochée, vous devez remplir la rue et le numéro de bâtiment.
Si des adresses ont été pré-chargées dans le logiciel, vous pouvez successivement choisir la localité (ville ou village), puis l'adresse précise (rue et numéro de bâtiment). Si l'adresse est inconnue par le logiciel, que ce soit au niveau de la localité ou de l'adresse précise, écrivez le nom dans le champ correspondant et le formulaire vous proposera de saisir une nouvelle adresse. Attention, la recherche d'une adresse pré-chargée est sensible à des fautes de frappes ou d'orthographe, donc assurez-vous de l'orthographe de votre saisie avant de créer une nouvelle adresse.
Lorsqu'une adresse pré-chargée est sélectionné, la localisation de l'adresse est connue et le pointeur se déplace sur la carte à l'endroit de l'adresse. Lors de la création d'une adresse inconnue par le logiciel, la localisation ne peut pas être définie.
En bas du formulaire, une série de champs optionnels peuvent être complétés pour préciser l'adresse (étage, couloir, escalier, complément d'adresse, etc.). En remplissant adéquatement ces champs, le logiciel pourra générer des adresses postales valides utiles pour la génération de documents.
## Dates de validité
Dans le cas d'une adresse d'un ménage, lors de la création d'une adresse, une date de validité doit être choisie, indiquant à partir de quand l'adresse est valide. Lors d'un changement d'adresse, le logiciel va garder l'historique des adresses d'un ménage en tenant compte de ces dates de validité.
## Édition d'une adresse existante
Dans le cas d'une erreur, ou bien dans le cas d'un changement d'adresse d'un tiers, il est possible d'éditer une adresse existante en cliquant sur le bouton "Modifier l'adresse".

42
user/gestion-doublon.md Normal file
View File

@@ -0,0 +1,42 @@
# Gestion des usagers en doublon
À l'utilisation, il arrive que des dossiers d'usagers soient créés en doublon: deux dossiers d'usagers sont créés et concerne **la même personne**.
Chill permet alors de fusionner les dossiers d'usagers. Cette opération est délicate, parce que le dossier de l'usager "déplacé" peut contenir des informations importantes.
Chill tente de limiter cette éventualité. Il est cependant nécessaire d'être attentif lors de cette opération.
::: .note
Pour avoir accès à cette fonctionnalité, il est nécessaire que les droits vous soient ouverts.
:::
## Page "traiter les doublons"
La page "traiter les doublons" présente
- la liste des "doublons potentiels" dans les usagers enregistrés dans le logiciel;
- la liste des "faux positifs" (des usagers qui ne sont pas des doublons et ne doivent pas être considérés comme tels).
Pour établir la liste des "doublons potentiels", Chill utilise:
<!-- TODO à vérifier -->
- la date de naissance: si les deux usagers disposent de cette information, alors la date de naissance doit être identique. Ce paramètre est ignoré si un des deux ne dispose pas de cette information.
- la proximité du nom: les noms qui se ressemblent avec une légère faute d'orthographe peuvent être considérés comme des doublons potentiels.
TODO à compléter
## Marquer des "faux positifs"
Lorsque deux usagers portent un nom identique, ou très proche, ils peuvent être considérés comme doublon de manière erronée. Pour éviter de les voir marqués comme doublons potentiels, il est possible de les indiquer comme étant deux personnes distinctes.
Leur fusion est impossible, et ils n'apparaissent plus comme doublons dans la liste des doublons potentiels (voir infra).
TODO à compléter
## Fusionner deux dossiers
TODO: que se passe-t-il lors de la fusion ?
## Export des doublons potentiels
TODO

BIN
user/img/address_details_modal.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
user/img/address_inline_with_button.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
user/img/address_inline_with_button_and_warning.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -3,7 +3,9 @@
# Notifications
<!-- fr/notification/inbox -->
Les notifications sont des messages envoyés par un utilisateur à un ou plusieurs autres. Les notifications ont pour but d'échanger rapidement des informations sur des dossiers sociaux en cours entre travailleurs sociaux. Par exemple, les notifications permettent d'informer un travailleur social à propos d'un parcours.
Les notifications sont des messages envoyés par un utilisateur à un ou plusieurs autres utilisateurs. Les notifications ont pour but d'échanger rapidement des informations sur des dossiers sociaux en cours entre travailleurs sociaux. Par exemple, les notifications permettent d'informer un travailleur social à propos d'un parcours.
Chill peut également envoyer des notifications systèmes lors de certains événements.
On y accède soit depuis la page d'accueil de Chill, sous l'onglet "Mes notifications", soit n'importe où dans l'application via le
menu "utilisateur" en haut à droite de l'écran. Selon la configuration choisie par les administrateurs du logiciel, les notifications sont aussi envoyées par courriel au travailleur social concerné.
@@ -17,16 +19,13 @@ Des notifications peuvent être envoyées à partir de plusieurs endroits du log
Il est possible d'envoyer une notification:
- de la page résumé d'un parcours
- d'une activité/échange
- à propos d'un parcours, de la page résumé d'un parcours
- à propos d'une activité/échange
- à propos d'une action d'accompagnement
- à propos d'un document dans une action d'accompagnement
Les notifications envoyées, par exemple, à partir d'un parcours, sont listées dans le résumé du parcours.
<!-- TODO: Y a t il d'autres endroits où sont utilisées les notifications? -->
Il y a en outre des notifications automatiquement envoyées lors de certaines manipulations.
![Créer une notification](./img/notification_parcours.png)
## Discuter dans une notification
@@ -38,5 +37,9 @@ Lorsqu'une notification est reçue, il est possible d'engager une discussion ave
Dans la liste des notifications, lorsqu'on clique sur une notification, on peut déplier le contenu de la notification et accéder à la discussion avec l'icône "Voir le fil de commentaire associé".
## Notification système
Il y a en outre des notifications automatiquement envoyées lors de certaines manipulations.
Pour ces notifications, il n'est pas possible d'entamer une conversation.

36
user/nouveautes.md Normal file
View File

@@ -0,0 +1,36 @@
# Nouveautés
## Mai 2023
### Statut "hors file active" et "pré-archivé" dans les parcours
Jusqu'à maintenant, on avait des parcours avec les statuts "brouillon", "en file active" et "cloturé".
Deux autres statuts sont ajoutés:
- "hors file active"
- pré-archive
Cela correspondra à des parcours ouverts et qui n'ont pas eu d'activité depuis:
- six mois pour "hors file active";
- deux ans pour "pré-archive"
Pour ces parcours "hors file active" et "pré-archive", il est possible d'ajouter des échanges, des actions, des rendez-vous, etc. Et de clôturer ces parcours. Lorsque cela est le cas, le parcours repassera, dans les heures qui suivent, en statut "en file active".
Le passage vers ces deux statuts est effectué automatiquement, sans intervention de l'utilisateur. Sont pris en compte:
- la date des échanges;
- la date de début, de fin, des actions d'accompagnements;
- la date de début, de fin des évaluations
- l'ajout d'une évaluation, d'un document dans une évaluation, la mise à jour d'un document ou la mise à jour d'un commentaire dans une évaluation;
- et, évidemment, la date d'ouverture du parcours.
Les rendez-vous ne sont pas pris en compte.
Pour les parcours existants qui étaient inactifs de puis plus de six mois ou deux ans, un passage automatique à ce nouveau statut est prévu: le nouveau statut sera indiqué six mois ou deux ans après la dernière activité prise en compte.
### Notification depuis des actions et des documents dans les évaluations
Il est maintenant possible d'envoyer une notification à propos d'une action d'accompagnement ou d'un document dans une évaluation.

View File

@@ -21,15 +21,38 @@ En bref, il s'agit du tableau de bord du parcours à partir duquel vous pouvez n
## Les différents états d'un parcours
Il est important de distinguer trois états principaux pour un parcours. Un badge se trouve en haut à droite du bandeau ou de l'élément de liste pour identifier cet état.
Il est important de distinguer les différents états pour un parcours. Un badge se trouve en haut à droite du bandeau ou de l'élément de liste pour identifier cet état.
* **BROUILLON** : le formulaire du parcours est en cours de rédaction, en attente de confirmation.
Le parcours n'est visible que par son créateur pendant cette période (via le menu utilisateur `Mes parcours brouillon`). Il reste disponible pendant 15 jours à cet état. Ensuite, il est automatiquement supprimé.
* **EN FILE ACTIVE** : le formulaire de création du parcours a été complété, et le parcours est confirmé.
Il est, dès lors, visible par tous les utilisateurs. Des échanges, des actions d'accompagnements, des documents et des tâches peuvent être ajoutés.
* **HORS FILE ACTIVE** : le parcours n'a plus reçu d'échange ni d'actions d'accompagnements depuis plus de six mois.
Il est toujours possible d'ajouter de nouvelles actions ou échanges.
* **PRÉ-ARCHIVÉ** : le parcours n'a plus reçu d'échanges ni d'actions d'accompagnement depuis plus de deux ans.
Il est toujours possible d'ajouter de nouvelles actions ou échanges.
* **BROUILLON** : le formulaire du parcours comporte des informations manquantes et ne peut donc pas être confirmé (couleur du badge : gris).
* **EN FILE ACTIVE** : toutes les informations requises ont été fournies et d'autres actions, activités, etc peuvent être ajoutées (couleur du badge : bleu foncé).
* **CLÔTURÉ** : le parcours d'accompagnement social est arrivée à son terme, la raison peut être définie (couleur du badge : rouge).
::: { .note }
Un parcours "brouillon" n'est visible que par l'auteur du parcours.
Le passage vers ces les statuts **HORS FILE ACTIVE** et **PRÉ-ARCHIVÉ** est effectué automatiquement, sans intervention de l'utilisateur. Pour calculer "l'inactivité", le logiciel prend en compte la date de différents événements dans le parcours. Si aucun de ces événement n'a eu lieu, Chill change automatiquement le statut du parcours. Sont pris en compte:
- la date des échanges;
- la date de début, de fin, des actions d'accompagnements;
- la date de début, de fin des évaluations;
- l'ajout d'une évaluation, d'un document dans une évaluation, la mise à jour d'un document ou la mise à jour d'un commentaire dans une évaluation;
- et, évidemment, la date d'ouverture du parcours.
Notez que, lorsqu'un parcours reçoit des nouvelles actions ou échanges, un parcours redevient **EN FILE ACTIVE**. Ce changement de statut est effectué automatiquement également, mais avec un délai de quelques heures.
:::