Compare commits

...

34 Commits

Author SHA1 Message Date
625fd8b432 Fix typo
Some checks failed
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 3m25s
continuous-integration/drone/push Build is failing
2025-07-07 10:11:25 +02:00
nobohan
f8b61c8238 Correction typo + détail adresse pour template parcours
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m24s
2025-07-01 15:03:49 +02:00
ab18192529 Enhance Git LFS handling in MKDocs Docker workflow
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m27s
2025-07-01 10:22:26 +02:00
0eaddce399 Clean up redundant VCS mapping in IDEA configuration 2025-07-01 10:22:21 +02:00
fd13038b2f Enable Git LFS support in checkout step of MKDocs Docker workflow
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Failing after 2m33s
2025-07-01 10:16:31 +02:00
500cc24618 idea config 2025-07-01 10:16:24 +02:00
beab98d36e Remove debug content
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m21s
2025-06-30 23:39:54 +02:00
7a021838f1 Transforme les divs de pandoc en admonition
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m18s
2025-06-30 23:36:44 +02:00
95dadee345 Add links to dedicated sections in generation-document
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m8s
add link to the dedicated section

add link to the dedicated section
2025-06-30 22:25:35 +02:00
4c330d7b87 Publier la documentation de Chill en ligne après chaque mise à jour (#14)
Some checks failed
continuous-integration/drone/push Build is failing
Build and Push MkDocs Docker Image / build-and-push (push) Successful in 2m40s
Reviewed-on: #14
Co-authored-by: Julien Fastré <julien.fastre@champs-libres.coop>
Co-committed-by: Julien Fastré <julien.fastre@champs-libres.coop>
2025-06-30 16:16:24 +00:00
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
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
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
133 changed files with 2281 additions and 384 deletions

View File

@@ -0,0 +1,103 @@
name: Build and Push MkDocs Docker Image
on:
push:
branches:
- main
- master
paths:
- 'Dockerfile'
- 'user/**'
- 'admin/**'
- '.gitea/workflows/**'
workflow_dispatch:
jobs:
build-and-push:
runs-on: cth-ubuntu-latest
env:
REGISTRY: ${{ vars.REGISTRY }}
IMAGE: ${{ vars.IMAGE }}
IMAGE_NAME: ${{ vars.REGISTRY }}/${{ vars.IMAGE }}:${{ github.sha }}
KUBE_CA: ${{ vars.KUBE_CA }}
KUBE_SERVER: ${{ vars.KUBE_SERVER }}
REGISTRY_USERNAME: ${{ vars.REGISTRY_USERNAME }}
NAMESPACE: ${{ vars.NAMESPACE }}
DEPLOYMENT_NAME: ${{ vars.DEPLOYMENT_NAME }}
CONTAINER: ${{ vars.CONTAINER }}
steps:
- name: Checkout code
uses: https://github.com/actions/checkout@v4
with:
persist-credentials: 'true' # Optional; should be the default
- name: Checkout lfs
run: |
git lfs install --local
AUTH=$(git config --local http.${{ github.server_url }}/.extraheader)
git config --local --unset http.${{ github.server_url }}/.extraheader
git config --local http.${{ github.server_url }}/${{ github.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH"
git lfs pull
- name: Set up Docker Buildx
uses: https://github.com/docker/setup-buildx-action@v3
- name: Log in to Docker registry
uses: https://github.com/docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build and push
id: build-push
uses: https://github.com/docker/build-push-action@v5
with:
context: .
file: Dockerfile
push: true
tags: '${{ env.IMAGE_NAME }}'
- name: Install kubectl
run: |
curl -LO "https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
- name: Set up kubeconfig
env:
KUBE_SERVER: ${{ env.KUBE_SERVER }} # e.g. https://<API_ENDPOINT>
KUBE_CA: ${{ env.KUBE_CA }} # base64 encoded, or fetched via kubectl config view
KUBE_TOKEN: ${{ secrets.KUBE_TOKEN }} # Token generated via 'kubectl create token'
run: |
mkdir -p ~/.kube
cat <<EOF > ~/.kube/config
apiVersion: v1
kind: Config
clusters:
- name: default-cluster
cluster:
server: "$KUBE_SERVER"
certificate-authority-data: "$KUBE_CA"
contexts:
- name: default-context
context:
cluster: default-cluster
user: gitea-actions
current-context: default-context
users:
- name: gitea-actions
user:
token: "$KUBE_TOKEN"
EOF
- name: Patch Deployment Image
env:
NAMESPACE: ${{ env.NAMESPACE }}
DEPLOYMENT: ${{ env.DEPLOYMENT_NAME }}
CONTAINER: ${{ env.CONTAINER }}
run: |
echo "deploy new tag: $TAG_IMAGE"
kubectl -n ${NAMESPACE} set image deployment/${DEPLOYMENT} ${CONTAINER}=${IMAGE_NAME}

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
build/*
*-manual.pdf
.venv/

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

10
.idea/manuals.iml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="TemplatesService">
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/pandoc/cl/templates" />
</list>
</option>
</component>
</module>

7
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.10 (manuals)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (manuals)" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/manuals.iml" filepath="$PROJECT_DIR$/.idea/manuals.iml" />
</modules>
</component>
</project>

8
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/pandoc/cl" vcs="Git" />
<mapping directory="$PROJECT_DIR$/pandoc/template" vcs="Git" />
</component>
</project>

1
CODEOWNERS Normal file
View File

@@ -0,0 +1 @@
.gitea/workflows/.* @julienfastre @juminet @LenaertsJ

29
Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# -------- Stage 1: Build the documentation using mkdocs --------
FROM python:3.13-slim AS builder
# add pandoc to image
COPY --from=pandoc/minimal:3 /usr/local/bin/pandoc /usr/local/bin/pandoc
RUN chmod +x /usr/local/bin/pandoc
WORKDIR /build
# Install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY mkdocs/ mkdocs/
COPY pandoc/filters pandoc/filters
COPY user/ user/
COPY admin/ admin/
RUN cd user && mkdocs build --clean && cd ..
RUN cd admin && mkdocs build --clean && cd ..
# -------- Stage 2: Serve the built documentation with nginx --------
FROM nginx:alpine
# Copy the built site from the builder stage
COPY --from=builder /build/admin/site /usr/share/nginx/html/admin
COPY --from=builder /build/user/site /usr/share/nginx/html/user

1
admin/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
site/*

View File

@@ -1,4 +1,3 @@
# Génération de documents
L'administrateur fonctionnel prépare la génération des documents.
@@ -50,7 +49,7 @@ Le document est préparé de manière habituelle: le texte y est écrit, le logo
Le travail de préparation consiste à préciser les endroits où ces informations doivent être insérées: des champs spécifiques.
::: .note
::: {.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.
@@ -139,16 +138,16 @@ 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
## Variables par contexte
### Pour tous les contextes { #sec:gendoc:champs-documents }
### Pour tous les contextes { #sec:gendoc-champs-documents }
#### Variables
#### Variables { #sec:entity-variables-all-context }
* `creator`: (User) le créateur;
* `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.
* `creator`: ([User](#sec:entity-user)) le créateur;
* `createdAt` ([Date](#sec:entity-date)): la date et l'heure de création;
* `createdAtDate` ([Date](#sec:entity-date)): la date de la création (sans l'heure). Utilisable pour indiquer la date d'un courrier, par exemple;
* `location` ([Location](#sec:entity-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
@@ -159,15 +158,17 @@ Les administrateurs fonctionnels peuvent activer les paramètres suivants:
* un champ "usager 1", qui permet ensuite à l'utilisateur de choisir un usager parmi ceux concernés par le parcours, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
* un champ "usager 2", qui permet aux utilisateurs de choisir un deuxième usager parmis ceux concernés par le parcours, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
* un champ "usager principal du parcours", qui permet, cette fois, de choisir parmi les usagers concernés par le parcours, les interlocuteurs privilégiés qui sont des usagers (à l'exclusion des tiers), et les personnes ressources associées à un usager concerné du parcours (à l'exclusion des ressources tiers et "texte libre");
* un champ "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);
#### Variables
#### Variables { #sec:entity-variables-accompanying-period }
Le document présente:
* 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 `course`, de type [`AccompanyingPeriod`](#sec:entity-accompanyingperiod);
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type [`Person`](#sec:entity-user), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type [Person](#sec:entity-user), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type [Person](#sec:entity-user), avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-thirdparty), uniquement si l'administrateur fonctionnel l'a configuré.
### Document générés pour un parcours, contexte "liste des activités"
@@ -175,36 +176,38 @@ Le contexte présente les mêmes variables et paramètre que les documents gén
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.
* `activities` (liste de [Activity](#sec:entity-activity)): Liste d'activités, variant "light". Aucun filtre n'est appliqué sur les échanges récupérés.
### Document générés pour une évaluation
Le document présente:
* 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 `evaluation` de type [`AccompanyingPeriodWorkEvaluation`](#sec:entity-accompanyingperiodworkevaluation): l'évaluation concernée;
* une variable `work` de type [`AccompanyingPeriodWork`](#sec:entity-accompanyingperiodwork): l'action d'accompagnement au sein de laquelle l'évaluation est générée;
* une variable `course`, de type [`AccompanyingPeriod`](#sec:entity-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`](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-thirdparty), uniquement si l'administrateur fonctionnel l'a configuré.
### Document générés pour un échange
Le document présente:
* 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.
* une variable `activity`, de type [`Activity`](#sec:entity-activity): l'évaluation concernée
* une variable `course`, de type [`AccompanyingPeriod`](#sec:entity-accompanyingperiod): le parcours concerné, à condition que l'échange ait été créé dans un contexte parcours
* une variable `person`, de type [`Person`](#sec:entity-person): la personne concernée, à condition que l'échange ait été créée dans un contexte d'usager.
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).
* 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`;
* si `usager principal du parcours` est coché, une variable `mainPerson`, de type [`Person`](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 1` est coché, une variable `person1`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* si `usager 2` est coché, une variable `person2`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
### Documents générés dans le dossier d'une personne: contexte "personne basique"
* une variable `person`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`.
* une variable `person`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`;
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-thirdparty), uniquement si l'administrateur fonctionnel l'a configuré.
### Documents générés dans le dossier d'une personne: contexte "personne avec un tiers"
@@ -214,155 +217,155 @@ Cela peut être utile pour, par exemple, générer un courrier vers un tiers dé
Les variables disponibles sont les suivantes:
* une variable `person`, de type `Person`, avec les variants `relations`, `household` (ménage) et `budget`.
* une variable `thirdParty`, de type `ThirdParty`;
* une variable `person`, de type [Person](#sec:entity-person), avec les variants `relations`, `household` (ménage) et `budget`.
* une variable `thirdParty`, de type [`ThirdParty`](#sec:entity-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.
* une variable `calendar` ([Calendar](#sec:entity-calendar)), qui contient les données du rendez-vous;
* une variable `mainPerson` ([Person](#sec:entity-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](#sec:entity-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)
### AccompanyingPeriod (Parcours) { #sec:entity-accompanyingperiod }
* `id` (texte): l'identifiant du parcours
* `type` (texte): toujours égal à `accompanying_course`
* `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;
* `closingDate` ([Date](#sec:entity-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;
* `createdAt` ([Date](#sec:entity-date)): date de création;
* `createdBy` ([User](#sec:entity-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;
* `origin` ([AccompanyingPeriodOrigin](#sec:entity-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;
* `participations` (liste de [AccompanyingPeriodParticipation](#sec:entity-accompanyingperiodparticipation)): les participations du parcours, actuelles **et anciennes**;
* `currentParticipations` (liste de [AccompanyingPeriodParticipation](#sec:entity-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;
* `requestorPerson` ([Person](#sec:entity-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;
* `requestorThirdParty` ([ThirdParty](#sec:entity-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;
* `resources` (liste de [AccompanyingPeriodResource](#sec:entity-accompanyingperiodresource)): les ressources du parcours;
* `scopes` (liste de [Scope](#sec:entity-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;
* `socialIssues` (liste de [SocialIssue](#sec:entity-socialissue)): 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;
* `closingMotive` ([ClosingMotive](#sec:entity-closingmotive)): motif de clotûre
* `ref` ([User](#sec:entity-user)): référent du parcours;
* `hasRef` (bool): `true` si un référent est désigné;
* `hasLocation` (bool): `true` si un parcours a une localisation;
* `hasLocationPerson` (bool): `true` si un parcours a une localisation auprès d'un personne. `false` si c'est une localisation temporaire;
* `location` (Adresse): l'adresse de localisation du parcours
* `locationPerson` (Person): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
* `administrativeLocation` (Location): localisation administrative du parcours;
* `location` ([Address](#sec:entity-address)): l'adresse de localisation du parcours
* `locationPerson` ([Person](#sec:entity-person)): l'utilisateur qui localise le parcours (s'il y en a un, peut être vide);
* `administrativeLocation` ([Location](#sec:entity-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é;
* `works` (liste de [AccompanyingPeriodWork](#sec:entity-accompanyingperiodwork)): liste des actions d'accompagnement créées dans le cadre de ce parcours;
* `comments` (liste de [AccompanyingPeriodComment](#sec:entity-accompanyingperiodcomment)): liste des commentaires;
* `pinnedComment` ([AccompanyingPeriodComment](#sec:entity-accompanyingperiodcomment)): commentaire épinglé;
### AccompanyingPeriodComment (Commentaire du parcours)
### AccompanyingPeriodComment (Commentaire du parcours) { #sec:entity-accompanyingperiodcomment }
* `id` (int): identifiant
* `content` (texte): contenu du commentaire
* `createdAt` (Date): date de création
* `creator` (User): Créateur du commentaire
* `createdAt` ([Date](#sec:entity-date)): date de création
* `creator` ([User](#sec:entity-user)): Créateur du commentaire
### AccompanyingPeriodOrigin (Origine du parcours)
### AccompanyingPeriodOrigin (Origine du parcours) { #sec:entity-accompanyingperiodorigin }
* `id` (int): identifiant;
* `label` (texte): libellé de l'origine;
### AccompanyingPeriodParticipation (Participation à un parcours)
### AccompanyingPeriodParticipation (Participation à un parcours) { #sec:entity-accompanyingperiodparticipation }
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;
* `person` ([Person](#sec:entity-person)): usager associé au parcours;
* `startDate` ([Date](#sec:entity-date)): date de début;
* `endDate` ([Date](#sec:entity-date)): date de fin. Vide si la participation est toujours en cours;
### AccompanyingPeriodResource (Interlocuteur privilégiés dans un parcours)
### AccompanyingPeriodResource (Interlocuteur privilégiés dans un parcours) { #sec:entity-accompanyingperiodresource }
* `id` (int): identifiant;
* `person` (Person): usager ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est un tiers);
* `thirdParty` (ThirdParty): tiers ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est une personne);
* `person` ([Person](#sec:entity-person)): usager ressource (vide, avec le paramètre `isNull` à `true`, si la ressource est un tiers);
* `thirdParty` ([ThirdParty](#sec:entity-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)
### AccompanyingPeriodWork (Action d'accompagnement) { #sec:entity-accompanyingperiodwork }
* `id` (texte): l'identifiant de l'action;
* `note` (texte): la note;
* `persons` (liste de Person): liste des usagers concernés par l'action
* `results` (liste de Result): liste des résultats directement associé au parcours (résultats sans objectifs)
* `socialAction` (SocialAction): type d'action sociale;
* `startDate` (Date): la date de début de l'action (vide si inexistant)
* `endDate` (Date): la date de début de l'action (vide si inexistant)
* `thirdParties` (liste de ThirdParty): les tiers associés à l'action comme tiers intervenants;
* `updatedBy` (User): utilisateur ayant fait la mise à jour;
* `updatedAt` (Date): date de mise à jour;
* `handlingThierParty` (ThirdParty): tiers traitant;
* `goals` (AccompanyingPeriodWorkGoal): objectifs
* `createdBy` (Date): date de mise à jour;
* `createdAt` (User): utilisateur ayant fait la mise à jour;
* `persons` (liste de [Person](#sec:entity-person)): liste des usagers concernés par l'action
* `results` (liste de [Result](#sec:entity-result)): liste des résultats directement associé au parcours (résultats sans objectifs)
* `socialAction` ([SocialAction](#sec:entity-socialaction)): type d'action sociale;
* `startDate` ([Date](#sec:entity-date)): la date de début de l'action (vide si inexistant)
* `endDate` ([Date](#sec:entity-date)): la date de début de l'action (vide si inexistant)
* `thirdParties` (liste de [ThirdParty](#sec:entity-thirdparty)): les tiers associés à l'action comme tiers intervenants;
* `updatedBy` ([User](#sec:entity-user)): utilisateur ayant fait la mise à jour;
* `updatedAt` ([Date](#sec:entity-date)): date de mise à jour;
* `handlingThierParty` ([ThirdParty](#sec:entity-thirdparty)): tiers traitant;
* `goals` ([AccompanyingPeriodWorkGoal](#sec:entity-accompanyingperiodworkgoal)): objectifs
* `createdBy` ([Date](#sec:entity-date)): date de mise à jour;
* `createdAt` ([User](#sec:entity-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;
* `evaluations` ([AccompanyingPeriodWorkEvaluation](#sec:entity-accompanyingperiodworkevaluation)): liste des évaluations générées;
* `referrers` (liste de [User](#sec:entity-user)): liste des agents traitants;
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement)
### AccompanyingPeriodWorkEvaluation (évaluation dans une action d'accompagnement) { #sec:entity-accompanyingperiodworkevaluation }
* `id` (texte): l'identifiant de l'évaluation;
* `type` (texte): le libellé de l'évaluation;
* `startDate` (Date): la date de début de l'évaluation;
* `startDate` ([Date](#sec:entity-date)): la date de début de l'évaluation;
* `endDate` (Date) la date de fin de l'évaluation;
* `maxDate` (Date): la date d'échéance de l'évaluation;
* `maxDate` ([Date](#sec:entity-date)): la date d'échéance de l'évaluation;
* `comment` (texte): le commentaire de l'évaluation;
* `createdBy` (User): le créateur de l'évaluation;
* `createdAt` (Date): la date de création de l'évaluation;
* `evaluation` (Evaluation): le type d'évaluation;
* `createdBy` ([User](#sec:entity-user)): le créateur de l'évaluation;
* `createdAt` ([Date](#sec:entity-date)): la date de création de l'évaluation;
* `evaluation` ([Evaluation](#sec:entity-evaluation)): le type d'évaluation;
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement)
### AccompanyingPeriodWorkGoal (objectifs et résultats d'une action d'accompagnement) { #sec:entity-accompanyingperiodworkgoal }
* `id` (texte): identifiant
* `goal` (Goal): objectif d'une action
* `results` (liste de Result): liste des résultats
* `goal` ([Goal](#sec:entity-goal)): objectif d'une action
* `results` (liste de [Result](#sec:entity-result)): liste des résultats
### Activity (échange)
### Activity (échange) { #sec:entity-activity }
* `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
* `activityType` ([ActivityType](#sec:entity-activitytype)): Type d'échange
* `attendee` ([ActivityPresence](#sec:entity-activitypresence)): Présence à l'échange
* `comment` ([Comment](#sec:entity-comment)): Commentaire (avec la date de la dernière mise à jour)
* `date` ([Date](#sec:entity-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)
* `location` ([Location](#sec:entity-location)): Lieu de l'échange
* `reasons` (liste de [ActivityReason](#sec:entity-activityreason)): Sujets de l'échange (pas utilisé en Vendée)
* `scope` ([Scope](#sec:entity-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
* `socialActions` (liste de [SocialAction](#sec:entity-socialaction)): liste d'actions sociales associées
* `socialIssues` (liste de [SocialIssue](#sec:entity-socialissue)): liste de problématiques sociales associées
* `thirdParties` (liste de [ThirdParty](#sec:entity-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.
* `user` ([User](#sec:entity-user)): l'utilisateur pour lequel l'échange a été créé;
* `users` (liste de [User](#sec:entity-user)): les utilisateurs qui sont associés à l'échange.
#### variant `light`
@@ -375,36 +378,38 @@ Ce variant comporte les mêmes attributs, avec les différences suivantes:
* le champ `reasons` n'est pas présent;
* le champ `comment` est également présenté avec le variant `light`.
### ActivityType (Type d'activité)
### ActivityReason (Sujet d'activité) { #sec:entity-activityreason }
### ActivityType (Type d'activité) { #sec:entity-activitytype }
Type d'activité.
* `id` (int): identifiant;
* `name` (texte): libellé
### ActivityPresence (Présence à l'échange)
### ActivityPresence (Présence à l'échange) { #sec:entity-activitypresence }
Présence à l'échange
* `id` (int): identifiant;
* `name` (texte): libellé
### Address (Une adresse)
### Address (Une adresse) { #sec:entity-address }
* `address_id` (int): l'identifiant de l'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;
* `postcode` ([PostCode](#sec:entity-postcode)): le code postal;
* `country` ([Country](#sec:entity-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);
* `validFrom` ([Date](#sec:entity-date)): date de début de validité;
* `validTo` ([Date](#sec:entity-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):
@@ -415,13 +420,13 @@ line
/for
```
### Comment (Commentaire)
### Comment (Commentaire) { #sec:entity-comment }
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;
* `date` ([Date](#sec:entity-date)): la date de la dernière modification;
* `user` ([User](#sec:entity-user)): l'utilisateur qui a effectué la dernière modification;
#### Variant `light`
@@ -432,101 +437,110 @@ Dans le variant `light`,
Seul le champ `comment` est donc disponible.
### Calendar (Rendez-vous) { #sec:entity-calendar}
### Civility (Civilité)
* id (int): identifiant
### Civility (Civilité) { #sec:entity-civility }
* `abbreviation` (texte): abbréviation;
* `id` (int): identifiant (utile pour des comparaisons);
* `name` (texte): titre, label de la civilité;
### ClosingMotive (Motif de cloture)
### ClosingMotive (Motif de cloture) { #sec:entity-closingmotive }
* `id` (int): identifiant;
* `name` (texte): libellé
### Country (Pays)
### Country (Pays) { #sec:entity-country }
* `id` (int): identifiant
* `name` (texte): nom du pays
* `code` (texte): deux lettres du code ISO pays
### Date (Date)
### Date (Date) { #sec:entity-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)
### Evaluation (type d'évaluation) { #sec:entity-evaluation }
* `id` (texte): l'identifiant du type d'évaluation;
* `title` (texte): le titre du type d'évaluation;
### Goal (objectif d'une action)
### Goal (objectif d'une action) { #sec:entity-goal }
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Household (Ménage)
### GenderEntity (Genre) { #sec:entity-genderentity }
* `label` (texte): label du genre;
* `id` (int): identifiant (utile pour des comparaisons);
* `genderTranslation` (texte): utilisation grammaticale;
### Household (Ménage) { #sec:entity-household }
* `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;
* `current-address` (Adress) : adresse actuelle du ménage
* `current-composition` ([HouseholdComposition](#sec:entity-householdcomposition)): Composition **actuelle** du ménage
* `currentMembers` (liste de [HouseholdMember](#sec:entity-householdmember)): liste des membres **actuels** du ménage;
* `members` (liste de [HouseholdMember](#sec:entity-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;
* `waitingForBirthDate` ([Date](#sec:entity-date)): date de la naissance attendue;
### HouseholdComposition
### HouseholdComposition { #sec:entity-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)
* `startDate` ([Date](#sec:entity-date)): date de début de validité de la composition du ménage;
* `endDate` ([Date](#sec:entity-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` ([HouseholdCompositionType](#sec:entity-householdcompositiontype)): Type de composition choisie, entre deux dates
### HouseholdCompositionType
### HouseholdCompositionType { #sec:entity-householdcompositiontype }
* `id` (int): L'identifiant du type de composition
* `label` (texte): Le libellé de la composition
### HouseholdMember (Membre d'un ménage)
### HouseholdMember (Membre d'un ménage) { #sec:entity-householdmember }
* `comment` (texte): texte du commentaire;
* `id` (int): identifiant de la participation au ménage;
* `endDate` (Date): date de fin de participation au ménage;
* `endDate` ([Date](#sec:entity-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;
* `person` ([Person](#sec:entity-person)): l'usager qui est membre du ménage;
* `position` ([HouseholdPosition](#sec:entity-householdposition)): la position du membre dans le ménage;
* `startDate` ([Date](#sec:entity-date)): date de début de participation au ménage;
### HouseholdPosition (Position du membre dans le ménage)
### HouseholdPosition (Position du membre dans le ménage) { #sec:entity-householdposition }
* `id` (int): identifiant de la position;
* `label` (texte): label de la position dans le ménage;
### Location (lieu)
### Location (lieu) { #sec:entity-location }
* `id` (int): identifant;
* `name` (texte): nom;
* `address` (Address): adresse du lieu;
* `address` ([Address](#sec:entity-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` ([LocationType](#sec:entity-locationtype)): le type de lieu
### LocationType (type de lieu)
### LocationType (type de lieu) { #sec:entity-locationtype }
* `id` (int): identifant;
* `title` (texte): titre du type de lieu;
### Person (Personne, usager)
### Person (Personne, usager) { #sec:entity-person }
* `id` (texte): Identifiant du dossier usager;
* `isNull` (bool): `true` si le dossier usager est vide;
* `civility` (Civility): Civilité
* `civility` ([Civility](#sec:entity-civility)): Civilité
* `firstName` (texte): Prénom
* `lastName` (texte): Nom
* `altNames` (texte): noms supplémentaire (nom de naissance, …)
@@ -534,10 +548,10 @@ La composition du ménage entre deux dates. Cette entité associe une `Household
* `birthdate` (Date)
* `age`: (int) age de la personne;
* `deathdate` (Date)
* `gender` (texte): genre (texte traduit);
* `genderEntity` ([GenderEntity](#sec:entity-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)
* `maritalStatusDate` ([Date](#sec:entity-date)): date à la quelle le statut de l'état civil a été mis à jour;
* `maritalStatusComment` ([Comment](#sec:entity-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;
@@ -546,16 +560,19 @@ La composition du ménage entre deux dates. Cette entité associe une `Household
* `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.
* `address` ([Adresse](#sec:entity-address)): l'adresse actuelle
* `resources` ([PersonResource](#sec:entity-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;
* `household` ([Household](#sec:entity-household)): le ménage actuel de l'usager;
#### variant `relations`
* `relations` (liste de Relationship): les relations (filiations) de l'usager;
* `relations` (liste de [Relationship](#sec:entity-relationship)): les relations (filiations) de l'usager;
#### variant `budget`
@@ -582,7 +599,7 @@ Pour chaque ligne de budget, la somme de toutes les lignes de budget du même ty
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.
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:
@@ -598,7 +615,7 @@ Les attributs suivants sont disponibles, pour chaque objet `Person` qui a un var
* `budget.household.resources.<clé du type de ligne de budget>` (Ligne de budget): une ligne de budget pour la ressource dont la clé est indiquée par `<clé du type de ligne de budget>`. La liste des clés est à obtenir auprès de l'administrateur technique. Les lignes de budget de tous les usagers actuels du ménages sont globalisées, ainsi que les lignes de budget associées directement au dossier ménage;
* `budget.household.charges.<clé du type de ligne de budget>` (Ligne de budget): une ligne de budget pour la charge dont la clé est indiquée par `<clé du type de ligne de budget>`. La liste des clés est à obtenir auprès de l'administrateur technique. Les lignes de budget de tous les usagers actuels du ménages sont globalisées, ainsi que les lignes de budget associées directement au dossier ménage;
### PersonResource (Ressources associée à l'usager)
### PersonResource (Ressources associée à l'usager) { #sec:entity-personresource }
Pour rappel, les ressources peuvent être:
@@ -610,71 +627,72 @@ Pour rappel, les ressources peuvent être:
* `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
* `kind` ([PersonResourceKind](#sec:entity-personresourcekind)): le type de personne ressources (voisin, etc.)
* `thirdParty` ([ThirdParty](#sec:entity-thirdparty)): le tiers, quand la ressources est liée à un tiers
* `person` ([Person](#sec:entity-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)
### PersonResourceKind (Type de personne ressource) { #sec:entity-personresourcekind }
* `id` (int)
* `title` (texte)
### Postcode (Code Postal)
### Postcode (Code Postal) { #sec:entity-postcode }
* `id` (int): identifiant
* `name` (texte): localité
* `code` (texte): code postal
### Relationship (relations (filiations) entre usagers)
### Relationship (relations (filiations) entre usagers) { #sec:entity-relationship }
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;
* `fromPerson` ([Person](#sec:entity-person)): personne d'origine;
* `toPerson` ([Person](#sec:entity-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;
* `opposite` ([Person](#sec:entity-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)
### Result (résultat d'une action) { #sec:entity-result }
* `id` (texte): identifiant
* `title` (texte): le titre du résultat
### Scope (service) { #sec:entity-scope }
### SocialAction (type d'action d'accompagnement)
### SocialAction (type d'action d'accompagnement) { #sec:entity-socialaction }
* `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)
### SocialIssue (problématique sociale) {#sec:entity-socialissue}
* `name`: le nom de la problématique seule
* `text`: le nom de la problématique et des problématiques parentes
### ThirdParty (Tiers)
### ThirdParty (Tiers) { #sec:entity-thirdparty }
* `id` (int): identifiant du tiers;
* `acronym` (text): acronyme;
* `address` (Adress): adresse du tiers
* `categories` (liste de ThirdPartyCategory): liste des catégories;
* `civility` (Civility): civilité
* `address` ([Adress](#sec:entity-address)): adresse du tiers
* `categories` (liste de [ThirdPartyCategory](#sec:entity-thirdpartycategory)): liste des catégories;
* `civility` ([Civility](#sec:entity-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)
* `parent` ([ThirdParty](#sec:entity-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
* `parent` ([ThirdParty](#sec:entity-thirdparty)): s'il s'agit d'un contact d'une personne morale, contient la fiche d'une personne morale
`kind` vaut:
@@ -683,19 +701,19 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
* `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)
### ThirdPartyCategory (catégorie de tiers) { #sec:entity-thirdpartycategory }
* `id` (int): identifiant
* `name` (texte)
### ThirdPartyProfession (profession du tiers)
### ThirdPartyProfession (profession du tiers) { #sec:entity-thirdpartyprofession }
* `id` (int): identifiant
* `name` (texte)
### User (Utilisateur) { #sec:gendoc-var-user }
### User (Utilisateur) { #sec:entity-user }
* `id` (int): identifant
* `type` (texte): vaut toujours `user`
@@ -703,13 +721,13 @@ Les variables présentent le nom de la relation (`text`), et la personne avec qu
* `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;
* `main-scope` ([Scope](#sec:entity-scope)): service principal
* `user-job` ([UserJob](#sec:entity-userjob)): métier principal
* `current-location` ([Location](#sec:entity-location)): lieu de l'utilisateur, celui actuellement choisi par l'utilisateur par le menu "utilisateur";
* `main-location` ([Location](#sec:entity-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](#sec:entity-civility)): la civilité de l'utilisateur;
### UserJob (Métier)
### UserJob (Métier) { #sec:entity-userjob }
* `id` (int): identifiant
* `label` (texte): nom du métier

3
admin/docs/index.md Normal file
View File

@@ -0,0 +1,3 @@
# Documentation administrateur
En construction.

Binary file not shown.

45
admin/mkdocs.yml Normal file
View File

@@ -0,0 +1,45 @@
---
site_name: "Manuel administrateur Chill"
site_url: https://manuel.chill.social/admin
repo_url: https://gitea.champs-libres.be/Chill-project/manuals
repo_name: Chill-project/manuals
theme:
name: material
features:
- content.code.copy
- content.code.select
- content.code.annotate
nav:
- Accueil: index.md
- Génération de document: generation-documents.md
hooks:
- ../mkdocs/hooks/pandoc-to-mkdocs.py
markdown_extensions:
- markdown_include.include
# code layout
- pymdownx.highlight:
anchor_linenums: true
line_spans: __span
pygments_lang_class: true
use_pygments: true
linenums: true
- pymdownx.inlinehilite
- pymdownx.snippets
- pymdownx.superfences
# admonition
- admonition
- pymdownx.details
- pymdownx.superfences
# use emojis
- attr_list
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
# footnotes
- footnotes
# https://squidfunk.github.io/mkdocs-material/reference/formatting/?h=key#adding-keyboard-keys
- pymdownx.critic
- pymdownx.caret
- pymdownx.keys
- pymdownx.mark
- pymdownx.tilde

View File

@@ -4,7 +4,8 @@ set -e
# enter the current directory
cd "$(dirname $0)"
export PANDOC_DIR="/pandoc/cl"
export PANDOC_DIR="$(pwd)/pandoc/cl"
export OUTPUT_DIR="$(pwd)"
if [ -z $1 ]; then
@@ -38,8 +39,17 @@ if [ $kind = 'user' ]; then
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="
start.md
@@ -50,23 +60,22 @@ else
exit 1;
fi
cd $kind
export PDF_TEMPLATE="$(pwd)/eisvogel.latex"
cd $kind/docs
export ARGS="
--from markdown
--number-sections
--resource-path ./.
--metadata-file ./metadata.yaml
`#--lua-filter "../${PANDOC_DIR}/format-link.lua`
"
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"
--template ${PDF_TEMPLATE}
--lua-filter "${PANDOC_DIR}/boxes.lua"
"
if [ $target = "latex" ]; then
pandoc $ARGS $LATEX_ARGS \
--to latex \
@@ -75,18 +84,7 @@ elif [ $target = "pdf" ]; then
pandoc $ARGS $LATEX_ARGS \
--to pdf \
--pdf-engine xelatex \
-o "./../$kind-manual.pdf" \
-o "${OUTPUT_DIR}/$kind-manual.pdf" \
$files
elif [ $target = "html" ]; then
# check target directory exists
if [ ! -d "./../build/html" ]; then
echo "create build/html directory"
mkdir -p "./../build/html"
fi
pandoc $ARGS \
--to html \
-o ./../build/html/index.html \
$files
fi

1037
eisvogel.latex Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
import subprocess
import os
def on_page_markdown(markdown: str, page, config, files) -> str | None:
# Récupère le dossier où se trouve mkdocs.yaml
base_dir = os.path.dirname(config.config_file_path)
# Construit le chemin absolu du filtre lua relatif à mkdocs.yaml
lua_filter_path = os.path.normpath(os.path.join(base_dir, '../pandoc/filters/admonitionTransformer.lua'))
# Prépare la commande avec le chemin correct pour le filtre
cmd = [
"pandoc",
f"--lua-filter={lua_filter_path}",
"--to", "markdown"
]
try:
# Appelle le script bash/commande via subprocess, en passant le markdown via stdin
result = subprocess.run(
cmd,
input=markdown.encode('utf-8'),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True
)
# Retourne la sortie standard (stdout) décodée
return result.stdout.decode('utf-8')
except subprocess.CalledProcessError as e:
print("Erreur lors de l'exécution du script bash :", e.stderr.decode('utf-8'))
return None

View File

@@ -0,0 +1,27 @@
-- admonition.lua
-- Filtre Pandoc : transforme les divs en admonitions type "!!! note"
function Div(div)
if div.classes ~= nil and #div.classes > 0 then
local class = div.classes[1]
-- Génère le préfixe admonition
local admonition_header = pandoc.Plain{pandoc.Str("!!! " .. class)}
local contents = {}
-- Pour chaque bloc de contenu, ajoute une indentation de 4 espaces à chaque ligne
for _, blk in ipairs(div.content) do
local s = pandoc.write(pandoc.Pandoc({blk}), "markdown")
-- Ajoute une indentation de 4 espaces sur chaque ligne non vide
s = s:gsub("([^\n]+)", " %1")
table.insert(contents, pandoc.RawBlock("markdown", s))
end
-- Construit la nouvelle sequence de blocs : en-tête + contenus
local blocks = {admonition_header}
for _, blk in ipairs(contents) do
table.insert(blocks, blk)
end
return blocks
end
end

View File

@@ -0,0 +1,11 @@
::: { .note }
Ceci est une note
:::
::: { .warning }
Ceci est un warning
:::

3
requirements.txt Normal file
View File

@@ -0,0 +1,3 @@
mkdocs
markdown-include
mkdocs-material

2
user/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
site/*

208
user/docs/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

@@ -1,3 +1,9 @@
### 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
@@ -18,7 +24,7 @@ Ce filtre permet de ne prendre en compte que les parcours ayant reçu au moins u
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).
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
@@ -85,7 +91,7 @@ Ce filtre permet d'indiquer:
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).
La notion d'intervenant est définie [dans le chapitre correspondant](#sec:parcours-intervenant).
Exemples d'utilisation:
@@ -114,7 +120,7 @@ Ce filtre permet d'indiquer:
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).
La notion d'intervenant est définie [dans le chapitre correspondant](#sec:parcours-intervenant).
Exemples d'utilisation:
@@ -171,7 +177,7 @@ Ce filtre permet d'indiquer:
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).
La notion d'intervenant est définie [dans le chapitre correspondant](#sec:parcours-intervenant).
Exemples d'utilisation:
@@ -203,8 +209,11 @@ Ce filtre permet d'indiquer deux dates qui forment une période de recherche, ai
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 -->
@@ -229,6 +238,12 @@ Seules les adresses géolocalisées sont prises en compte. Les adresses sont gé
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-->
@@ -265,27 +280,172 @@ Filtre les parcours pour ne retenir que:
- le demandeur est ne comporte pas de demandeur.
### Regroupements liés aux parcours
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByActivityNumberAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByCreatorAggregator.php-->
#### Grouper les parcours par action d'accompagnement
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialActionAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/BySocialIssueAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/ByThirdpartyAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/CreatorScopeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/DateAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ACPAggregators/LocationTypeAggregator.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
@@ -298,70 +458,49 @@ Il est possible d'indider des dates en paramètres: si elles sont remplies, seul
Lorsqu'un parcours comporte plusieurs types d'échange, il est comptabilisé en regard de chaque type d'échange qu'il contient.
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/AdministrativeLocationAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ByActionNumberAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ClosingMotiveAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ConfidentialAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/CreatorJobAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/DurationAggregator.php-->
#### Grouper les parcours par urgence
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/EmergencyAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/EvaluationAggregator.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-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/IntensityAggregator.php-->
#### Grouper les parcours par métier de l'intervenant
Groupe les parcours par zone géographique.
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/JobWorkingAggregator.php-->
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.
Ce regroupement permet de classer les indicateurs par métier de l'intervenant sur le parcours.
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.
Par intervenant sur le parcours, sont pris en compte tous les utilisateurs qui ont réalisé une intervention: [voir chapitre correspondant]{sec:parcours-intervenant}.
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/IntensityAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/OriginAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ReferrerAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ReferrerScopeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/RequestorAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ScopeAggregator.php-->
#### Grouper les parcours par service de l'intervenant
Regroupe les parcours selon le demandeur:
<!-- 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 date d'ouverture
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/OpeningDateAggregator.php-->
Ce regroupement permet de classer les parcours par date d'ouverture.
La date d'ouverture est celle reprise dans le bandeau gris. Elle peut être modifiée par l'interface (menu "Modifier le parcours" - le menu n'apparait que si le parcours est confirmé).
Le regroupement est effectué par semaine, mois ou année.
#### Grouper les parcours par date de cloture
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/ClosingDateAggregator.php-->
Ce regroupement permet de classer les parcours par date de cloture.
La date d'ouverture est choisie lorsque le parcours est marqué comme cloturé.
Le regroupement est effectué par semaine, mois ou année.
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/SocialActionAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/SocialIssueAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/StepAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/AccompanyingCourseAggregators/UserJobAggregator.php-->
#### Grouper les parcours par service de l'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}.
- 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

@@ -1,6 +1,7 @@
### 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

View File

@@ -1,6 +1,8 @@
### 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-->

View File

@@ -1,3 +1,26 @@
### 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
@@ -53,6 +76,14 @@ Le filtre prend en compte tous les utilisateurs ajoutés dans les "parties conce
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-->
@@ -136,6 +167,37 @@ Le champ "utilisateur principal" n'apparait que pour certains types d'échange,
### 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-->
@@ -143,24 +205,87 @@ 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.
Les échanges sont comptabilisés en regard de chaque usager. Cela signifie que chaque échange est comptabilisé autant de fois qu'il y a de participants à 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/ActivityTypeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUserAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUsersAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUsersJobAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/ActivityUsersScopeAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/PersonAggregators/ActivityReasonAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Aggregator/SentReceivedAggregator.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-->
@@ -169,4 +294,5 @@ Ce regroupement a pour effet de ne pas faire apparaitre les échanges qui ne com
<!-- 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-->
<!-- PHPFILE: src/Bundle/ChillActivityBundle/Export/Export/LinkedToPerson/StatActivityDuration.php-->

View File

@@ -1,6 +1,8 @@
### 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-->

View File

@@ -1,6 +1,8 @@
### 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-->

View File

@@ -1,5 +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-->

View File

@@ -1,4 +1,13 @@
### Filtre liés aux usagers
### 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
@@ -68,6 +77,12 @@ Seules les adresses géolocalisées sont prises en compte. Les adresses sont gé
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-->
@@ -116,9 +131,40 @@ La date de calcul permet de choisir le ménage à la date indiquée en paramètr
### Regroupements liés aux usagers
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/AgeAggregator.php-->
#### 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-->
@@ -129,10 +175,36 @@ Ce regroupement permet de classer les indicateurs par centre de l'usager. Le cen
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/CountryOfBirthAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/GenderAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/GeographicalUnitAggregator.php-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/HouseholdPositionAggregator.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-->
<!-- PHPFILE: src/Bundle/ChillPersonBundle/Export/Aggregator/PersonAggregators/NationalityAggregator.php-->
Regroupe les usagers par état matrimonial.

BIN
user/docs/img/export_select_saved_exports.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