Skip to content

Commit f5539bb

Browse files
author
SergiuPacurariu
committed
[GITFLOW]merging 'hotfix-1.100.1' into 'master'
2 parents 0ad899c + 5e6ad7d commit f5539bb

File tree

38 files changed

+825
-39
lines changed

38 files changed

+825
-39
lines changed

sormas-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<parent>
33
<groupId>de.symeda.sormas</groupId>
44
<artifactId>sormas-base</artifactId>
5-
<version>1.100.0</version>
5+
<version>1.100.1</version>
66
<relativePath>../sormas-base</relativePath>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>

sormas-api/src/main/java/de/symeda/sormas/api/ConfigFacade.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,8 @@ public interface ConfigFacade {
163163
boolean isAnyCaseClassificationCalculationEnabled();
164164

165165
Integer getNegaiveCovidTestsMaxAgeDays();
166+
167+
long getMinimumEmancipatedAge();
168+
169+
long getMinimumAdultAge();
166170
}

sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
public class CustomizableEnumHelper {
2121

22-
private static final String ENUM_VALUE_PATTERN = "[A-Z0-9_.]+";
22+
private static final String ENUM_VALUE_PATTERN = "[A-Z0-9_.+]+";
2323

2424
public static boolean isValidEnumValue(String value) {
2525
return Pattern.matches(ENUM_VALUE_PATTERN, value);

sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumValueDto.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package de.symeda.sormas.api.customizableenum;
1717

18+
import java.util.HashSet;
1819
import java.util.List;
1920
import java.util.Map;
2021
import java.util.Set;
@@ -59,7 +60,7 @@ public class CustomizableEnumValueDto extends EntityDto {
5960
private String caption;
6061
@Valid
6162
private List<CustomizableEnumTranslation> translations;
62-
private Set<Disease> diseases;
63+
private Set<Disease> diseases = new HashSet<>();
6364
@Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
6465
private String description;
6566
@Valid

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,19 @@
2222
import org.slf4j.LoggerFactory;
2323

2424
import de.symeda.sormas.api.CountryHelper;
25+
import de.symeda.sormas.api.Disease;
26+
import de.symeda.sormas.api.caze.CaseClassification;
2527
import de.symeda.sormas.api.caze.CaseDataDto;
28+
import de.symeda.sormas.api.caze.CaseOutcome;
29+
import de.symeda.sormas.api.caze.InvestigationStatus;
2630
import de.symeda.sormas.api.externalmessage.ExternalMessageDto;
2731
import de.symeda.sormas.api.feature.FeatureType;
2832
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
2933
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
3034
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
3135
import de.symeda.sormas.api.person.PersonDto;
36+
import de.symeda.sormas.api.sample.PathogenTestResultType;
37+
import de.symeda.sormas.api.sample.PathogenTestType;
3238
import de.symeda.sormas.api.user.UserDto;
3339
import de.symeda.sormas.api.utils.dataprocessing.EntitySelection;
3440
import de.symeda.sormas.api.utils.dataprocessing.HandlerCallback;
@@ -175,6 +181,18 @@ protected CaseDataDto buildCase(PersonDto person, ExternalMessageDto externalMes
175181
caseDto.setHealthFacility(processingFacade.getFacilityReferenceByUuid(FacilityDto.NONE_FACILITY_UUID));
176182
}
177183

184+
if (processingFacade.isConfiguredCountry(CountryHelper.COUNTRY_CODE_LUXEMBOURG)) {
185+
if (externalMessageDto.getDisease().equals(Disease.PERTUSSIS)
186+
&& externalMessageDto.getSampleReports().get(0).getTestReports().get(0).getTestResult().equals(PathogenTestResultType.POSITIVE)) {
187+
PathogenTestType testType = externalMessageDto.getSampleReports().get(0).getTestReports().get(0).getTestType();
188+
if (testType.equals(PathogenTestType.CULTURE) || testType.equals(PathogenTestType.PCR_RT_PCR)) {
189+
caseDto.setCaseClassification(CaseClassification.CONFIRMED);
190+
}
191+
}
192+
caseDto.setInvestigationStatus(InvestigationStatus.PENDING);
193+
caseDto.setOutcome(CaseOutcome.NO_OUTCOME);
194+
}
195+
178196
caseDto.setVaccinationStatus(externalMessageDto.getVaccinationStatus());
179197
caseDto.getHospitalization().setAdmittedToHealthFacility(externalMessageDto.getAdmittedToHealthFacility());
180198

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,6 +972,8 @@ public interface Captions {
972972
String Configuration_LineListing = "Configuration.LineListing";
973973
String Configuration_Outbreaks = "Configuration.Outbreaks";
974974
String Configuration_PointsOfEntry = "Configuration.PointsOfEntry";
975+
String confirmChangesField = "confirmChangesField";
976+
String confirmChangesValue = "confirmChangesValue";
975977
String Contact = "Contact";
976978
String Contact_additionalDetails = "Contact.additionalDetails";
977979
String Contact_ageAndBirthDate = "Contact.ageAndBirthDate";
@@ -2218,12 +2220,15 @@ public interface Captions {
22182220
String Person_educationDetails = "Person.educationDetails";
22192221
String Person_educationType = "Person.educationType";
22202222
String Person_emailAddress = "Person.emailAddress";
2223+
String Person_emancipated = "Person.emancipated";
22212224
String Person_externalId = "Person.externalId";
22222225
String Person_externalToken = "Person.externalToken";
22232226
String Person_fathersName = "Person.fathersName";
22242227
String Person_generalPractitionerDetails = "Person.generalPractitionerDetails";
22252228
String Person_gestationAgeAtBirth = "Person.gestationAgeAtBirth";
22262229
String Person_hasCovidApp = "Person.hasCovidApp";
2230+
String Person_hasGuardian = "Person.hasGuardian";
2231+
String Person_incapacitated = "Person.incapacitated";
22272232
String Person_internalToken = "Person.internalToken";
22282233
String Person_lastDisease = "Person.lastDisease";
22292234
String Person_matchingCase = "Person.matchingCase";

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,6 +1203,8 @@ public interface Strings {
12031203
String messageCasesRestored = "messageCasesRestored";
12041204
String messageCaseTransfered = "messageCaseTransfered";
12051205
String messageChangePathogenTestResult = "messageChangePathogenTestResult";
1206+
String messageChangingCaseOutcome = "messageChangingCaseOutcome";
1207+
String messageChangingPersonPresentCondition = "messageChangingPersonPresentCondition";
12061208
String messageCheckInputData = "messageCheckInputData";
12071209
String messageClinicalCourseSaved = "messageClinicalCourseSaved";
12081210
String messageClinicalVisitCreated = "messageClinicalVisitCreated";
@@ -1509,6 +1511,7 @@ public interface Strings {
15091511
String messageRelatedSampleAndLabMessagesFound = "messageRelatedSampleAndLabMessagesFound";
15101512
String messageRelatedSampleFound = "messageRelatedSampleFound";
15111513
String messageRestoreNotPossibleAlreadyInEvent = "messageRestoreNotPossibleAlreadyInEvent";
1514+
String messageReviewChangesAndConfirm = "messageReviewChangesAndConfirm";
15121515
String messageSampleErrors = "messageSampleErrors";
15131516
String messageSampleOpened = "messageSampleOpened";
15141517
String messageSampleSaved = "messageSampleSaved";
@@ -1819,6 +1822,7 @@ public interface Strings {
18191822
String unsavedChanges_warningTitle = "unsavedChanges.warningTitle";
18201823
String until = "until";
18211824
String uuidOf = "uuidOf";
1825+
String warning = "warning";
18221826
String warningDashboardMapTooManyMarkers = "warningDashboardMapTooManyMarkers";
18231827
String warningNetworkDiagramTooManyContacts = "warningNetworkDiagramTooManyContacts";
18241828
String week = "week";

sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/facility/FacilityFacade.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ List<FacilityReferenceDto> getByNameAndType(
6464
FacilityType type,
6565
boolean includeArchivedEntities);
6666

67-
FacilityReferenceDto getByAddress(String street, String postalCode, String city);
67+
FacilityReferenceDto getByAddress(String street, String houseNumber, String postalCode, String city);
6868

6969
List<FacilityReferenceDto> getLaboratoriesByName(String name, boolean includeArchivedEntities);
7070

sormas-api/src/main/java/de/symeda/sormas/api/person/PersonDto.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ public class PersonDto extends PseudonymizableDto implements IsPerson {
128128
public static final String BIRTH_COUNTRY = "birthCountry";
129129
public static final String CITIZENSHIP = "citizenship";
130130
public static final String ADDITIONAL_DETAILS = "additionalDetails";
131+
public static final String IS_EMANCIPATED = "emancipated";
132+
public static final String IS_INCAPACITATED = "incapacitated";
131133
private static final long serialVersionUID = -8558187171374254398L;
132134

133135
// Fields are declared in the order they should appear in the import template
@@ -377,6 +379,9 @@ public class PersonDto extends PseudonymizableDto implements IsPerson {
377379
@Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
378380
private String additionalDetails;
379381

382+
private boolean emancipated;
383+
private boolean incapacitated;
384+
380385
@SuppressWarnings("serial")
381386
public static class SeveralNonPrimaryContactDetailsException extends RuntimeException {
382387

@@ -1031,6 +1036,22 @@ public void setAdditionalDetails(String additionalDetails) {
10311036
this.additionalDetails = additionalDetails;
10321037
}
10331038

1039+
public boolean isEmancipated() {
1040+
return emancipated;
1041+
}
1042+
1043+
public void setEmancipated(boolean emancipated) {
1044+
this.emancipated = emancipated;
1045+
}
1046+
1047+
public boolean isIncapacitated() {
1048+
return incapacitated;
1049+
}
1050+
1051+
public void setIncapacitated(boolean incapacitated) {
1052+
this.incapacitated = incapacitated;
1053+
}
1054+
10341055
@Override
10351056
public String buildCaption() {
10361057
return buildCaption(firstName, lastName);

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1873,7 +1873,7 @@ Person.districtName=District
18731873
Person.educationType=Education
18741874
Person.educationDetails=Details
18751875
Person.fathersName=Father's name
1876-
Person.namesOfGuardians=Names of guardians
1876+
Person.namesOfGuardians=Legal guardian's name
18771877
Person.gestationAgeAtBirth=Gestation age at birth (weeks)
18781878
Person.lastDisease=Last disease
18791879
Person.matchingCase=Matching case
@@ -1916,6 +1916,9 @@ Person.otherSalutation=Other salutation
19161916
Person.birthName=Birth name
19171917
Person.birthCountry=Country of birth
19181918
Person.citizenship=Citizenship
1919+
Person.hasGuardian=Person has a legal guardian (i.e. in case of minors or incapacitated persons)
1920+
Person.incapacitated=Incapacitated (i.e. person will have a legal guardian after 18)
1921+
Person.emancipated=Emancipated (i.e. person is under 18 and does not have a guardian by law)
19191922
personContactDetailOwner=Owner
19201923
personContactDetailOwnerName=Owner name
19211924
personContactDetailThisPerson=This person
@@ -3392,3 +3395,6 @@ selfReportDeletedEnvironments=Deleted self reports
33923395
selfReportSelfReportsList=Self reports list
33933396
selfReportProcess=Process
33943397

3398+
confirmChangesField=Field:
3399+
confirmChangesValue=Will be changed to:
3400+

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ nameOf = Name of %s
8585
uuidOf = UUID of %s
8686
listOf = List of %s
8787
mapOf = Map of <%s , %s>
88+
warning = Warning
8889

8990
# Aggregate Report
9091
aggregateReportLegend = %s = %s; %s = %s; %s = %s
@@ -1572,6 +1573,9 @@ messageAdverseEventInvestigationSaved=Adverse event investigation saved
15721573
messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
15731574
messageSyncUsersFromAuthProviderConfigurationError=Syncing users from authentication provider is not possible because the configuration is incorrect. Please contact an admin and inform them about this issue.
15741575
messageCountriesExcludedFromDataProtection=Countries excluded from data protection for this field:
1576+
messageChangingCaseOutcome=Changing this information will also affect the associated person.
1577+
messageReviewChangesAndConfirm=Please review the changes and confirm them:
1578+
messageChangingPersonPresentCondition = Changing this information will also affect the associated cases.
15751579

15761580
# Notifications
15771581
notificationCaseClassificationChanged = The classification of case %s has changed to %s.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ defaultInfrastructureInvalidParentDistrict = This community is in a different di
292292
defaultInfrastructureNotRemovableChildCommunity = You have to remove the default community before removing the default district.
293293
defaultInfrastructureNotRemovableChildDistrict = You have to remove the default district before removing the default region.
294294
emailTemplateSubjectInvalid=The first line of the email template needs to start with a "#" character followed by at most 50 characters
295-
customizableEnumValueAllowedCharacters = Value may only consist of uppercase letters, numbers, and the characters "_" and ".".
295+
customizableEnumValueAllowedCharacters = Value may only consist of uppercase letters, numbers, and the characters "_", "." and "+".
296296
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
297297
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
298298
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.

sormas-app/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>sormas-base</artifactId>
55
<groupId>de.symeda.sormas</groupId>
6-
<version>1.100.0</version>
6+
<version>1.100.1</version>
77
<relativePath>../sormas-base</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

sormas-backend/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>sormas-base</artifactId>
55
<groupId>de.symeda.sormas</groupId>
6-
<version>1.100.0</version>
6+
<version>1.100.1</version>
77
<relativePath>../sormas-base</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

sormas-backend/src/main/java/de/symeda/sormas/backend/common/ConfigFacadeEjb.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,15 @@ public class ConfigFacadeEjb implements ConfigFacade {
186186
private static final String DOCUMENT_UPLOAD_SIZE_LIMIT_MB = "documentUploadSizeLimitMb";
187187
public static final int DEFAULT_DOCUMENT_UPLOAD_SIZE_LIMIT_MB = 20;
188188
public static final String IMPORT_FILE_SIZE_LIMIT_MB = "importFileSizeLimitMb";
189-
public static final int DEFAULT_IMPOR_FILE_SIZE_LIMIT_MB = 20;
189+
public static final int DEFAULT_IMPORT_FILE_SIZE_LIMIT_MB = 20;
190190
public static final String NEGATIVE_COVID_TESTS_MAX_AGE_DAYS = "negativeCovidTestsMaxAgeDays";
191191

192+
public static final String MINIMUM_EMANCIPATED_AGE = "minimumEmancipatedAge";
193+
public static final int DEFAULT_MINIMUM_EMANCIPATED_AGE = 14;
194+
195+
public static final String MINIMUM_ADULT_AGE = "minimumAdultAge";
196+
public static final int DEFAULT_MINIMUM_ADULT_AGE = 18;
197+
192198
private final Logger logger = LoggerFactory.getLogger(getClass());
193199

194200
@Resource(lookup = "sormas/Properties")
@@ -826,7 +832,7 @@ public long getDocumentUploadSizeLimitMb() {
826832

827833
@Override
828834
public long getImportFileSizeLimitMb() {
829-
return getLong(IMPORT_FILE_SIZE_LIMIT_MB, DEFAULT_IMPOR_FILE_SIZE_LIMIT_MB);
835+
return getLong(IMPORT_FILE_SIZE_LIMIT_MB, DEFAULT_IMPORT_FILE_SIZE_LIMIT_MB);
830836
}
831837

832838
@Override
@@ -844,6 +850,16 @@ public Integer getNegaiveCovidTestsMaxAgeDays() {
844850
return parseProperty(NEGATIVE_COVID_TESTS_MAX_AGE_DAYS, null, Integer::parseInt);
845851
}
846852

853+
@Override
854+
public long getMinimumEmancipatedAge() {
855+
return getLong(MINIMUM_EMANCIPATED_AGE, DEFAULT_MINIMUM_EMANCIPATED_AGE);
856+
}
857+
858+
@Override
859+
public long getMinimumAdultAge() {
860+
return getLong(MINIMUM_ADULT_AGE, DEFAULT_MINIMUM_ADULT_AGE);
861+
}
862+
847863
@LocalBean
848864
@Stateless
849865
public static class ConfigFacadeEjbLocal extends ConfigFacadeEjb {

sormas-backend/src/main/java/de/symeda/sormas/backend/infrastructure/facility/FacilityFacadeEjb.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,9 +333,9 @@ public List<FacilityReferenceDto> getByNameAndType(
333333
}
334334

335335
@Override
336-
public FacilityReferenceDto getByAddress(String street, String postalCode, String city) {
336+
public FacilityReferenceDto getByAddress(String street, String houseNumber, String postalCode, String city) {
337337

338-
return toReferenceDto(service.getByAddress(street, postalCode, city));
338+
return toReferenceDto(service.getByAddress(street, houseNumber, postalCode, city));
339339
}
340340

341341
@Override

sormas-backend/src/main/java/de/symeda/sormas/backend/infrastructure/facility/FacilityService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package de.symeda.sormas.backend.infrastructure.facility;
1717

1818
import java.util.List;
19+
import java.util.Optional;
1920
import java.util.function.BiFunction;
2021

2122
import javax.ejb.EJB;
@@ -200,7 +201,7 @@ public List<Facility> getFacilitiesByNameAndType(
200201
return em.createQuery(cq).getResultList();
201202
}
202203

203-
public Facility getByAddress(String street, String postalCode, String city) {
204+
public Facility getByAddress(String street, String houseNumber, String postalCode, String city) {
204205

205206
if (StringUtils.isAnyBlank(street, postalCode, city)) {
206207
return null;
@@ -213,6 +214,9 @@ public Facility getByAddress(String street, String postalCode, String city) {
213214
Predicate filter = cb.and(
214215
createBasicFilter(cb, from),
215216
cb.equal(cb.lower(cb.trim(from.get(Facility.STREET))), street.trim().toLowerCase()),
217+
cb.equal(
218+
cb.lower(cb.trim(from.get(Facility.HOUSE_NUMBER))),
219+
Optional.ofNullable(houseNumber).map(s -> s.trim().toLowerCase()).orElse(null)),
216220
cb.equal(cb.lower(cb.trim(from.get(Facility.POSTAL_CODE))), postalCode.trim().toLowerCase()),
217221
cb.equal(cb.lower(cb.trim(from.get(Facility.CITY))), city.trim().toLowerCase()));
218222

sormas-backend/src/main/java/de/symeda/sormas/backend/person/Person.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ public class Person extends AbstractDomainObject implements IsPerson, HasExterna
142142
public static final String IMMUNIZATIONS = "immunizations";
143143
public static final String ADDITIONAL_DETAILS = "additionalDetails";
144144
public static final String TRAVEL_ENTRIES = "travelEntries";
145+
public static final String IS_INCAPACITATED = "isIncapacitated";
146+
public static final String IS_EMANCIPATED = "emancipated";
145147

146148
private String firstName;
147149
private String lastName;
@@ -211,6 +213,9 @@ public class Person extends AbstractDomainObject implements IsPerson, HasExterna
211213
private Country citizenship;
212214
private String additionalDetails;
213215

216+
private boolean isIncapacitated;
217+
private boolean emancipated;
218+
214219
private List<Case> cases = new ArrayList<>();
215220
private List<Contact> contacts = new ArrayList<>();
216221
private List<EventParticipant> eventParticipants = new ArrayList<>();
@@ -660,6 +665,24 @@ public void setHasCovidApp(boolean hasCovidApp) {
660665
this.hasCovidApp = hasCovidApp;
661666
}
662667

668+
@Column
669+
public boolean isIncapacitated() {
670+
return isIncapacitated;
671+
}
672+
673+
public void setIncapacitated(boolean incapacitated) {
674+
isIncapacitated = incapacitated;
675+
}
676+
677+
@Column
678+
public boolean isEmancipated() {
679+
return emancipated;
680+
}
681+
682+
public void setEmancipated(boolean emancipated) {
683+
this.emancipated = emancipated;
684+
}
685+
663686
@Column
664687
public boolean isCovidCodeDelivered() {
665688
return covidCodeDelivered;

0 commit comments

Comments
 (0)