Chill-manuals/admin/generation-documents.md

401 lines
20 KiB
Markdown
Raw Normal View History

2021-08-25 15:46:54 +00:00
# Génération de documents
2021-09-23 09:36:42 +00:00
L'administrateur fonctionnel prépare la génération des documents:
<!--
1. A partir d'un document Word (format docx), un document est préparé par
1. Une première étape est un formulaire qui demande des précisions à l'utilisateur.
Il s'agit, par exemple, d'indiquer la localisation précise pour la génération du document, d'indiquer un "usager principal" pour le document, etc.
La plupart de ces informations peuvent être configurées par
Si aucune précision n'est nécessaire, cette étape n'est pas affichée à l'utilisateur.
-->
## Parcours des utilisateurs
Lors de la génération de document, les utilisateurs parcourrent trois étapes:
1. un formulaire, optionnel, demande des précisions à l'utilisateur.
Il peut s'agir, par exemple, de préciser les destinataires du document, de choisir un signataire, etc.
Ce formulaire est soit:
* natif au nœud. 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 minutes;
3. le document est ouvert pour édition dans un éditeur en ligne. L'enregistrement est automatique. Lorsqu'ils ferment l'éditeur **depuis l'interface de l'éditeur**, l'utilisateur est redirigé vers la page principale, généralement la page de génération du document.
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
2021-09-23 09:36:42 +00:00
Les documents sont préparés par l'administrateur fonctionnel.
Aux endroits où cela est nécessaire, l'administrateur indique un texte qui débute par `${` et se termine par `}`. Ce texte, depuis le signe `$` initial jusqu'à la balise fermante finale (`}`) est remplacé par le texte contenu dans la variable.
## Principes liés au variables
### Nommage de variables
2021-08-26 13:25:59 +00:00
Les variables contiennent des informations importées d'objets présents dans le logiciel. Par objet, nous entendons, par exemple, un utilisateur (User), un usager (Person), etc…
2021-08-26 13:25:59 +00:00
Ces objets comportent plusieurs champs. On accède à ces champs en concaténant les noms de la variable qui contient un objet, et le nom des champs de ces objets.
2021-08-26 13:25:59 +00:00
Par exemple: le créateur d'un document est disponible sous la variable `creator`. Cette variable est un objet de type `User`. Cet objet contient ces trois champs ([la liste complète est disponible ci-dessous](#sec:gendoc-var-user)):
2021-08-26 13:25:59 +00:00
* `username`;
* `service`;
* `email`;
2021-08-26 13:25:59 +00:00
Alors, pour indiquer le nom du créateur, son email et son service, on préfixe la variable par `creator`, et on ajoute les noms des champs de l'objet `User`, en commençant par une majuscule pour ces champs. Exemple:
2021-08-26 13:25:59 +00:00
```
Pour joindre ${creatorUsername} (service: ${creatorService}),
vous pouvez envoyer un courriel à l'adresse ${creatorEmail}.
```
Pour nommer les variables et les concaténer, nous utilisons la syntaxe camelcase [^camelcase], avec la première lettre en bas de casse (en minuscule).
[^camelcase]: <https://fr.wikipedia.org/wiki/Camel_case>
2021-09-23 09:36:42 +00:00
#### Exemple: application aux objets "date"
2021-08-26 13:25:59 +00:00
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:
```
personBirthdateShort=15/06/1980
personBirthdateLong=15 juin 1980
```
### Cas où une variable peut être de deux natures différentes
Certaines variables peuvent être de deux natures différentes, par exemple, soit une personne, soit un tiers. Dans ce cas, les variables qui sont de noms différents sont à l'état "vide". Par exemple, le champ "date de naissance" n'est pas disponible pour un tiers, dans ce cas, il est vide.
Exemple, une liste des interlocuteurs principaux. Le premier est une personne:
```
text=Maxime Berger
firstName=Maxime
lastName=Berger
birthDate=19/01/1996
type=
2021-08-26 13:25:59 +00:00
job=
```
Le second est un tiers:
```
text=Jean Couteau
firstName=Jean
lastName=Couteau
birthDate=
type=Médecin
2021-08-26 13:25:59 +00:00
job=Assistant social
```
2021-09-23 09:36:42 +00:00
### Cas où une variable est optionnelle
Lorsqu'une variable est optionnelle, si sa valeur est inconnue ou vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
2021-08-26 13:25:59 +00:00
## Variables disponibles par document
2021-09-21 19:36:46 +00:00
Lorsqu'une variable n'est pas de type "texte", ses champs sont complétés par ceux décrits [dans la section suivante](#sec:gendoc-champs-objets).
### Pour chaque document
2021-09-23 09:36:42 +00:00
#### Paramètres pour l'administrateur fonctionnel
Les administrateurs fonctionnels peuvent activer les paramètres suivants:
* un champ "lieu", qui permettra de choisir parmi les lieux pré-enregistrés. Le lieu pré-sélectionné sera celui choisi par l'utilisateur;
#### Variables
2021-08-26 13:25:59 +00:00
* `creator`: (User) le créateur;
* `createdAt` (Date): la date de création;
2021-10-06 12:06:44 +00:00
* `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
2021-09-23 09:36:42 +00:00
#### Paramètres pour l'administrateur fonctionnel
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;
* un champ "usager 2", qui permet aux utilisateurs de choisir un deuxième usager parmis ceux concernés par le parcours;
2021-10-06 21:50:26 +00:00
* un champ "usager principal du parcours", qui permet, cette fois, de choisir parmi les usagers concernés par le parcours, mais également parmi les interlocuteurs privilégiés, ou le demandeur du parcours.
2021-09-23 09:36:42 +00:00
#### Variables
2021-08-26 13:25:59 +00:00
Le document hérite de toutes les variables disponibles pour chaque document, à laquelle vient s'ajouter la variable suivante et tout ses champs:
2021-09-21 19:36:46 +00:00
* `courseId` (texte): l'identifiant du parcours
* `courseStartDate` (texte): la date de confirmation du parcours (vide si le parcours est à l'état brouillon);
* `courseEndDate` (texte): la date de fin du parcours (vide si le parcours n'est pas clotûré);
* `courseEnd` (texte): la mention "clotûré" si le parcours est clotûré;
* `courseStatus` (texte): contient la mention "En file active", "Archivé", ou est vide si le parcours n'a aucun de deux statuts;
* `courseRef`: (User): le référent du parcours;
* `courseLocation` (Adresse): l'adresse de localisation du parcours
* `coursePersonLocation` (Person): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
2021-09-23 09:36:42 +00:00
* `coursePerson1` (Person): le premier usager du parcours, choisi par l'étape 1;
* `coursePerson1Household` (Ménage): les informations du ménage de la personne 1;
2021-10-06 21:50:26 +00:00
* `coursePerson1StayAddresses` (Liste d'adresse): la liste des adresses du premier usager du parcours, choisi par l'étape 1;
* `coursePerson1RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
2021-09-23 09:36:42 +00:00
* `coursePerson2` (Person): le premier usager du parcours, choisi par l'étape 2;
* `coursePerson2Household` (Ménage): les informations du ménage de la personne 2;
2021-10-06 21:50:26 +00:00
* `coursePerson2StayAddresses` (Liste d'adresse): la liste des adresses du second usager du parcours, choisi par l'étape 1;
* `coursePerson2RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
* `coursePerson3` (Person): le premier usager du parcours, choisi par l'étape 1;
* `coursePerson3Household` (Ménage): les informations du ménage de la personne 1;
* `coursePerson3StayAddresses` (Liste d'adresse): la liste des adresses du troisième usager du parcours, choisi par l'étape 1;
* `coursePerson3RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du troisième usager du parcours, choisi par l'étape 1;
* `coursePerson4` (Person): le troisième usager du parcours, choisi par l'étape 1;
* `coursePerson4Household` (Ménage): les informations du ménage de la personne 1;
* `coursePerson4StayAddresses` (Liste d'adresse): la liste des adresses du premier usager du parcours, choisi par l'étape 1;
* `coursePerson4RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
* `coursePerson5` (Person): le premier usager du parcours, choisi par l'étape 1;
* `coursePerson5Household` (Ménage): les informations du ménage de la personne 1;
* `coursePerson5StayAddresses` (Liste d'adresse): la liste des adresses du premier usager du parcours, choisi par l'étape 1;
* `coursePerson5RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
* `coursePerson6` (Person): le premier usager du parcours, choisi par l'étape 1;
* `coursePerson6Household` (Ménage): les informations du ménage de la personne 1;
* `coursePerson6StayAddresses` (Liste d'adresse): la liste des adresses du premier usager du parcours, choisi par l'étape 1;
* `coursePerson6RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
* `coursePerson7` (Person): le premier usager du parcours, choisi par l'étape 1;
* `coursePerson7Household` (Ménage): les informations du ménage de la personne 1;
* `coursePerson7StayAddresses` (Liste d'adresse): la liste des adresses du premier usager du parcours, choisi par l'étape 1;
* `coursePerson7RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
* `coursePerson8` (Person): le premier usager du parcours, choisi par l'étape 1;
* `coursePerson8Household` (Ménage): les informations du ménage de la personne 1;
* `coursePerson8StayAddresses` (Liste d'adresse): la liste des adresses du premier usager du parcours, choisi par l'étape 1;
* `coursePerson8RelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
2021-09-23 09:36:42 +00:00
* `courseMainPerson` (Person): l'usager principal du document;
* `courseMainPersonHousehold` (Ménage): les informations du ménage de l'usager "principal du document";
2021-10-06 21:50:26 +00:00
* `courseMainStayAddresses` (Liste d'adresse): la liste des adresses du premier usager du parcours, choisi par l'étape 1;
* `courseMainRelayAddresses` (Liste d'adresse): la liste des adresses de relais (pour les enfants confiés) du premier usager du parcours, choisi par l'étape 1;
2021-09-21 19:36:46 +00:00
* `courseEmergency` (texte): la chaine "Urgent" si le parcours est urgent, chaine vide sinon;
* `courseConfidential` (texte): "Confidentiel" si le parcours est confidentiel, chaine vide sinon;
* `courseOrigin` (texte): l'appellation de l'origine du parcours;
* `courseClosingMotive` (texte): l'appellation du motif de clotûre du parcours;
2021-10-06 21:50:26 +00:00
<!-- idées
courseMainPersonFather => household / enfants
courseMainPersonMother
courseUsagerConcerned0Household => membres, etc.
faire une requête récursive depuis la mainPerson, et ajouter les liens de parenté
-->
2021-08-26 13:25:59 +00:00
Par ailleurs, les listes suivantes sont disponibles:
2021-10-06 21:50:26 +00:00
* `coursePersons` (liste de Person): une liste des usagers concernés du parcours
2021-09-21 19:36:46 +00:00
2021-09-23 09:36:42 +00:00
Par ailleurs, pour chaque personne présente dans cette liste, les deux variables suivantes sont ajoutées:
* `familylink1` (texte): un lien de parenté avec l'usager 1, si renseigné;
* `familylink2` (texte): un lien de parenté avec l'usager 2, si renseigné;
* `familylinkmain` (texte): un lien de parenté avec l'usager principal du document, si renseigné;
2021-09-21 19:36:46 +00:00
2021-08-26 13:25:59 +00:00
* `courseRequestor` (liste de Person ou ThirdParty): le demandeur. Peut être vide.
* `courseResources` (liste de Person ou ThirdParty): une liste des interlocuteurs privilégiés
2021-10-06 21:50:26 +00:00
avec le commentaire, sous la variable "comment"
2021-08-26 13:25:59 +00:00
* `courseSocialIssues` (liste de SocialIssues): la liste des problématiques d'accompagnement
2021-09-23 09:36:42 +00:00
::: { .info }
Les objets "Ménage" contiennent les liste des membres du ménage associés aux `person1`, `person2` ou `mainPerson`.
:::
2021-09-21 19:36:46 +00:00
Exemple d'utilisation:
```
Le parcours a débuté le ${courseStartDateLong} et s'est clotûré le ${courseEndDateLong}.
Le référent est ${courseRefUsername}.
Participants au parcours:
+--------------------------+---------------------------+-------------------------------+
| Nom | Prénom | Date de naissance |
+==========================+===========================+===============================+
| ${coursePersonsLastName} | ${coursePersonsFirstname} | ${coursePersonsBirthdateLong} |
+--------------------------+---------------------------+-------------------------------+
```
2021-08-26 13:25:59 +00:00
### Document générés pour une action d'accompagnement
2021-08-26 13:25:59 +00:00
Le document hérite de toutes les variables et listes disponibles pour les document "générés par un parcours". De plus, les variables suivantes s'ajoutent:
2021-09-21 19:36:46 +00:00
* `workId` (texte): l'identifiant de l'action;
* `workNote` (texte): la note;
* `workCreateDate` (Date): la date de création de l'action;
* `workStartDate` (Date): la date de début de l'action (vide si inexistant)
* `workEndDate` (Date): la date de début de l'action (vide si inexistant)
* `workHandlingThirdParty` (ThirdParty): le tiers traitant
2021-10-06 12:06:44 +00:00
* `workSocialAction` (texte): le nom de l'action d'accompagnement;
2021-10-06 21:50:26 +00:00
* `workUser` (Utilisateur): utilisateur pour lequel l'action est créée (TODO champ à ajouter);
2021-08-26 13:25:59 +00:00
Les listes suivantes sont disponibles:
* `workGoals`: une liste d'objectifs, où chaque item contient deux variables:
* `goal: le libellé de l'objectif (vide pour les résultats sans objectif);
* `result: une concaténation de toutes les appellations des résultats, séparés par une virgule;
* `workThirdParties` (liste de ThirdParty): une liste de tiers associés à l'action;
* `workPersons`: une liste de personnes associées à l'action
### Document générés pour une évaluation
Le document hérite des variables et listes disponibles pour les documents "Action d'accompagnement", auxquelles viennent s'ajouter la variable `evaluation`:
2021-09-21 19:36:46 +00:00
* `evaluationId` (texte): l'identifiant de l'évaluation;
* `evaluationType` (texte): le libellé de l'évaluation;
* `evaluationStartDate` (Date): la date de début de l'évaluation;
* `evaluationEndDate` (Date) la date de fin de l'évaluation;
* `evaluationMaxDate` (Date): la date d'échéance de l'évaluation;
* `evaluationComment` (texte): le commentaire de l'évaluation;
* `evaluationCreatedBy` (User): le créateur de l'évaluation;
* `evaluationCreatedAt` (Date): la date de création de l'évaluation;
## Champs par objet { #sec:gendoc-champs-objets }
2021-08-26 13:25:59 +00:00
2021-09-21 19:36:46 +00:00
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
```
2021-08-26 13:25:59 +00:00
### 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
* `firstName` (texte)
* `lastName` (texte)
2021-10-06 12:06:44 +00:00
* `title` (texte): le titre TODO à ajouter dans la fiche
2021-10-06 21:50:26 +00:00
* `altNames` (texte): noms supplémentaire (nom de naissance, …)
* `text` (texte): représentation du nom, prénom, et noms alternatifs (voir `PersonRender::renderString)`): prénom, nom, et noms alternatifs.
2021-08-26 13:25:59 +00:00
* `birthdate` (Date)
* `deathdate` (Date)
* `gender` (texte): peut être masculin, féminin, ou <à compléter>
* `maritalStatus` (texte): représentation textuelle de l'état civil;
2021-10-06 12:06:44 +00:00
* `maritalStatusDate` (Date): date à la quelle le statut de l'état civil a été mis à jour;
2021-08-26 13:25:59 +00:00
* `email` (texte): adresse email
* `firstPhoneNumber` (texte): soit le numéro de mobile s'il existe, soit le numéro fixe s'il existe, sinon vide;
* `fixPhoneNumber` (texte): le numéro de téléphone fixe;
* `mobilePhoneNumber` (texte): le numéro de téléphone portable;
* `nationality` (texte): nationalité
* `placeOfBirth (texte): le lieu de naissance
* `memo` (texte): le mémo
* `numberOfChildren` (texte): le nombre d'enfants
* `currentAddress` (Adresse): l'adresse actuelle
2021-09-21 19:36:46 +00:00
* `mother` (Person): les champs de la mère de la personne, si elle est renseignée dans le module "filiation";
* `father` (Person): les champs du père de la personne, s'il est renseigné dans le module "filiation";
2021-09-23 09:36:42 +00:00
::: { .vendee }
* `numCaf` (texte): le numéro CAF;
* `numSS` (texte): le numéro de sécurité sociale;
* `numMSA` (texte): le numéro MSA;
2021-10-06 12:06:44 +00:00
* `mutuelle` (texte): le nom de la mutuelle (TODO à vérifier);
2021-09-23 09:36:42 +00:00
* `doctor` (ThirdParty): le médecin traitant;
* `situationProf` (texte): la situation professionnelle;
2021-10-06 12:06:44 +00:00
* `situationProfDate` (Date): date de la situation professionnelle;
* `statutLogement` (texte): statut au regard du logement;
2021-09-23 09:36:42 +00:00
* `niveauEtude` (texte): le niveau d''étude;
2021-10-06 12:06:44 +00:00
* Adresse de relais => à vérifier
2021-10-06 21:50:26 +00:00
* droite de visite
2021-09-23 09:36:42 +00:00
:::
2021-09-21 19:36:46 +00:00
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
```
2021-08-26 13:25:59 +00:00
2021-09-23 09:36:42 +00:00
### Household
Les informations sont les suivantes:
* `childToBorn` (texte): contient "Oui" si un enfant est à naitre, ou "Non" si aucun enfant n'est à naitre;
* `childToBornDate` (Date): contient la date à laquelle un enfant est à naitre;
* `familyComposition` (texte): la composition familiale, valable au moment de la génération;
2021-10-06 21:50:26 +00:00
* `nbOfChild` (texte): le nombre d'enfants du ménage, au moment de la génération du document;
* `nbmembersatpositionx` (texte): le nombre de membres à la position `x`.
2021-09-23 09:36:42 +00:00
Les listes suivantes sont associées au ménage:
* `members` (Liste de Person): la liste de tous les membres du ménage;
2021-10-06 21:50:26 +00:00
* `membersAtPositionx`: la liste des membres à la position `x`, où `x` est l'identifiant de la position. Cet identifiant est visualisable dans l'interface d'administration.
2021-09-23 09:36:42 +00:00
Ainsi, si les "enfants hors ménage" est la position `3`, alors la liste des usagers "Enfant hors ménage" est présente sous la variable `membersAtPosition3`.
2021-08-26 13:25:59 +00:00
### ThirdParty
2021-09-21 19:36:46 +00:00
TODO
2021-08-26 13:25:59 +00:00
### 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;
* `postcodeName` (texte): le nom de la localité ou ville;
* `postcodeCode` (texte): le code postal;
* `countryName` (texte): le nom du pays;
* `countryCode` (texte): le code du pays;
* `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
### User { #sec:gendoc-var-user }
* `username` (texte)
* `email` (texte)
* `service` (texte): service principal
2021-10-06 12:06:44 +00:00
* `job` (texte): métier principal
2021-10-06 21:50:26 +00:00
* `location` (Location): lieu principal (résidence administrative);
2021-08-26 13:25:59 +00:00
2021-10-06 12:06:44 +00:00
### Location (lieu)
* `name` (texte)
* `adress` (Address)
* `phonenumber` (texte): numéro de téléphone
* `email` (email): email
2021-08-25 15:46:54 +00:00
2021-10-06 21:50:26 +00:00
### 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