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

Commit b5fa2b7

Browse files
author
barnabartha
committed
Merge branch 'development' into feature-3368-SubTab
2 parents 3423dfd + 239b2bf commit b5fa2b7

23 files changed

Lines changed: 92 additions & 166 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseCriteria.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ public class CaseCriteria extends BaseCriteria implements Cloneable {
4646
public static final String MUST_HAVE_NO_GEO_COORDINATES = "mustHaveNoGeoCoordinates";
4747
public static final String MUST_BE_PORT_HEALTH_CASE_WITHOUT_FACILITY = "mustBePortHealthCaseWithoutFacility";
4848
public static final String MUST_HAVE_CASE_MANAGEMENT_DATA = "mustHaveCaseManagementData";
49-
public static final String EXCLUDE_SHARED_CASES = "excludeSharedCases";
5049
public static final String WITHOUT_RESPONSIBLE_OFFICER = "withoutResponsibleOfficer";
5150
public static final String WITH_EXTENDED_QUARANTINE = "withExtendedQuarantine";
5251
public static final String WITH_REDUCED_QUARANTINE = "withReducedQuarantine";
@@ -102,7 +101,6 @@ public class CaseCriteria extends BaseCriteria implements Cloneable {
102101
private EntityRelevanceStatus relevanceStatus;
103102
private String sourceCaseInfoLike;
104103
private Date quarantineTo;
105-
public Boolean excludeSharedCases;
106104
private Integer birthdateYYYY;
107105
private Integer birthdateMM;
108106
private Integer birthdateDD;
@@ -472,14 +470,6 @@ public void setQuarantineTo(Date quarantineTo) {
472470
this.quarantineTo = quarantineTo;
473471
}
474472

475-
public Boolean getExcludeSharedCases() {
476-
return excludeSharedCases;
477-
}
478-
479-
public void setExcludeSharedCases(Boolean excludeSharedCases) {
480-
this.excludeSharedCases = excludeSharedCases;
481-
}
482-
483473
public Integer getBirthdateYYYY() {
484474
return birthdateYYYY;
485475
}

sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ public class CaseDataDto extends PseudonymizableDto {
188188
@EmbeddedPersonalData
189189
private PersonReferenceDto person;
190190
@Outbreaks
191-
@HideForCountries()
191+
@HideForCountries(countries = {
192+
COUNTRY_CODE_GERMANY,
193+
COUNTRY_CODE_SWITZERLAND })
192194
private String epidNumber;
193195
@Outbreaks
194196
@Required

sormas-api/src/main/resources/captions_de-CH.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ DocumentTemplate.documentTemplateGuide=Dokumentvorlagen-Anleitung
860860
DocumentTemplate.plural=Dokumentvorlagen
861861
DocumentTemplate.QuarantineOrder=Isolations-/Quarantänebescheid
862862
DocumentTemplate.QuarantineOrder.create=Isolations-/Quarantänebescheid erstellen
863-
DocumentTemplate.QuarantineOrder.templates=Isolations-/Quarantänebescheid Vorlagen
863+
DocumentTemplate.QuarantineOrder.templates=Isolations-/Quarantänebescheid-Vorlagen
864864
DocumentTemplate.uploadTemplate=Vorlage hochladen
865865
DocumentTemplate.exampleTemplateLibreOffice=Beispielvorlage LibreOffice
866866
DocumentTemplate.exampleTemplateWord=Beispielvorlage Microsoft Word

sormas-api/src/main/resources/captions_de-DE.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -858,9 +858,9 @@ EpiData.snakes=Schlangen
858858
DocumentTemplate=Dokumentvorlage
859859
DocumentTemplate.documentTemplateGuide=Dokumentvorlagen-Anleitung
860860
DocumentTemplate.plural=Dokumentvorlagen
861-
DocumentTemplate.QuarantineOrder=Bescheid
862-
DocumentTemplate.QuarantineOrder.create=Bescheid erstellen
863-
DocumentTemplate.QuarantineOrder.templates=Bescheid Vorlagen
861+
DocumentTemplate.QuarantineOrder=Isolations-/Quarantänebescheid
862+
DocumentTemplate.QuarantineOrder.create=Isolations-/Quarantänebescheid erstellen
863+
DocumentTemplate.QuarantineOrder.templates=Isolations-/Quarantänebescheid-Vorlagen
864864
DocumentTemplate.uploadTemplate=Vorlage hochladen
865865
DocumentTemplate.exampleTemplateLibreOffice=Beispielvorlage LibreOffice
866866
DocumentTemplate.exampleTemplateWord=Beispielvorlage Microsoft Word
@@ -1953,4 +1953,4 @@ SurvnetGateway.send=an eigene SurvNet-Instanz senden
19531953
patientDiaryRegistrationError=Person konnte nicht im Symptomtagebuch registriert werden.
19541954
patientDiaryPersonNotExportable=Die Person kann nicht in das Symptomtagebuch exportiert werden. Die Person benötigt ein gültiges Geburtsdatum und entweder eine gültige Telefonnummer oder E-Mail Adresse.
19551955

1956-
showPlacesOnMap=Anzeigen
1956+
showPlacesOnMap=Anzeigen

sormas-api/src/main/resources/descriptions.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ descCaseFilterWithExtendedQuarantine = Only list cases whose quarantine period h
6565
descContactOnlyWithExtendedQuarantine = Only list contacts whose quarantine period has been extended
6666
descCaseFilterWithReducedQuarantine = Only list cases whose quarantine period has been reduced
6767
descCaseFilterRelatedToEvent = Only list cases related to events
68-
descCaseFilterIncludeCasesFromOtherJurisdictions = Include the cases created by you for other jurisdictions
68+
descCaseFilterIncludeCasesFromOtherJurisdictions = Include all cases from other jurisdictions that you have access to, e.g. because you created them or they have a contact in your jurisdiction
6969
descContactOnlyWithReducedQuarantine = Only list contacts whose quarantine period has been reduced
70-
descContactIncludeContactsFromOtherJurisdictions = Include the contacts created by you for other jurisdictions
70+
descContactIncludeContactsFromOtherJurisdictions = Include all contacts from other jurisdictions that you have access to, e.g. because you created them or their source case is in your jurisdiction
7171
descGdpr = Reminder: All comments entered must comply with GDPR rules as described during connection.
7272

7373
# EpiData

sormas-api/src/main/resources/strings_de-CH.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ entityGathering = Soziale Versammlung
196196
entityPathogenTests = Erregertests
197197
entityPrescription = Verschreibung
198198
entityPrescriptions = Verschreibungen
199-
entityQuarantineOrder = Bescheid
199+
entityQuarantineOrder = Isolations-/Quarantänebescheid
200200
entityRegion = Kanton
201201
entitySample = Probe
202202
entitySamples = Proben
@@ -867,4 +867,4 @@ SurvnetGateway.notificationEntrySent = Eintrag wurde gesendet
867867
SurvnetGateway.notificationEntryNotSent = Eintrag konnte nicht gesendet werden
868868
SurvnetGateway.notificationErrorSending = Fehler beim Senden des Eintrags
869869

870-
warningDashboardMapTooManyMarkers = There are %d places to display and it is possible that your browser will freeze while displaying them.
870+
warningDashboardMapTooManyMarkers = There are %d places to display and it is possible that your browser will freeze while displaying them.

sormas-api/src/main/resources/strings_de-DE.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ entityGathering = Event/Ereignis
196196
entityPathogenTests = Erregertests
197197
entityPrescription = Verschreibung
198198
entityPrescriptions = Verschreibungen
199-
entityQuarantineOrder = Bescheid
199+
entityQuarantineOrder = Isolations-/Quarantänebescheid
200200
entityRegion = Bundesland
201201
entitySample = Probe
202202
entitySamples = Proben
@@ -867,4 +867,4 @@ SurvnetGateway.notificationEntrySent = Eintrag wurde gesendet
867867
SurvnetGateway.notificationEntryNotSent = Eintrag konnte nicht gesendet werden
868868
SurvnetGateway.notificationErrorSending = Fehler beim Senden des Eintrags
869869

870-
warningDashboardMapTooManyMarkers = Es gibt %d Orte zum Anzeigen und es ist möglich, dass Ihr Browser während der Anzeige einfriert.
870+
warningDashboardMapTooManyMarkers = Es gibt %d Orte zum Anzeigen und es ist möglich, dass Ihr Browser während der Anzeige einfriert.

sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewFragment.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,12 @@ public void onLayoutBinding(FragmentCaseNewLayoutBinding contentBinding) {
188188
contentBinding.personPresentCondition.initializeSpinner(presentConditionList);
189189

190190
contentBinding.facilityOrHome.initializeSpinner(facilityOrHomeList);
191+
contentBinding.facilityOrHome.addValueChangedListener(e -> {
192+
if (e.getValue() == TypeOfPlace.FACILITY) {
193+
contentBinding.facilityTypeGroup.setValue(FacilityTypeGroup.MEDICAL_FACILITY);
194+
contentBinding.caseDataFacilityType.setValue(FacilityType.HOSPITAL);
195+
}
196+
});
191197
contentBinding.facilityTypeGroup.initializeSpinner(facilityTypeGroupList);
192198
}
193199

@@ -204,17 +210,19 @@ public void onAfterLayoutBinding(final FragmentCaseNewLayoutBinding contentBindi
204210
contentBinding.caseDataDistrict.setRequired(false);
205211

206212
User user = ConfigProvider.getUser();
213+
214+
if (user.getPointOfEntry() == null) {
215+
contentBinding.facilityOrHome.setValue(TypeOfPlace.FACILITY);
216+
}
217+
207218
if (user.hasUserRole(UserRole.HOSPITAL_INFORMANT) && user.getHealthFacility() != null) {
208219
// Hospital Informants are not allowed to create cases in another health facility
209220
contentBinding.caseDataCommunity.setEnabled(false);
210221
contentBinding.caseDataCommunity.setRequired(false);
211222
contentBinding.caseDataHealthFacility.setEnabled(false);
212223
contentBinding.caseDataHealthFacility.setRequired(false);
213-
contentBinding.facilityOrHome.setValue(TypeOfPlace.FACILITY);
214224
contentBinding.facilityOrHome.setEnabled(false);
215-
contentBinding.facilityTypeGroup.setValue(FacilityTypeGroup.MEDICAL_FACILITY);
216225
contentBinding.facilityTypeGroup.setEnabled(false);
217-
contentBinding.caseDataFacilityType.setValue(FacilityType.HOSPITAL);
218226
contentBinding.caseDataFacilityType.setEnabled(false);
219227
}
220228

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

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -928,8 +928,7 @@ public List<DashboardCaseDto> getCasesForDashboard(CaseCriteria caseCriteria) {
928928
Join<Case, Symptoms> symptoms = joins.getSymptoms();
929929
Join<Case, Person> person = joins.getPerson();
930930

931-
Predicate filter =
932-
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeSharedCases(true).excludeCasesFromContacts(true));
931+
Predicate filter = caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(true));
933932
Predicate criteriaFilter = caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins);
934933
filter = AbstractAdoService.and(cb, filter, criteriaFilter);
935934

@@ -976,8 +975,7 @@ public List<DashboardQuarantineDataDto> getQuarantineDataForDashBoard(
976975
caseCriteria.setDistrict(districtRef);
977976
caseCriteria.setDisease(disease);
978977

979-
Predicate filter =
980-
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeSharedCases(false).excludeCasesFromContacts(false));
978+
Predicate filter = caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(false));
981979
Predicate criteriaFilter = caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins);
982980
filter = AbstractAdoService.and(cb, filter, criteriaFilter);
983981

