Compare commits

...

153 Commits

Author SHA1 Message Date
f531de0351 Merge pull request 'Update documentation for gender to use GenderEntity in generation of docs' (#10) from docgen-gender-documentation into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #10
2024-11-25 17:29:47 +00:00
f556e446fa Add a not about deprecation of person's gender key
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-25 17:28:53 +00:00
6c748eb1fe Update documentation for gender to use GenderEntity in generation of docs
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-25 17:01:05 +00:00
ad64d60721
précisions sur statut du parcours
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-10 14:21:52 +01:00
d71934b6d8
carte des entités et des relations un-à-plusieurs
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-07 21:47:23 +01:00
73d5e35809
nouveaux filtres dans les échanges 2023-11-07 21:47:19 +01:00
15cf0c045a Merge pull request 'add a page for export and explanations about filters and aggregators' (#6) from documentation-export-base into main
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
Reviewed-on: #6
2023-10-24 13:15:22 +00:00
147f1c29f4 Merge pull request 'improve doc for variable thirdParty in Doc gen' (#7) from docgen-add-third-party into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #7
2023-10-24 13:14:59 +00:00
7e9bb952b8
concepts for exports
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-10-24 15:14:24 +02:00
5af59d6c69
add a new "accompanyingPeriodInfo"
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-24 13:15:13 +02:00
1165b5edbd
aggregators for person, accompanying period and activity 2023-10-24 13:14:36 +02:00
3128fa299d
add the exports files to build script
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-10-23 23:05:22 +02:00
6cbf663de8
Merge remote-tracking branch 'origin/documentation-export-base' into documentation-export-base 2023-10-23 23:04:24 +02:00
185e93afd8 more docs on exports
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-10-23 21:03:41 +00:00
fad78b1c19 new exports 2023-10-23 21:03:41 +00:00
9b14326edc Doc filtre groupement par localisation de l'échange 2023-10-23 21:03:41 +00:00
3a3aedaec1 add new filters and grouping and precise about intervention / intervenants 2023-10-23 21:03:41 +00:00
589742894c add filter 2023-10-23 21:03:41 +00:00
81cc08aaf7 rename the label of some filters 2023-10-23 21:03:41 +00:00
5fab83927e add a page for export and explanations about some filters 2023-10-23 21:03:41 +00:00
24ef4f919a
more docs on exports
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone/pr Build was killed
2023-10-23 14:29:39 +02:00
180daf4e9d
new exports
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-10-20 14:10:41 +02:00
1756474c64 improve doc for variable thirdParty in Doc gen
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
Signed-off-by: Julien Fastré <julienfastre@noreply.localhost>
2023-10-19 16:01:32 +00:00
d3f68d6258
Doc filtre groupement par localisation de l'échange
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-07-11 15:14:39 +02:00
09d11a0d3a
force to display figure before title 2023-07-11 15:14:39 +02:00
082f67710e
make numbering starts to 1 2023-07-11 15:14:39 +02:00
7efd5873da
fix numbering 2023-07-11 15:14:39 +02:00
05deae0684
add new filters and grouping and precise about intervention / intervenants
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-30 15:08:54 +02:00
b7d5734caa
add filter
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2023-06-27 15:56:05 +02:00
369cf0c714
rename the label of some filters 2023-06-27 15:54:01 +02:00
3b7619486f
force to display figure before title
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-27 14:01:47 +02:00
78bc7128f9
make numbering starts to 1 2023-06-27 14:01:31 +02:00
99e8bc2c7f
fix numbering 2023-06-27 13:52:40 +02:00
b7f7b68d72
add a page for export and explanations about some filters
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2023-06-27 13:04:16 +02:00
e8aeab1ac7
more templates in admin / generation document
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-27 13:03:58 +02:00
558461b3fb Transférer les fichiers vers 'admin/generation-documents-templates'
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-15 10:51:07 +00:00
e037b4fff8 Transférer les fichiers vers 'admin/generation-documents-templates'
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-15 10:50:36 +00:00
7e8b8bd2d4 Transférer les fichiers vers 'admin/generation-documents-templates'
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-15 10:15:37 +00:00
0e2b5b3201 Transférer les fichiers vers 'admin/generation-documents-templates'
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-14 09:39:24 +00: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
1cf382cbaa commentaire des parcours
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2022-07-11 19:54:25 +02:00
e379da917e ajout doc personnes ressources usager
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2022-06-03 14:16:21 +02:00
3e90c12d47 rename files in release
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2022-05-30 21:12:58 +02:00
76da9dd357 fix some keys and add new keys for docgen 2022-05-30 21:08:57 +02:00
9f0418299f debugci (#12)
All checks were successful
continuous-integration/drone/tag Build is passing
Co-authored-by: Julien Fastré <julien.fastre@champs-libres.coop>
Reviewed-on: Vendee/manuals#12
2022-05-16 13:12:55 +00:00
8e3c6634fa fetch lfs image 2022-05-16 12:32:51 +02:00
46aef19712 fix image path in build latex 2022-05-16 12:23:37 +02:00
4cfd5a21bc update pandoc version to 2.18 2022-05-16 12:19:46 +02:00
4f4e262a1f fix typo in file paths 2022-05-16 11:29:02 +02:00
958c5466db execute drone on each push 2022-05-16 11:27:13 +02:00
04d5a4870b change image for pandoc 2022-05-16 11:25:44 +02:00
1d4fb63d46 execute pipeline on tag + save
Some checks reported errors
continuous-integration/drone/tag Build encountered an error
2022-05-16 11:22:05 +02:00
9d8d356a92 fix typo in doc generation 2022-05-16 11:20:41 +02:00
nobohan
22e06435d2 small correction on reassigner_parcours 2022-05-06 14:26:27 +02:00
3026f4538c Merge branch 'main' of gitea.champs-libres.be:Vendee/manuals 2022-05-06 11:16:30 +02:00
dfae233303 french translations for private comment and bulk reassing - to be verified 2022-05-06 11:15:39 +02:00
696ae1f2f5 bulk reassign 2022-05-04 17:29:55 +02:00
37def8069b private comments 2022-05-04 17:29:45 +02:00
nobohan
dc9f6486da upd admin doc gen 2022-04-28 17:38:19 +02:00
68b4a172aa docgen: more doc and fields 2022-04-11 18:17:08 +02:00
a85592766b doc gen for a list of activities on a course 2022-04-11 16:46:39 +02:00
ffa0373782 add cover page (previous was not working ?) 2022-03-27 19:24:42 +02:00
9c7ea31de4 explanations about lfs 2022-03-27 19:13:14 +02:00
49aa902d80 activate lfs on images and fix search path for resources 2022-03-27 19:07:28 +02:00
afe05e528e various little improvements and refactoring 2022-03-27 19:04:08 +02:00
55d9b782b6 more about concepts 2022-03-27 14:54:24 +02:00
370c334b60 typo 2022-03-27 14:38:03 +02:00
nobohan
8b5021e4bc add number sections and fix the reference problem (section number were empty) 2022-03-25 18:23:46 +01:00
nobohan
8002054012 relecture: typos, mise en page 2022-03-25 18:09:37 +01:00
b22d3ed303 precision sur aside_activities 2022-03-25 14:07:39 +01:00
642a9fabbb generation document: add budget 2022-03-25 14:07:39 +01:00
6bfb229995 fix doc for admin/generation-documents 2022-03-25 14:07:39 +01:00
dc2a398648 add main location in documentation docgen 2022-03-25 14:07:39 +01:00
nobohan
a2f2abc611 trans search english 2022-03-24 17:49:53 +01:00
nobohan
aee3e844a3 search 2022-03-24 17:47:25 +01:00
nobohan
02a7ee9853 add admin and user cover pages 2022-03-24 08:51:21 +01:00
nobohan
878a004b4c instructions pour resizing images 2022-03-23 16:10:12 +01:00
nobohan
7f172e37bb update / add images 2022-03-23 15:52:04 +01:00
nobohan
cf3ea159e3 close #3 encoder term 2022-03-23 15:30:16 +01:00
nobohan
16431f9211 menage issue #6 2022-03-23 15:14:06 +01:00
nobohan
5888e81751 correct notifications close #8 2022-03-23 14:46:40 +01:00
nobohan
f3207c0bdf social action 2022-03-22 17:51:16 +01:00
nobohan
39b5cb17c8 parcours trans 2022-03-22 17:11:23 +01:00
nobohan
8287fe7bc9 trans parcours 2022-03-22 16:28:49 +01:00
d72ae7170d adjustment social action 2022-03-18 12:32:20 +01:00
1fc5f439eb correction of explanation in thirdparty 2022-03-18 12:31:03 +01:00
d5deaf2f46 Merge branch 'main' of gitea.champs-libres.be:Vendee/manuals 2022-03-18 12:26:34 +01:00
1dce6f62b1 more english translations + pictures added + completion of certain parts 2022-03-18 12:26:10 +01:00
nobohan
aefb7d50f5 intro 2022-03-18 08:11:57 +01:00
nobohan
4a95cae4e9 update doc admin docgen" 2022-03-18 07:49:06 +01:00
nobohan
e59c482b2d correct typo 2022-03-17 17:43:42 +01:00
nobohan
c4348055a3 interface 2022-03-17 17:43:02 +01:00
1d05e6773c Merge branch 'main' of gitea.champs-libres.be:Vendee/manuals 2022-03-17 17:03:57 +01:00
74c20a476f social actions documentation almost finished 2022-03-17 17:03:51 +01:00
nobohan
e09246b66a concepts 2022-03-17 17:02:37 +01:00
nobohan
45cfb6a025 upd images 2022-03-17 16:11:25 +01:00
nobohan
a94a62fe3e upd menage (merge file) 2022-03-17 15:09:56 +01:00
nobohan
ff66ed11d4 detail vendee person fields 2022-03-17 14:39:56 +01:00
nobohan
f46730c238 Add translations tasks and aside activities 2022-03-17 11:17:21 +01:00
69ff691d2a Merge branch 'main' of gitea.champs-libres.be:Vendee/manuals 2022-03-17 10:47:04 +01:00
1cebfa38f4 parcours, tasks, aside activities + screenshots 2022-03-17 10:46:52 +01:00
nobohan
b9c7a86139 person vendee 2022-03-16 21:39:18 +01:00
nobohan
b7d8f1732d add screenshots to person, activité, menage 2022-03-16 17:32:10 +01:00
nobohan
13df6a7e84 documents 2022-03-16 17:01:20 +01:00
nobohan
10487703ca notifications 2022-03-16 16:07:28 +01:00
nobohan
e5f127045b automatic screenshots 2022-03-16 14:45:22 +01:00
nobohan
14936a8b98 upd menage 2022-03-16 14:43:44 +01:00
nobohan
0bf6b2f412 menage 2022-03-15 18:07:59 +01:00
nobohan
4f6956825d thirdparty trans 2022-03-15 11:29:01 +01:00
nobohan
b749fdbc1e activity 2022-03-14 22:09:24 +01:00
nobohan
94b1d0cd3f correction person 2022-03-11 17:32:10 +01:00
nobohan
174a48eb15 choisir une adresse 2022-03-11 17:30:20 +01:00
nobohan
e91a017059 more on person 2022-03-11 16:48:52 +01:00
bbeaebdfd2 english manual entry for thirdparty 2022-03-11 16:35:44 +01:00
nobohan
510cb80a56 doc user 2022-03-11 14:44:33 +01:00
nobohan
04669c3736 update README 2022-03-11 14:25:09 +01:00
2058790d0d add toc + other notes 2022-03-07 22:29:32 +01:00
8f62774344 test update readme 2022-03-03 13:30:13 +01:00
5e3dde7577 fix description variables document 2022-01-27 09:40:34 +01:00
2de3999a43 documentation for docgen in activity 2022-01-26 23:44:24 +01:00
bee87ba6bb update generation document variable + fix 2022-01-11 10:30:55 +01:00
36a0b34d5b docgen: more explanations 2022-01-05 13:43:41 +01:00
b2a4aa3b17 update documentation for docgen 2022-01-05 01:53:30 +01:00
16a5d56b14 réunion du 6/10 2021-10-06 23:50:26 +02:00
4bbad4273f mise à jour génération document 2021-10-06 14:06:44 +02:00
7a76253aae ajout explications suggestion ménages - adresses 2021-09-30 23:03:03 +02:00
4b9f7c93d4 reformulation known limits 2021-09-23 09:46:36 +00:00
9f6bd99e13 ajouts variables suite réunion 22/09 2021-09-23 11:36:42 +02:00
cb47265e16 continue documentation for variables 2021-09-21 21:36:46 +02:00
8272791e7b ajout limites connues - admin 2021-09-15 17:01:10 +02:00
127 changed files with 4642 additions and 176 deletions

View File

@ -1,33 +1,51 @@
---
kind: pipeline
type: docker
name: default
name: build-release
clone:
disable: true
steps:
- name: submodules
- name: clone
image: plugins/git
settings:
recursive: true
- name: fetch images
image: alpine/git
commands:
- git submodule init
- git submodule update --recursive --remote
when:
event: tag
- git lfs fetch
- git lfs checkout
depends_on:
- clone
- name: pandoc
image: pandoc/alpine:2.14
image: pandoc/core:2.18-alpine
commands:
- sh build-pandoc.sh latex user > user-manual.tex
- sh build-pandoc.sh latex admin > user-manual.tex
when:
event: tag
- 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
image: ghcr.io/xu-cheng/texlive-full:latest
- name: build-latex-user
image: texlive/texlive
commands:
- cd user
- latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode -xelatex user-manual.tex
- latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode -xelatex latex-manual.tex
when:
event: tag
- mv user-manual.pdf ../Manuel\ utilisateur.pdf
depends_on:
- pandoc
- name: build-latex-admin
image: texlive/texlive
commands:
- 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
@ -36,11 +54,17 @@ steps:
from_secret: gitea_key
base_url: https://gitea.champs-libres.be
files:
- user-manual.pdf
- admin-manual.pdf
checksum:
- sha512
title: ${DRONE_COMMIT_REF}
prerelease: true
- "Manuel administrateur.pdf"
- "Manuel utilisateur.pdf"
title: ${DRONE_TAG:=latest}
depends_on:
- build-latex-user
- build-latex-admin
when:
event: tag
event:
- tag
---
kind: signature
hmac: a83892d8f9bb967bd2a6335e2b34008e05f9bec482f270237c6764918434f97c
...

7
.gitattributes vendored Normal file
View File

@ -0,0 +1,7 @@
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
admin-manual.pdf filter=lfs diff=lfs merge=lfs -text
user-manual.pdf filter=lfs diff=lfs merge=lfs -text
*.odt filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text

View File

@ -1,6 +1,14 @@
Manuels Vendée
==============
## LFS
:warning: Git LFS is activated on this report.
Ensure that `git lfs` is installed on your system. You can install git lfs with the command `git lfs install`.
Since you install it on your machine, no further step is required.
## Compilation
`docker-compose` est utilisé pour compiler le manuel.
@ -14,6 +22,14 @@ docker-compose up
Le fichier généré est `user-manual.pdf` et `admin-manual.pdf`
Si vous avez une (bonne) version de pandoc sur votre PC, on peut faire sans docker avec:
```bash
bash build-pandoc.sh
bash build-pandoc.sh pdf admin
```
` bash build-pandoc.sh` est par défaut équivalent à `bash build-pandoc.sh pdf user`.
### Utilisateur
L'utilisateur qui exécute la compilation est, par défaut, l'utilisateur ayant l'id `1000`.
@ -23,3 +39,27 @@ L'utilisateur qui exécute la compilation est, par défaut, l'utilisateur ayant
### Awesomebox
Pour créer des "box": https://www.ctan.org/tex-archive/graphics/awesomebox
### Taille des images
Pour changer la taille de toutes les images d'un coup, par ex. à 85%:
remplacer dans `eisvogel.tex` la ligne
```
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
```
par
```
\setkeys{Gin}{width=.85\maxwidth,height=\maxheight,keepaspectratio}
```
Si on laisse les images à 100%, beaucoup de pages blanches apparaissent.
### Correcteur orthographiques
Please, utilisons un correcteur orthographique pour le français pour nous éviter toutes les fautes de frappes et autres. Ex: https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker-french

BIN
admin/cover-admin.pdf Normal file

Binary file not shown.

BIN
admin/cover-admin.svg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

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.

Binary file not shown.

View File

@ -1,191 +1,334 @@
# Génération de documents
## Syntaxe de génération d'un document
L'administrateur fonctionnel prépare la génération des documents.
## Principes liés au variables
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.
### Nommage de variables
Seuls les documents suivants peuvent être utilisés:
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…
* .odt (LibreOffice Writer);
* .ods
* .odp
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.
Des exemples sont disponibles [en ligne](https://gitea.champs-libres.be/Chill-project/manuals/src/branch/main/admin/generation-documents-templates).
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`;
## Rappel de "l'expérience utilisateur": comment les utilisateurs génèrent un document ?
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:
Les utilisateurs peuvent générer un document depuis plusieurs contextes du logiciel:
```
Pour joindre ${creatorUsername} (service: ${creatorService}),
vous pouvez envoyer un courriel à l'adresse ${creatorEmail}.
```
- les documents du dossier d'usager;
- les documents du parcours;
- les documents dans les évaluations;
- les activités / échanges;
- les rendez-vous.
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).
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.
[^camelcase]: <https://fr.wikipedia.org/wiki/Camel_case>
Lors de la génération de document, les utilisateurs parcourrent trois étapes, dont l'un est optionnelle:
#### Application aux variable date
1. Étape optionnelle: un formulaire demande des précisions à l'utilisateur.
Les dates sont disponibles dans deux formats:
Il peut s'agir, par exemple, de préciser les destinataires du document, de choisir un signataire, etc.
Ce formulaire est soit:
* 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;
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.
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é.
## Préparation des documents
Les documents sont préparés par l'administrateur fonctionnel. Il s'agit d'un document "traitement de texte" (ou tableur, ou présentation).
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".
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.
![Menu Insertion > Renvoi dans LibreOffice](./img/generation-document/libre-office-insert-renvoi.png)
![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)
## Nature (type) des variables
Pour chaque contexte où un document est généré, les variables disponibles sont listées [dans la section suivante](#sec:gendoc-champs-documents).
Chaque variable comporte un type: il peut s'agir de:
- un nombre;
- un texte;
- un bouléen (`vrai` ou `faux`)
- un objet;
- ou une liste d'objets, de nombres, ou de textes.
Les variables et leur type sont décrites [dans la section suivante](#sec:gendoc-champs-objets). Le type est indiqué entre parenthèse:
* 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).
### Cas où le contenu d'une variable est vide
Si une variable est vide, alors tout ses champs apparaissent avec une chaine de caractère vide.
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.
### 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`;
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:
Donc, pour insérer la date de naissance, on utilisera les substituants suivants:
```
personBirthdateShort=15/06/1980
personBirthdateLong=15 juin 1980
v.person.birthdate.short
v.person.birthdate.long
```
### 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:
Ce qui donnera (pour une personne née le 15 décembre 1980):
```
text=Maxime Berger
firstName=Maxime
lastName=Berger
birthDate=19/01/1996
type=
job=
15/12/1980
15 décembre 1980
```
Le second est un tiers:
Si, par contre, la date de naissance de la personne n'est pas renseignée, deux lignes vides s'afficheront dans le document:
```
text=Jean Couteau
firstName=Jean
lastName=Couteau
birthDate=
type=Médecin
job=Assistant social
```
## Variables disponibles par document
## Paramètres pour l'administrateur fonctionnel
### Pour chaque document
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;
* `locate`: le lieu sélectionné par le créateur, au moment de la génération;
* `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
Le document hérite de toutes les variables disponibles pour chaque document, à laquelle vient s'ajouter la variable suivante et tout ses champs:
#### Paramètres pour l'administrateur fonctionnel
* `course` (Parcours)
Les administrateurs fonctionnels peuvent activer les paramètres suivants:
Par ailleurs, les listes suivantes sont disponibles:
* 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 "tiers", qui permet de choisir un tiers parmi les tiers "personnes ressources" du parcours, ou le demandeur du parcours (s'il s'agit d'un tiers);
* `coursePersons` (liste de Person): une liste des personnes du parcours
* `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
#### Variables
### Document générés pour une action d'accompagnement
Le document présente:
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:
* une variable `course`, de type `AccompanyingPeriod`;
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`;
* 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`;
* une variable `thirdParty`, de type `ThirdParty`, uniquement si l'administrateur fonctionnel l'a configuré.
* `work` (Action d'accompagnement), et tout ses sous-champs;
### Document générés pour un parcours, contexte "liste des activités"
Les listes suivantes sont disponibles:
Le contexte présente les mêmes variables et paramètre que les documents générés par un parcours.
La variable suivante est ajoutée:
* `activities` (liste de Activity): Liste d'activités, variant "light". Aucun filtre n'est appliqué sur les échanges récupérés.
* `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`:
Le document présente:
* `evaluation`: Evaluation
* 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`, `household` (ménage) et `budget`;
* 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`;
* une variable `thirdParty`, de type `ThirdParty`, uniquement si l'administrateur fonctionnel l'a configuré.
## Champs par objet
### Document générés pour un échange
### Date
Le document présente:
* `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;
* une variable `activity`, de type `Activity`: l'évaluation concernée
* une variable `course`, de type `AccompanyingPeriod`: le parcours concerné, à condition que l'échange ait été créé dans un contexte parcours
* une variable `person`, de type `Person`: la personne concernée, à condition que l'échange ait été créée dans un contexte d'usager.
### Person
Il est possible également d'injecter des dossiers d'usagers, parmi ceux associés **à l'échange** (l'utilisateur peut choisir parmis les usagers de l'échange, et pas les usagers concernés du parcours).
* `firstName` (texte)
* `lastName` (texte)
* `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;
* `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
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`;
* 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`;
### ThirdParty
### Documents générés dans le dossier d'une personne: contexte "personne basique"
TODO avec Mathieu
* une variable `person`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type `ThirdParty`, uniquement si l'administrateur fonctionnel l'a configuré.
### Adresse
### Documents générés dans le dossier d'une personne: contexte "personne avec un tiers"
* `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
Ce contexte permet de générer un courrier avec, en paramètre, un tiers.
### User { #sec:gendoc-var-user }
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.
* `username` (texte)
* `email` (texte)
* `service` (texte): service principal
Les variables disponibles sont les suivantes:
### Parcours
* 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 }
### AccompanyingPeriod (Parcours)
* `id` (texte): l'identifiant du parcours
* `startDate` (texte): la date de confirmation du parcours (vide si le parcours est à l'état brouillon);
* `endDate` (texte): la date de fin du parcours (vide si le parcours n'est pas clotûré);
* `end` (texte): la mention "clotûré" si le parcours est clotûré;
* `status` (texte): contient la mention "En file active", "Archivé", ou est vide si le parcours n'a aucun de deux statuts;
* `ref`: (User): le référent 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;
* `closingMotive` (ClosingMotive): 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
* `personLocation` (Person): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
* `emergency` (texte): la chaine "Urgent" si le parcours est urgent, chaine vide sinon;
* `confidential` (texte): "Confidentiel" si le parcours est confidentiel, chaine vide sinon;
* `origin` (texte): l'appellation de l'origine du parcours;
* `closingMotive` (texte): l'appellation du motif de clotûre du parcours;
* `locationPerson` (Person): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
* `administrativeLocation` (Location): localisation administrative du parcours;
* `hasAdministrativeLocation` (bool): `true` si une localisation administrative est définie;
* `works` (liste de AccompanyingPeriodWork): liste des actions d'accompagnement créées dans le cadre de ce parcours;
* `comments` (liste de AccompanyingPeriodComment): liste des commentaires;
* `pinnedComment` (AccompanyingPeriodComment): commentaire épinglé;
### Action d'accompagnement
### 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 (Origine du parcours)
* `id` (int): identifiant;
* `label` (texte): libellé de l'origine;
### 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;
* `startDate` (Date): date de début;
* `endDate` (Date): date de fin. Vide si la participation est toujours en cours;
### 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;
* `createDate` (Date): la date de création de l'action;
* `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)
* `handlingThirdParty` (ThirdParty): le tiers traitant
* `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;
### Evaluation
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement)
* `id` (texte): l'identifiant de l'évaluation;
* `type` (texte): le libellé de l'évaluation;
@ -195,4 +338,390 @@ TODO avec Mathieu
* `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)
* `id` (int): identifiant;
* `activityType` (ActivityType): Type d'échange
* `attendee` (ActivityPresence): Présence à l'échange
* `comment` (Comment): Commentaire (avec la date de la dernière mise à jour)
* `date` (Date): Date de l'échange
* `durationTimeMinute` (int): Durée de l'échange, en minutes
* `emergency` (bool): True si en urgence
* `location` (Location): Lieu de l'échange
* `reasons` (liste de ActivityReason): Sujets de l'échange (pas utilisé en Vendée)
* `scope` (Scope): Service (pas utilisé en Vendée)
* `sentReceived` (text): sera `received` si reçu, et `sent` si envoyé;
* `socialActions` (liste de SocialAction): liste d'actions sociales associées
* `socialIssues` (liste de SocialIssue): liste de problématiques sociales associées
* `thirdParties` (liste de ThirdParty): liste de tiers associés
* `travelTimeMinute` (int): durée du trajet en minutes
* `user` (User): l'utilisateur pour lequel l'échange a été créé;
* `users` (liste de Users): les utilisateurs qui sont associés à l'échange.
#### variant `light`
Un variant `light` est utilisé dans les listes d'`Activity`, comme par exemple pour le contexte "Liste des activités pour un parcours".
Ce variant comporte les mêmes attributs, avec les différences suivantes:
* le champ `user` n'est pas présent;
* le champ `scope` n'est pas présent;
* le champ `reasons` n'est pas présent;
* le champ `comment` est également présenté avec le variant `light`.
### ActivityType (Type d'activité)
Type d'activité.
* `id` (int): identifiant;
* `name` (texte): libellé
### ActivityPresence (Présence à l'échange)
Présence à l'échange
* `id` (int): identifiant;
* `name` (texte): libellé
### 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é
### 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;
### 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
### GenderEntity (Genre)
* `label` (texte): label du genre;
* `id` (int): identifiant (utile pour des comparaisons);
* `genderTranslation` (texte): utilisation grammaticale;
### 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;
* `civility` (Civility): Civilité
* `firstName` (texte): Prénom
* `lastName` (texte): Nom
* `altNames` (texte): noms supplémentaire (nom de naissance, …)
* `text` (texte): représentation du nom, prénom, et noms alternatifs: prénom, nom, et noms alternatifs.
* `birthdate` (Date)
* `age`: (int) age de la personne;
* `deathdate` (Date)
* `genderEntity` (GenderEntity): Genre;
* `maritalStatus` (texte): représentation textuelle de l'état civil;
* `maritalStatusDate` (Date): date à la quelle le statut de l'état civil a été mis à jour;
* `maritalStatusComment` (Comment): Commentaire sur l'état civil (avec la date de la dernière mise à 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é (nom du pays);
* `placeOfBirth (texte): le lieu de naissance
* `memo` (texte): le mémo
* `numberOfChildren` (texte): le nombre d'enfants
* `address` (Adresse): l'adresse actuelle
* `resources` (PersonResource): les personnes ressources, ajoutées depuis le dossier de l'usager.
**Note**: La clé `gender` est dépréciée. Merci d'utiliser `GenderEntity`.
#### variant `household`
* `household` (Household): le ménage actuel de l'usager;
#### variant `relations`
* `relations` (liste de Relationship): les relations (filiations) de l'usager;
#### variant `budget`
Le budget des usagers et de leur ménage est accessible de manière synthétisée: la somme globale de chaque "ligne" de budget est effectuée et disponible pour l'inclusion.
Chaque "ligne" dépend de la configuration de votre instance.
Toutes les lignes de budget possibles sont toujours présentes. Il est possible d'ajouter une condition dans le document pour n'afficher que les lignes ayant une somme supérieure à zéro.
##### Attributs pour une `Ligne de budget`
Pour chaque ligne, les informations suivantes sont disponibles:
* `sum` (nombre décimal): la somme de toutes les lignes du budget du même type;
* `label` (texte): le libellé de cette ligne dans l'interface;
* `comment` (texte): les commentaires des lignes du budget de même type. Tous les commentaires sont concaténés les uns à la suite des autres, et séparés par le caractère `|`.
##### Méthode de globalisation de chaque ligne
Pour chaque ligne de budget, la somme de toutes les lignes de budget du même type est disponible. Ainsi, si une entrée dans les ressources permet de saisir une charge "frais de communication téléphonique":
* pour un usager, si plusieurs lignes `frais de communication` sont enregistrées, alors c'est la somme de celles-ci qui apparaitra dans la génération de documents;
* pour un ménage, alors ce sera la somme de tous les `frais de communication` de chaque membre du ménage **au moment de la génération du document** qui apparaitra, mais également la somme des `frais de communications` enregistrés directement dans le dossier du ménage.
On verra donc apparaitre non seulement les frais payés par chaque usager (pour leur abonnement individuel au téléphone mobile, par exemple), mais également la somme payée par le ménage (pour le téléphone fixe ou l'accès à internet).
Enfin, seules les lignes _actives_ **au moment de la génération du document** sont prises en compte. Ainsi, par exemple, si un CDI a expiré la veille de la génération, son montant ne sera pas pris en compte.
Le calcul du caractère actif d'une ligne est effectué comme suit:
* la date de début est antérieure à la date de génération du document;
* la date de fin est vide, ou postérieure à la date de génération du document.
##### Attributs supplémentaire avec le variant `budget`:
Les attributs suivants sont disponibles, pour chaque objet `Person` qui a un variant `budget`:
* `budget.person.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. Seules les lignes du budget associées au dossier de l'usager sont présentes ici;
* `budget.person.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. Seules les lignes du budget associées au dossier de l'usager sont présentes ici;
* `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;
### PersonResource (Ressources associée à l'usager)
Pour rappel, les ressources peuvent être:
* des tiers;
* des usagers;
* ou un champ de texte libre.
* `comment` (Comment)
* `freeText` (texte): commentaire, quand la personne ressources un texte libre
* `id` (int)
* `kind` (PersonResourceKind): le type de personne ressources (voisin, etc.)
* `thirdParty` (ThirdParty): le tiers, quand la ressources est liée à un tiers
* `person` (Person): l'usager, quand la ressources liée à un autre usager
* `resourceKind` (texte): un discriminateur qui permet de vérifier si la ressources est lié à un usager (alors égal à `person`, un tiers (`thirdparty`) ou un texte libre (`freetext`). A utiliser dans les conditions dans les documents.
### PersonResourceKind (Type de personne ressource)
* `id` (int)
* `title` (texte)
### Postcode (Code Postal)
* `id` (int): identifiant
* `name` (texte): localité
* `code` (texte): code postal
### 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.
### Result (résultat d'une action)
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### 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;
### 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
### ThirdParty (Tiers)
* `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
`kind` vaut:
* `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)
### ThirdPartyCategory (catégorie de tiers)
* `id` (int): identifiant
* `name` (texte)
### ThirdPartyProfession (profession du tiers)
* `id` (int): identifiant
* `name` (texte)
### 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.

23
admin/known-limits.md Normal file
View File

@ -0,0 +1,23 @@
# Limites connues
## Dimensionnement du logiciel et temps de réponse des pages
Chill pourra supporter un très grand nombre d'usagers accompagnés, sans craindre pour les performances.
Des tests ont été réalisés avec plus d'un millions d'usagers enregistrés. L'utilisation du logiciel reste satisfaisante.
Il en ressort cependant que les fonctionnalités de recherche parmi les usagers sont affectées lorsqu'un grand nombre de résultats sont renvoyés par une recherche. Autrement dit, si plusieurs milliers d'usager portent le même nom que celui recherché, alors elle est plus lente à traiter.
Une recherche sur des termes plus long (par exemple, le nom complet plutôt que des parties du noms) est donc plus rapide qu'une recherche par uniquement quelques lettres de ce nom.
Chill est donc plus affecté par l'hétérégonéité des noms des usagers, que par le volume d'usagers, tiers, et contacts enregistrés dans la base de donnée.
A l'heure d'écrire ces lignes (septembre 2021), le travail d'optimalisation des recherches de termes qui renverraient plusieurs milliers d'usagers n'a pas été optimisé.
## Résolution du territoire par usager, et mise en cache
La recherche du territoire de l'usager en fonction de l'adresse est une requête coûteuse. Pour accélérer le chargement des pages, cette information est mise en cache pendant une durée relativement courte, de l'ordre de 30 minutes.
Lorsqu'un ménage change d'adresse, et que la nouvelle adresse est un nouveau territoire, le nouveau territoire ne sera donc pris en compte qu'après ce délai. Cela concerne l'affichage du territoire dans l'interface, mais également les droits des utilisateurs.

View File

@ -3,6 +3,8 @@ title: Manuel administrateur de Chill
subtitle: Chill en Vendée
lang: fr-BE
toc: true
page: a4
book: true
header-includes: |

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

@ -4,7 +4,7 @@ set -e
# enter the current directory
cd "$(dirname $0)"
export PANDOC_DIR=pandoc/cl
export PANDOC_DIR="/pandoc/cl"
if [ -z $1 ]; then
@ -21,26 +21,58 @@ fi
if [ $kind = 'user' ]; then
export files="
$kind/parcours.md
intro.md
concept.md
interface.md
search.md
person.md
person-vendee.md
activite.md
document.md
thirdparty.md
menage.md
parcours.md
social_actions.md
notifications.md
tasks.md
workflows.md
adresses.md
exports.md
exports_person.md
exports_activity.md
exports_accompanying_period.md
nouveautes.md
"
# missing pages to once completed
# exports_accompanying_period_work.md
# exports_accompanying_period_work_evaluation.md
# exports_aside_activity.md
# exports_calendar.md
# exports_household.md
elif [ $kind = 'admin' ]; then
export files="
$kind/generation-documents.md
start.md
generation-documents.md
"
else
else
echo "kind '$kind' is not valid";
exit 1;
fi
cd $kind
export ARGS="
--from markdown
--metadata-file ./$kind/metadata.yaml
--lua-filter "${PANDOC_DIR}/format-link.lua"
--number-sections
--resource-path ./.
--metadata-file ./metadata.yaml
`#--lua-filter "../${PANDOC_DIR}/format-link.lua`
"
export PDF_TEMPLATE="./pandoc/template/eisvogel.tex"
export PDF_TEMPLATE="./../pandoc/template/eisvogel.tex"
export LATEX_ARGS="
--metadata=footer-left:$(date +%d-%m-%Y)
--template "${PDF_TEMPLATE}"
--lua-filter "${PANDOC_DIR}/boxes.lua"
--lua-filter "../${PANDOC_DIR}/boxes.lua"
"
@ -52,18 +84,18 @@ elif [ $target = "pdf" ]; then
pandoc $ARGS $LATEX_ARGS \
--to pdf \
--pdf-engine xelatex \
-o "./$kind-manual.pdf" \
-o "./../$kind-manual.pdf" \
$files
elif [ $target = "html" ]; then
# check target directory exists
if [ ! -d "./build/html" ]; then
if [ ! -d "./../build/html" ]; then
echo "create build/html directory"
mkdir -p "./build/html"
mkdir -p "./../build/html"
fi
pandoc $ARGS \
--to html \
-o ./build/html/index.html \
-o ./../build/html/index.html \
$files
fi

@ -1 +1 @@
Subproject commit 4909f13d58bb4c66243def1f6e01becd1820c767
Subproject commit 04e329698d01c3a25aa72ad81d98483284669316

1
screenshot/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
img/*.png

23
screenshot/README.md Normal file
View File

@ -0,0 +1,23 @@
# Requirements
This script assumes that you have installed wkhtmltopdf.
```bash
sudo apt install wkhtmltopdf
```
# Usage
```bash
python mk_screenshot.py
```
# Authentification
You have to allow `wkhtmltopdf` to authenticate. To do so, get a valid cookie key/value by copying as curl any request to a Chill page in your browser (Go to the network panel, pick a request and "copy as curl").
Then, copy the 'PHPSESSID=57dee6deabd6e0ae75f7a55421fc2427' value (eg: 57dee6deabd6e0ae75f7a55421fc2427) in `COOKIE_VALUE` in the python script.
# Post-processing
Images are too heavy, so they can be resized.

0
screenshot/img/.gitkeep Normal file
View File

View File

@ -0,0 +1,63 @@
import subprocess
"""
This script assumes that you have installed wkhtmltopdf (sudo apt install wkhtmltopdf)
"""
BASE_URL = 'https://quinquina.champs-libres.be/'
"""
To get a valid cookie key/value, copy as curl a request in your browser:
curl 'https://quinquina.champs-libres.be/_wdt/708fb5' \
-H 'Connection: keep-alive' \
-H 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"' \
-H 'X-Requested-With: XMLHttpRequest' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36' \
-H 'sec-ch-ua-platform: "Linux"' \
-H 'Accept: */*' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Referer: https://quinquina.champs-libres.be/fr/person/household/376/relationship' \
-H 'Accept-Language: en-US,en;q=0.9' \
-H 'Cookie: PHPSESSID=57dee6deabd6e0ae75f7a55421fc2427' \
--compressed
"""
COOKIE_KEY = 'PHPSESSID'
COOKIE_VALUE = '3232035445fc07851efd717a8f1d687a'
person_id = 2811
personmineur_id = 2821
household_id = 376
notification_id = 126
parcours_id = 2705
URLS = [
'fr/person/new',
f'fr/person/{person_id}/general',
f'fr/person/{person_id}/residential-address/list',
f'fr/person/{person_id}/resources/list',
f'fr/activity/?accompanying_period_id={parcours_id}',
f'fr/person/{person_id}/document/new',
f'fr/person/{person_id}/document',
# f'fr/parcours/{parcours_id}/document',
f'fr/person/household/{household_id}/summary',
f'fr/person/household/{household_id}/addresses',
# f'fr/person/household/{household_id}/relationship',
'fr/notification/inbox',
f'fr/notification/{notification_id}/show',
# f'fr/notification/create?entityClass=Chill%5CPersonBundle%5CEntity%5CAccompanyingPeriod&entityId={parcours_id}',
f'fr/vendee/vendeeperson/{person_id}/infosociopro/view',
f'fr/vendee/vendeeperson/{person_id}/infomedicale/view',
f'fr/vendee/vendeepersonmineur/{personmineur_id}/infofamille/view',
f'fr/vendee/vendeepersonmineur/{personmineur_id}/scolarite/view'
]
for u in URLS:
url = BASE_URL + u
filename = 'img/' + u.replace('/', '_').replace('&', '_').replace('?', '_').replace('=', '_') + '.png'
print(f'fetching {url} ...')
subprocess.run(f'wkhtmltoimage -q --javascript-delay 3000 --cookie {COOKIE_KEY} {COOKIE_VALUE} "{url}" {filename}', shell=True, check=True)

177
user/00000-toc.md Normal file
View File

@ -0,0 +1,177 @@
# Qu'est-ce que Chill ?
## A quoi ça sert ?
=~ dossier social électronique
### Objectifs
* consigner les informations;
* partager avec les collègues;
* générer des statistiques.
Chill n'est pas un logiciel de statistique. Il est pensé pour être utilisé au quotidien, et générer des statistiques à partir de cette utilisation.
## Comment l'installer
Renvoi à la documentation technique
## Comment l'administrer ?
Renvoi à la documentation administrateur
# Survol des concepts dans Chill
Les trois domaines dans Chill.
Chaque domaine est caractérisé par son bandeau, et son menu.
<!-- ici, c'est un survol. renvoi vers les parties plus détaillées -->
## Fiche usager
## Fiche ménage
## Fiche parcours
# L'interface générale
## Boutons et codes couleurs
<!-- récapitulatif des boutons et codes couleurs -->
* vert: ajouter / créer
* bleu (oeil): voir
* etc.
<!-- voir la première page du manuel fait par SB -->
### select2js et multiselect
## Menu section
## Menu utilisateur
# Moteur de recherche
## Recherche directe
Possibilité de recherche par date de naissance, numéro de téléphone, etc.
## Recherche avancée
# Fiche usager
## Créer un usager
## Détails de l'usager
## Quelle adresse pour un usager ?
Différence entre les adresses de résidence et les adresses d'un ménage.
## Personnes ressources
## Adresses de résidence
## Historique
## Traiter les doublons
## Autres entrées dans le menu personne
Renvoi vers les partie ad hoc:
* activité
* rendez-vous
* documents
# Activités (échanges)
## A quoi ça sert ?
## Activité dans les personnes ou les parcours ?
## Créer et modifier une activité
## Effets de la sélection des problématiques ou des actions sur les parcours
# Documents
## A quoi ça sert ?
## Ajouter un document
## Générer un document
# Rendez-vous
TODO
# Tâches
## Principes des tâches
### Statuts sur les tâches
### Tâches en rappel, tâches arrivées à échéance
## Créer une tâche
# Parcours
## Qu'est-ce qu'un parcours ?
### Les étapes d'un parcours: brouillon, confirmé, etc.
### Problématiques et actions
### Parcours confidentiels
### Parcours réguliers et ponctuels
## Créer un parcours
## Commentaires dans les parcours
## Actions d'accompagnement
### Evaluations et objectifs
## Cloturer un parcours
# Ménages
## Qu'est-ce qu'un ménage ?
### Les positions dans le ménage
<!-- attention, les positions "enfants hors ménage", etc., c'est de la configuration -->
## Ajouter des membres au ménage, quitter un ménage, rejoindre un ménage
## Filiations
## Composition familiale
# Notifications
## Créer une notification
## Discuter dans une notification
# Workflows
## Créer un workflow
## Ajouter une décision à un workflow
## Rejoindre un workflow par un lien d'accès
# Activité annexes
# Choisir une adresse

47
user/English/activity.md Normal file
View File

@ -0,0 +1,47 @@
\newpage
# Activities (exchanges)
<!-- en/activity/?accompanying_period_id={id} -->
![List of exchanges related to a course](user/img/en_activity__accompanying_period_id_2705.png)
Activities (or exchanges) in Chill are used to record activities or exchanges that have taken place and to link them to users and/or support pathways. By activity, we mean an individual interview, an approach via an external
partner, a telephone call relating to the person, an e-mail, etc.
The information to be encoded is different according to the type of activity.
For example, for a telephone call, you can specify the duration of the call, the caller and take a note. For a meeting, you can associate a location (the place where the meeting took place), the parties present at the meeting, notes, documents, etc.
In this way, this information can be centralised and then easily shared between the social workers.
The types of activities and their corresponding fields (location, duration, travel time, documents, presence of the person, users, etc.) can be configured in the administration area.
## Activity in persons or trajectories?
The activities can be encoded in the person or in the support path. It is up to you to choose whether to encode activities in the context of a support pathway or in the context of a person. However, as soon as a person is mentioned in an activity, this activity can be found in the list of activities of the person.
Example: In the support path of the user Gabrielle Durant, I create an activity concerning an email where I also mention another user encoded in Chill: Dominique Duchemin. The activity will be visible in Gabrielle Durant's support path, but also in her user file and in Dominique Duchemin's file.
We can therefore access the list of activities of a person via the "user" menu and the list of activities of a support path via the "support path" menu.
## Create and modify an activity
In the list of activities, click on the "Create" button to create a new activity. First choose the type of activity/exchange, then fill in the relevant information. If the activity has been created in a pathway, the social issues and related support actions will be filled in. Depending on the type of activity, you will be able to fill in the parties involved, the date, the location, the duration of the activity, the possible travel time (in case of a trip), documents, the subject, a free note, etc.
The subject is taken from a predefined list, established in the administration area of the software.
Any type of document can be added to an activity: a text document, a pdf, a photo, etc.
The parties involved, users, third parties or users (social worker), are added by searching for people already encoded in Chill or by creating them on the fly. If the activity has been created in a pathway, you can easily add parties involved by clicking on the proposed names. The proposals are based on the parts mentioned in the accompanying course.
::: { .info }
It is possible to transform an appointment into an activity. (TODO)
:::
Users can create a [private comment](./private_comments.md) per activity, which will only be seen by them.
Once an activity has been created, it is always possible to modify it to make corrections or additions.
## Effects of the selection of issues or actions on trajectories

View File

@ -0,0 +1,33 @@
/newpage
# Side activities
To allow a user to also keep track of activities that are not directly related to a support trajectory or to a person, there is a side activity section.
A side activity could be a team meeting, a training, but also a phone call or email.
## Listing page
<!-- /fr/asideactivity -->
A user can navigate to his/her list of side activities from within their user menu by clicking on <**My side activities**>. Similar to other sections of the Chill app, you will find here a list that offers a first quick overview of each activity. You can view the activity in more detail, edit, or delete it.
## Creating a side activity
<!-- /fr/asideactivity/new -->
![Creation aside activity](/user/img/new_aside_activity.png)
The form fields of a side activity are self-explanatory. It is important to note however that a user can create a side activity for another user. Multiple users can also be linked, think of a meeting for example.
A side activity can be created for the future, but they can also still be created for activities that already took place. As such it shouldn't be seen as a planning tool, but more to keep record of side activities.
All fields are required, except for any additional note you might want to add.
## Detail page
<!-- /fr/asideactivity/{id}/view -->
Within the detail page the most important thing to note is the option to **duplicate** a side activity. For example, a meeting that is held weekly with more or less the same people can therefore easily be duplicated, while still allowing modifications to be made.

View File

@ -0,0 +1,13 @@
# Bulk reassign support trajectories
The need may arise for the support trajectories followed by one user to be reassigned to another user. Example cases could be a user being absent for an extended amount of time, switching functions, etc.
For such situations a functionality has been provided to reassign support trajectories in bulk to another user.
To make use of this functionality the user can click on 'Trajectories per user' in the section menu.
A first select field will be visible. Use this to select the user whose trajectories have to be reassigned. A complete list of the trajectories will be provided.
In a second step the user to whom the trajectories on the current page have to reassigned can be selected. Clicking on the button 'reassign' will complete this action and show the remaining trajectories. The action can be repeated.
Each individual trajectory is displayed with the edit button, allowing it to be individually reassigned within the trajectory edit form. Navigate to the [referrer](./support_trajectory.md#referrer) section to reassign this trajectory. During a bulk reassign this trajectory will no longer be taken into account, as it no longer belongs to the initial user.

View File

@ -0,0 +1,3 @@
/newpage
TODO: translate from french

98
user/English/household.md Normal file
View File

@ -0,0 +1,98 @@
/newpage
# Households {#sec:household}
## What is a household?
A household is a set of users living 'under the same roof'. This can be members of a family, members of a blended family, members of a foster family, etc.
<!-- Living "under the same roof" OR living at the same address? -->
A household is characterised by an address, which corresponds to the home address of its members. This address can change (in case of a move): it is therefore defined between a start date and an end date and there may be a history of household addresses. Similarly, a user may change household and have a history of households.
## Household summary
<!-- /en/person/household/{household_id}/summary -->
![Household Summary](user/img/en_person_household_376_summary.png)
The household summary page is accessed via the "person" menu or by clicking on the household icon in the person search. The household summary page shows the current household address, the household members and the composition of the household.
The household address history can be accessed in the household menu under the heading "Address history". The address history shows all successive household addresses and allows for additions.
<!-- /en/person/household/{household_id}/addresses -->
![Household address history](user/img/en_person_household_376_addresses.png)
A list of the household's trajectories can also be displayed by clicking in the household menu on <**trajectories**>.
### Create a household
If there is no household in the list of households for a user, then the software allows you to create a new household. At this stage, you can create a new household or join an existing one. The software will automatically propose possible households by making some suggestions.
#### Which households are suggested?
The software tries to establish links between the persons concerned by the change of household, and other households.
The links made are as follows:
* For each person affected by the change, the software checks whether he or she is present in another support trajectory, with other persons. If these persons are themselves associated with a household, then the software proposes to join that existing household.
* The software also examines the location of the support trajectories in which the person, concerned by the change, is located. If a support trajectory is located at a reference address, the software looks to see if there are other households living at that address. If it finds any, these households will also be suggested.
At this stage, you can enter an address; this will immediately locate the created household. The software will suggest you to re-use known addresses.
#### Which addresses are suggested?
The software suggests you to re-use the temporary location of the support trajectories associated with the household members.
For each person who is going to "change household", the software examines whether he is currently associated with a trajectory. If this trajectory has a temporary address, then this address will be included in the suggestions.
### Join a household
There are several possible ways of getting a person to join a household:
- when creating a social trajectory for a person who is not in a household, the software suggests that he/she should join a household. The action then positions him/her in a household, whether it is an existing household or one to be created.
- When you are on the household summary page, you can always search for and add a person. To do this, use the "Add a member" button at the bottom of the page.
### Positions in the household
<!-- note that the positions "children outside the household", etc., are configurations -->
Each member of the household is detailed in the "household summary" page. The person can have a certain position in the household: adult or child, as well as being the owner of a household. At any time it is possible to remove a person from a household, or to reposition him/her in the household (e.g. to make him/her the owner).
If necessary, it is also possible to view a former membership, i.e. a person who used to belong to the household but is no longer part of it.
## Add members to the household, leave a household, join a household
At the bottom of the household summary page, the <**Add a member**> button allows you to add a user to the household. When clicking on this button, in the following pages, one can:
- add one or more existing persons, or create new ones;
- position each person in the household, i.e. specify whether he/she is a child or an adult, and possibly qualify him/her as a household member;
- enter the date when the person joins the household, and possibly a comment;
- and, finally, save.
In the list of household members, using the buttons on the right, one can
- leave the household: in this case, the person can join another household or leave without joining a household. Again, a change date is encoded.
- reposition the member: i.e. change the position (adult, child, ...) of the member.
- fill in the membership: i.e. change the date and the comment of the change
## Affiliations
<!-- /en/person/household/{household_id}/relationship -->
![Affiliations of a houshold](user/img/menage_filiations.png)
The "affiliations" page provides an overview in graph form of the affiliations within a household, i.e. the relationships between its members. This page allows not only to view the relationships but also to edit them. By clicking on <**Create a relationship**>, then selecting 2 persons, it is possible to define the relationship between these 2 persons: mother/father-daughter/son, brother/sister-brother/sister, uncle/aunt-nephew/niece.
In addition, the graph also shows the support trajectories associated with each household member. By displaying the trajectory, persons who may be linked to these trajectories, but belong to other households can be displayed. The elements of the graph can be moved by clicking and dragging. Finally, the graph can be exported as an image.
In short, this page summarises a household and its relationships in an easy-to-understand diagram.
## Family composition
The family composition is a qualification of the household as a household type, e.g. couple with children, couple without children, single mother, single woman, etc. This composition is valid until a certain date and with a maximum of one year.
As with the addresses of a household, it is possible to view the history of the composition of a household.

View File

@ -0,0 +1,9 @@
---
title: Chill user manual
lang: en-EN
toc: true
header-includes: |
\usepackage{awesomebox}
...

View File

@ -0,0 +1,38 @@
\newpage
# Notifications
<!-- en/notification/inbox -->
![Notification inbox](user/img/en_notification_inbox.png)
Notifications are messages sent by one user to one or more others. The purpose of notifications is to quickly exchange information about ongoing social cases between social workers. For example, notifications can be used to inform a caseworker about a case.
They can be accessed either from the Chill homepage, under the "My notifications" tab, or anywhere in the application via the "user" menu at the top right of the screen. Depending on the configuration chosen by the software administrators, notifications are also sent by email to the social worker concerned.
## Create a notification
<!-- en/notification/create?entityClass=Chill%5CPersonBundle%5CEntity%5CAccompanyingPeriod&entityId=2705-->
![Create a notification](user/img/notification_parcours.png)
Notifications can be sent from several places in the software. A notification consists of a subject (such as an email), one or more recipients, a message and the information from which the notification is sent. For example, when sending a notification as part of a course, the general course information is also copied.
It is possible to send a notification:
- from the summary page of a support trajectory
- from an activity/exchange
Notifications sent, for example, from a support trajectory, are listed in the trajectory summary.
<TODO: Are there any other places where notifications are used? -->
In addition, there are notifications that are automatically sent when certain actions are taken.
## Discuss in a notification
<!-- en/notification/{notification_id}/show -->
![Discussion in a notification](user/img/en_notification_126_show.png)
When a notification is received, it is possible to start a discussion with the recipient in the notification page. This allows messages to be left between workers, as in an online chat system.
In the list of notifications, when you click on a notification, you can unfold the content of the notification and access the discussion with the "View associated comment thread" icon.

98
user/English/person.md Normal file
View File

@ -0,0 +1,98 @@
\newpage
# Person file {#sec:person}
The person file contains all the information specific to the person: surname, first name, contact information, addresses, etc. It is the basis of the person's electronic social file.
It can be accessed by searching for a person on the homepage or in the toolbar. It can also be accessed from other pages by clicking on a person's name and then clicking on "Open person file".
<!-- TODO a déplacer vers une autre section, sur le concept de l'usager? -->
A person can be part of one or more households. For each person, it is possible to define support trajectories. Finally, each person is linked to exchanges in which the person is involved.
## Create a person
<!-- fr/person/new -->
![Create a person](user/img/fr_person_new.png)
To add a person, click on "Sections" > "Add a person", in the top toolbar.
In the creation page, enter the requested information. Only the surname, first name(s) and gender are mandatory. Then click on "Create person". You can then choose between simply creating the person, creating the person and associating him/her with a household or creating the person and creating an associated support trajectory.
::: { .info }
Please note that there is a standard format for entering telephone numbers. Enter your numbers without spaces, "/" bars or "-" dashes.
<!-- TODO d'autres contraintes sur les numéros de tel? -->
:::
## Person detail page
<!-- fr/person/{id}/general -->
![Person detail page](user/img/fr_person_2811_general.png)
The person record contains all the detailed information of the person, namely:
- surname, first name(s), gender;
- nationality, languages spoken, number of children, marital status
- date and place of birth;
- contact information.
This information can be filled in as you go along, or left blank. At the bottom of the page, the "Edit" button allows you to edit this information. Remarks can also be added.
Some of this information is recalled in the person's banner and in other places in the software when the person's name is clicked on.
## Person addresses
Chill supports two types of addresses:
* home addresses, which are the permanent, official addresses of a person (home address);
* residence addresses, which are temporary addresses of a person, at which he/she resides only for a certain period of time, and which is not intended to be official.
Therefore, the official address is not attached directly to a person, but to his or her household. Only residential addresses can be entered in the person's file.
## Home address
<!-- /fr/person/{id}/residential-address/list -->
![Person home address](user/img/fr_person_2811_residential-address_list.png)
Each person can have one or more home addresses. These are accessed by clicking on "Home addresses" in the right-hand menu.
These addresses are not supposed to be official home addresses, declared to the authorities. They are, for example, a temporary residence in a nursing home, accommodation with an acquaintance or friend for a specific period of time, etc.
When adding a residence address, there is a choice between
- taking an address from another person (from another person);
- taking an address from a third party;
- create a new address [address](#sec:choose-an-address).
## Resource persons
<!-- /fr/person/{id}/resources/list -->
![resource persons](user/img/fr_person_2811_resources_list.png)
Resource persons are other persons or third parties associated with the person's file. A contact person may be a friend or neighbour (another person), a health professional (a third party), etc. Other members of the person's household should be entered in the "household" section instead. If the contact person is not encoded, he/she can also be added as a free description.
<!-- ## Historique
<!-- /fr/person/{id}/timeline
TODO -->
## Treating doubles
<!-- /fr/person/{id}/duplicate/view -->
It is possible that a person has been encoded more than once. The "Dealing with duplicates" page allows you to identify and deal with possible duplicates of a person. The page lists persons with similar names and suggests merging them.
::: { .info }
This page is used to process duplicates, but Chill also automatically detects potential duplicates when encoding a new person.
:::
## Other person menu entries
There are several entries in the person menu that link to other parts of the software, keeping the link to the person. These entries are:
* Support trajectories: list of the trajectories in which the person is involved;
* Activities (or exchanges): list of activities in which the person is involved;
* Documents: list of documents in which the person is involved;
* Tasks: list of tasks in which the person is involved;
* Households: management of the person's household.

View File

@ -0,0 +1,7 @@
## Private comments
Private comments can be created for [activities](./activity.md#create-and-modify-an-activity), [social actions](./social_actions.md#private-comment) and appointments.
Each user can post one private comment per item (eg. per activity). This comment can of course be edited within the edit forms of the concerning item.
Naturally, users can only see their own private comments and not those of other users.

10
user/English/search.md Normal file
View File

@ -0,0 +1,10 @@
\newpage
# Recherche
In the top banner, there is a person search bar. You can search for persons by surname and first name, the search engine being tolerant of different spellings. For example, if you search for "Mathieu", you will also find first names corresponding to "Matthieu".
If you have not found the person, you can click on the "Advanced search" button. In the advanced search page, you can search on the basis of date of birth, a fragment of telephone number, etc.
![Advanced search for a person](user/img/advanced_search.png)

View File

@ -0,0 +1,75 @@
/newpage
# Social support actions
Social support actions are actions taken within a trajectory and concerning a certain social issue.
Social support actions are easily recognizable throughout the application by the orange title banner.
__note__: Social actions can only be created for **confirmed** trajectories.
## Listing page
<!-- /fr/person/accompanying-period/{id}/work -->
![social_action](/user/img/action_accompagnement.png)
Similar to many other sections within the Chill application, a list of social support actions can be found by clicking on <**social support actions**> in the yellow side-menu of a trajectory.
A concise overview of important information is given for each action in the list.
So long a trajectory is in the **confirmed** state each action can be modified, deleted or a [workflow](/user/English/workflow.md) can be created.
## Creating a social support action
<!-- /fr/person/accompanying-period/{id}/work/new -->
To create a social support action a user will be guided through several steps,
1. Pick one social issue. If the concerning social issue is not amongst the provided choices the user can add it by selecting it from the dropdown menu.
2. Pick a social action. All actions displayed are linked to the previously selected social issue.
3. One or more concerning persons can be selected.
4. Specify a start date.
5. Specify an ending date (optional).
## Modifying a social support action
Once a social support action has been created it is not considered to be a static recording. The modification form allows for much more information to be added in later stages so as to make it a 'working document'.
### Comment
Here the user is free to give whatever extra information necessary.
### Private comment
Users can create a [private comment](./private_comments.md) per social action, which will only be seen by them.
### Motives and goals
Social support actions are never random. They are taken with certain motives or to attain a certain goal.
By clicking on a badge (+) within the dropdown menu of this section, the user can add the motive or goal of the action. By clicking on it again (-) it can be removed.
Multiple goals can be selected.
### Results or outcome
Once a motive or goal is identified it is also possible to specify a result or outcome of the action concerning this specific goal. Similarly they can be selected from a dropdown menu and removed again.
Multiple outcomes can be selected.
### Evaluations, forms or correspondence
Multiple evaluations or forms can be added to a social support action. It is specified which evaluation can be started and clicking on the badge (+) will open a form for the user to fill in.
The form allows a starting date, due date and ending date to be set, as well as a reminder. An extra comment box can be used to give more details and a [document](/user/English/documents.md) can be generated or uploaded.
### Concerned persons
Concerned persons within the trajectory are listed here and the user can select who was involved in this specific social support action.
### Treating thirdparties
If an external partner executed the social action, they can be identified here.
Think of them as the main actor.
### Intervening thirdparties
These are external partners that participate(d) in the social action, but are not the main actors.

View File

@ -0,0 +1,195 @@
/newpage
# Social support trajectory
Providing meaningful social support is often an intricate combination of goals, actions, involved actors, documents, etc... With its social support module, Chill aims to give it's users a tool which they can keep track of trajectories.
You can look at it as the third big module within the application. Like the person and household modules it can be easily identified by the banner at the top of the screen.
![Trajectory banner](/user/img/banner_course.png)
## Trajectory overview
![Trajectory dashboard](/user/img/parcours_dashboard.png)
<!-- /fr/parcours/{id} -->
The overview page assembles the most important information and latest activity within a trajectory, allowing you to take certain quick actions like clicking on associated person badges, linked activities or social actions, sending a new notification, etc...
In short it is the trajectory dashboard from where you can navigate to specific sections.
## Creation of a social support trajectory
<!-- /fr/parcours/{id}/edit -->
A new trajectory can be created from the section menu. Doing so will direct you to a blank trajectory form for you to fill-out.
> Sections > Create a new trajectory
A trajectory can also be created from within a person file and will immediately link it to this person. You will see the person added in the first section **concerned persons**
> Yellow person menu > Trajectories > Create a trajectory button
### Different states of a trajectory
It is important to distinguish three main states for a trajectory. A badge can be found in the top right corner of the banner or list-item to identify this state.
* **DRAFT**: the trajectory form has missing information and can therefore not be confirmed (badge color: gray) *
* **CONFIRMED**: all required information has been provided and further actions, activities,... can be added (badge color: dark blue).
* **CLOSED**: the social support trajectory has come to closure, the reason can be defined (badge color: red).
Within your user menu you will find a menu entry to direct you to,
* a listing page of **all** the trajectories to which you are the referrer.
* a listing page of all your **DRAFT** trajectories (ones you created, but have not yet confirmed).
While the above three are considered the main states, there are additional properties that distinguish the state of a trajectory. They are the following,
* **Confidential**: A confidential trajectory can only be viewed by the referrer. Other users will not have access to it's information.
* **Intensity**: TODO The intensity can be set to *regular* or *punctual*
* **Emergency**: This state can be toggled when urgent actions are required within this trajectory.
### Required information
The information required to **confirm** a trajectory is the following:
* It is linked to at least one [concerned person](#concerned-person).
* It has at least one linked [social issue](#social-issue).
* It is assigned to at least one [service](#service).
* It has to be [localised](#trajectory-localisation).
![Confirm trajectory](/user/img/parcours_confirm.png)
All of these requirements are listed at the bottom of the form when you have failed to fulfill them. This serves as a reminder to what you should do in order to confirm the trajectory.
### Concerned person
![Concerned persons](/user/img/concerned_persons.png)
A trajectory can be put started to provide support to multiple persons (eg. support is given to a mother and her two children).
### Trajectory localisation
![Localisation](/user/img/parcours_localisation.png)
Every trajectory **has** to be localised and this can be done in one of two ways.
1. You can indicate a temporary address by clicking the designated button. The address will not automatically be adapted when a concerned person moves. Therefore a message is displayed to remind you as a user that the second option, here listed, is preferable.
2. You can link it to a concerned person's **home address** by clicking the map-marker icon in the concerned persons section. If the person moves it will also be automatically adapted within the trajectory.
__Note__: While a trajectory is linked to a concerned person's address...
* it is not possible to dissociate this person from the trajectory.
* the person cannot be moved from a household without indicating another address.
#### Why localize a trajectory ?
Localising a trajectory allows for the following:
* The automatic assignment of a referrer.
* Inclusion in the list of trajectories to be discussed within meetings held by concerning services.
* The generation of localised statistics.
* The management of access rights.
#### Locate the trajectory with a concerned person
If a concerned person has an address, it is possible to locate the trajectory with this person.
When a trajectory is located with a person:
* the trajectory "follows" the person's address when he moves;
* it is not possible to dissociate the concerned person from the trajectory;
In addition,
* the person cannot leave the trajectory as long as the trajectory is located near him/her
* the person cannot leave the household without leaving an address, as long as he/she is located with at least one trajectory.
#### Temporary location
A temporary address may be assigned to a trajectory.
In this case, this location is associated with the route, and will not be automatically changed if a person moves. To avoid this situation, a warning message reminds persons that it is preferable to indicate a real location for the trajectory.
### Origin of the application for support
Within this section you will find a pre-defined list of possible origins (eg. the application was done by telephone)
### Administrative location
The administrative location is the place where the trajectory is processed. This is useful for organisations with several different locations.
### The applicant
This can be an already existing person/thirdparty or a new applicant can be created from within the search modal. Click on the button <**create 'your-search-name'**> to do so.
### Social issue
Using the dropdown menu multiple social issues can be identified. Link at least one to be able to confirm the trajectory.
### Services
Identify at least one service that is concerned with this trajectory. Multiple services can be selected. This will have an impact on who has the right to access the trajectory files.
### Referrer
The referrer is the colleague to whom you can refer yourself concerning this trajectory. They are responsible for the follow-up and they have specific rights linked to the state of the trajectory.
* They can mark it as confidential.
* They can mark it as urgent.
* They can change the intensity.
__Note__: These three states cannot be modified if a trajectory does not have a referrer assigned.
Likewise a referrer cannot be removed from a confidential trajectory.
### External partners
A trajectory is setup to provide support to one or more concerned persons. Naturally, there may also be one or more thirdparties or persons involved to offer this support. These partners can be added in this section by searching for their name.
When a partner does not yet exist they can be created from within the search modal by pressing the button **<create 'your-search-name'>**.
<!-- ## Trajectory history
<!-- /fr/parcours/{id}/history
TODO -->
## Social support actions
<!-- /fr/person/accompanying-period/{id}/work -->
When a trajectory is confirmed (i.e., it is in the state "Confirmed"), it is possible to add social actions to this trajectory. These are the actions that are taken to realize the support. Please read the documentation about [social actions](/user/English/social_actions.md) for in detail information.
## Comments
<!-- /fr/parcours/{id}/comments -->
Comments can be added to a trajectory to notify co-workers of additional information for which there may not be a designated section. A comment can be **pinned** to the trajectory dashboard by clicking on the flag icon.
__note__: Only one comment can be pinned to the dashboard, but all comments will remain available within the comment section to view,modify, re-pin, or delete.
## Tasks
<!-- /fr/task/single-task/by-course/{id} -->
Just as within the person module, tasks can be created and assigned within a trajectory. Please read the documentation about [tasks](/user/English/tasks.md) for in detail information.
## Documents
<!-- /fr/parcours/{id}/documents -->
Just as within the person module, documents can be attached to a trajectory. The only difference here is that a trajectory document can also be generated from a template. This template can be selected from the dropdown menu.
Please read the documentation about [documents](/user/English/documents.md) for in detail information.
## Close a trajectory
<!-- /fr/parcours/{id}/close -->
At any time a trajectory can be closed by clicking on the sidebar menu entry **<close trajectory'>**.
You will be taken to a small form in which you can specify the date of closure and the reason.
## Re-open a trajectory
When a trajectory is closed the menu will adapt itself to offer the user the possibility to re-open it. No further actions are required after clicking this button.

43
user/English/tasks.md Normal file
View File

@ -0,0 +1,43 @@
/newpage
# Tasks
## Listing page
<!-- /fr/task/single-task/by-course/{id} -->
Clicking on the <**task**> menu entry in the person or trajectory side-menu will bring you to the listing page.
Here you have an overview of all tasks related to this particular person or trajectory.
At the top of the list you find a searchbar and several filtering options,
* Future tasks or tasks without due date
* Tasks that are almost due
* Tasks with a passed due date
* New tasks
* Tasks that are in progress
* Closed tasks
* Removed tasks
Listed tasks are displayed with their title, a badge identifying the state in which the task can be found (new, in progress, closed,...) and their starting date, date on which a reminder will be sent and their due date. Your task reminders can be found on the homepage widget, or displayed in your user menu.
A separate user menu entry will take you directly to a listing page of all your tasks that have surpassed their due date and have not been closed. This menu entry is easily identifiable by the exclamation mark triangle (!).
## Creating a new task
<!-- /fr/task/single-task/new -->
![Creation task](/user/img/new_task.png)
To create a new task you will be given a form to fill in.
The fields are self-explanatory but do note that only the title is required.
## Detail page
<!-- /fr/task/single-task/{id}/show -->
You can view the task in more detail by clicking on the **eye** icon button. On the detail page you will see the description of the task, but also the task history. The history gives you an overview of state changes and who undertook them on which day. This allows users to easily keep track of tasks.
Within the detail page, as well as in the listing page you have the ability to navigate to an edit page where you can modify the task. A task can also be deleted and it's current state can be changed using the dropdown button <**change state**>.

View File

@ -0,0 +1,59 @@
/newpage
# Thirdparty
Within the context of social support you will most likely work together with plenty of professional external partners.
Chill allows you to easily link them to a user and their social support trajectory, giving you a complete overview of each partner involved.
All thirdparty information can be consulted by going to the section menu in the top-right corner and selecting **thirdparties**.
At the top of the list a searchbar allows you to easily find the thirdparty you are looking for on the basis of their name.
## Create a thirdparty
At the bottom of the page you will find the button to create a new thirdparty.
In doing so you will see a distinction being made between creating a thirdparty as a **legal entity** or a **natural person**.
Choose 'legal entity' if you want to add a thirdparty that is, for example, a doctor's practice or an organization.
A 'natural person' would be any professional person that you would like to add as a thirdparty, eg. a psychologist.
It is important to note that within a **legal entity** you can add **contacts**.
These are most likely individual professionals working within the organization or associated with it.
----------
### Legal entity
![Legal entity](/user/img/thirdparty_morale.png)
Creating a **legal entity** takes you to a form which you can complete with the following information.
* **Name**
* **Acronym** (eg. CPAS)
* **Service/department**: you can target a specific department or service within the larger entity (eg. elderly support).
* **Contact information** (phonenumber, email)
* **Address**:
Aside from adding a complete address there are two options to take into account.
> **Incomplete address**: In choosing to enter an incomplete address you will only specify a general location (town or city).
> **Confidential**: The address can be identified as confidential. (eg. the address of a safehouse should not be readily viewable. It will be blurred in overview pages and you will have the option to reveal it.)
* **Contacts**: Contacts are natural persons associated with the legal entity. You can specify their title and role within the entity and add their contact information. As with the address above there is an option to make it a confidential contact. Their information will thus be blurred throughout the application and can be revealed when needed. Each contact can be deleted individually and these changes will be saved when saving the entire entity.
![Thirdparty contact](/user/img/thirdparty_contact.png)
* **Comment**
* **Active/inactive**: a thirdparty can be set to inactive (eg. they are no longer operational).
---------
### Natural person
A natural person is a thirdparty that stands on it's own. Although a thirdparty contact is in fact also a natural person, they are two distinct entities in Chill.
Within the form the following can be specified,
* **Civil title** (eg. Mrs., Mayor, ...)
* **Name**
* **Professional role** (eg. secretary, nurse)
* **Support category**: the category under which their services fall.
* **Contact information**: phonenumer, email, address. Contact information can be identified as confidential.
* **Comment**
* **Active/Inactive**

3
user/English/workflow.md Normal file
View File

@ -0,0 +1,3 @@
/newpage
TODO translate from french

11
user/_a-classer.md Normal file
View File

@ -0,0 +1,11 @@
## Fonctionnement du moteur de recherche des tiers:
Le moteur de recherche des tiers dans "add person" permet d'effectuer des recherches sur les noms des tiers, les acronymes, et leur service. Il classe également les plus pertinent, en tenant compte éventuellement du nom de la localité du tiers, s'il possède une adresse.
Le moteur sélectionne d'abord les tiers sur base du nom, de l'acronyme ou du nom du service. Lorsqu'une recherche comporte plusieurs mots (séparés par un ou plusieurs espaces), il sélectionne les tiers dont le nom, l'acronyme ou le nom du service contient un de ces mots seulement.
Le moteur affiche les résultats les plus pertinents en premier. Il classe en premier les tiers dont le mot recherché correspond à un des mots du nom, de l'acronyme, ou du nom du service, **ou de la localité du tiers**. Cela permet donc de présenter en premier les tiers dans une localité particulière.
Ainsi, si une recherche est effectuée avec les termes `ADMR roche`, tous les résultats dont l'acronyme est ADMR sont renvoyés. Cependant, les tiers dont la localité est La-Roche-Sur-Yon seront considérés plus pertinents (ils disposeront de deux mots qui correspondent (`admr` et `roche`) plutôt qu'un seul); ils seront donc présentés en premier.

45
user/activite.md Normal file
View File

@ -0,0 +1,45 @@
\newpage
# Activités (échanges)
<!-- fr/activity/?accompanying_period_id={id} -->
![Liste des échanges liés à un parcours](./img/fr_activity__accompanying_period_id_2705.png)
Les activités (ou échanges) dans Chill servent à consigner des activités ou des échanges ayant eu lieu et de les associer à des usagers et/ou à des parcours d'accompagnement. Par activité, nous entendons un entretien individuel, une démarche via un
partenaire extérieur, un appel téléphonique relatif à la personne, un courriel, etc.
Les informations à saisir sont différentes selon le type d'activité. Par exemple, pour un appel téléphonique, on peut spécifier
la durée de l'appel, l'interlocuteur et prendre une note. Pour une réunion, on peut y associer une localisation (l'endroit où a eu lieu la réunion), les parties présentes à la réunion, des notes, des documents, etc.
Ainsi centralisées, ces informations peuvent ensuite être facilement partagées entre les travailleurs sociaux.
Les types d'activités et leurs champs correspondants (localisation, durée, durée du trajet, documents, présence de la personne, usagers, etc.) sont configurables dans l'espace d'administration.
## Activité dans les personnes ou les parcours ?
Les activités peuvent être enregistrées à la personne ou bien au parcours d'accompagnement. C'est à vous de choisir de saisir des activités dans le cadre d'un parcours d'accompagnement, ou bien dans le cadre d'une personne. Toutefois, dès lors qu'une personne est mentionnée dans une activité, on pourra retrouver cette activité dans la liste des activités de la personne.
Exemple: Dans le parcours d'accompagnement de l'usager Gabrielle Durant, je crée une activité concernant un courriel où je mentionne également un autre usager enregistré dans Chill: Dominique Duchemin. L'activité sera visible dans le parcours d'accompagnement de Gabrielle Durant, mais aussi dans sa fiche usager et dans celle de Dominique Duchemin.
On peut donc accéder à la liste des activités d'une personne via le menu "usager" et à la liste des activités d'un parcours d'accompagnement via le menu "parcours d'accompagnement".
## Créer et modifier une activité
Dans la liste des activités, cliquer sur le bouton "Créer" pour créer une nouvelle activité. Choisissez d'abord le type d'activité/échange, puis remplissez les informations utiles. Si l'activité a été créée dans un parcours, on y renseignera les problématiques sociales et les actions d'accompagnement liées. Selon le type d'activité, vous pourrez renseigner les parties concernées, la date, la localisation, la durée de l'activité, la durée éventuelle de trajet (dans le cas d'un déplacement), des documents, le sujet, une note libre, etc.
Le sujet est pris dans une liste prédéfinie, établie dans l'espace d'administration du logiciel.
Tout type de document peut être ajouté dans une activité: un document texte, un pdf, une photo, etc.
Les parties concernées, usagers, tiers ou utilisateurs (travailleur social), sont ajoutés en recherchant les personnes déjà enregistrées dans Chill ou en les créant à la volée. Si l'activité a été créée dans un parcours, vous pouvez facilement ajouter des parties concernées en cliquant sur les propositions de noms. Les propositions se font sur base des parties mentionnées dans le parcours d'accompagnement.
<!-- ::: { .info }
Il est possible de transformer un rdv en activité. (TODO)
::: -->
Lorsqu'une activité a été créée, il est toujours possible de la modifier pour y faire des corrections ou des ajouts.
<!--
## Effets de la sélection des problématiques ou des actions sur les parcours -->

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.
:::

31
user/aside_activities.md Normal file
View File

@ -0,0 +1,31 @@
/newpage
# Activités annexes
Pour permettre à l'utilisateur de gérer les activités qui ne sont pas directement liées à un parcours d'accompagnement ou à un usager, il existe une section d'activités annexes.
Une activité annexe peut être une réunion d'équipe, une formation, mais aussi un appel téléphonique ou un courriel.
## Page d'inscription
<!-- /fr/asideactivity -->
Un utilisateur peut naviguer vers sa liste d'activités annexes à partir du menu utilisateur en cliquant sur **Mes activités annexes**. Comme pour les autres sections du logiciel, vous trouverez ici une liste qui offre un premier aperçu rapide de chaque activité annexe. Vous pouvez voir l'activité plus en détail, la modifier ou la supprimer.
## Créer une activité annexe
<!-- /fr/asideactivity/new -->
Les champs du formulaire d'une activité annexe sont auto-explicatifs. Il est important de noter cependant qu'un utilisateur peut créer une activité annexe pour un autre utilisateur.
Une activité annexe peut être créée à une date future ou passée. En tant que tel, il ne faut pas le considérer comme un outil de planification, mais plutôt comme un outil d'enregistrement des activités.
Tous les champs sont obligatoires, à l'exception du champ commentaire.
## Page de visualisation
<!-- /fr/asideactivity/{id}/view -->
Dans la page de détail, la chose la plus importante à noter est l'option de **duplication** d'une activité annexe. Par exemple, une réunion qui se tient chaque semaine avec plus ou moins les mêmes personnes peut facilement être dupliquée, tout en permettant d'y apporter des modifications.

36
user/concept.md Normal file
View File

@ -0,0 +1,36 @@
\newpage
# Survol des concepts dans Chill {#sec:concept}
Chill est un logiciel conçu spécialement pour l'accompagnement social. Il est mis en œuvre dans des contextes institutionnel différents mais repose sur un socle de concepts qui peuvent être utilisés dans plusieurs environnements où évoluent des travailleur·euses sociaux.
Les trois concepts de base du logiciel sont:
- l'**usager**: la personne bénéficiaire de l'accompagnement social. L'usager est au centre du logiciel: sur la page d'accueil, il y a une recherche par nom parmi les usagers enregistrés dans le logiciel. La "fiche usager" (voir [la section "usager"](#sec:person)) résume toutes les informations propre à la personne (date de naissance, information de contact, etc.).
- le **parcours d'accompagnement**: le dossier qui accompagne un ou plusieurs usagers. Un [parcours](#sec:parcours) a une date de début et peut être clôturé à une date de fin. Un référent du parcours peut être désigné. Chaque parcours est associé à une ou plusieurs problématiques sociales. Lors du parcours, des **actions d'accompagnements** sont créées et suivies.
- le **ménage**: le ménage dont fait partie l'usager. Comme l'accompagnement social peut se faire aussi à l'échelle d'un ménage plutôt qu'individuellement, la [page du ménage](#sec:household) rassemble les informations pour les usagers d'un même ménage.
Les pages du logiciel se divisent entre ces trois domaines, chaque domaine étant caractérisé par un bandeau avec une couleur particulière ainsi que son menu.
L'utilisateur peut passer d'un domaine à l'autre, par exemple en ouvrant la fiche d'un usager depuis un parcours ou un ménage. On peut passer du domaine usager vers le domaine ménage en cliquant sur l'icône symbolisant une maison à droite de l'adresse d'un usager, et repasser vers le domaine usager en cliquant sur le nom d'un des usagers du ménage. Plusieurs sections sont aussi accessibles via plusieurs domaines, comme les activités/échanges ou les tâches, accessibles dans le domaine "usager" et "parcours d'accompagnement".
![Les 3 bandeaux dans Chill](./img/banner_all.png)
Au-dessus des bandeaux se trouve la barre d'outil principale, qu'on retrouve dans chaque page du logiciel.
## Autres entités
D'autres entités sont manipulées dans Chill:
* Les travailleurs sociaux inscrivent leurs rencontres, réunions, appels téléphoniques au sein des **échanges**;
* Des **documents** peuvent être associés à chaque utilisateur, ou à chaque parcours. Ces documents peuvent être:
* générés à partir des informations du logiciel (à partir de "gabarits" définis par les administrateurs fonctionnels);
* déposés dans le dossier depuis des ressources externes
* Chill dispose d'un véritable carnet de contact, les **tiers** qui peuvent être associés à différentes entités dans le parcours et le dossier de l'usager;
* Chill peut enregistrer des **tâches**;
* Les utilisateurs peuvent s'envoyer des **notifications**;
* Un suivi des décisions (**Workflow**) peut être activé au sein du logiciel.

BIN
user/cover-user.pdf Normal file

Binary file not shown.

BIN
user/cover-user.svg (Stored with Git LFS) Normal file

Binary file not shown.

23
user/document.md Normal file
View File

@ -0,0 +1,23 @@
\newpage
# Documents {#sec:documents}
Un dossier social comporte souvent un certain nombre de documents, propre au travail social effectué, qui peuvent être stockés dans Chill. Il peut s'agir d'attestations administratives, de documents juridiques, etc, que ce soit sous forme de document électronique (par exemple au format pdf) ou bien un document en papier qui a été numérisé. Par ailleurs, le logiciel permet aussi de générer ses propres documents à partir de modèles pré-établis.
Tout comme les activités/échanges, les documents peuvent être enregistré à la personne ou bien au parcours d'accompagnement. L'accès aux documents enregistrés se fait par l'entrée "Documents" via le menu "usager" ou via le menu "parcours d'accompagnement". Les documents enregistrés sont téléchargeables: on peut les retrouver à tout moment par cette liste de documents.
![Liste des documents](./img/fr_person_2811_document.png)
## Ajouter un document
![Ajouter un document](./img/fr_person_2811_document_new.png)
Pour ajouter un document, dans la liste des documents, cliquer sur le bouton "Créer un nouveau document". Il est demandé de rentrer un titre, une date (par défaut la date de jour), une catégorie de document et une courte description. Ensuite, le document (un document au format pdf, un document de traitement de texte, ...) peut être glissé-déposé ou retrouvé sur un ordinateur en cliquant dans la zone de téléversement.
## Générer un document
![Générer un document dans un parcours](./img/generer_document_parcours.png)
Il est possible de générer ses propres documents à partir de modèles pré-établis et des données saisies dans chaque dossier social, que ce soit un dossier d'un usager ou d'un parcours. Les modèles sont des fichiers "templates" qui sont préparés par les administrateurs du logiciel et qui sont généralement propres à une organisation.
Par exemple, un document peut être généré à partir d'un modèle où toutes les informations d'un parcours d'accompagnement seront pré-remplies (personnes concernées et leur coordonnées, travailleurs et services impliqués, etc.)

208
user/exports.md Normal file
View File

@ -0,0 +1,208 @@
```{=latex}
\cleardoublepage
```
# Exports
Chill permet d'exporter les données sous différentes formes:
- des listes;
- des tableaux reprenant un ou plusieurs indicateurs.
Les listes peuvent être filtrées selon différents paramètres: âge de l'usager, date de l'échange, etc.
Les tableaux reprennent un indicateur (par exemple: nombre de parcours, nombre d'usager, durée moyenne des échanges), dont les données servant de base au calcul de cet indicateur peut également être filtré, mais aussi regroupé selon différents paramètres (exemple: statut du parcours, type d'échange, etc.). Ces exports ressemblent donc aux "tableaux croisés dynamiques" disponibles dans les logiciels de tableur.
## Fonctionnement général et concepts
### Export d'indicateurs
Les exports fonctionnent comme des tableaux croisés:
- un "export" permet de choisir l'indicateur.
Quelques exemples d'export: nombre de parcours, durée moyenne des parcours, nombre d'usagers, etc.
- des filtres permettent de ne retenir qu'une partie des données.
Exemple de filtre: uniquement les parcours urgent, les usagers de plus de 18 ans, etc.
- des regroupements créent des "classes statistiques" et permettent d'aggréger les données dans ces classes.
Cela permet de connaitre, par exemple, le "nombre d'échange par type d'échange", "le nombre de parcours par référent", etc.
### Listes de données
Au sein des exports, Chill propose des "listes" de données: liste des parcours, liste des usagers, etc.
Ces listes sont des données au format tableur, et chaque colonne comporte une information.
Les filtres des exports d'indicateurs sont disponibles pour les listes: il est donc possible de connaitre la liste des usagers de plus de 18 ans, etc.[^grouping-non-sense]
[^grouping-non-sense]: Les regroupements ne sont pas, eux disponibles: ils n'ont pas de sens dans ce contexte.
### Sauvegarde des exports configurés
Lorsqu'un export est configuré, il peut être sauvegardé par l'utilisateur. Ce dernier lui indique donc un titre et une description. L'export peut alors être re-joué plusieurs fois à partir des exports sauvegardés.
![Sélecteur qui permet d'accéder à la liste des exports enregistrés](img/export_select_saved_exports.png)
Les exports enregistrés peuvent être modifiés et sauvegardés sous un autre nom.
### Filtres
Les filtres permettent donc de filtrer les données avant l'export.
Ils peuvent être additionnés les uns aux autres: activer deux filtres lors d'un export filtrera les données pour ne retenir que les données qui correspondent aux deux filtres combinés.
Certains filtres demandent des paramètres pour être complétés.
### Regroupements
Les regroupements permettent de créer des classes statistiques pour regrouper les indicateurs.
Typiquement, chaque regroupement va ajouter une colonne dans le résultat, indiquant la nature de la donnée regroupée. Par exemple, le genre des usagers comptabilisés, le nom du référent du parcours, etc.
Ils peuvent également être combinés les uns aux autres. Dans ce cas, cela se matérialise par l'existence de plusieurs colonnes dans le résultat final: une colonne par regroupement.
Lorsque certaines données ne comportent pas de valeur, la cellule de la colonne du regroupement est généralement vide, ou son libellé est explicite.
#### Regroupements dans le cas de relation un-à-plusieurs
Il existe des relations un-à-plusieurs entre différents éléments, et qui font l'objet d'un regroupement. Quelques exemples: un parcours comporte plusieurs problématiques sociales, un échange peut comporter plusieurs utilisateurs participants, etc.
Dans ce cas, l'indicateur est comptabilisé plusieurs fois: une fois en regard de chaque ligne.
Prenons pour exemple les parcours et les problématiques sociales:
- le parcours n°1 comporte les problématiques "Logement", "Santé" et "Emploi";
- le parcours n°2 comporte les problématiues "Logement" et "Santé".
Le résultat sera le suivant:
| Problématique | Nombre de parcours | Explication |
|--------------:|---------:|-----------------------------------------------------|
|Emploi|1|Seul le parcours n°1 est comptabilisé |
|Logement|2|Le parcours n°1 et 2 sont concernés|
|Santé|2|Le parcours n°1 et 2 sont concernés|
Notez que le total des colonnes "nombre de parcours" est supérieur à deux (en l'occurrence il est de 5), alors qu'il y a seulement deux parcours concernés. Il est important d'être attentif à ce comportement lors de la comptabilisation des résultats: l'usage de "totaux" (souvent indiqués en bas de colonne, par exemple) n'est pas pertinent.
### Données historiques
Le logiciel Chill enregistre des données historiques: les référents d'un parcours, les référents des actions, l'appartenance d'un utilisateur à un ménage, etc.
Dès lors, de nombreux filtres et regroupements demandent une "date de calcul" pour ces éléments: il s'agit de la date à laquelle le référent était en position de désignation sur un parcours, l'appartenance de l'usager à un ménage à la date indiquée, etc.
### Dates glissantes
Les parcours peuvent être enregistrés, et rejoués à des dates différentes.
Dès lors, le logiciel utilise des "dates glissantes" pour indiquer une date, plutôt qu'une valeur absolue. Les "dates glissantes" se matérialisent par un menu déroulant dans lequel l'utilisateur indique un calcul de date:
- le début de l'année précédente,
- le début de l'année courante;
- la date du jour,
- etc.
Cet indicateur est converti **au moment de la génération de l'export**. Ainsi, le "début du mois précédent" sera le 1er janvier 2023 lorsque l'export est généré le 15 février 2023. Lorsqu'il sera généré le 15 mars 2023, le "début du mois précédent" sera le 1er février 2023.
Il n'y a pas de mention de "fin" d'une période ("fin du mois courant", "fin du mois précédent", etc.), car la fin d'une période est le début de la période suivante.
### Couches et zones géographiques
Les adresses sont localisées, dans Chill. La localisation géographique est enregistrée à l'endroit exact lorsque l'utilisateur a choisi l'adresse dans une liste de référence. Lorsque seul le code postal est choisi parmi les suggestions, alors l'adresse est géolocalisée à l'intérieur de la zone géographique du code postal, de manière aléatoire.
Les administrateurs peuvent injecter dans le logiciel des zones géographiques, qui appartiennent chacune à une "couche". Chaque zone est définie par une frontière (un polygone géographique). Ainsi, la couche des "communes" comportent plusieurs communes, appelées par leur nom. Chaque adresse peut être géographiquement associée à une zone géographique en fonction de la localisation: toutes les adresses à l'intérieur des frontières de la zone est associée à cette zone.
Chill est en mesure de proposer, dès lors,
- des filtres par zone géographiques;
- des regroupements par couche géographiques;
::: {.warning}
Lorsqu'une adresse n'est pas choisie dans la liste des adresses de référence, l'adresse n'est pas géolocalisée. Les statistiques sont donc inopérantes.
Cependant, Chill "essaie" de donner un géolocalisation aux adresses nouvellement créées par comparaison avec une adresse existante dans la base de donnée de référence, en comparant le nom de la rue et les codes postaux. Cependant, cet essai n'est pas toujours fructueux.
:::
::: {.info}
L'association entre les zones géographiques et les adresses est une opération couteuse, et donc lente, en termes informatiques. Pour permettre de générer des exports rapidement, cette association est calculée une fois par nuit.
En conséquence, l'association entre la zone géographique et les adresses du jour ne sera pas disponible.
:::
## Liste des filtres et regroupements
<!-- PHPFILE: this list was extracted through this command: find src/ -type f -iname '*.php' | grep Export | grep --invert-match Test | grep --invert-match Helper | grep --invert-match Controller | grep --invert-match Constraint | grep --invert-match DependencyInjection | grep --invert-match Interface | grep --invert-match Declaration | sort -->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Export/Formatter/CSVFormatter.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Export/Formatter/CSVListFormatter.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Export/Formatter/CSVPivotedListFormatter.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Export/Formatter/SpreadSheetFormatter.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Export/Formatter/SpreadsheetListFormatter.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/DataMapper/ExportPickCenterDataMapper.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/SavedExportType.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/Type/Export/AggregatorType.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/Type/Export/ExportType.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/Type/Export/FilterType.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/Type/Export/FormatterType.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/Type/Export/PickCenterType.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Form/Type/Export/PickFormatterType.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Repository/SavedExportRepository.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Security/Authorization/ChillExportVoter.php-->
<!-- PHPFILE: src/Bundle/ChillMainBundle/Security/Authorization/SavedExportVoter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/AbstractAccompanyingPeriodExportElement.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ActionTypeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/CurrentActionAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/GoalAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/GoalResultAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/JobAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ReferrerAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ResultAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/ScopeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/CountAccompanyingCourse.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/CountAccompanyingPeriodWork.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/CountEvaluation.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/CountHousehold.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/CountPerson.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/CountPersonWithAccompanyingCourse.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriod.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriodWork.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/ListHouseholdInPeriod.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/ListPersonDuplicate.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/ListPerson.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/ListPersonWithAccompanyingPeriod.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Export/StatAccompanyingCourseDuration.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/EvaluationFilters/ByEndDateFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/EvaluationFilters/ByStartDateFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/EvaluationFilters/CurrentEvaluationsFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/EvaluationFilters/EvaluationTypeFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/EvaluationFilters/MaxDateFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/HouseholdFilters/CompositionFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/AccompanyingPeriodWorkEndDateBetweenDateFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/AccompanyingPeriodWorkStartDateBetweenDateFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/CurrentActionFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/JobFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ScopeFilter.php-->
<!-- PHPFILE: src/Bundle/ChillReportBundle/Export/Export/ReportList.php-->
<!-- PHPFILE: src/Bundle/ChillReportBundle/Export/Export/ReportListProvider.php-->
<!-- PHPFILE: src/Bundle/ChillReportBundle/Export/Filter/ReportDateFilter.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/SocialWorkTypeFilter.php-->

View File

@ -0,0 +1,506 @@
### Exports liés aux parcours
- liste des parcours;
- nombre de parcours;
- durée moyenne et nombre des participations des usagers aux parcours,
### Filtres liés aux parcours
#### Filtrer les parcours avec une localisation temporaire ou auprès d'un usager
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HasTemporaryLocationFilter.php-->
Filtre les parcours associés à une localisation temporaire ou une localisation auprès d'un usager. La localisation doit être valable à une date indiquée en paramètre.
#### Filtrer les parcours ayant reçu un échange entre deux dates
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/PeriodHavingActivityBetweenDatesFilter.php -->
Ce filtre permet de ne prendre en compte que les parcours ayant reçu au moins un échange entre les deux dates indiquées en paramètre.
#### Filter les parcours ayant reçu une intervention entre deux dates
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HavingAnAccompanyingPeriodInfoWithinDatesFilter.php-->
Ce filtre permet d'indiquer deux dates qui forment une période de recherche.
Filtre les parcours qui ont reçu au moins une intervention pendant cette période de recherche. La liste des interventions est identique à celle [utilisée pour le changement de statut des parcours](#sec:evenement-statut-parcours).
#### Filtrer les parcours dont la date d'ouverture est comprise entre deux dates
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/OpenBetweenDatesFilter.php-->
Ce filtre permet d'indiquer deux dates qui forment une période de recherche.
Filtre les parcours dont la date d'ouverture est comprise entre les deux dates indiquées en paramètre. La date de fin est non comprise dans la période de recherche.
Ce filtre permet de filtrer les "nouveaux parcours" qui ont débuté au cours d'une période.
#### Filtrer les parcours ouverts au moins un jour dans la période
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ActiveOneDayBetweenDatesFilter.php-->
Ce filtre permet d'indiquer deux dates qui forment une période de recherche.
Filtre les parcours, pour ne retenir que les parcours qui ont été ouverts au moins un jour pendant la période de recherche. Autrement dit:
- la date d'ouverture est antérieure à la fin de la période de recherche;
- la date de fermeture est postérieure au début de la période de recherche, ou le parcours est toujours ouvert.
#### Filtrer les parcours ouverts à une date
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ActiveOnDateFilter.php-->
Filtre les parcours, pour ne retenir que les parcours dont:
- la date d'ouverture est antérieure à la date communiquée,
- qui ne sont pas clôturés ou dont la date est de clôture est postérieure à la date communiquée.
#### Filtrer les parcours par action d'accompagnement
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/SocialActionFilter.php-->
Filtre les parcours ayant au moins une action d'accompagnement d'un type indiqué en paramètre.
#### Filtrer les parcours par confidentialité
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ConfidentialFilter.php-->
Filtre les parcours marqués comme confidentiel ou non.
#### Filtrer les parcours par créateur
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/CreatorFilter.php-->
Filtre les parcours en fonction du créateur.
#### Filtrer les parcours par intensité
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/IntensityFilter.php-->
Filtre les parcours en fonction de l'intensité (ponctuel ou régulier).
#### Filter les parcours par intervenant, entre deux dates
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserWorkingOnCourseFilter.php-->
Ce filtre permet d'indiquer:
- une date de début et une date de fin, qui forment une période de recherche;
- un ou plusieurs utilisateurs
Le filtre ne retient que les parcours qui ont reçu une intervention de la part d'un des utilisateurs indiqués en paramètre, et pendant la période indiquée. La date de fin est non comprise dans la période de recherche.
La notion d'intervenant est définie [dans le chapitre correspondant](#sec:parcours-intervenant).
Exemples d'utilisation:
- ce filtre permet de répondre à la question "Sur combien de parcours l'utilisateur Y est-il intervenu, entre le début de cette année et aujourd'hui".
#### Filtrer les parcours par localisation administrative
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/AdministrativeLocationFilter.php-->
Filtre les parcours par localisation administrative.
#### Filtrer les parcours par motif de clôture
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ClosingMotiveFilter.php-->
Filtre les parcours par motif de cloture.
#### Filtrer les parcours par métier de l'intervenant, entre deux dates
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/JobWorkingOnCourseFilter.php-->
Ce filtre permet d'indiquer:
- une date de début et une date de fin, qui forment une période de recherche;
- un ou plusieurs métiers
Le filtre ne retient que les parcours qui ont reçu une intervention de la part des utilisateurs ayant un des métiers indiqués en paramètre, et pendant la période indiquée. La date de fin est non comprise dans la période de recherche.
La notion d'intervenant est définie [dans le chapitre correspondant](#sec:parcours-intervenant).
Exemples d'utilisation:
- ce filtre permet de répondre à la question "Combien de parcours reçoivent une intervention des utilisateurs ayant le métier X et Y, entre le début de l'année et aujourd'hui ?"
#### Filtrer les parcours par métier du créateur
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/CreatorJobFilter.php-->
Filtre les parcours par métier du créateur.
Le métier du créateur est pris en compte au moment de la création du parcours.
#### Filtrer les parcours par métier du référent
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserJobFilter.php-->
Filtre les parcours par métier du référent.
Le métier du référent est pris en compte au moment où ce dernier a été désigné comme référent.
#### Filtrer les parcours par origine du parcours
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/OriginFilter.php-->
Filtre les parcours par origine.
L'origine est indiquée dans le formulaire "Modifier le parcours".
#### Filtrer les parcours par problématiques sociales
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/SocialIssueFilter.php-->
Filtre les parcours par problématiques sociales.
Un parcours est pris en compte dès qu'il est associé à au moins une problématique sociale indiquée en paramètre.
#### Filtrer les parcours par référent
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ReferrerFilter.php-->
Filtre les parcours par référent.
Seuls les parcours dont le référent était un utilisateur indiqué en paramètre, et à la date indiquée en paramètre, sont pris en compte.
#### Filtrer les parcours par service de l'intervenant, entre deux dates
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/ScopeWorkingOnCourseFilter.php-->
Ce filtre permet d'indiquer:
- une date de début et une date de fin, qui forment une période de recherche;
- un ou plusieurs service
Le filtre ne retient que les parcours qui ont reçu une intervention de la part des utilisateurs ayant un des services indiqués en paramètre, et pendant la période indiquée. La date de fin est non comprise dans la période de recherche.
La notion d'intervenant est définie [dans le chapitre correspondant](#sec:parcours-intervenant).
Exemples d'utilisation:
- ce filtre permet de répondre à la question "Combien de parcours reçoivent une intervention des utilisateurs du service X et Y, entre le début de l'année et aujourd'hui ?"
#### Filtrer les parcours par service du référent
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/UserScopeFilter.php-->
Filtre les parcours par service du référent.
Le service du référent est pris en compte au moment où ce dernier a été désigné comme référent.
#### Filtrer les parcours par statut du parcours
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/StepFilterOnDate.php-->
Ce filtre permet d'indiquer une date en paramètre, ainsi qu'une liste de statuts.
Filtre les parcours qui avaient un des statuts sélectionné à la date indiquée.
Pour les différentes statuts, voir la section correspondante: [statuts du parcours](#sec:parcours-statut).
#### Filtrer les parcours par statut du parcours entre deux dates
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/StepFilterBetweenDates.php-->
Ce filtre permet d'indiquer deux dates qui forment une période de recherche, ainsi qu'une liste de statuts. La date de fin de la période est non comprise dans la période de recherche.
Filtre les parcours qui avaient un des statuts sélectionné pendant la période de recherche.
Note: comme un parcours peut avoir différents statuts au cours du temps, le présent filtre tiendra compte des parcours qui ont eu ce statut au moins un jour dans la période indiquée, même si ce statut a été changé pendant la période.
Pour les différentes statuts, voir la section correspondante: [statuts du parcours](#sec:parcours-statut).
#### Filtrer les parcours par type d'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ActivityTypeFilter.php -->
Ce filtre permet de ne retenir que les parcours qui sont associé à au moins un échange d'un type donné en paramètre.
#### Filtrer les parcours par urgence
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/EmergencyFilter.php-->
Filtre les parcours urgent, ou non.
#### Filtrer les parcours par zone géographique
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/GeographicalUnitStatFilter.php-->
Filtre les parcours par zone géographique.
La localisation de l'adresse du parcours doit être indiquée: il peut s'agir soit d'une adresse temporaire qu'une localisation auprès d'une adresse d'un usager.
Seules les adresses géolocalisées sont prises en compte. Les adresses sont géolocalisées lorsqu'elles sont choisies parmi les adresses de référence. Lorsque seul le code postal est choisi parmi les suggestions, alors l'adresse est géolocalisée à l'intérieur de la zone géographique du code postal, de manière aléatoire.
La date de prise en compte de l'adresse doit également être indiquée en paramètre. Il s'agira alors de l'adresse temporaire valable sur le parcours à la date indiquée, ou l'adresse de l'usager à la date indiquée (il faut également qu'il ait été désigné comme "localisant" le parcours à la date indiquée).
::: {.info}
L'association entre les zones géographiques et les adresses est une opération couteuse, en termes informatique. Dès lors, cette association est calculée une fois par nuit.
En conséquence, l'association entre la zone géographique et les adresses du jour ne sera pas disponible.
:::
#### Filtrer les parcours par évaluation
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/EvaluationFilter.php-->
Filtre les parcours comportant au moins une évaluation du type indiqué en paramètre.
#### Filtrer les parcours qui nont pas dactions
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HasNoActionFilter.php-->
Filtre les parcours qui ne comportent aucune action d'accompagnement.
#### Filtrer les parcours qui nont pas déchange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/HasNoActivityFilter.php-->
Filtre les parcours qui ne comportent aucun échange.
#### Filtrer les parcours sans référent
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HasNoReferrerFilter.php-->
Filtre les parcours pour ne reprendre que ceux qui ne comportaient aucun référent à la date indiquée en paramètre.
#### Filtrer les parcours selon la nature du demandeur
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/RequestorFilter.php-->
Filtre les parcours pour ne retenir que:
- le demandeur est un usager concerné;
- le demandeur est un usager, mais n'est pas concerné par le parcours;
- le demandeur est un tiers
- le demandeur est ne comporte pas de demandeur.
### Regroupements liés aux parcours
#### Grouper les parcours par action d'accompagnement
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialActionAggregator.php-->
Groupe les parcours par action d'accompagnement.
**Relation un-à-plusieurs**: lorsqu'un parcours comporte plusieurs actions d'accompagnement, le parcours est comptabilisé en regard de chaque action.
#### Grouper les parcours par confidentialité
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ConfidentialAggregator.php-->
Groupe les parcours selon qu'ils ont été marqués comme confidentiels, ou non.
#### Grouper les parcours par date d'ouverture
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/OpeningDateAggregator.php-->
Groupe les parcours par date d'ouverture. La date prise en compte ici est celle reprise dans le bandeau "parcours", elle peut être modifiée par l'utilisateur une fois le parcours ouvert, dans le formulaire `Modifier le parcours`.
Les dates d'ouvertures peuvent être retroupées par mois, année ou semaine. Dans ce dernier cas, la numérotation de la semaine est calculée en suivant la norme ISO 8601[^iso8601week]. Les regroupements par mois ou semaine sont préfixés par l'année correspondante.
[^iso8601week]: Voir <https://fr.wikipedia.org/wiki/Num%C3%A9rotation_ISO_des_semaines>
#### Grouper les parcours par date de cloture
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ClosingDateAggregator.php-->
Groupe les parcours par date de clôture. La date prise en compte ici est celle reprise dans le bandeau "parcours", elle peut être modifiée par l'utilisateur au moment de la cloture du parcours.
Les dates d'ouvertures peuvent être retroupées par mois, année ou semaine. Dans ce dernier cas, la numérotation de la semaine est calculée en suivant la norme ISO 8601[^iso8601week]. Les regroupements par mois ou semaine sont préfixés par l'année correspondante.
#### Grouper les parcours par durée
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/DurationAggregator.php-->
Groupe les parcours par durée du parcours.
La durée peut être exprimée en mois, semaines ou jours.
La durée calculée est la différence entre la date d'ouverture et la date de cloture: la première peut être mise à jour par l'utilisateur dans le formulaire `Modifier le parcours` et, par défaut, correspond à la date de confirmation du parcours. La seconde est indiquée par l'utilisateur au moment de la cloture du parcours. Lorsqu'un parcours est toujours ouvert, la durée est la différence entre la date d'ouverture et la date du jour de génération de l'export.
#### Grouper les parcours par intensité
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/IntensityAggregator.php-->
Groupe les parcours par intensité (parcours ponctuel ou régulier).
#### Grouper les parcours par intervenant
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/UserWorkingAggregator.php-->
Ce regroupement permet de classer les indicateurs par intervenants sur le parcours.
Par intervenant sur le parcours, sont pris en compte tous les utilisateurs qui ont réalisé une intervention: [voir chapitre correspondant](#sec:parcours-intervenant).
**Relation un-à-plusieurs**: Lorsqu'un parcours comporte plusieurs intervenants, chaque parcours est comptabilisé en regard de chaque intervenant du parcours.
#### Grouper les parcours par localisation administrative
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/AdministrativeLocationAggregator.php-->
Groupe les parcours par localisation administrative.
#### Grouper les parcours par motif de clôture
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ClosingMotiveAggregator.php-->
Groupe les parcours par motifs de clôture.
Lorsqu'un parcours ne comporte pas de motif de clôture (parce qu'il est toujours ouvert, ou qu'il a été ré-ouvert après une clôture), le regroupement est repris sous une ligne sans contenu.
#### Grouper les parcours par métier de l'intervenant
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/JobWorkingAggregator.php-->
Ce regroupement permet de classer les indicateurs par métier de l'intervenant sur le parcours.
Par intervenant sur le parcours, sont pris en compte tous les utilisateurs qui ont réalisé une intervention: [voir chapitre correspondant](#sec:parcours-intervenant).
#### Grouper les parcours par métier du créateur
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/CreatorJobAggregator.php-->
Regroupe les parcours par métier du créateur.
Le métier du créateur est celui associé au créateur au moment de la création du parcours.
#### Grouper les parcours par métier du référent
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/UserJobAggregator.php-->
Regroupe les parcours par métier du référent.
Le métier du référent est celui associé au référent au moment où il est désigné référent de ce parcours.
#### Grouper les parcours par nombre dactions
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ByActionNumberAggregator.php-->
Regroupe les parcours par nombre d'actions associés au parcours.
#### Grouper les parcours par nombre déchange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByActivityNumberAggregator.php-->
Regroupe les parcours par nombre d'échangers associés au parcours.
#### Grouper les parcours par origine du parcours
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/OriginAggregator.php-->
Groupe les parcours par origine. L'origine est indiquée sur la page `Modifier le parcours`.
#### Grouper les parcours par problématiques sociales
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/SocialIssueAggregator.php-->
Groupe les parcours par problématique sociale.
**Relation un-à-plusieurs**: lorsqu'un parcours comporte plusieurs problématiques sociales, ce parcours est comptabilisé en regard de chaque problématique.
#### Grouper les parcours par référent
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ReferrerAggregator.php-->
Groupe les parcours par référent.
La date indiquée en paramètre permet de ne tenir compte que du référent valable à la date indiquée.
#### Grouper les parcours par service
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ScopeAggregator.php-->
Groupe les parcours par service.
**Relation un-à-plusieurs**: lorsqu'un parcours est associé à plusieurs services, il est comptabilisé en regard de chaque service coché.
#### Grouper les parcours par service de l'intervenant
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ScopeWorkingAggregator.php-->
Ce regroupement permet de classer les indicateurs par service des intervenants sur le parcours.
Par intervenant sur le parcours, sont pris en compte tous les utilisateurs qui ont réalisé une intervention: [voir chapitre correspondant](#sec:parcours-intervenant).
#### Grouper les parcours par service du référent
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ReferrerScopeAggregator.php-->
Groupe les parcours par service du référent.
Le service du référent pris en compte est celui associé au référent au moment où ce dernier a été désigné comme référent sur le parcours.
#### Grouper les parcours par statut du parcours
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/StepAggregator.php-->
Groupe les parcours par statut du parcours.
Les différents statuts du parcours [sont décrit dans le chapitre correspondant](#sec:parcours-statut).
Le statut du parcours repris est celui qui est valable à la date indiquée en paramètre.
#### Grouper les parcours par type d'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByActivityTypeAggregator.php -->
Ce regroupement permet de classer les parcours par type d'échange reçu sur le parcours. Le regroupement est constitué de tous les parcours ayant au moins un échange du type qui forme le regroupement. Donc, dans l'export du nombre de parcours, cela crée une colonne avec les types d'échange et une colonne "nombre de parcours": un parcours est comptabilisé à chaque fois qu'il présente au moins un échange du type indiqué dans la colonne "type d'échange".
Il est possible d'indider des dates en paramètres: si elles sont remplies, seuls les échanges intervenus entre ces dates sont comptabilisés. Les parcours qui n'ont pas reçu d'échange entre ces deux dates sont alors regroupés dans une colonne vide.
Lorsqu'un parcours comporte plusieurs types d'échange, il est comptabilisé en regard de chaque type d'échange qu'il contient.
#### Grouper les parcours par urgence
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/EmergencyAggregator.php-->
Groupe les parcours selon qu'ils sont urgents, ou non.
#### Grouper les parcours par zone géographique
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/GeographicalUnitStatAggregator.php-->
Groupe les parcours par zone géographique.
La localisation de l'adresse du parcours doit être indiquée: il peut s'agir soit d'une adresse temporaire qu'une localisation auprès d'une adresse d'un usager.
Seules les adresses géolocalisées sont prises en compte. Les adresses sont géolocalisées lorsqu'elles sont choisies parmi les adresses de référence. Lorsque seul le code postal est choisi parmi les suggestions, alors l'adresse est géolocalisée à l'intérieur de la zone géographique du code postal, de manière aléatoire.
La date de prise en compte de l'adresse doit également être indiquée en paramètre. Il s'agira alors de l'adresse temporaire valable sur le parcours à la date indiquée, ou l'adresse de l'usager à la date indiquée (il faut également qu'il ait été désigné comme "localisant" le parcours à la date indiquée).
**Relation un-à-plusieurs**: Si plusieurs couches géographiques sont indiquées, alors un regroupement (et donc une nouvelle ligne de résultat) est créée pour chaque zone du niveau géographique indiqué. Cela veut dire que si plusieurs couches géographiques se superposent, l'usager sera comptabilisée dans chacune d'elle.
Exemple: si les deux couches "région" et "commune" sont cochées; les adresses sont localisées à la fois au niveau communal, et au niveau régional. DAns les résultats de l'export, chaque usager sera comptabilisé une première fois dans la couche "commune" et une autre fois dans la couche région.
::: {.info}
L'association entre les zones géographiques et les adresses est une opération couteuse, en termes informatique. Dès lors, cette association est calculée une fois par nuit.
En conséquence, l'association entre la zone géographique et les adresses du jour ne sera pas disponible.
:::
#### Grouper les parcours par évaluation
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/EvaluationAggregator.php-->
Groupe les parcours selon la présence de types d'évaluation au sein des actions du parcours.
**Relation un-à-plusieurs**: Si un parcours comporte plusieurs types d'évaluation, il est comptabilisé une fois en regard de chaque type d'évaluation. Si plusieurs types évaluations identiques sont associés au même parcours, le parcours n'est comptabilisé qu'une seule fois.
#### Grouper les parcours selon la nature du demandeur
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/RequestorAggregator.php-->
Regroupe les parcours selon le demandeur:
- soit il s'agit d'un usager concerné par le parcours;
- ou d'un usager non concerné par le parcours;
- ou d'un tiers;
- ou aucun demandeur n'est renseigné.

View File

@ -0,0 +1,18 @@
### Filtres et regroupements liés aux actions d'accompagnements
<!-- cette page est temporairement enlevée du résultat, l'ajouter dans build-pandoc.sh -->
#### Filtrer les actions par tiers traitant
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HandlingThirdPartyFilter.php-->
Filtre les actions selon le tiers traitant indiqué dans l'interface.
Seules les actions qui comportent le tiers sélectionné sont comptabilisés dans les résultats.
#### Grouper les actions par tiers traitant
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/SocialWorkAggregators/HandlingThirdPartyAggregator.php-->
Comptabilise les actions selon le tiers traitant indiqué dans l'interface.

View File

@ -0,0 +1,10 @@
### Regroupements liés aux évaluations
<!-- cette page est temporairement enlevée du résultat, l'ajouter dans build-pandoc.sh -->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/ByEndDateAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/ByMaxDateAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/ByStartDateAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/EvaluationTypeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/EvaluationAggregators/HavingEndDateAggregator.php-->

298
user/exports_activity.md Normal file
View File

@ -0,0 +1,298 @@
### Exports relatifs aux échanges
Les échanges peuvent être créés:
- dans un parcours;
- dans un dossier d'usager.
Les possibilités d'exports séparent les échanges créés dans un dossier d'usager de ceux créés dans un dossier de parcours.
#### Échanges liés à un parcours
- Nombre d'échanges
- Somme de la durée des échanges
- Somme de la durée de déplacement des échanges
- Moyenne de la durée des échanges
- Moyenne de la durée de déplacement des échanges
- Liste des échanges liés à un parcours
#### Échanges liés à un usager
- Nombre d'échanges
- Durée des échanges
- Liste des échanges
### Filtres liés aux échanges
#### Filtrer les échanges par action liée
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialActionFilter.php-->
Ce filtre n'apparait que dans les exports des échanges liés aux parcours d'accompagnement.
Ce filtre permet d'indiquer des types d'action d'accompagnement. Seuls les échanges qui sont associés à au moins une de ces actions d'accompagnement sont pris en compte.
#### Filtrer les échanges par créateur de l'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ByCreatorFilter.php-->
Ce filtre permet de filtrer les échanges par créateur de l'échange.
Il permet de sélectionner une liste d'utilisateurs.
Si un échange a été créé par un de ces utilisateurs, il est pris en compte.
#### Filtrer les échanges par date
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ActivityDateFilter.php-->
Ce filtre permet de filtrer les échanges par date: il permet d'indiquer deux dates: une date de début, et une date de fin. Seuls les échanges ayant eu lieu entre ces deux dates sont pris en compte.
#### Filtrer les échanges par envoyé / reçu
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/SentReceivedFilter.php-->
Ce filtre permet de filtrer les changes par le champ Envoyé/Reçu.
Ce champ n'est accessible qu'à certains types d'échange, en fonction de la configuration effectuée par des administrateurs fonctionnels.
#### Filtrer les échanges par localisation
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/LocationFilter.php-->
Ce filtre permet de filtrer les échanges par localisation.
Seuls les échanges qui ont été associé à cette localisation sont pris en compte.
#### Filtrer les échanges par métier d'au moins un utilisateur participant
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/UsersJobFilter.php-->
Ce filtre permet de filtrer les échanges: seuls les échanges dont un des utilisateurs participants est associé au métier sélectionné sont pris en compte.
Le métier doit être associé à l'utilisateur à la date de l'échange.
Le filtre prend en compte tous les utilisateurs ajoutés dans les "parties concernées" de l'échange.
L'échange est pris en compte dès qu'un utilisateur dans les "parties concernées" est associé à l'un des métiers demandés.
#### Filtrer les échanges par métier du créateur de l'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/CreatorJobFilter.php -->
Filtre les échanges par métier du créateur de l'échange.
Le métier doit être associé à l'utilisateur à la date de l'échange.
#### Filtrer les échanges par problématique liée
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/BySocialIssueFilter.php-->
Ce filtre n'apparait que dans les exports des échanges liés aux parcours d'accompagnement.
Ce filtre permet de filtrer les échanges par problématique liée.
Seuls les échanges associés à au moins une problématique liée sont pris en compte.
#### Filtrer les échanges par service du créateur de l'échange
Ce filtre permet de filtrer les échanges par service du créateur de l'échange.
Lorsqu'un utilisateur change de service au cours du temps, le service associé à l'utilisateur au moment de l'échange est pris en compte.
#### Filtrer les échanges par service d'au moins un utilisateur participant
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/UsersScopeFilter.php-->
Ce filtre permet de filtrer les échanges: seuls les échanges dont un des utilisateurs participants est associé au service sélectionné sont pris en compte.
Le service doit être associé à l'utilisateur à la date de l'échange.
Le filtre prend en compte tous les utilisateurs ajoutés dans les "parties concernées" de l'échange.
L'échange est pris en compte dès qu'un utilisateur dans les "parties concernées" est associé à l'un des service demandés.
#### Filtrer les échanges par sujet
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/PersonFilters/ActivityReasonFilter.php-->
Ce filtre permet de filtrer les échanges par sujet.
Seuls les échanges qui comportent au moins un des sujets choisis sont pris en compte.
Le sujet est en champ activé par la configuration de l'instance.
#### Filtrer les échanges par type
Ce filtre permet de filtrer les échanges par type. Un formulaire permet de sélectionner les types d'échanges à prendre en compte.
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ActivityTypeFilter.php-->
#### Filtrer les échanges par type de localisation
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ACPFilters/ActivityTypeFilter.php-->
Ce filtre permet de fitlrer les échanges associés à une localisation d'un certain type.
#### Filtrer les échanges par urgence
Ce filtre permet de filtrer les échanges par urgence.
L'urgence est un champ qui n'apparait qu'en fonction de la configuration de l'instance.
#### Filtrer les échanges par usager participant
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/PersonsFilter.php -->
Filtre les échanges sur base des usagers participants.
Un échange est comptabilisé à partir du moment où il compte un des usagers indiqué dans la configuration du filtre; autrement dit: les échanges qui comportent au moins un des usagers indiqués sont pris en compte. Il n'est donc pas nécessaire que l'échange comporte **tous** les usagers indiqués dans le filtre.
#### Filtrer les échanges par utilisateur participant
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ActivityUsersFilter.php-->
Ce filtre permet de filtrer les échanges par utilisateurs.
Seuls les échanges qui comportent au moins un de ces utilisateurs dans les "utilisateurs concernés" sont pris en compte. Autrement dit: il n'est donc pas nécessaire que l'échange soit associé à **tous** les utilisateurs.
#### Filtrer les échanges par utilisateur principal
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/ActivityUsersFilter.php-->
Ce filtre permet de filtrer les échanges par utilisateur principal.
Le champ "utilisateur principal" n'apparait que pour certains types d'échange, en fonction de la configuration de l'instance.
### Regroupements liés aux échanges
#### Grouper les échanges par action liée
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialActionAggregator.php -->
Groupe les échanges par action sociale liée à l'échange.
**Relation un-à-plusieurs**: Lorsqu'un échange est lié à plusieurs actions sociales, alors l'échange est comptabilisée une seule fois en regard de chaque type d'action.
#### Grouper les échanges par créateur de l'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByCreatorAggregator.php-->
Groupe les échanges par l'utilisateur ayant créé l'échange.
#### Grouper les échanges par date
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/DateAggregator.php-->
Groupe les échanges par date.
Les dates des échanges peuvent être retroupées par mois, année ou semaine. Dans ce dernier cas, la numérotation de la semaine est calculée en suivant la norme ISO 8601[^iso8601week]. Les regroupements par mois ou semaine sont préfixés par l'année correspondante.
[^iso8601week]: Voir <https://fr.wikipedia.org/wiki/Num%C3%A9rotation_ISO_des_semaines>
#### Grouper les échanges par envoyé / reçu
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/SentReceivedAggregator.php-->
Groupe les échanges selon le champ envoyé / reçu indiqué dans l'échange.
#### Grouper les échanges par localisation de l'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityLocationAggregator.php-->
Groupe les échanges par nom de la localisation de l'échange.
Les localisations qui possèdent le même nom sont regroupées ensemble.
#### Grouper les échanges par métier des utilisateurs participants
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUsersJobAggregator.php-->
Groupe les échanges par métier des utilisateurs participants, ajoutés dans les "parties concernées" de l'échange.
Le métier pris en compte est celui associé à l'utilisateur à la date de l'échange.
**Relation un-à-plusieurs**: lorsque plusieurs utilisateurs participent à l'échange, l'échange est comptabilisé une seule fois par métier de chaque utilisateur. Si plusieurs utilisateurs participant comportent le même métier, l'échange n'est donc comptabilisé qu'une seule fois.
#### Grouper les échanges par métier du créateur de l'échange
Groupe les échanges par métier du créateur de l'échange.
Le métier pris en compte est celui associé à l'utilisateur à la date de l'échange.
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/CreatorScopeAggregator.php -->
#### Grouper les échanges par problématique liée
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialIssueAggregator.php-->
Groupe les échanges par problématique sociale associée à l'échange.
**Relation un-à-plusieurs**: lorsqu'un échange est associée à plusieurs problématiques, il est comptabilisé une fois en regard de chaque problématique.
#### Grouper les échanges par référent
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUserAggregator.php-->
Groupe les échanges par le référent de l'échange (l'utilisateur principal).
#### Grouper les échanges par service du créateur de l'échange
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/CreatorScopeAggregator.php-->
Groupe les échange par service du créateur de l'échange.
Le service pris en compte est celui du créateur de l'échange à la date de l'échange.
#### Grouper les échanges par tiers impliqué
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByThirdpartyAggregator.php-->
Groupe les échanges par tiers impliqué dans les "usagers concernés" de l'échange.
**Relation un-à-plusieurs**: lorsque plusieurs tiers participent à l'échange, l'échange est comptabilisé une fois pour chaque tiers.
#### Grouper les échanges par type
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityTypeAggregator.php-->
Groupe les échanges par type d'échange.
#### Grouper les échanges par type de localisation
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/LocationTypeAggregator.php-->
Groupe les échanges par type de localisation associé à l'échange.
#### Grouper les échanges par usager participant
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/PersonsAggregator.php -->
Groupe les échanges par usager participant à l'échange.
**Relation un-à-plusieurs**: Les échanges sont comptabilisés une fois en regard de chaque usager.
Ce regroupement a pour effet de ne pas faire apparaitre les échanges qui ne comptent pas de participants.
#### Grouper les échanges par utilisateurs participants
Groupe les échanges par utilisateurs participant.
**Relation un-à-plusieurs**: Les échanges sont comptabilisés une fois en regard de chaque utilisateur participant.
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUsersAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUsersScopeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/PersonAggregators/ActivityReasonAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityDuration.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/AvgActivityVisitDuration.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/CountActivity.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/ListActivity.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityDuration.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToACP/SumActivityVisitDuration.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/CountActivity.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/ListActivity.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/StatActivityDuration.php-->

View File

@ -0,0 +1,17 @@
### Filtres et regroupements liés aux activités annexes
<!-- cette page est temporairement enlevée du résultat, l'ajouter dans build-pandoc.sh -->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Aggregator/ByActivityTypeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Aggregator/ByUserJobAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Aggregator/ByUserScopeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Export/AvgAsideActivityDuration.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Export/CountAsideActivity.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Export/ListAsideActivity.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Export/SumAsideActivityDuration.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Filter/ByActivityTypeFilter.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Filter/ByDateFilter.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Filter/ByUserFilter.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Filter/ByUserJobFilter.php-->
<!-- PHPFILE: src/Bundle/ChillAsideActivityBundle/src/Export/Filter/ByUserScopeFilter.php-->

21
user/exports_calendar.md Normal file
View File

@ -0,0 +1,21 @@
### Regroupements liés aux rendez-vous
<!-- cette page est temporairement enlevée du résultat, l'ajouter dans build-pandoc.sh -->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/AgentAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/CancelReasonAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/JobAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/LocationTypeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/MonthYearAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/ScopeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Aggregator/UrgencyAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Export/CountCalendars.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Export/StatCalendarAvgDuration.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Export/StatCalendarSumDuration.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Filter/AgentFilter.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Filter/BetweenDatesFilter.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Filter/CalendarRangeFilter.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Filter/JobFilter.php-->
<!-- PHPFILE: src/Bundle/ChillCalendarBundle/Export/Filter/ScopeFilter.php-->

View File

@ -0,0 +1,7 @@
### Regroupements liés aux ménages
<!-- cette page est temporairement enlevée du résultat, l'ajouter dans build-pandoc.sh -->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/HouseholdAggregators/ChildrenNumberAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/HouseholdAggregators/CompositionAggregator.php-->

210
user/exports_person.md Normal file
View File

@ -0,0 +1,210 @@
### Exports liés aux usagers
- nombre d'usagers;
- nombre d'usagers concernés par un parcours;
- liste des usagers;
- liste des usagers ayant un parcours d'accompagnement;
- liste des usagers concernés avec le détail de chaque parcours;
- liste des doublons.
### Filtres liés aux usagers
#### Filtrer les usagers ayant été associés à un échange au cours de la période
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Filter/PersonFilters/PersonHavingActivityBetweenDateFilter.php-->
Ce filtre permet de filtrer les usagers: seuls les usagers ayant eu un échange au cours de la période indiquée sont pris en compte.
De plus, si la liste des sujets d'échanges de ce filtre comporte au moins un élément, ce sujet doit avoir été associé à l'échange. Si la liste ne comporte aucun sujet coché, alors cette deuxième condition n'est pas ajoutée.
#### Filtrer les usagers par comparaison avec l'adresse de référence
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/AddressRefStatusFilter.php-->
Ce filtre permet de détecter les usagers dont l'adresse n'est plus synchronisée avec l'adresse de référence.
Chill maintient à jour une liste d'adresses de référence, qui sont proposées lors de la saisie d'une adresse. Cette liste est régulièrement mise à jour, et cela peut amener à ce que des adresses de référence soient changées: re-numérotation de la rue, modification du code postal, etc.
Ces modifications apparaissent dans l'interface, et les utilisateurs peuvent choisir d'appliquer la modification (et donc la nouvelle adresse de référence) ou de conserver l'adresse actuelle sans appliquer la modification.
Ce filtre permet de filtrer les usagers en comparant l'adresse de leur ménage et l'adresse de référence qui a été utilisée lors de la création. Seuls les usagers dont l'adresse:
- soit diffère de l'adresse de référence utilisée lors de la création;
- soit diffère de l'adresse de référence utilisée lors de la création, mais dont l'usager a choisi de conserver la forme précédente;
- soit est identique à l'adresse de référence utilisée lors de la création (ce qui est le cas de la plupart des adresses).
#### Filtrer les usagers par composition de ménage
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ByHouseholdCompositionFilter.php-->
Ce filtre permet de filtrer les usagers par composition de ménage.
L'historique de l'appartenance d'un usager à un ménage est enregistrée, de même que l'historique des compositions de ménage. Une date de calcul est introduite: elle permet de calculer la composition du ménage à la date donnée.
Seuls les usagers qui appartiennent à un ménage dont la composition est indiquée, et que la composition est également valable à la date indiquée pour le ménage, sont pris en compte.
#### Filtrer les usagers par date de décès
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/DeathdateFilter.php-->
Ce filtre permet de filtrer les usagers en fonction de leur date de décès.
#### Filtrer les usagers par date de naissance
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/BirthdateFilter.php-->
Ce filtre permet de filtrer les usagers en fonction de leur date de naissance.
#### Filtrer les usagers par genre
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/GenderFilter.php-->
Ce filtre permet de filtrer les usagers par genre.
#### Filtrer les usagers par nationalité
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/NationalityFilter.php-->
Ce filtre permet de filtrer les usagers par nationalité.
#### Filtrer les usagers par zone géographique (sur base de l'adresse)
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/GeographicalUnitFilter.php-->
Ce filtre permet de filtrer les usagers sur base de zones géographiques.
Seules les adresses géolocalisées sont prises en compte. Les adresses sont géolocalisées lorsqu'elles sont choisies parmi les adresses de référence. Lorsque seul le code postal est choisi parmi les suggestions, alors l'adresse est géolocalisée à l'intérieur de la zone géographique du code postal, de manière aléatoire.
Une date de calcul permet de ne choisir que les adresses valables à la date donnée.
::: {.info}
L'association entre les zones géographiques et les adresses est une opération couteuse, en termes informatique. Dès lors, cette association est calculée une fois par nuit.
En conséquence, l'association entre la zone géographique et les adresses du jour ne sera pas disponible.
:::
#### Filtrer les usagers par âge
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/AgeFilter.php-->
Ce filtre permet de filtrer les usagers sur base de leur âge.
Deux paramètres permettent d'indiquer un âge minimum et un âge maximum. Une date de calcul de l'âge est également disponible en paramètre.
Seuls les usagers dont l'âge est compris entre l'âge minimum et l'âge maximum, à la date de calcul indiqué en paramètre, seront pris en compte.
#### Filtrer les usagers par état matrimonial
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/MaritalStatusFilter.php-->
Seuls les usagers associés à l'état matrimonial indiqué en paramètre seront pris en compte.
#### Filtrer les usagers qui ont une addresse de résidence chez un autre usager
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtUserFilter.php-->
Seuls les usagers qui ont une adresse de résidence auprès d'une autre usagers sont pris en compte. Cette adresse de résidence doit être valable à la date indiquée en paramètre.
#### Filtrer les usagers qui ont une addresse de résidence chez un tiers
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/ResidentialAddressAtThirdpartyFilter.php-->
Seuls les usagers qui ont une adresse de résidence auprès d'un tiers sont pris en compte. Cette adresse de résidence doit être valable à la date indiquée en paramètre, et le tiers doit être associée à au moins une catégorie de tiers également indiqué en paramètre.
#### Filtrer les usagers qui sont décédés ou vivants à une certaine date
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/DeadOrAliveFilter.php-->
Seuls les usagers décédés ou vivant à la date donnée sont pris en compte.
La date de naissance et la date de décès de la fiche usager sont pris en compte.
#### Filtrer les usagers sans composition de ménage (ni ménage)
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/WithoutHouseholdComposition.php-->
Seuls les usagers sans composition de ménage sont pris en compte par ce filtre. Les usagers qui n'ont pas de ménage sont également repris.
La date de calcul permet de choisir le ménage à la date indiquée en paramètre.
### Regroupements liés aux usagers
#### Grouper les usagers par composition familiale
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/ByHouseholdCompositionAggregator.php-->
Ce regroupement permet de grouper les usagers par composition familiale.
Une date de calcul est indiquée en paramètre: la composition familiale est indiquée à la date donnée.
#### Grouper les usagers par genre
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/GenderAggregator.php-->
Ce regroupement permet de grouper les usagers par genre.
#### Grouper les usagers par nationalité
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/NationalityAggregator.php-->
Ce regroupement permet de grouper les usagers par nationalité.
#### Grouper les usagers par pays de naissance
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/CountryOfBirthAggregator.php-->
Ce regroupement permet de grouper les usagers par pays de naissance.
#### Grouper les usagers par position dans le ménage
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/HouseholdPositionAggregator.php-->
Ce regroupement permet de grouper les usagers par position dans le ménage.
Une date de calcul est indiquée en paramètre: la position valable à la date indiquée sera utilisée.
#### Grouper les usagers par centre
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/CenterAggregator.php-->
Ce regroupement demande une date en paramètre.
Ce regroupement permet de classer les indicateurs par centre de l'usager. Le centre pouvant évoluer au cours du temps, il est calculé au moment de la date indiquée en paramètre.
Il peut arriver que les usagers concernés par un parcours, ou les usagers associés à un échange ou un rendez-vous appartiennent à différents centres. Lorsque c'est le cas, le parcours ou l'échange sera comptabilisé une fois dans chaque centre.
#### Grouper les usagers par zone géographique (sur base de l'adresse)
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/GeographicalUnitAggregator.php-->
Ce regroupement permet de grouper les usagers par zone géographique.
Seules les adresses géolocalisées sont prises en compte. Les adresses sont géolocalisées lorsqu'elles sont choisies parmi les adresses de référence. Lorsque seul le code postal est choisi parmi les suggestions, alors l'adresse est géolocalisée à l'intérieur de la zone géographique du code postal, de manière aléatoire.
L'adresse utilisée est celle valable à la date indiquée en paramètre.
**Relation un-à-plusieurs**: Si plusieurs couches géographiques sont indiquées, alors un regroupement (et donc une nouvelle ligne de résultat) est créée pour chaque zone du niveau géographique indiqué. Cela veut dire que si plusieurs couches géographiques se superposent, l'usager sera comptabilisée dans chacune d'elle.
Exemple: si les deux couches "région" et "commune" sont cochées; les adresses sont localisées à la fois au niveau communal, et au niveau régional. DAns les résultats de l'export, chaque usager sera comptabilisé une première fois dans la couche "commune" et une autre fois dans la couche région.
::: {.info}
L'association entre les zones géographiques et les adresses est une opération couteuse, en termes informatique. Dès lors, cette association est calculée une fois par nuit.
En conséquence, l'association entre la zone géographique et les adresses du jour ne sera pas disponible.
:::
#### Grouper les usagers par âge
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/AgeAggregator.php-->
Regroupe les usagers par âge.
Une date de calcul est indiquée en paramètre: l'âge des usagers est calculé par rapport à la date indiquée.
#### Grouper les usagers par état matrimonial
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/MaritalStatusAggregator.php-->
Regroupe les usagers par état matrimonial.

7
user/homepage.md Normal file
View File

@ -0,0 +1,7 @@
```{=latex}
\includepdf[pages=-]{cover-user.pdf}
\newpage
```

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

Binary file not shown.

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

Binary file not shown.

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.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
user/img/choisir-une-adresse.png (Stored with Git LFS) Normal file

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
user/img/fr_person_2811_residential-address_list.png (Stored with Git LFS) Normal file

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

BIN
user/img/logo-chill-outil-accompagnement.svg (Stored with Git LFS) Normal file

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More