Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 620bddc

Browse files
Feature 3613 external id token filter (SORMAS-Foundation#4179)
* SORMAS-Foundation#3613 - Filter by external id and token in Case Directory * SORMAS-Foundation#3613 - Filter by external id and token in Contact Directory * SORMAS-Foundation#3613 - Include external id and token in uuid like search field
1 parent fef1de1 commit 620bddc

2 files changed

Lines changed: 26 additions & 13 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseService.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -506,8 +506,10 @@ public <T extends AbstractDomainObject> Predicate createCriteriaFilter(
506506

507507
Predicate filter = null;
508508
if (caseCriteria.getReportingUserRole() != null) {
509-
filter = CriteriaBuilderHelper.
510-
and(cb, filter, cb.isMember(caseCriteria.getReportingUserRole(), from.join(Case.REPORTING_USER, JoinType.LEFT).get(User.USER_ROLES)));
509+
filter = CriteriaBuilderHelper.and(
510+
cb,
511+
filter,
512+
cb.isMember(caseCriteria.getReportingUserRole(), from.join(Case.REPORTING_USER, JoinType.LEFT).get(User.USER_ROLES)));
511513
}
512514
if (caseCriteria.getDisease() != null) {
513515
filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(from.get(Case.DISEASE), caseCriteria.getDisease()));
@@ -528,10 +530,11 @@ public <T extends AbstractDomainObject> Predicate createCriteriaFilter(
528530
filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(from.get(Case.FOLLOW_UP_STATUS), caseCriteria.getFollowUpStatus()));
529531
}
530532
if (caseCriteria.getFollowUpUntilFrom() != null && caseCriteria.getFollowUpUntilTo() != null) {
531-
filter = CriteriaBuilderHelper.
532-
and(cb, filter, cb.between(from.get(Case.FOLLOW_UP_UNTIL), caseCriteria.getFollowUpUntilFrom(), caseCriteria.getFollowUpUntilTo()));
533+
filter = CriteriaBuilderHelper
534+
.and(cb, filter, cb.between(from.get(Case.FOLLOW_UP_UNTIL), caseCriteria.getFollowUpUntilFrom(), caseCriteria.getFollowUpUntilTo()));
533535
} else if (caseCriteria.getFollowUpUntilFrom() != null) {
534-
filter = CriteriaBuilderHelper.and(cb, filter, cb.greaterThanOrEqualTo(from.get(Case.FOLLOW_UP_UNTIL), caseCriteria.getFollowUpUntilFrom()));
536+
filter =
537+
CriteriaBuilderHelper.and(cb, filter, cb.greaterThanOrEqualTo(from.get(Case.FOLLOW_UP_UNTIL), caseCriteria.getFollowUpUntilFrom()));
535538
} else if (caseCriteria.getFollowUpUntilTo() != null) {
536539
filter = CriteriaBuilderHelper.and(cb, filter, cb.lessThanOrEqualTo(from.get(Case.FOLLOW_UP_UNTIL), caseCriteria.getFollowUpUntilTo()));
537540
}
@@ -580,10 +583,12 @@ public <T extends AbstractDomainObject> Predicate createCriteriaFilter(
580583
caseCriteria.getNewCaseDateType()));
581584
}
582585
if (caseCriteria.getCreationDateFrom() != null) {
583-
filter = CriteriaBuilderHelper.and(cb, filter, cb.greaterThan(from.get(Case.CREATION_DATE), DateHelper.getStartOfDay(caseCriteria.getCreationDateFrom())));
586+
filter = CriteriaBuilderHelper
587+
.and(cb, filter, cb.greaterThan(from.get(Case.CREATION_DATE), DateHelper.getStartOfDay(caseCriteria.getCreationDateFrom())));
584588
}
585589
if (caseCriteria.getCreationDateTo() != null) {
586-
filter = CriteriaBuilderHelper.and(cb, filter, cb.lessThan(from.get(Case.CREATION_DATE), DateHelper.getEndOfDay(caseCriteria.getCreationDateTo())));
590+
filter = CriteriaBuilderHelper
591+
.and(cb, filter, cb.lessThan(from.get(Case.CREATION_DATE), DateHelper.getEndOfDay(caseCriteria.getCreationDateTo())));
587592
}
588593
if (caseCriteria.getQuarantineTo() != null) {
589594
filter = CriteriaBuilderHelper.and(
@@ -623,7 +628,8 @@ public <T extends AbstractDomainObject> Predicate createCriteriaFilter(
623628
Root<ClinicalVisit> clinicalVisitRoot = clinicalVisitSubquery.from(ClinicalVisit.class);
624629
clinicalVisitSubquery.select(clinicalVisitRoot)
625630
.where(cb.equal(clinicalVisitRoot.get(ClinicalVisit.CLINICAL_COURSE), from.get(Case.CLINICAL_COURSE)));
626-
filter = CriteriaBuilderHelper.and(cb, filter, cb.or(cb.exists(prescriptionSubquery), cb.exists(treatmentSubquery), cb.exists(clinicalVisitSubquery)));
631+
filter = CriteriaBuilderHelper
632+
.and(cb, filter, cb.or(cb.exists(prescriptionSubquery), cb.exists(treatmentSubquery), cb.exists(clinicalVisitSubquery)));
627633
}
628634
if (Boolean.TRUE.equals(caseCriteria.getWithoutResponsibleOfficer())) {
629635
filter = CriteriaBuilderHelper.and(cb, filter, cb.isNull(from.get(Case.SURVEILLANCE_OFFICER)));
@@ -655,6 +661,8 @@ public <T extends AbstractDomainObject> Predicate createCriteriaFilter(
655661
cb.like(cb.lower(from.get(Case.UUID)), textFilter),
656662
cb.like(cb.lower(from.get(Case.EPID_NUMBER)), textFilter),
657663
cb.like(cb.lower(facility.get(Facility.NAME)), textFilter),
664+
cb.like(cb.lower(from.get(Case.EXTERNAL_ID)), textFilter),
665+
cb.like(cb.lower(from.get(Case.EXTERNAL_TOKEN)), textFilter),
658666
cb.like(cb.lower(from.get(Case.HEALTH_FACILITY_DETAILS)), textFilter),
659667
phoneNumberPredicate(cb, person.get(Person.PHONE), textFilter),
660668
cb.like(cb.lower(location.get(Location.CITY)), textFilter),
@@ -886,7 +894,8 @@ public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From<?,
886894
case HEALTH_FACILITY:
887895
final Facility healthFacility = currentUser.getHealthFacility();
888896
if (healthFacility != null) {
889-
filter = CriteriaBuilderHelper.or(cb, filter, cb.equal(casePath.get(Case.HEALTH_FACILITY).get(Facility.ID), healthFacility.getId()));
897+
filter =
898+
CriteriaBuilderHelper.or(cb, filter, cb.equal(casePath.get(Case.HEALTH_FACILITY).get(Facility.ID), healthFacility.getId()));
890899
}
891900
break;
892901
case COMMUNITY:
@@ -898,7 +907,8 @@ public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From<?,
898907
case POINT_OF_ENTRY:
899908
final PointOfEntry pointOfEntry = currentUser.getPointOfEntry();
900909
if (pointOfEntry != null) {
901-
filter = CriteriaBuilderHelper.or(cb, filter, cb.equal(casePath.get(Case.POINT_OF_ENTRY).get(PointOfEntry.ID), pointOfEntry.getId()));
910+
filter =
911+
CriteriaBuilderHelper.or(cb, filter, cb.equal(casePath.get(Case.POINT_OF_ENTRY).get(PointOfEntry.ID), pointOfEntry.getId()));
902912
}
903913
break;
904914
case LABORATORY:
@@ -1023,8 +1033,8 @@ public Case getRelevantCaseForFollowUp(Person person, Disease disease, Date refe
10231033
CriteriaQuery<Case> cq = cb.createQuery(Case.class);
10241034
Root<Case> caseRoot = cq.from(Case.class);
10251035

1026-
Predicate filter = CriteriaBuilderHelper.
1027-
and(cb, createDefaultFilter(cb, caseRoot), buildRelevantCasesFilterForFollowUp(person, disease, referenceDate, cb, caseRoot));
1036+
Predicate filter = CriteriaBuilderHelper
1037+
.and(cb, createDefaultFilter(cb, caseRoot), buildRelevantCasesFilterForFollowUp(person, disease, referenceDate, cb, caseRoot));
10281038
cq.where(filter);
10291039

10301040
return em.createQuery(cq).getResultStream().findFirst().orElse(null);

sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1071,7 +1071,8 @@ public Predicate buildCriteriaFilter(ContactCriteria contactCriteria, CriteriaBu
10711071
}
10721072
}
10731073
if (contactCriteria.getSymptomJournalStatus() != null) {
1074-
filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(joins.getPerson().get(Person.SYMPTOM_JOURNAL_STATUS), contactCriteria.getSymptomJournalStatus()));
1074+
filter = CriteriaBuilderHelper
1075+
.and(cb, filter, cb.equal(joins.getPerson().get(Person.SYMPTOM_JOURNAL_STATUS), contactCriteria.getSymptomJournalStatus()));
10751076
}
10761077
if (contactCriteria.getQuarantineTo() != null) {
10771078
filter = CriteriaBuilderHelper.and(
@@ -1134,6 +1135,8 @@ public Predicate buildCriteriaFilter(ContactCriteria contactCriteria, CriteriaBu
11341135
cb.like(cb.lower(person.get(Person.FIRST_NAME)), textFilter),
11351136
cb.like(cb.lower(person.get(Person.LAST_NAME)), textFilter),
11361137
cb.like(cb.lower(caze.get(Case.UUID)), textFilter),
1138+
cb.like(cb.lower(from.get(Case.EXTERNAL_ID)), textFilter),
1139+
cb.like(cb.lower(from.get(Case.EXTERNAL_TOKEN)), textFilter),
11371140
cb.like(cb.lower(casePerson.get(Person.FIRST_NAME)), textFilter),
11381141
cb.like(cb.lower(casePerson.get(Person.LAST_NAME)), textFilter),
11391142
phoneNumberPredicate(cb, person.get(Person.PHONE), textFilter),

0 commit comments

Comments
 (0)