Candidature : Affichage des critères d’éligibilité IAE et GEIQ dans les vues “liste” et “tableau” de la page de suivi de candidature des prescripteurs - #7032
Conversation
|
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
9d5fef9 to
1b012dc
Compare
|
J'ai pour l'instant laissé sous le tapis les filtres sur les critères administratifs qui ne concernent que l'IAE. On pourra peut-être masquer ce filtre si on a uniquement des candidatures non IAE, et préciser dans le nom du filtre qu'il s'agit des critères IAE. |
|
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
| qs = JobApplication.objects.with_jobseeker_geiq_eligibility_diagnosis().get(pk=job_app.pk) | ||
| assert qs.jobseeker_geiq_eligibility_diagnosis == diagnosis.pk | ||
|
|
||
| def test_with_jobseeker_geiq_eligibility_diagnosis_with_a_denormalized_diagnosis_from_the_prescriber(self): |
There was a problem hiding this comment.
Pourquoi denormalized?
There was a problem hiding this comment.
J'ai suivi la nomenclature des tests précédents sur l'éligibilité IAE.
Ici denormalized veut dire que le diag n'est pas directement associé à la candidature ?
There was a problem hiding this comment.
bah justement pour moi une donnée dénormalisée c'est quand tu stockes un résultat sur un objet plutôt que de faire des jointures/etc.
Donc dénormalisé serait plutôt le cas où un diag est stocké sur une candidature (même si ça ne serait pas vraiment dénormalisé non plus...)
=> En tout cas, je ne pense pas que conserver ce nom aide la compréhension 😅
xavfernandez
left a comment
There was a problem hiding this comment.
Il me reste le dernier commit à relire
xavfernandez
left a comment
There was a problem hiding this comment.
Cela me semble très bien. Après comme tu le dis cela va mettre en exergue le soucis du filtre des critères d'éligibilité: il faudrait peut-être effectivement clarifier que ce sont des critères IAE.
b2801c5 to
1a58d14
Compare
EwenKorr
left a comment
There was a problem hiding this comment.
Après comme tu le dis cela va mettre en exergue le soucis du filtre des critères d'éligibilité: il faudrait peut-être effectivement clarifier que ce sont des critères IAE.
Zohra a validé l'ajoute de IAE dans le filtre pour Critères administratifs IAE déclarés.
Et côté employeur, on peut carrément supprimer ce filtre si on n'est pas dans l'IAE : #7063
| qs = JobApplication.objects.with_jobseeker_geiq_eligibility_diagnosis().get(pk=job_app.pk) | ||
| assert qs.jobseeker_geiq_eligibility_diagnosis == diagnosis.pk | ||
|
|
||
| def test_with_jobseeker_geiq_eligibility_diagnosis_with_a_denormalized_diagnosis_from_the_prescriber(self): |
There was a problem hiding this comment.
J'ai suivi la nomenclature des tests précédents sur l'éligibilité IAE.
Ici denormalized veut dire que le diag n'est pas directement associé à la candidature ?
f787eb4 to
498ff44
Compare
498ff44 to
7f82d55
Compare
a320815 to
f1a5fd3
Compare
359dbdd to
4d0b7ae
Compare
xavfernandez
left a comment
There was a problem hiding this comment.
J'ai l'impression qu'on ne gère pas le cas:
candidature acceptée avec un diag GEIQ expiré sur critère A et B dont le candidat a un nouveau diag non expiré avec critères C et D
=> on affichera a priori la candidature avec le nouveau diag et les critères C et D dans la liste alors que je m'attendrais à voir le diag expiré (et les critères A et B).
| .annotate( | ||
| level_two_criteria_count=Count( | ||
| "selected_administrative_criteria", | ||
| filter=Q(administrative_criteria__level=AdministrativeCriteriaLevel.LEVEL_2), | ||
| ), | ||
| ) | ||
| .filter( | ||
| # Authorized prescriber diagnosis (only authorized prescribers may create a GEIQ diagnosis, | ||
| # so if the author is a prescriber he was authorized when he created it) | ||
| Q( | ||
| author_kind=AuthorKind.PRESCRIBER, | ||
| ) | ||
| # >=1 level 1 criterion | ||
| | Exists( | ||
| GEIQSelectedAdministrativeCriteria.objects.filter( | ||
| administrative_criteria__level=AdministrativeCriteriaLevel.LEVEL_1, | ||
| eligibility_diagnosis=OuterRef("pk"), | ||
| ) | ||
| ) | ||
| # >=2 level 2 criteria | ||
| | Q(level_two_criteria_count__gt=1) | ||
| # # >=1 annex 1 and 1+2 criterion | ||
| | Exists( | ||
| GEIQSelectedAdministrativeCriteria.objects.filter( | ||
| administrative_criteria__annex__in=[ | ||
| AdministrativeCriteriaAnnex.ANNEX_1, | ||
| AdministrativeCriteriaAnnex.BOTH_ANNEXES, | ||
| ], | ||
| eligibility_diagnosis=OuterRef("pk"), | ||
| ), | ||
| ), | ||
| ) |
There was a problem hiding this comment.
On pourrait ne mettre cela que pour for_prescriber=False, ce qui allègerait un peu la requête dans l'autre cas.
4d0b7ae to
6d88e3f
Compare
C'est vrai :/ Je viens de creuser le sujet, et je m'aperçois que la même logique s'applique côté IAE : on passe à Et d'ailleurs, cela crée une incohérence dans le cas où une candidature a un diagnostic expiré :
GEIQ et IAE sont faux (enfin, il faudra peut-être confirmer avec le métier qu'on veut absolument le diag associé à la candidature) mais cohérents 😅 Et le premier commit actuel ( |
ac4e1ae to
59d4808
Compare
59d4808 to
d90f2b7
Compare
| <span class="badge badge-sm rounded-pill bg-warning-lighter text-warning"> | ||
| <i aria-hidden="true" class="ri-error-warning-line"> | ||
| </i> | ||
| Éligibilité GEIQ confirmée | ||
| Éligibilité GEIQ non confirmée | ||
| </span> | ||
| <span class="d-block"> | ||
| Diagnostic public prioritaire GEIQ validé par un prescripteur habilité |
There was a problem hiding this comment.
La formulation sera peut-être à revoir, mais au moins ça permet de montrer qu'il y a eu un diagnostic (ici réalisé par un PH) et qu'il n'est plus valide.
d90f2b7 to
31e308b
Compare
In the same way as IAE diagnoses, to be able to display eligibility badges in prescriptions tables. One note: the GEIQ eligibility diagnosis badges appear valid when the considered diagnosis is not expired *and* when it grants an allowance. Hence, `with_jobseeker_geiq_eligibility_diagnosis` filters out diagnoses whose criteria or author do not grant the allowance. To get the last job seeker valid diagnosis without allowance, use `with_jobseeker_valid_geiq_eligibility_diagnosis`.
3fe9ffd to
25eb033
Compare
| def test_with_jobseeker_geiq_eligibility_diagnosis_id(self): | ||
| job_app = JobApplicationFactory(with_geiq_eligibility_diagnosis=True) | ||
| diagnosis = job_app.geiq_eligibility_diagnosis | ||
| qs = JobApplication.objects.with_jobseeker_geiq_eligibility_diagnosis_id().get(pk=job_app.pk) |
There was a problem hiding this comment.
nit: dans tout ce test (et le suivant) qs n'est pas un queryset ce qui est un peu perturbant.
This commit only adds GEIQ criteria in the prescriptions list, which is straightforward: as a prescriber or prescribing employer, I only see prescriber GEIQ diagnoses, which grant the GEIQ allowance de facto. However we worked on a more complete solution, that would have displayed GEIQ criteria for received job applications, in list_for_siae. In this case, a valid diagnosis made by an employer can lead to no allowance. We developed a logic in the JobApplication querysets to handle this in previous commits, but due to lack of time, we did not apply it to list_for_siae.
25eb033 to
0c23e14
Compare
🤔 Pourquoi ?
On a une colonne critères IAE alors que les prescripteurs réalisent des orientations hors IAE
Gros diff mais il y a du changement dans les snapshots. J'ai décidé de garder tous les petits commits dans cette même PR pour avoir le contexte des changements. Et j'ai essayé autant que possible de rédiger des messages de commit clairs.
carte Notion
🍰 Comment ?
🚨 À vérifier
🏝️ Comment tester ?
💻 Captures d'écran