@@ -1013,8 +1011,7 @@ public long countCasesConvertedFromContacts(CaseCriteria caseCriteria) {
10131011
Root<Case> caze = cq.from(Case.class);
10141012
CaseJoins<Case> joins = new CaseJoins<>(caze);
10151013

1016-
Predicate filter =
1017-
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeSharedCases(false).excludeCasesFromContacts(false));
1014+
Predicate filter = caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(false));
10181015
Predicate criteriaFilter = caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins);
10191016
filter = AbstractAdoService.and(cb, filter, criteriaFilter);
10201017

@@ -1077,11 +1074,8 @@ public Map<CaseClassification, Long> getCaseCountPerClassification(
10771074
Root<Case> caze = cq.from(Case.class);
10781075
CaseJoins<Case> joins = new CaseJoins<>(caze);
10791076

1080-
Predicate filter = caseService.createUserFilter(
1081-
cb,
1082-
cq,
1083-
caze,
1084-
new CaseUserFilterCriteria().excludeSharedCases(excludeSharedCases).excludeCasesFromContacts(excludeCasesFromContacts));
1077+
Predicate filter =
1078+
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(excludeCasesFromContacts));
10851079
Predicate criteriaFilter = caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins);
10861080
filter = AbstractAdoService.and(cb, filter, criteriaFilter);
10871081

