manuals/admin/generation-documents.md

456 lines
19 KiB
Markdown
Raw Normal View History

2021-08-25 15:46:54 +00:00
# Génération de documents
2022-01-05 00:53:30 +00:00
L'administrateur fonctionnel prépare la génération des documents.
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
Cela consiste à configurer le gabarit et ses éventuelles options via l'interface d'administration. Pour chaque gabarit, un document est joint et contient des "zones substituantes", qui permettent d'insérer des informations issues de Chill.
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
Seuls les documents suivants peuvent être utilisés:
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
* .odt (LibreOffice Writer);
* .ods
* .odp
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
## Rappel du parcours des utilisateurs
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
Lors de la génération de document, les utilisateurs parcourrent trois étapes, dont l'un est optionnelle:
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
1. Étape optionnelle: un formulaire demande des précisions à l'utilisateur.
2021-09-23 09:36:42 +00:00
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;
2022-01-05 00:53:30 +00:00
2. le document est effectivement généré en arrière-plan. Cela peut nécessiter éventuellement quelques secondes;
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 l'interface de Chill, généralement la page de génération du document.
2021-09-23 09:36:42 +00:00
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.
2022-01-05 00:53:30 +00:00
## Indiquer un champ dans un document
Aux endroits où cela est nécessaire, l'administrateur indique un "champ substituant".
Cela est accessible via le menu "Insertion > Renvoi...", puis choisir l'onglet "Fonction", "Substituant", "Texte", et indiquer la valeur du champ.
La valeur à indiquer dans le champ "substituant" est à déduire des informations ci-dessous.
2021-09-23 09:36:42 +00:00
## Principes liés au variables
### Nommage de variables
2022-01-05 12:43:41 +00:00
TODO
2021-08-26 13:25:59 +00:00
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
```
2022-01-05 12:43:41 +00:00
### Cas où une variable est optionnelle
2022-01-05 12:43:41 +00:00
Lorsqu'une variable est optionnelle, si sa valeur est inconnue ou vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
2022-01-05 12:43:41 +00:00
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.
2022-01-05 12:43:41 +00:00
## Variables disponibles par document
2022-01-05 12:43:41 +00:00
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é.
2021-09-23 09:36:42 +00:00
2022-01-05 12:43:41 +00:00
Les variables pour chaque type sont décrites [dans la section suivante](#sec:gendoc-champs-objets):
2021-09-23 09:36:42 +00:00
2022-01-05 12:43:41 +00:00
* 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 minuscule, alors cette variable peut être utilisée directement dans le document:
2022-01-05 12:43:41 +00:00
* 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).
2021-09-21 19:36:46 +00:00
2022-01-05 12:43:41 +00:00
### Pour chaque document { #sec:gendoc:champs-documents }
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
2022-01-05 00:53:30 +00:00
Le document présente:
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
* une variable `course`, de type `AccompanyingPeriod`;
* Si `usager principal du parcours` est coché, une variable `mainPerson`, de type `Person`, avec les variants `relations` et `household` (ménage);
* si `usager 1` est coché, une variable `person1`, de type Person, avec les variants `relations` et `household` (ménage);
* si `usager 2` est coché, une variable `person2`, de type Person, avec les variants `relations` et `household` (ménage);
2021-09-21 19:36:46 +00:00
2021-08-26 13:25:59 +00:00
### Document générés pour une évaluation
2022-01-05 00:53:30 +00:00
Le document présente:
2021-08-26 13:25:59 +00:00
2022-01-05 00:53:30 +00:00
* une variable `evaluation` de type `AccompanyingPeriodWorkEvaluation`: l'évaluation concernée;
* une variable `work` de type `AccompanyingPeriodWork`: l'action d'accompagnement au sein de laquelle l'évaluation est générée;
* une variable `course`, de type `AccompanyingPeriod`: le parcours au sein duquel l'évaluation est générée;
* Si `usager principal du parcours` est coché, une variable `mainPerson`, de type `Person`, avec les variants `relations` et `household` (ménage);
* si `usager 1` est coché, une variable `person1`, de type Person, avec les variants `relations` et `household` (ménage);
* si `usager 2` est coché, une variable `person2`, de type Person, avec les variants `relations` et `household` (ménage);
2021-09-21 19:36:46 +00:00
## 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
2022-01-05 00:53:30 +00:00
### AccompanyingPeriod
* `id` (texte): l'identifiant du parcours
* `type` (texte): toujours égal à `accompanying_course`
* `isNull`: (bool) renvoie `true` si est une entité nulle (toutes les variables sont vides);
* `closingDate` (Date): date de clotûre;
* `confidential` (bool): `true` si confidentiel;
* `confidentialText` (texte): "Confidentiel" si le parcours est confidentiel, texte vide sinon;
* `createdAt` (Date): date de création;
* `createdBy` (User): utilisateur ayant créé le parcours;
* `emergency` (bool): `true` si parcours en urgence;
* `emergencyText` (texte): "Urgent" si le parcours est urgent, texte vide sinon;
* `openingDate` (texte): la date de confirmation du parcours;
* `origin` (AccompanyingPeriodOrigin): l'origine du parcours;
* `originText` (texte): Le titre de l'origine, directement utilisable dans le document;
* `participations` (liste de AccompanyingPeriodParticipation): les participations du parcours, actuelles **et anciennes**;
* `currentParticipations` (liste de AccompanyingPeriodParticipation): les participations actuelles du parcours;
* `requestorAnonymous` (bool): `true` si le demandeur du parcours est anonyme;
* `hasRequestor` (bool): `true` si le parcours a un demandeur (il peut être un tiers ou une personne);
* `requestorKind` (texte): `person` si le demandeur est une personne, `thirdparty` si c'est un tiers;
* `requestorPerson` (Person): demandeur, si le demandeur est une personne;
* `hasRequestorPerson` (bool): `true` si le demandeur est une personne;
* `requestorThirdParty` (ThirdParty): demandeur, si le demandeur est un tiers;
* `hasRequestorThirdParty` (bool): `true` si le demandeur est un tiers;
* `resources` (liste de AccompanyingPeriodResource): les ressources du parcours;
* `scopes` (liste de Scope): services associés au parcours;
* `scopesText` (texte): titre des services associés au parcours, séparés par une virgule;
* `socialIssues` (liste de SocialIssues): problématiques sociales associées au parcours;
* `socialIssuesText` (texte): Liste des problématiques sociales, séparées par une virgule;
* `intensity` (texte): texte traduit de l'intensité: "ponctuel" ou "régulier";
* `step` (texte): texte traduit de l'étape du parcours: "Brouillon", ou "En cours";
* `isClosed` (bool): `true` si le parcours est fermé (la date de clotûre est renseignée);
* `closingMotiveText` (texte): titre du motif de clotûre;
* `ref` (User): référent du parcours;
* `hasRef` (bool): `true` si un référent est désigné;
* `hasLocation` (bool): `true` si un parcours a une localisation;
* `hasLocationPerson` (bool): `true` si un parcours a une localisation auprès d'un personne. `false` si c'est une localisation temporaire;
* `location` (Adresse): l'adresse de localisation du parcours
* `locationPerson` (Person): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
### AccompanyingPeriodParticipation
* `id` (int): identifiant
* `person` (Person): usager associé au parcours;
* `startDate` (Date): date de début;
* `endDate` (Date): date de fin. Vide si la participation est toujours en cours;
### AccompanyingPeriodResource
* `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);
### AccompanyingPeriodOrigin
* `id` (int): identifiant;
* `label` (texte): libellé de l'origine;
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
2022-01-05 00:53:30 +00:00
* `id` (texte): Identifiant du dossier usager;
* `isNull` (bool): `true` si le dossier usager est vide;
* `civility` (Civility): Civilité
* `firstName` (texte): Prénom
* `lastName` (texte): Nom
2021-10-06 21:50:26 +00:00
* `altNames` (texte): noms supplémentaire (nom de naissance, …)
2022-01-05 00:53:30 +00:00
* `text` (texte): représentation du nom, prénom, et noms alternatifs: prénom, nom, et noms alternatifs.
2021-08-26 13:25:59 +00:00
* `birthdate` (Date)
2022-01-05 00:53:30 +00:00
* `age`: (int) age de la personne;
2021-08-26 13:25:59 +00:00
* `deathdate` (Date)
2022-01-05 00:53:30 +00:00
* `gender` (texte): genre (texte traduit);
2021-08-26 13:25:59 +00:00
* `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;
2022-01-05 00:53:30 +00:00
* `nationality` (texte): nationalité (nom du pays);
2021-08-26 13:25:59 +00:00
* `placeOfBirth (texte): le lieu de naissance
* `memo` (texte): le mémo
* `numberOfChildren` (texte): le nombre d'enfants
2022-01-05 00:53:30 +00:00
* `address` (Adresse): l'adresse actuelle
2021-09-21 19:36:46 +00:00
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
2022-01-05 00:53:30 +00:00
* droite de visite
* gir
2021-09-23 09:36:42 +00:00
:::
2022-01-05 00:53:30 +00:00
#### variant `household`
2021-09-21 19:36:46 +00:00
2022-01-05 00:53:30 +00:00
* `household` (Household): le ménage actuel de l'usager;
#### variant `relations`
2021-09-21 19:36:46 +00:00
2022-01-05 00:53:30 +00:00
* `relations` (liste de Relationship): les relations (filiations) de l'usager;
#### Exemple d'utilisation
```
2021-09-21 19:36:46 +00:00
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
2022-01-05 00:53:30 +00:00
### Civility
* `abbreviation` (texte): abbréviation;
* `id` (int): identifiant (utile pour des comparaisons);
* `name` (texte): titre, label de la civilité;
2021-09-23 09:36:42 +00:00
### Household
2022-01-05 00:53:30 +00:00
* `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;
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
### HouseholdMember
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
* `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;
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
### HouseholdPosition
2021-09-23 09:36:42 +00:00
2022-01-05 00:53:30 +00:00
* `id` (int): identifiant de la position;
* `label` (texte): label de la position dans le ménage;
2021-09-23 09:36:42 +00:00
2021-08-26 13:25:59 +00:00
### ThirdParty
2022-01-05 00:53:30 +00:00
* `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 tiers 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)
2021-09-21 19:36:46 +00:00
TODO
2021-08-26 13:25:59 +00:00
### Adresse
2022-01-05 00:53:30 +00:00
* `address_id` (int): l'identifiant de l'adresse;
2021-08-26 13:25:59 +00:00
* `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;
2022-01-05 00:53:30 +00:00
* `postcode` (PostCode): le code postal;
* `country` (Country): le pays de l'adresse;
2021-08-26 13:25:59 +00:00
* `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
2022-01-05 00:53:30 +00:00
* `validFrom` (Date): date de début de validité;
* `validTo` (Date): date de fin de validité (vide si toujours valide);
### Postcode
* `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
2021-08-26 13:25:59 +00:00
### User { #sec:gendoc-var-user }
2022-01-05 00:53:30 +00:00
* `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` (texte): métier principal
* `current_location` (Location): lieu de l'utilisateur, celui actuellement choisi par l'utilisateur par le menu "utilisateur";
2021-08-26 13:25:59 +00:00
2021-10-06 12:06:44 +00:00
### Location (lieu)
2022-01-05 00:53:30 +00:00
* `id` (int): identifant;
* `name` (texte): nom;
* `adress` (Address): adresse du lieu;
* `phonenumber1` (texte): numéro de téléphone;
* `phonenumber2` (texte): numéro de téléphone;
2021-10-06 12:06:44 +00:00
* `email` (email): email
2022-01-05 00:53:30 +00:00
* `locationType` (LocationType): le type de lieu
### LocationType (type de lieu)
* `id` (int): identifant;
* `title` (texte): titre du type de lieu;
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
2022-01-05 00:53:30 +00:00
### Relationship (relations (filiations) entre usagers)
Pour faciliter l'usager, les relations sont toujours représentée à partir d'un usager d'origine.
Les variables présentent le nom de la relation (`text`), et la personne avec qui la relation est formée (`opposite`).
* `id` (int): identifant;
* `fromPerson` (Person): personne d'origine;
* `toPerson` (Person): personne de destination;
* `text` (texte): le titre ou le titre inversé de la `Relation`, selon l'usager d'origine;
* `opposite` (Person): l'usager avec qui la relation est formée;
* `relationId` (int): identifiant du lien de filiation;
**Note**: la différence entre `fromPerson` et `toPerson` est arbitraire.
### 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;
### Evaluation (type d'évaluation)
* `id` (texte): l'identifiant du type d'évaluation;
* `titre` (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` (Date): date de mise à jour;
* `updatedAt` (User): utilisateur ayant fait la 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` (AccompanyingPeriodEvaluation): liste des évaluations générées
### SocialAction (type d'action d'accompagnement)
* `id` (texte): identifiant
* `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)
* `id` (texte): identifiant
* `titre` (texte): le titre du résultat
### Goal (objectif d'une action)
* `id` (texte): identifiant
* `titre` (texte): le titre du résultat
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement)
2021-10-06 21:50:26 +00:00
2022-01-05 00:53:30 +00:00
* `id` (texte): identifiant
* `goal` (Goal): objectif d'une action
* `results` (liste de Result): liste des résultats