forked from Chill-project/manuals
354 lines
15 KiB
Markdown
354 lines
15 KiB
Markdown
|
|
# Génération de documents
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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…
|
|
|
|
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.
|
|
|
|
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)):
|
|
|
|
* `username`;
|
|
* `service`;
|
|
* `email`;
|
|
|
|
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:
|
|
|
|
```
|
|
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>
|
|
|
|
#### 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:
|
|
|
|
```
|
|
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=
|
|
job=
|
|
```
|
|
|
|
Le second est un tiers:
|
|
|
|
```
|
|
text=Jean Couteau
|
|
firstName=Jean
|
|
lastName=Couteau
|
|
birthDate=
|
|
type=Médecin
|
|
job=Assistant social
|
|
```
|
|
|
|
### 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.
|
|
|
|
## Variables disponibles par document
|
|
|
|
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
|
|
|
|
#### 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
|
|
|
|
* `creator`: (User) le créateur;
|
|
* `createdAt` (Date): la date de création;
|
|
* `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
|
|
|
|
#### 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;
|
|
* 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.
|
|
|
|
#### Variables
|
|
|
|
Le document hérite de toutes les variables disponibles pour chaque document, à laquelle vient s'ajouter la variable suivante et tout ses champs:
|
|
|
|
* `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);
|
|
* `coursePerson1` (Person): le premier usager du parcours, choisi par l'étape 1;
|
|
* `coursePerson1Household` (Ménage): les informations du ménage de la personne 1;
|
|
* `coursePerson2` (Person): le premier usager du parcours, choisi par l'étape 2;
|
|
* `coursePerson2Household` (Ménage): les informations du ménage de la personne 2;
|
|
* `courseMainPerson` (Person): l'usager principal du document;
|
|
* `courseMainPersonHousehold` (Ménage): les informations du ménage de l'usager "principal du document";
|
|
* `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;
|
|
|
|
|
|
Par ailleurs, les listes suivantes sont disponibles:
|
|
|
|
* `coursePersons` (liste de Person): une liste des personnes du parcours
|
|
|
|
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é;
|
|
|
|
* `courseRequestor` (liste de Person ou ThirdParty): le demandeur. Peut être vide.
|
|
* `courseResources` (liste de Person ou ThirdParty): une liste des interlocuteurs privilégiés
|
|
* `courseSocialIssues` (liste de SocialIssues): la liste des problématiques d'accompagnement
|
|
|
|
::: { .info }
|
|
Les objets "Ménage" contiennent les liste des membres du ménage associés aux `person1`, `person2` ou `mainPerson`.
|
|
:::
|
|
|
|
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} |
|
|
+--------------------------+---------------------------+-------------------------------+
|
|
|
|
```
|
|
|
|
### Document générés pour une action d'accompagnement
|
|
|
|
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:
|
|
|
|
* `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
|
|
* `workSocialAction` (texte): le nom de l'action d'accompagnement;
|
|
|
|
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`:
|
|
|
|
* `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 }
|
|
|
|
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
|
|
```
|
|
|
|
### 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)
|
|
* `title` (texte): le titre TODO à ajouter dans la fiche
|
|
* `altNames` (texte): noms supplémentaire (nom marital, …)
|
|
* `text` (texte): représentation du nom, prénom, et noms alternatifs (voir `PersonRender::renderString)`)
|
|
* `birthdate` (Date)
|
|
* `deathdate` (Date)
|
|
* `gender` (texte): peut être masculin, féminin, ou <à compléter>
|
|
* `maritalStatus` (texte): représentation textuelle de l'état civil;
|
|
* `maritalStatusDate` (Date): date à la quelle le statut de l'état civil a été mis à jour;
|
|
* `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
|
|
* `currentStayAddress` (Adresse): l'adresse de résidence actuelle
|
|
* `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";
|
|
|
|
::: { .vendee }
|
|
* `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 (TODO à vérifier);
|
|
* `doctor` (ThirdParty): le médecin traitant;
|
|
* `situationProf` (texte): la situation professionnelle;
|
|
* `situationProfDate` (Date): date de la situation professionnelle;
|
|
* `statutLogement` (texte): statut au regard du logement;
|
|
* `niveauEtude` (texte): le niveau d''étude;
|
|
* Adresse de relais => à vérifier
|
|
*
|
|
:::
|
|
|
|
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
|
|
|
|
```
|
|
|
|
### 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;
|
|
* `nbOfChild` (texte): le nombre d'enfants du ménage, au moment de la génération du document.
|
|
|
|
Les listes suivantes sont associées au ménage:
|
|
|
|
* `members` (Liste de Person): la liste de tous les membres du ménage;
|
|
* `membersAtPositionx`: la list des membres à la position `x`, où `x` est l'identifiant de la position. Cet identifiant est visualisable dans l'interface d'administration.
|
|
|
|
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`.
|
|
|
|
|
|
### ThirdParty
|
|
|
|
TODO
|
|
|
|
### 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
|
|
* `job` (texte): métier principal
|
|
|
|
### Location (lieu)
|
|
|
|
* `name` (texte)
|
|
* `adress` (Address)
|
|
* `phonenumber` (texte): numéro de téléphone
|
|
* `email` (email): email
|
|
|