@@ -1109,11 +1103,8 @@ public Map<PresentCondition, Long> getCaseCountPerPersonCondition(
11091103
CaseJoins<Case> joins = new CaseJoins<>(caze);
11101104
Join<Case, Person> person = joins.getPerson();
11111105

1112-
Predicate filter = caseService.createUserFilter(
1113-
cb,
1114-
cq,
1115-
caze,
1116-
new CaseUserFilterCriteria().excludeSharedCases(excludeSharedCases).excludeCasesFromContacts(excludeCasesFromContacts));
1106+
Predicate filter =
1107+
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(excludeCasesFromContacts));
11171108
Predicate criteriaFilter = caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins);
11181109
filter = AbstractAdoService.and(cb, filter, criteriaFilter);
11191110

@@ -1137,11 +1128,8 @@ public Map<Disease, Long> getCaseCountByDisease(CaseCriteria caseCriteria, boole
11371128
Root<Case> caze = cq.from(Case.class);
11381129
CaseJoins<Case> joins = new CaseJoins<>(caze);
11391130

1140-
Predicate filter = caseService.createUserFilter(
1141-
cb,
1142-
cq,
1143-
caze,
1144-
new CaseUserFilterCriteria().excludeSharedCases(excludeSharedCases).excludeCasesFromContacts(excludeCasesFromContacts));
1131+
Predicate filter =
1132+
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(excludeCasesFromContacts));
11451133

11461134
filter = AbstractAdoService.and(cb, filter, caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins));
11471135

@@ -1166,8 +1154,7 @@ public List<CaseReferenceDto> getRandomCaseReferences(CaseCriteria criteria, int
11661154
Root<Case> caze = cq.from(Case.class);
11671155
CaseJoins<Case> joins = new CaseJoins<>(caze);
11681156

1169-
Predicate filter =
1170-
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeSharedCases(true).excludeCasesFromContacts(true));
1157+
Predicate filter = caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(true));
11711158
filter = AbstractAdoService.and(cb, filter, caseService.createCriteriaFilter(criteria, cb, cq, caze, joins));
11721159
if (filter != null) {
11731160
cq.where(filter);
@@ -1191,11 +1178,8 @@ public Map<Disease, District> getLastReportedDistrictByDisease(
11911178
CaseJoins<Case> joins = new CaseJoins<>(caze);
11921179
Join<Case, District> districtJoin = joins.getDistrict();
11931180

1194-
Predicate filter = caseService.createUserFilter(
1195-
cb,
1196-
cq,
1197-
caze,
1198-
new CaseUserFilterCriteria().excludeSharedCases(excludeSharedCases).excludeCasesFromContacts(excludeCasesFromContacts));
1181+
Predicate filter =
1182+
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(excludeCasesFromContacts));
11991183

12001184
filter = AbstractAdoService.and(cb, filter, caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins));
12011185

@@ -1410,11 +1394,8 @@ public String getLastReportedDistrictName(CaseCriteria caseCriteria, boolean exc
14101394
CaseJoins<Case> joins = new CaseJoins<>(caze);
14111395
Join<Case, District> district = joins.getDistrict();
14121396

1413-
Predicate filter = caseService.createUserFilter(
1414-
cb,
1415-
cq,
1416-
caze,
1417-
new CaseUserFilterCriteria().excludeSharedCases(excludeSharedCases).excludeCasesFromContacts(excludeCasesFromContacts));
1397+
Predicate filter =
1398+
caseService.createUserFilter(cb, cq, caze, new CaseUserFilterCriteria().excludeCasesFromContacts(excludeCasesFromContacts));
14181399

14191400
filter = AbstractAdoService.and(cb, filter, caseService.createCriteriaFilter(caseCriteria, cb, cq, caze, joins));
14201401

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

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,7 @@ private Predicate createMapCasesFilter(
307307
Date from,
308308
Date to) {
309309
Predicate filter = createActiveCasesFilter(cb, root);
310-
filter = AbstractAdoService
311-
.and(cb, filter, createUserFilter(cb, cq, root, new CaseUserFilterCriteria().excludeSharedCases(true).excludeCasesFromContacts(true)));
310+
filter = AbstractAdoService.and(cb, filter, createUserFilter(cb, cq, root, new CaseUserFilterCriteria().excludeCasesFromContacts(true)));
312311
filter = AbstractAdoService.and(cb, filter, createCaseRelevanceFilter(cb, root, from, to));
313312

314313
if (region != null) {
@@ -539,28 +538,6 @@ public <T extends AbstractDomainObject> Predicate createCriteriaFilter(
539538
if (caseCriteria.getReportDateTo() != null) {
540539
filter = and(cb, filter, cb.lessThanOrEqualTo(from.get(Case.REPORT_DATE), caseCriteria.getReportDateTo()));
541540
}
542-
if (Boolean.TRUE.equals(caseCriteria.getExcludeSharedCases())) {
543-
User currentUser = getCurrentUser();
544-
if (currentUser != null) {
545-
if (currentUser.getDistrict() != null) {
546-
filter = and(
547-
cb,
548-
filter,
549-
cb.not(
550-
cb.and(
551-
cb.equal(from.get(Case.SHARED_TO_COUNTRY), true),
552-
cb.notEqual(region.get(District.UUID), currentUser.getDistrict().getUuid()))));
553-
} else if (currentUser.getRegion() != null) {
554-
filter = and(
555-
cb,
556-
filter,
557-
cb.not(
558-
cb.and(
559-
cb.equal(from.get(Case.SHARED_TO_COUNTRY), true),
560-
cb.notEqual(region.get(Region.UUID), currentUser.getRegion().getUuid()))));
561-
}
562-
}
563-
}
564541
if (caseCriteria.getCaseOrigin() != null) {
565542
filter = and(cb, filter, cb.equal(from.get(Case.CASE_ORIGIN), caseCriteria.getCaseOrigin()));
566543
}
@@ -948,7 +925,7 @@ public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From<?,
948925
//filter = cb.or(filter, cb.equal(tasksJoin.get(Task.ASSIGNEE_USER), user));
949926

950927
// all users (without specific restrictions) get access to cases that have been made available to the whole country
951-
if ((userFilterCriteria == null || !userFilterCriteria.isExcludeSharedCases())
928+
if ((userFilterCriteria == null || userFilterCriteria.getIncludeCasesFromOtherJurisdictions())
952929
&& !featureConfigurationFacade.isFeatureDisabled(FeatureType.NATIONAL_CASE_SHARING)) {
953930
filter = or(cb, filter, cb.isTrue(casePath.get(Case.SHARED_TO_COUNTRY)));
954931
}

0 commit comments

Comments
 (0)