diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index a70b9951e8a..65413b836da 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -104,7 +104,7 @@ The development team uses an epic as an umbrella for large change or feature str
## Contributing to the Project
-There are many ways in which you can contribute to this project as a non-developer. If there is something you would like to do that you don't find instructions about here - or if you want to learn how you can get involved - please contact us at sormas@helmholtz-hzi.de
+There are many ways in which you can contribute to this project as a non-developer. If there is something you would like to do that you don't find instructions about here - or if you want to learn how you can get involved - please contact us at info@sormas.org
or through our [GitHub Discussions](https://github.com/sormas-foundation/SORMAS-Project/discussions) and let us know how we can assist you!
Some possibilities to contribute to SORMAS are:
@@ -115,7 +115,7 @@ Some possibilities to contribute to SORMAS are:
## Contributing to the Code
If you're interested in participating in the development of SORMAS, please follow the [Development Environment Setup Instructions](DEVELOPMENT_ENVIRONMENT.md) before you start developing. If you have problems setting up your development environment or need assistance in choosing the first issue to work on,
-please get in touch with us through our [GitHub Discussions](https://github.com/sormas-foundation/SORMAS-Project/discussions) or by contacting us at sormas@helmholtz-hzi.de.
+please get in touch with us through our [GitHub Discussions](https://github.com/sormas-foundation/SORMAS-Project/discussions) or by contacting us at info@sormas.org.
Additionally, our [Wiki](https://github.com/sormas-foundation/SORMAS-Project/wiki) contains some specific development guides that cover common issues like adding new fields to an entity that we suggest to check out before you start implementing something related to those topics:
@@ -249,4 +249,4 @@ These dependencies have been added to the dependabot ignore list, so no dependen
#### Keycloak
The Keycloak version in SORMAS-Project only defines the version of the Keycloak admin client library. When a new version of Keycloak is available this should be updated after the [Keycloak version is SORMAS-Docker](https://github.com/SORMAS-Foundation/SORMAS-Docker/blob/devops/keycloak/Dockerfile) has been updated. \
-This can be tested locally by building the updated Keycloak docker image and then using it in a [container](https://github.com/SORMAS-Foundation/SORMAS-Project/tree/development/sormas-base/setup/keycloak) together with a local Payara instance.
\ No newline at end of file
+This can be tested locally by building the updated Keycloak docker image and then using it in a [container](https://github.com/SORMAS-Foundation/SORMAS-Project/tree/development/sormas-base/setup/keycloak) together with a local Payara instance.
diff --git a/sormas-api/pom.xml b/sormas-api/pom.xml
index 793b9ef6f07..1e162e898d5 100644
--- a/sormas-api/pom.xml
+++ b/sormas-api/pom.xml
@@ -2,7 +2,7 @@
de.symeda.sormas
sormas-base
- 1.93.0
+ 1.94.0
../sormas-base
4.0.0
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFollowUpDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFollowUpDto.java
index 07686ce7111..a1a03d8c5a6 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFollowUpDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseFollowUpDto.java
@@ -33,7 +33,7 @@ public class CaseFollowUpDto extends FollowUpDto {
private Boolean isInJurisdiction;
//@formatter:off
- public CaseFollowUpDto(String uuid, Date changeDate, String personFirstName, String personLastName,
+ public CaseFollowUpDto(String uuid, String personFirstName, String personLastName,
Date reportDate, Date symptomsOnsetDate, Date followUpUntil, SymptomJournalStatus symptomJournalStatus,
Disease disease,
boolean isInJurisdiction
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java
index 05b63ea943d..e8c1c916f1b 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java
@@ -87,7 +87,7 @@ public CaseIndexDetailedDto(long id, String uuid, String epidNumber, String exte
YesNoUnknown reInfection, String city, String street, String houseNumber, String additionalInformation, String postalCode, String phone,
String reportingUserUuid, String reportingUserFirstName, String reportingUserLastName, Date symptomOnsetDate,
String responsibleRegion, String responsibleCommunity,
- int visitCount, long eventCount, Date latestSampleDateTime, long sampleCount, Date latestChangedDate) {
+ int visitCount, long eventCount, Date latestSampleDateTime, long sampleCount) {
super(id, uuid, epidNumber, externalID, externalToken, internalToken, personUuid, personFirstName, personLastName,
disease, diseaseVariant, diseaseDetails, caseClassification, investigationStatus,
presentCondition, reportDate, creationDate,
@@ -95,7 +95,7 @@ public CaseIndexDetailedDto(long id, String uuid, String epidNumber, String exte
healthFacilityName, healthFacilityDetails, pointOfEntryUuid, pointOfEntryName, pointOfEntryDetails, surveillanceOfficerUuid, outcome,
age, ageType, birthdateDD, birthdateMM, birthdateYYYY, sex,
quarantineTo, completeness, followUpStatus, followUpUntil, symptomJournalStatus, vaccinationStatus, changeDate, facilityId,
- responsibleRegionUuid, responsibleDistrictUuid, responsibleDistrictName, deletionReason, otherDeleteReason, isInJurisdiction, visitCount, latestChangedDate);
+ responsibleRegionUuid, responsibleDistrictUuid, responsibleDistrictName, deletionReason, otherDeleteReason, isInJurisdiction, visitCount);
//@formatter:on
this.reInfection = reInfection;
@@ -114,38 +114,6 @@ public CaseIndexDetailedDto(long id, String uuid, String epidNumber, String exte
this.responsibleCommunity = responsibleCommunity;
}
- //@formatter:off
- public CaseIndexDetailedDto(
- long id, String uuid, String epidNumber, String externalID, String externalToken, String internalToken,
- String personUuid, String personFirstName, String personLastName,
- Disease disease, DiseaseVariant diseaseVariant, String diseaseDetails,
- CaseClassification caseClassification, InvestigationStatus investigationStatus, PresentCondition presentCondition,
- Date reportDate, Date creationDate,
- String regionUuid, String districtUuid,
- String healthFacilityUuid, String healthFacilityName, String healthFacilityDetails,
- String pointOfEntryUuid, String pointOfEntryName, String pointOfEntryDetails, String surveillanceOfficerUuid,
- CaseOutcome outcome, Integer age, ApproximateAgeType ageType, Integer birthdateDD, Integer birthdateMM, Integer birthdateYYYY,
- Sex sex, Date quarantineTo, Float completeness, FollowUpStatus followUpStatus, Date followUpUntil,
- SymptomJournalStatus symptomJournalStatus, VaccinationStatus vaccinationStatus, Date changeDate, Long facilityId,
- String responsibleRegionUuid, String responsibleDistrictUuid, String responsibleDistrictName, DeletionReason deletionReason, String otherDeleteReason, boolean isInJurisdiction,
- //detailed fields
- YesNoUnknown reInfection, String city, String street, String houseNumber, String additionalInformation,
- String postalCode, String phone, String reportingUserUuid, String reportingUserFirstName, String reportingUserLastName,
- Date symptomOnsetDate, String responsibleRegion, String responsibleCommunity, int visitCount,
- Date latestSampleDateTime, long sampleCount, Date latestChangedDate) {
- this(id, uuid, epidNumber, externalID, externalToken, internalToken, personUuid, personFirstName, personLastName,
- disease, diseaseVariant, diseaseDetails, caseClassification, investigationStatus, presentCondition,
- reportDate, creationDate, regionUuid, districtUuid, healthFacilityUuid, healthFacilityName,
- healthFacilityDetails, pointOfEntryUuid, pointOfEntryName, pointOfEntryDetails, surveillanceOfficerUuid,
- outcome, age, ageType, birthdateDD, birthdateMM, birthdateYYYY, sex, quarantineTo, completeness,
- followUpStatus, followUpUntil, symptomJournalStatus, vaccinationStatus, changeDate, facilityId,
- responsibleRegionUuid, responsibleDistrictUuid, responsibleDistrictName, deletionReason, otherDeleteReason, isInJurisdiction, reInfection,
- city, street, houseNumber, additionalInformation, postalCode, phone, reportingUserUuid,
- reportingUserFirstName, reportingUserLastName, symptomOnsetDate, responsibleRegion, responsibleCommunity,
- visitCount, 0, latestSampleDateTime, sampleCount, latestChangedDate);
- //@formatter:on
- }
-
public YesNoUnknown getReInfection() {
return reInfection;
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java
index 5f436d5c42d..e5dc8d51a45 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDto.java
@@ -135,29 +135,6 @@ public class CaseIndexDto extends PseudonymizableIndexDto implements MergeableIn
private Boolean isInJurisdiction;
- //@formatter:off
- public CaseIndexDto(long id, String uuid, String epidNumber, String externalID, String externalToken, String internalToken, String personUuid, String personFirstName, String personLastName, Disease disease,
- DiseaseVariant diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
- PresentCondition presentCondition, Date reportDate, Date creationDate, String regionUuid,
- String districtUuid, String healthFacilityUuid, String healthFacilityName, String healthFacilityDetails,
- String pointOfEntryUuid, String pointOfEntryName, String pointOfEntryDetails, String surveillanceOfficerUuid, CaseOutcome outcome,
- Integer age, ApproximateAgeType ageType, Integer birthdateDD, Integer birthdateMM, Integer birthdateYYYY, Sex sex, Date quarantineTo,
- Float completeness, FollowUpStatus followUpStatus, Date followUpUntil, SymptomJournalStatus symptomJournalStatus, VaccinationStatus vaccinationStatus, Date changeDate, Long facilityId,
- // responsible jurisdiction
- String responsibleRegionUuid, String responsibleDistrictUuid, String responsibleDistrictName, DeletionReason deletionReason, String otherDeletionReason, boolean isInJurisdiction) {
- this(id, uuid, epidNumber, externalID, externalToken, internalToken, personUuid, personFirstName, personLastName, disease,
- diseaseVariant, diseaseDetails, caseClassification, investigationStatus,
- presentCondition, reportDate, creationDate, regionUuid,
- districtUuid, healthFacilityUuid, healthFacilityName, healthFacilityDetails,
- pointOfEntryUuid, pointOfEntryName, pointOfEntryDetails, surveillanceOfficerUuid, outcome,
- age, ageType, birthdateDD, birthdateMM, birthdateYYYY, sex, quarantineTo,
- completeness, followUpStatus, followUpUntil, symptomJournalStatus, vaccinationStatus, changeDate, facilityId,
- responsibleRegionUuid, responsibleDistrictUuid, responsibleDistrictName, deletionReason, otherDeletionReason, isInJurisdiction,
- null, null
- );
- }
- //@formatter:on
-
//@formatter:off
public CaseIndexDto(long id, String uuid, String epidNumber, String externalID, String externalToken, String internalToken, String personUuid, String personFirstName, String personLastName, Disease disease,
DiseaseVariant diseaseVariant, String diseaseDetails, CaseClassification caseClassification, InvestigationStatus investigationStatus,
@@ -170,8 +147,7 @@ public CaseIndexDto(long id, String uuid, String epidNumber, String externalID,
// responsible jurisdiction
String responsibleRegionUuid, String responsibleDistrictUuid, String responsibleDistrictName, DeletionReason deletionReason, String otherDeletionReason, boolean isInJurisdiction,
// others
- Integer visitCount,
- Date latestChangedDate // unused, only here for TypedQuery mapping
+ Integer visitCount
) {
//@formatter:on
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java
index 2fcbb8b27da..9f380d5c934 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseMergeIndexDto.java
@@ -1,7 +1,6 @@
package de.symeda.sormas.api.caze;
import java.util.Date;
-import java.util.Objects;
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.common.DeletionReason;
@@ -79,7 +78,6 @@ public CaseMergeIndexDto(
deletionReason,
otherDeletionReason,
isInJurisdiction,
- null,
null
);
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDetailedDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDetailedDto.java
index 9526c22ca08..33287f8fe12 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDetailedDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDetailedDto.java
@@ -73,8 +73,7 @@ public ContactIndexDetailedDto(String uuid, String personUuid, String personFirs
String externalID, String externalToken, String internalToken, DeletionReason deletionReason, String otherDeleteReason, boolean isInJurisdiction, boolean isCaseInJurisdiction,
Sex sex, Integer approximateAge, ApproximateAgeType approximateAgeType,
String city, String street, String houseNumber, String additionalInformation, String postalCode, String phone,
- String reportingUserFirstName, String reportingUserLastName, ContactRelation relationToCase, int visitCount,
- Date latestChangedDate // unused, only here for TypedQuery mapping
+ String reportingUserFirstName, String reportingUserLastName, ContactRelation relationToCase, int visitCount
) {
//@formatter:on
@@ -82,7 +81,7 @@ public ContactIndexDetailedDto(String uuid, String personUuid, String personFirs
super(uuid, personUuid, personFirstName, personLastName, cazeUuid, disease, diseaseDetails, caseFirstName, caseLastName,
regionName, districtName, lastContactDate, contactCategory, contactProximity, contactClassification, contactStatus,
completeness, followUpStatus, followUpUntil, symptomJournalStatus, vaccinationStatus, contactOfficerUuid, reportingUserUuid, reportDateTime, caseClassification,
- caseRegionName, caseDistrictName, changeDate, externalID, externalToken, internalToken, deletionReason, otherDeleteReason,isInJurisdiction, isCaseInJurisdiction , visitCount, latestChangedDate);
+ caseRegionName, caseDistrictName, changeDate, externalID, externalToken, internalToken, deletionReason, otherDeleteReason,isInJurisdiction, isCaseInJurisdiction , visitCount);
//@formatter:on
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDto.java
index 75d4a99be5a..a12aabe6e52 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactIndexDto.java
@@ -109,8 +109,7 @@ public ContactIndexDto(String uuid, String personUuid, String personFirstName, S
CaseClassification caseClassification, String caseRegionName, String caseDistrictName,
Date changeDate, // XXX: unused, only here for TypedQuery mapping
String externalID, String externalToken, String internalToken, DeletionReason deletionReason, String otherDeletionReason, boolean isInJurisdiction, boolean isCaseInJurisdiction,
- int visitCount,
- Date latestChangedDate // unused, only here for TypedQuery mapping
+ int visitCount
) {
//@formatter:on
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnum.java b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnum.java
index 44f55bff4fd..b8c9b90ec61 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnum.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnum.java
@@ -25,7 +25,7 @@
* Base class for customizable enums. Supposed to be extended for every enum that is made customizable to ensure type safety.
*/
@AuditedClass
-public abstract class CustomizableEnum implements Serializable {
+public abstract class CustomizableEnum implements Serializable, Cloneable {
private static final long serialVersionUID = 8698428745095686559L;
@@ -96,5 +96,14 @@ public int hashCode() {
return Objects.hash(value);
}
+ @Override
+ public CustomizableEnum clone() {
+ try {
+ return (CustomizableEnum) super.clone();
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
public abstract Map> getAllProperties();
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumCriteria.java b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumCriteria.java
index 6314aeaf72d..c00cc4e1f4c 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumCriteria.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumCriteria.java
@@ -27,6 +27,7 @@ public class CustomizableEnumCriteria extends BaseCriteria implements Serializab
private String freeTextFilter;
private CustomizableEnumType dataType;
private Disease disease;
+ private Boolean active = true;
public String getFreeTextFilter() {
return freeTextFilter;
@@ -55,4 +56,13 @@ public CustomizableEnumCriteria disease(Disease disease) {
return this;
}
+ public Boolean getActive() {
+ return active;
+ }
+
+ public CustomizableEnumCriteria active(Boolean active) {
+ this.active = active;
+ return this;
+ }
+
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java
index 1133f9f6e8e..9cf74c08a5b 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumFacade.java
@@ -82,11 +82,11 @@ public interface CustomizableEnumFacade
* Retrieves the cached contents of all enum value instances of the specified type. The results are already
* internationalized based on the user's language, or the server language as a fallback. If the enum values for the
* specified type and disease have not been requested yet, the cache is extended with them on demand.
- *
+ *
* @param type
* The type for which to retrieve the enum values
* @param disease
- * The disease for which to retrieve the enum values. If null, all enum values that are disease-independent are retrieved
+ * The disease for which to retrieve the enum values; if null, all enum values that are disease-independent are retrieved
* @param
* The specific extension of {@link CustomizableEnum} for type safety
* @return A list of all enum instances containing their values, internationalized captions, and optional properties
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumValueDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumValueDto.java
index 92bcde6d842..cf109768988 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumValueDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/customizableenum/CustomizableEnumValueDto.java
@@ -47,6 +47,7 @@ public class CustomizableEnumValueDto extends EntityDto {
public static final String TRANSLATIONS = "translations";
public static final String DISEASES = "diseases";
public static final String PROPERTIES = "properties";
+ public static final String ACTIVE = "active";
@NotNull(message = Validations.required)
private CustomizableEnumType dataType;
@@ -69,10 +70,12 @@ public class CustomizableEnumValueDto extends EntityDto {
* or translations because they can be translated via properties files.
*/
private boolean defaultValue;
+ private boolean active;
public static CustomizableEnumValueDto build() {
CustomizableEnumValueDto dto = new CustomizableEnumValueDto();
dto.setUuid(DataHelper.createUuid());
+ dto.setActive(true);
return dto;
}
@@ -147,4 +150,12 @@ public boolean isDefaultValue() {
public void setDefaultValue(boolean defaultValue) {
this.defaultValue = defaultValue;
}
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public void setActive(boolean active) {
+ this.active = active;
+ }
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventGroupIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventGroupIndexDto.java
index ad5675a0e91..6a7546b71a9 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventGroupIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventGroupIndexDto.java
@@ -14,8 +14,6 @@
*/
package de.symeda.sormas.api.event;
-import java.util.Date;
-
import de.symeda.sormas.api.uuid.AbstractUuidDto;
public class EventGroupIndexDto extends AbstractUuidDto {
@@ -27,16 +25,12 @@ public class EventGroupIndexDto extends AbstractUuidDto {
public static final String UUID = "uuid";
public static final String NAME = "name";
public static final String EVENT_COUNT = "eventCount";
- public static final String CHANGED_DATE = "changeDate";
-
private String name;
private Long eventCount;
- private Date changeDate;
- public EventGroupIndexDto(String uuid, String name, Date changeDate, Long eventCount) {
+ public EventGroupIndexDto(String uuid, String name, Long eventCount) {
super(uuid);
this.name = name;
- this.changeDate = changeDate;
this.eventCount = eventCount;
}
@@ -48,14 +42,6 @@ public void setName(String name) {
this.name = name;
}
- public Date getChangeDate() {
- return changeDate;
- }
-
- public void setChangeDate(Date changeDate) {
- this.changeDate = changeDate;
- }
-
public Long getEventCount() {
return eventCount;
}
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventIndexDto.java
index b2a3db43771..1f92791d04f 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventIndexDto.java
@@ -163,7 +163,6 @@ public EventIndexDto(
String responsibleUserFirstName,
String responsibleUserLastName,
boolean isInJurisdictionOrOwned,
- Date changeDate,
EventIdentificationSource eventIdentificationSource,
DeletionReason deletionReason,
String otherDeletionReason) {
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantIndexDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantIndexDto.java
index d40b73a7ec2..387af8c24ca 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantIndexDto.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantIndexDto.java
@@ -5,7 +5,6 @@
import de.symeda.sormas.api.caze.VaccinationStatus;
import de.symeda.sormas.api.common.DeletionReason;
-import de.symeda.sormas.api.person.ApproximateAgeType;
import de.symeda.sormas.api.person.Sex;
import de.symeda.sormas.api.sample.PathogenTestResultType;
import de.symeda.sormas.api.utils.PersonalData;
@@ -64,12 +63,10 @@ public EventParticipantIndexDto(
String lastName,
Sex sex,
Integer approximateAge,
- ApproximateAgeType approximateAgeType,
String involvementDescription,
PathogenTestResultType pathogenTestResult,
Date sampleDateTime,
VaccinationStatus vaccinationStatus,
- String reportingUserUuid,
DeletionReason deletionReason,
String otherDeletionReason,
boolean isInJurisdiction,
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java
index 9f33aab54c0..89fcf5e30cd 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractProcessingFlow.java
@@ -32,7 +32,6 @@
import de.symeda.sormas.api.externalmessage.processing.flow.ProcessingResult;
import de.symeda.sormas.api.externalmessage.processing.flow.ProcessingResultStatus;
import de.symeda.sormas.api.feature.FeatureType;
-import de.symeda.sormas.api.feature.FeatureTypeProperty;
import de.symeda.sormas.api.infrastructure.facility.FacilityDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityReferenceDto;
import de.symeda.sormas.api.infrastructure.facility.FacilityType;
@@ -157,7 +156,7 @@ protected CaseDataDto buildCase(PersonDto person, ExternalMessageDto externalMes
caseDto.setReportDate(
externalMessageDto.getCaseReportDate() != null ? externalMessageDto.getCaseReportDate() : externalMessageDto.getMessageDateTime());
- if (processingFacade.isFeaturePropertyValueTrue(FeatureType.CASE_SURVEILANCE, FeatureTypeProperty.HIDE_JURISDICTION_FIELDS)) {
+ if (processingFacade.isFeatureEnabled(FeatureType.HIDE_JURISDICTION_FIELDS)) {
caseDto.setResponsibleRegion(processingFacade.getDefaultRegionReference());
caseDto.setResponsibleDistrict(processingFacade.getDefaultDistrictReference());
caseDto.setResponsibleCommunity(processingFacade.getDefaultCommunityReference());
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageProcessingFacade.java b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageProcessingFacade.java
index 2202197a083..260b964ae40 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageProcessingFacade.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageProcessingFacade.java
@@ -48,7 +48,6 @@
import de.symeda.sormas.api.externalmessage.ExternalMessageFacade;
import de.symeda.sormas.api.feature.FeatureConfigurationFacade;
import de.symeda.sormas.api.feature.FeatureType;
-import de.symeda.sormas.api.feature.FeatureTypeProperty;
import de.symeda.sormas.api.infrastructure.community.CommunityFacade;
import de.symeda.sormas.api.infrastructure.community.CommunityReferenceDto;
import de.symeda.sormas.api.infrastructure.country.CountryFacade;
@@ -253,8 +252,8 @@ public PersonDto getPersonByContext(PersonContext personContext, String personUu
}
- public boolean isFeaturePropertyValueTrue(FeatureType featureType, FeatureTypeProperty featureTypeProperty) {
- return featureConfigurationFacade.isPropertyValueTrue(featureType, featureTypeProperty);
+ public boolean isFeatureEnabled(FeatureType featureType) {
+ return featureConfigurationFacade.isFeatureEnabled(featureType);
}
public RegionReferenceDto getDefaultRegionReference() {
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureType.java b/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureType.java
index e58055f54e2..177ed3dd2b1 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureType.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureType.java
@@ -40,12 +40,7 @@ public enum FeatureType {
// FEATURE MODULES
AGGREGATE_REPORTING(true, true, null, null, null),
CAMPAIGNS(true, false, null, null, null),
- CASE_SURVEILANCE(true,
- true,
- null,
- null,
- ImmutableMap
- .of(FeatureTypeProperty.AUTOMATIC_RESPONSIBILITY_ASSIGNMENT, Boolean.TRUE, FeatureTypeProperty.HIDE_JURISDICTION_FIELDS, Boolean.FALSE)),
+ CASE_SURVEILANCE(true, true, null, null, ImmutableMap.of(FeatureTypeProperty.AUTOMATIC_RESPONSIBILITY_ASSIGNMENT, Boolean.TRUE)),
CLINICAL_MANAGEMENT(true, true, null, null, null),
CONTACT_TRACING(true,
true,
@@ -208,6 +203,7 @@ public enum FeatureType {
ImmutableMap.of(FeatureTypeProperty.THRESHOLD_IN_DAYS, 90)),
EDIT_ARCHIVED_ENTITIES(true, true, null, null, null),
EXTERNAL_EMAILS(true, false, null, null, null),
+ HIDE_JURISDICTION_FIELDS(true, false, null, null, null),
// SHOW/HIDE VIEW TAB FEATURES
VIEW_TAB_CASES_HOSPITALIZATION(true,
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureTypeProperty.java b/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureTypeProperty.java
index 7f0d0ee7cbe..6f4ec901d7f 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureTypeProperty.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/feature/FeatureTypeProperty.java
@@ -29,8 +29,7 @@ public enum FeatureTypeProperty {
SHARE_SAMPLES(Boolean.class),
SHARE_IMMUNIZATIONS(Boolean.class),
SHARE_REPORTS(Boolean.class),
- FETCH_MODE(Boolean.class),
- HIDE_JURISDICTION_FIELDS(Boolean.class);
+ FETCH_MODE(Boolean.class);
private final Class> returnType;
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java
index f6d3dd2ee08..a3b5a16b05a 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java
@@ -818,13 +818,16 @@ public interface Captions {
String creationDate = "creationDate";
String CustomizableEnum_hasDetails = "CustomizableEnum.hasDetails";
String CustomizableEnum_hasDetails_short = "CustomizableEnum.hasDetails.short";
+ String CustomizableEnumValue_active = "CustomizableEnumValue.active";
String CustomizableEnumValue_caption = "CustomizableEnumValue.caption";
String CustomizableEnumValue_dataType = "CustomizableEnumValue.dataType";
String CustomizableEnumValue_diseases = "CustomizableEnumValue.diseases";
String CustomizableEnumValue_properties = "CustomizableEnumValue.properties";
String CustomizableEnumValue_value = "CustomizableEnumValue.value";
+ String customizableEnumValueActiveValues = "customizableEnumValueActiveValues";
String customizableEnumValueAllDiseases = "customizableEnumValueAllDiseases";
String customizableEnumValueDiseaseCount = "customizableEnumValueDiseaseCount";
+ String customizableEnumValueInactiveValues = "customizableEnumValueInactiveValues";
String customizableEnumValueNoProperties = "customizableEnumValueNoProperties";
String dashboardAggregatedNumber = "dashboardAggregatedNumber";
String dashboardAlive = "dashboardAlive";
@@ -1466,6 +1469,7 @@ public interface Captions {
String externalMessageProcess = "externalMessageProcess";
String externalMessageRelatedEntriesFound = "externalMessageRelatedEntriesFound";
String externalMessagesList = "externalMessagesList";
+ String externalMessageValueNotSpecified = "externalMessageValueNotSpecified";
String ExternalSurveillanceToolGateway_confirmDelete = "ExternalSurveillanceToolGateway.confirmDelete";
String ExternalSurveillanceToolGateway_confirmSend = "ExternalSurveillanceToolGateway.confirmSend";
String ExternalSurveillanceToolGateway_excludeAndSend = "ExternalSurveillanceToolGateway.excludeAndSend";
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java
index e54f53c6709..fadd698da1f 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java
@@ -1397,6 +1397,7 @@ public interface Strings {
String messagePersonListAddedAsEventPerticipants = "messagePersonListAddedAsEventPerticipants";
String messagePersonMergedAddressDescription = "messagePersonMergedAddressDescription";
String messagePersonMergeNoEventParticipantRights = "messagePersonMergeNoEventParticipantRights";
+ String messagePersonNationalHealthIdInvalid = "messagePersonNationalHealthIdInvalid";
String messagePersonSaved = "messagePersonSaved";
String messagePersonSavedClassificationChanged = "messagePersonSavedClassificationChanged";
String messagePickEventParticipantsIncompleteSelection = "messagePickEventParticipantsIncompleteSelection";
@@ -1687,6 +1688,7 @@ public interface Strings {
String reloadPageToSeeChanges = "reloadPageToSeeChanges";
String reportedBy = "reportedBy";
String reportedOn = "reportedOn";
+ String reportingUser = "reportingUser";
String setTo = "setTo";
String sormasToSormasLoadingShares = "sormasToSormasLoadingShares";
String step = "step";
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Validations.java b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Validations.java
index 5fd5571e404..29d9dfc8231 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Validations.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/i18n/Validations.java
@@ -144,6 +144,7 @@ public interface Validations {
String importUnexpectedError = "importUnexpectedError";
String importWrongDataTypeError = "importWrongDataTypeError";
String infrastructureDataLocked = "infrastructureDataLocked";
+ String invalidNationalHealthId = "invalidNationalHealthId";
String investigationStatusUnclassifiedCase = "investigationStatusUnclassifiedCase";
String jurisdictionChangeUserAssignment = "jurisdictionChangeUserAssignment";
String latitudeBetween = "latitudeBetween";
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/user/DefaultUserRole.java b/sormas-api/src/main/java/de/symeda/sormas/api/user/DefaultUserRole.java
index 79aed19247c..d08ff3355f5 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/user/DefaultUserRole.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/user/DefaultUserRole.java
@@ -441,6 +441,9 @@ public Set getDefaultUserRights() {
ENVIRONMENT_SAMPLE_DELETE,
ENVIRONMENT_SAMPLE_IMPORT,
ENVIRONMENT_SAMPLE_EXPORT,
+ ENVIRONMENT_PATHOGEN_TEST_CREATE,
+ ENVIRONMENT_PATHOGEN_TEST_EDIT,
+ ENVIRONMENT_PATHOGEN_TEST_DELETE,
DOCUMENT_VIEW,
DOCUMENT_UPLOAD,
DOCUMENT_DELETE,
@@ -1141,6 +1144,8 @@ public Set getDefaultUserRights() {
ENVIRONMENT_SAMPLE_EDIT_DISPATCH,
ENVIRONMENT_SAMPLE_EDIT_RECEIVAL,
ENVIRONMENT_SAMPLE_EXPORT,
+ ENVIRONMENT_PATHOGEN_TEST_CREATE,
+ ENVIRONMENT_PATHOGEN_TEST_EDIT,
DOCUMENT_VIEW,
DOCUMENT_UPLOAD,
EXTERNAL_EMAIL_SEND,
@@ -1387,6 +1392,9 @@ public Set getDefaultUserRights() {
ENVIRONMENT_SAMPLE_DELETE,
ENVIRONMENT_SAMPLE_IMPORT,
ENVIRONMENT_SAMPLE_EXPORT,
+ ENVIRONMENT_PATHOGEN_TEST_CREATE,
+ ENVIRONMENT_PATHOGEN_TEST_EDIT,
+ ENVIRONMENT_PATHOGEN_TEST_DELETE,
DOCUMENT_VIEW,
DOCUMENT_UPLOAD,
DOCUMENT_DELETE,
@@ -1546,11 +1554,10 @@ public Set getDefaultUserRights() {
ENVIRONMENT_SAMPLE_DELETE,
ENVIRONMENT_SAMPLE_IMPORT,
ENVIRONMENT_SAMPLE_EXPORT,
+ ENVIRONMENT_PATHOGEN_TEST_CREATE,
+ ENVIRONMENT_PATHOGEN_TEST_EDIT,
+ ENVIRONMENT_PATHOGEN_TEST_DELETE,
PERFORM_BULK_OPERATIONS,
- SAMPLE_VIEW,
- SAMPLE_EDIT,
- PATHOGEN_TEST_CREATE,
- PATHOGEN_TEST_EDIT,
TASK_VIEW,
TASK_CREATE,
TASK_EDIT,
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/user/DtoViewAndEditRights.java b/sormas-api/src/main/java/de/symeda/sormas/api/user/DtoViewAndEditRights.java
index 085794ca2dd..bc6050f4dc3 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/user/DtoViewAndEditRights.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/user/DtoViewAndEditRights.java
@@ -87,7 +87,9 @@ public class DtoViewAndEditRights {
viewRights.put(
PathogenTestDto.class.getSimpleName(),
Stream.of(UserRight.SAMPLE_VIEW, UserRight.ENVIRONMENT_SAMPLE_VIEW).collect(Collectors.toSet()));
- editRights.put(PathogenTestDto.class.getSimpleName(), Collections.singleton(UserRight.PATHOGEN_TEST_EDIT));
+ editRights.put(
+ PathogenTestDto.class.getSimpleName(),
+ Stream.of(UserRight.PATHOGEN_TEST_EDIT, UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT).collect(Collectors.toSet()));
viewRights.put(PersonDto.class.getSimpleName(), Collections.singleton(UserRight.PERSON_VIEW));
editRights.put(PersonDto.class.getSimpleName(), Collections.singleton(UserRight.PERSON_EDIT));
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java b/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java
index c3ac8b92d22..cbab9a2e49a 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java
@@ -229,6 +229,9 @@ public enum UserRight {
ENVIRONMENT_SAMPLE_DELETE(UserRightGroup.ENVIRONMENT, UserRight._ENVIRONMENT_SAMPLE_VIEW),
ENVIRONMENT_SAMPLE_IMPORT(UserRightGroup.ENVIRONMENT, UserRight._ENVIRONMENT_SAMPLE_CREATE),
ENVIRONMENT_SAMPLE_EXPORT(UserRightGroup.ENVIRONMENT, UserRight._ENVIRONMENT_SAMPLE_VIEW),
+ ENVIRONMENT_PATHOGEN_TEST_CREATE(UserRightGroup.ENVIRONMENT, UserRight._ENVIRONMENT_SAMPLE_VIEW),
+ ENVIRONMENT_PATHOGEN_TEST_EDIT(UserRightGroup.ENVIRONMENT, UserRight._ENVIRONMENT_SAMPLE_EDIT),
+ ENVIRONMENT_PATHOGEN_TEST_DELETE(UserRightGroup.ENVIRONMENT, UserRight._ENVIRONMENT_SAMPLE_VIEW),
DOCUMENT_VIEW(UserRightGroup.DOCUMENT),
DOCUMENT_UPLOAD(UserRightGroup.DOCUMENT, UserRight._DOCUMENT_VIEW),
@@ -458,6 +461,9 @@ public enum UserRight {
public static final String _ENVIRONMENT_SAMPLE_EDIT_DISPATCH = "ENVIRONMENT_SAMPLE_EDIT_DISPATCH";
public static final String _ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = "ENVIRONMENT_SAMPLE_EDIT_RECEIVAL";
public static final String _ENVIRONMENT_SAMPLE_DELETE = "ENVIRONMENT_SAMPLE_DELETE";
+ public static final String _ENVIRONMENT_PATHOGEN_TEST_CREATE = "ENVIRONMENT_PATHOGEN_TEST_CREATE";
+ public static final String _ENVIRONMENT_PATHOGEN_TEST_EDIT = "ENVIRONMENT_PATHOGEN_TEST_EDIT";
+ public static final String _ENVIRONMENT_PATHOGEN_TEST_DELETE = "ENVIRONMENT_PATHOGEN_TEST_DELETE";
public static final String _DOCUMENT_VIEW = "DOCUMENT_VIEW";
public static final String _DOCUMENT_UPLOAD = "DOCUMENT_UPLOAD";
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/jurisdiction/JurisdictionValidator.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/jurisdiction/JurisdictionValidator.java
index d3dd839a003..6421c683438 100644
--- a/sormas-api/src/main/java/de/symeda/sormas/api/utils/jurisdiction/JurisdictionValidator.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/jurisdiction/JurisdictionValidator.java
@@ -23,21 +23,23 @@
public abstract class JurisdictionValidator {
protected List extends JurisdictionValidator> associatedJurisdictionValidators;
+ private boolean userHasRestrictedAccess;
- public JurisdictionValidator(List extends JurisdictionValidator> associatedJurisdictionValidators) {
+ public JurisdictionValidator(List extends JurisdictionValidator> associatedJurisdictionValidators, boolean userHasRestrictedAccess) {
this.associatedJurisdictionValidators = associatedJurisdictionValidators;
+ this.userHasRestrictedAccess = userHasRestrictedAccess;
}
// disease restriction overrules entity ownership
public T inJurisdictionOrOwned() {
- T rootInJurisdictionOrOwned = isRootInJurisdictionOrOwned();
+ T rootInJurisdictionOrOwned = isRootAccessible();
T rootHasLimitedDisease = hasUserLimitedDisease();
if (associatedJurisdictionValidators != null && !associatedJurisdictionValidators.isEmpty()) {
final List jurisdictionTypes = new ArrayList<>();
jurisdictionTypes.add(and(rootInJurisdictionOrOwned, rootHasLimitedDisease));
for (JurisdictionValidator jurisdictionValidator : associatedJurisdictionValidators) {
if (jurisdictionValidator != null) {
- T associatedInJurisdictionOrOwned = jurisdictionValidator.isRootInJurisdictionOrOwned();
+ T associatedInJurisdictionOrOwned = jurisdictionValidator.isRootAccessible();
T associatedHasLimitedDisease = jurisdictionValidator.hasUserLimitedDisease();
jurisdictionTypes.add(and(associatedInJurisdictionOrOwned, associatedHasLimitedDisease));
}
@@ -68,12 +70,21 @@ public T inJurisdiction() {
}
}
+ public T isRootAccessible() {
+ if (userHasRestrictedAccess) {
+ return isRootInJurisdictionForRestrictedAccess();
+ }
+ return isRootInJurisdictionOrOwned();
+ }
+
public abstract T isRootInJurisdiction();
public abstract T isRootInJurisdictionOrOwned();
public abstract T hasUserLimitedDisease();
+ public abstract T isRootInJurisdictionForRestrictedAccess();
+
protected T isInJurisdictionByJurisdictionLevel(JurisdictionLevel jurisdictionLevel) {
switch (jurisdictionLevel) {
diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalemail/luxembourg/CheckDigitLuhn.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/CheckDigitLuhn.java
similarity index 95%
rename from sormas-backend/src/main/java/de/symeda/sormas/backend/externalemail/luxembourg/CheckDigitLuhn.java
rename to sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/CheckDigitLuhn.java
index 698b79ce1b3..a9ba98dde08 100644
--- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalemail/luxembourg/CheckDigitLuhn.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/CheckDigitLuhn.java
@@ -1,6 +1,6 @@
/*
* SORMAS® - Surveillance Outbreak Response Management & Analysis System
- * Copyright © 2016-2023 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package de.symeda.sormas.backend.externalemail.luxembourg;
+package de.symeda.sormas.api.utils.luxembourg;
/**
* Apply Luhn algorithm to compute check digit
diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalemail/luxembourg/CheckDigitVerhoeff.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/CheckDigitVerhoeff.java
similarity index 98%
rename from sormas-backend/src/main/java/de/symeda/sormas/backend/externalemail/luxembourg/CheckDigitVerhoeff.java
rename to sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/CheckDigitVerhoeff.java
index c34cc70d58d..88620dcd123 100644
--- a/sormas-backend/src/main/java/de/symeda/sormas/backend/externalemail/luxembourg/CheckDigitVerhoeff.java
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/CheckDigitVerhoeff.java
@@ -1,6 +1,6 @@
/*
* SORMAS® - Surveillance Outbreak Response Management & Analysis System
- * Copyright © 2016-2023 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package de.symeda.sormas.backend.externalemail.luxembourg;
+package de.symeda.sormas.api.utils.luxembourg;
/**
* Apply Verhoeff algorithm to compute check digit
diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/LuxembourgNationalHealthIdValidator.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/LuxembourgNationalHealthIdValidator.java
new file mode 100644
index 00000000000..a4d6fb87cf5
--- /dev/null
+++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/luxembourg/LuxembourgNationalHealthIdValidator.java
@@ -0,0 +1,67 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2024 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.api.utils.luxembourg;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class LuxembourgNationalHealthIdValidator {
+
+ /**
+ * - AAAA = année de naissance
+ * - MM = mois de naissance
+ * - JJ = jour de naissance
+ * - XXX = numéro aléatoire unique par date de naissance
+ * - C1 = numéro de contrôle calculé sur AAAAMMJJXXX suivant l’algorithme LUHN 10
+ * - C2 = numéro de contrôle calculé sur AAAAMMJJXXX suivant l’algorithme VERHOEFF
+ */
+ private static final Pattern NATIONAL_HEALTH_ID_PATTERN = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})(\\d{3})(\\d)(\\d)");
+
+ public static boolean isValid(String nationalHealthId, Integer birthdateYYYY, Integer birthdateMM, Integer birthdateDD) {
+ if (nationalHealthId == null) {
+ return false;
+ }
+
+ Matcher patternMatcher = NATIONAL_HEALTH_ID_PATTERN.matcher(nationalHealthId);
+ if (!patternMatcher.matches()) {
+ return false;
+ }
+
+ String yyyy = patternMatcher.group(1);
+ String mm = patternMatcher.group(2);
+ String dd = patternMatcher.group(3);
+ String xxx = patternMatcher.group(4);
+ String c1 = patternMatcher.group(5);
+ String c2 = patternMatcher.group(6);
+
+ if (isNullOrEquals(birthdateYYYY, Integer.parseInt(yyyy))
+ && isNullOrEquals(birthdateMM, Integer.parseInt(mm))
+ && isNullOrEquals(birthdateDD, Integer.parseInt(dd))) {
+ String iNumber = yyyy + mm + dd + xxx;
+
+ if (CheckDigitLuhn.checkDigit(iNumber + c1) && CheckDigitVerhoeff.checkDigit(iNumber + c2)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private static boolean isNullOrEquals(Integer personBirthdateFieldValue, int yyyy) {
+ return personBirthdateFieldValue == null || personBirthdateFieldValue == yyyy;
+ }
+
+}
diff --git a/sormas-api/src/main/resources/captions.properties b/sormas-api/src/main/resources/captions.properties
index 2581ae76814..b5e788f5747 100644
--- a/sormas-api/src/main/resources/captions.properties
+++ b/sormas-api/src/main/resources/captions.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_ar-SA.properties b/sormas-api/src/main/resources/captions_ar-SA.properties
index b962ef802d5..a711b7f3304 100644
--- a/sormas-api/src/main/resources/captions_ar-SA.properties
+++ b/sormas-api/src/main/resources/captions_ar-SA.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_cs-CZ.properties b/sormas-api/src/main/resources/captions_cs-CZ.properties
index 800b76ec820..dada4e2d078 100644
--- a/sormas-api/src/main/resources/captions_cs-CZ.properties
+++ b/sormas-api/src/main/resources/captions_cs-CZ.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Má detaily
customizableEnumValueAllDiseases=Všechny nemoci
customizableEnumValueDiseaseCount=%d nemoci
customizableEnumValueNoProperties=Žádné vlastnosti
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Datový typ
CustomizableEnumValue.value=Hodnota
CustomizableEnumValue.caption=Popisek
CustomizableEnumValue.diseases=Nemoci
CustomizableEnumValue.properties=Vlastnosti
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Naživu
dashboardApplyCustomFilter=Použít vlastní filtr
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Datum zprávy od...
ExternalMessageCriteria.messageDateTo=... do
ExternalMessageCriteria.birthDateFrom=Datum narození od...
ExternalMessageCriteria.birthDateTo=... do
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Imunizace
diff --git a/sormas-api/src/main/resources/captions_de-CH.properties b/sormas-api/src/main/resources/captions_de-CH.properties
index 1d72d96b683..d6329821a69 100644
--- a/sormas-api/src/main/resources/captions_de-CH.properties
+++ b/sormas-api/src/main/resources/captions_de-CH.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Lebendig
dashboardApplyCustomFilter=Eigenen Filter anwenden
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Meldungsdatum von...
ExternalMessageCriteria.messageDateTo=... bis
ExternalMessageCriteria.birthDateFrom=Geburtsdatum von...
ExternalMessageCriteria.birthDateTo=... bis
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunisierungen
diff --git a/sormas-api/src/main/resources/captions_de-DE.properties b/sormas-api/src/main/resources/captions_de-DE.properties
index 121a65ec2f2..e66f0327fa6 100644
--- a/sormas-api/src/main/resources/captions_de-DE.properties
+++ b/sormas-api/src/main/resources/captions_de-DE.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Lebendig
dashboardApplyCustomFilter=Eigenen Filter anwenden
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Meldungsdatum von...
ExternalMessageCriteria.messageDateTo=... bis
ExternalMessageCriteria.birthDateFrom=Geburtsdatum von...
ExternalMessageCriteria.birthDateTo=... bis
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunisierungen
diff --git a/sormas-api/src/main/resources/captions_en-AF.properties b/sormas-api/src/main/resources/captions_en-AF.properties
index a63935ef48f..1e767a361ea 100644
--- a/sormas-api/src/main/resources/captions_en-AF.properties
+++ b/sormas-api/src/main/resources/captions_en-AF.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_en-GH.properties b/sormas-api/src/main/resources/captions_en-GH.properties
index a6b6aee3c83..5eca23c8810 100644
--- a/sormas-api/src/main/resources/captions_en-GH.properties
+++ b/sormas-api/src/main/resources/captions_en-GH.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_en-NG.properties b/sormas-api/src/main/resources/captions_en-NG.properties
index ed17cfa4b25..71ed97d0d6c 100644
--- a/sormas-api/src/main/resources/captions_en-NG.properties
+++ b/sormas-api/src/main/resources/captions_en-NG.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_es-CU.properties b/sormas-api/src/main/resources/captions_es-CU.properties
index 47c4c7dbbac..1b2bc909d01 100644
--- a/sormas-api/src/main/resources/captions_es-CU.properties
+++ b/sormas-api/src/main/resources/captions_es-CU.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Tiene detalles
customizableEnumValueAllDiseases=Todas las enfermedades
customizableEnumValueDiseaseCount=%d enfermedades
customizableEnumValueNoProperties=Sin propiedades
+customizableEnumValueActiveValues=Valores activos
+customizableEnumValueInactiveValues=Valores inactivos
CustomizableEnumValue.dataType=Tipo de datos
CustomizableEnumValue.value=Valor
CustomizableEnumValue.caption=Leyenda
CustomizableEnumValue.diseases=Enfermedades
CustomizableEnumValue.properties=Propiedades
+CustomizableEnumValue.active=Activo
# Dashboard
dashboardAlive=Vivo
dashboardApplyCustomFilter=Aplicar filtro personalizado
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Fecha de mensaje desde...
ExternalMessageCriteria.messageDateTo=... hasta
ExternalMessageCriteria.birthDateFrom=Fecha de nacimiento desde...
ExternalMessageCriteria.birthDateTo=... hasta
+externalMessageValueNotSpecified=Valor no especificado en el mensaje externo
#Physician report
physiciansReportCaseImmunizations=Inmunizaciones
diff --git a/sormas-api/src/main/resources/captions_es-ES.properties b/sormas-api/src/main/resources/captions_es-ES.properties
index 314ec07ea6d..8ff51babe41 100644
--- a/sormas-api/src/main/resources/captions_es-ES.properties
+++ b/sormas-api/src/main/resources/captions_es-ES.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_fa-AF.properties b/sormas-api/src/main/resources/captions_fa-AF.properties
index 49a0ca12419..73c385a771d 100644
--- a/sormas-api/src/main/resources/captions_fa-AF.properties
+++ b/sormas-api/src/main/resources/captions_fa-AF.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_fi-FI.properties b/sormas-api/src/main/resources/captions_fi-FI.properties
index 1d508878220..6c79de7cfa9 100644
--- a/sormas-api/src/main/resources/captions_fi-FI.properties
+++ b/sormas-api/src/main/resources/captions_fi-FI.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Elossa
dashboardApplyCustomFilter=Käytä mukautettua suodatinta
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_fil-PH.properties b/sormas-api/src/main/resources/captions_fil-PH.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_fil-PH.properties
+++ b/sormas-api/src/main/resources/captions_fil-PH.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_fj-FJ.properties b/sormas-api/src/main/resources/captions_fj-FJ.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_fj-FJ.properties
+++ b/sormas-api/src/main/resources/captions_fj-FJ.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_fr-CD.properties b/sormas-api/src/main/resources/captions_fr-CD.properties
index 100dbfc7d03..4a827adccc6 100644
--- a/sormas-api/src/main/resources/captions_fr-CD.properties
+++ b/sormas-api/src/main/resources/captions_fr-CD.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_fr-CH.properties b/sormas-api/src/main/resources/captions_fr-CH.properties
index 0b9f32b2b71..ffd13843f26 100644
--- a/sormas-api/src/main/resources/captions_fr-CH.properties
+++ b/sormas-api/src/main/resources/captions_fr-CH.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Vivant
dashboardApplyCustomFilter=Appliquer un filtre personnalisé
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_fr-FR.properties b/sormas-api/src/main/resources/captions_fr-FR.properties
index 2a8af85d1d5..53c044cc48b 100644
--- a/sormas-api/src/main/resources/captions_fr-FR.properties
+++ b/sormas-api/src/main/resources/captions_fr-FR.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=A des détails
customizableEnumValueAllDiseases=Toutes les maladies
customizableEnumValueDiseaseCount=%d maladies
customizableEnumValueNoProperties=Aucune propriété
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Types de Donnée
CustomizableEnumValue.value=Valeur
CustomizableEnumValue.caption=Libellé
CustomizableEnumValue.diseases=Maladies
CustomizableEnumValue.properties=Propriétés
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Vivant
dashboardApplyCustomFilter=Appliquer ce filtre personnalisé
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Date du message depuis...
ExternalMessageCriteria.messageDateTo=... au
ExternalMessageCriteria.birthDateFrom=Date de naissance de...
ExternalMessageCriteria.birthDateTo=... au
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunisations
diff --git a/sormas-api/src/main/resources/captions_fr-TN.properties b/sormas-api/src/main/resources/captions_fr-TN.properties
index 470fe456902..2c14987797c 100644
--- a/sormas-api/src/main/resources/captions_fr-TN.properties
+++ b/sormas-api/src/main/resources/captions_fr-TN.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Vivant
dashboardApplyCustomFilter=Appliquer ce filtre personnalisé
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Date du message depuis...
ExternalMessageCriteria.messageDateTo=... au
ExternalMessageCriteria.birthDateFrom=Date de naissance de...
ExternalMessageCriteria.birthDateTo=... au
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunisations
diff --git a/sormas-api/src/main/resources/captions_hi-IN.properties b/sormas-api/src/main/resources/captions_hi-IN.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_hi-IN.properties
+++ b/sormas-api/src/main/resources/captions_hi-IN.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_hr-HR.properties b/sormas-api/src/main/resources/captions_hr-HR.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_hr-HR.properties
+++ b/sormas-api/src/main/resources/captions_hr-HR.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_it-CH.properties b/sormas-api/src/main/resources/captions_it-CH.properties
index ae94b5bbfc0..12f249fc4e8 100644
--- a/sormas-api/src/main/resources/captions_it-CH.properties
+++ b/sormas-api/src/main/resources/captions_it-CH.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=In vita
dashboardApplyCustomFilter=Applica filtro personalizzato
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_it-IT.properties b/sormas-api/src/main/resources/captions_it-IT.properties
index 68948bf3cc5..15b4e718992 100644
--- a/sormas-api/src/main/resources/captions_it-IT.properties
+++ b/sormas-api/src/main/resources/captions_it-IT.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=In vita
dashboardApplyCustomFilter=Applica filtro personalizzato
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_ja-JP.properties b/sormas-api/src/main/resources/captions_ja-JP.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_ja-JP.properties
+++ b/sormas-api/src/main/resources/captions_ja-JP.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_ne-NP.properties b/sormas-api/src/main/resources/captions_ne-NP.properties
index b962ef802d5..a711b7f3304 100644
--- a/sormas-api/src/main/resources/captions_ne-NP.properties
+++ b/sormas-api/src/main/resources/captions_ne-NP.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_nl-NL.properties b/sormas-api/src/main/resources/captions_nl-NL.properties
index 28752af0c13..ecbea55be98 100644
--- a/sormas-api/src/main/resources/captions_nl-NL.properties
+++ b/sormas-api/src/main/resources/captions_nl-NL.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_no-NO.properties b/sormas-api/src/main/resources/captions_no-NO.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_no-NO.properties
+++ b/sormas-api/src/main/resources/captions_no-NO.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_pl-PL.properties b/sormas-api/src/main/resources/captions_pl-PL.properties
index 45727e4b14d..edfde41853e 100644
--- a/sormas-api/src/main/resources/captions_pl-PL.properties
+++ b/sormas-api/src/main/resources/captions_pl-PL.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_ps-AF.properties b/sormas-api/src/main/resources/captions_ps-AF.properties
index ff61e684f82..f878894d394 100644
--- a/sormas-api/src/main/resources/captions_ps-AF.properties
+++ b/sormas-api/src/main/resources/captions_ps-AF.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=ژوندی
dashboardApplyCustomFilter=کستم فلتر عملی کړه
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_pt-PT.properties b/sormas-api/src/main/resources/captions_pt-PT.properties
index 00399a50a3e..857bdf279c1 100644
--- a/sormas-api/src/main/resources/captions_pt-PT.properties
+++ b/sormas-api/src/main/resources/captions_pt-PT.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_ro-RO.properties b/sormas-api/src/main/resources/captions_ro-RO.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_ro-RO.properties
+++ b/sormas-api/src/main/resources/captions_ro-RO.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_ru-RU.properties b/sormas-api/src/main/resources/captions_ru-RU.properties
index 153efa67b96..08c4e50c6f0 100644
--- a/sormas-api/src/main/resources/captions_ru-RU.properties
+++ b/sormas-api/src/main/resources/captions_ru-RU.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_sv-SE.properties b/sormas-api/src/main/resources/captions_sv-SE.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_sv-SE.properties
+++ b/sormas-api/src/main/resources/captions_sv-SE.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_sw-KE.properties b/sormas-api/src/main/resources/captions_sw-KE.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_sw-KE.properties
+++ b/sormas-api/src/main/resources/captions_sw-KE.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_tr-TR.properties b/sormas-api/src/main/resources/captions_tr-TR.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_tr-TR.properties
+++ b/sormas-api/src/main/resources/captions_tr-TR.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_uk-UA.properties b/sormas-api/src/main/resources/captions_uk-UA.properties
index 6ba203efdd7..a27128b152b 100644
--- a/sormas-api/src/main/resources/captions_uk-UA.properties
+++ b/sormas-api/src/main/resources/captions_uk-UA.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/captions_ur-PK.properties b/sormas-api/src/main/resources/captions_ur-PK.properties
index 1773d71a332..7b7337caea5 100644
--- a/sormas-api/src/main/resources/captions_ur-PK.properties
+++ b/sormas-api/src/main/resources/captions_ur-PK.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=زندہ
dashboardApplyCustomFilter=حسب ضرورت فلٹر لگائیں
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=پیغام کی تاریخ سے...
ExternalMessageCriteria.messageDateTo=... تک
ExternalMessageCriteria.birthDateFrom=تاریخ پیدائش سے...
ExternalMessageCriteria.birthDateTo=... تک
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=امیونائزیشنز
diff --git a/sormas-api/src/main/resources/captions_zh-CN.properties b/sormas-api/src/main/resources/captions_zh-CN.properties
index 2c09b52be1a..cef77aeae54 100644
--- a/sormas-api/src/main/resources/captions_zh-CN.properties
+++ b/sormas-api/src/main/resources/captions_zh-CN.properties
@@ -866,11 +866,14 @@ CustomizableEnum.hasDetails.short=Has details
customizableEnumValueAllDiseases=All diseases
customizableEnumValueDiseaseCount=%d diseases
customizableEnumValueNoProperties=No properties
+customizableEnumValueActiveValues=Active values
+customizableEnumValueInactiveValues=Inactive values
CustomizableEnumValue.dataType=Data type
CustomizableEnumValue.value=Value
CustomizableEnumValue.caption=Caption
CustomizableEnumValue.diseases=Diseases
CustomizableEnumValue.properties=Properties
+CustomizableEnumValue.active=Active
# Dashboard
dashboardAlive=Alive
dashboardApplyCustomFilter=Apply custom filter
@@ -1606,6 +1609,7 @@ externalMessageCriteria.messageDateFrom=Message date from...
ExternalMessageCriteria.messageDateTo=... to
ExternalMessageCriteria.birthDateFrom=Birth date from...
ExternalMessageCriteria.birthDateTo=... to
+externalMessageValueNotSpecified=Value not specified in external message
#Physician report
physiciansReportCaseImmunizations=Immunizations
diff --git a/sormas-api/src/main/resources/doc/SORMAS_Data_Dictionary.xlsx b/sormas-api/src/main/resources/doc/SORMAS_Data_Dictionary.xlsx
index e058e33fa20..39fb8289ac0 100644
Binary files a/sormas-api/src/main/resources/doc/SORMAS_Data_Dictionary.xlsx and b/sormas-api/src/main/resources/doc/SORMAS_Data_Dictionary.xlsx differ
diff --git a/sormas-api/src/main/resources/doc/SORMAS_User_Roles.xlsx b/sormas-api/src/main/resources/doc/SORMAS_User_Roles.xlsx
index e3882ca342e..77b355ff3cd 100644
Binary files a/sormas-api/src/main/resources/doc/SORMAS_User_Roles.xlsx and b/sormas-api/src/main/resources/doc/SORMAS_User_Roles.xlsx differ
diff --git a/sormas-api/src/main/resources/enum.properties b/sormas-api/src/main/resources/enum.properties
index 0cc051ecb54..8efb5414ea3 100644
--- a/sormas-api/src/main/resources/enum.properties
+++ b/sormas-api/src/main/resources/enum.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_ar-SA.properties b/sormas-api/src/main/resources/enum_ar-SA.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_ar-SA.properties
+++ b/sormas-api/src/main/resources/enum_ar-SA.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_cs-CZ.properties b/sormas-api/src/main/resources/enum_cs-CZ.properties
index 47c3bfd20c7..0ac8fc97d1c 100644
--- a/sormas-api/src/main/resources/enum_cs-CZ.properties
+++ b/sormas-api/src/main/resources/enum_cs-CZ.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Upravit příchozí informace vzork
UserRight.ENVIRONMENT_SAMPLE_DELETE = Odstranit vzorky prostředí ze systému
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Importovat vzorky prostředí
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Exportovat vzorky prostředí
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Odeslat externí e-maily
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Připojit dokumenty k externím e-mailům
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Může upravit příchozí inf
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Může odstranit vzorky prostředí ze systému
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Může importovat vzorky prostředí
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Může exportovat vzorky prostředí
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Může spravovat šablony e-mailů
UserRight.Desc.EXTERNAL_EMAIL_SEND=Může odeslat externí e-maily
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Může připojit dokumenty k externím e-mailům
diff --git a/sormas-api/src/main/resources/enum_de-CH.properties b/sormas-api/src/main/resources/enum_de-CH.properties
index ab9a6d9e52c..570805998e9 100644
--- a/sormas-api/src/main/resources/enum_de-CH.properties
+++ b/sormas-api/src/main/resources/enum_de-CH.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_de-DE.properties b/sormas-api/src/main/resources/enum_de-DE.properties
index e5533382649..b056d1d1a26 100644
--- a/sormas-api/src/main/resources/enum_de-DE.properties
+++ b/sormas-api/src/main/resources/enum_de-DE.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_en-AF.properties b/sormas-api/src/main/resources/enum_en-AF.properties
index e87f52231b8..950ca20b7df 100644
--- a/sormas-api/src/main/resources/enum_en-AF.properties
+++ b/sormas-api/src/main/resources/enum_en-AF.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_en-GH.properties b/sormas-api/src/main/resources/enum_en-GH.properties
index 0d2c938c3a1..00ac6fc3d2b 100644
--- a/sormas-api/src/main/resources/enum_en-GH.properties
+++ b/sormas-api/src/main/resources/enum_en-GH.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_en-NG.properties b/sormas-api/src/main/resources/enum_en-NG.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_en-NG.properties
+++ b/sormas-api/src/main/resources/enum_en-NG.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_es-CU.properties b/sormas-api/src/main/resources/enum_es-CU.properties
index acc97cdd169..de6e967f55a 100644
--- a/sormas-api/src/main/resources/enum_es-CU.properties
+++ b/sormas-api/src/main/resources/enum_es-CU.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Editar información de recepción d
UserRight.ENVIRONMENT_SAMPLE_DELETE = Eliminar muestras ambientales del sistema
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Importar muestras ambientales
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Exportar muestras ambientales
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Crear pruebas de patógeno para muestra de ambiente
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Editar pruebas de patógeno para muestra de ambiente
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Eliminar pruebas de patógeno para muestra de ambiente
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Administrar plantillas de mensajes
UserRight.EXTERNAL_EMAIL_SEND=Enviar mensajes externos
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Adjuntar documentos a mensajes externos
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Puede editar información de r
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Puede eliminar muestras ambientales del sistema
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Puede importar muestras ambientales
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Puede exportar muestras ambientales
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Puede crear pruebas de patógeno para muestra de ambiente
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Puede editar pruebas de patógeno para muestra de ambiente
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Puede eliminar pruebas de patógeno para muestra de ambiente
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Puede administrar plantillas de mensajes
UserRight.Desc.EXTERNAL_EMAIL_SEND=Puede enviar mensajes externos
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Puede adjuntar documentos a mensajes externos
diff --git a/sormas-api/src/main/resources/enum_es-ES.properties b/sormas-api/src/main/resources/enum_es-ES.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_es-ES.properties
+++ b/sormas-api/src/main/resources/enum_es-ES.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_fa-AF.properties b/sormas-api/src/main/resources/enum_fa-AF.properties
index 205cd4f4008..341abb1c0aa 100644
--- a/sormas-api/src/main/resources/enum_fa-AF.properties
+++ b/sormas-api/src/main/resources/enum_fa-AF.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_fi-FI.properties b/sormas-api/src/main/resources/enum_fi-FI.properties
index a14bf0d736d..bce2a53f569 100644
--- a/sormas-api/src/main/resources/enum_fi-FI.properties
+++ b/sormas-api/src/main/resources/enum_fi-FI.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_fil-PH.properties b/sormas-api/src/main/resources/enum_fil-PH.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_fil-PH.properties
+++ b/sormas-api/src/main/resources/enum_fil-PH.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_fj-FJ.properties b/sormas-api/src/main/resources/enum_fj-FJ.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_fj-FJ.properties
+++ b/sormas-api/src/main/resources/enum_fj-FJ.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_fr-CD.properties b/sormas-api/src/main/resources/enum_fr-CD.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_fr-CD.properties
+++ b/sormas-api/src/main/resources/enum_fr-CD.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_fr-CH.properties b/sormas-api/src/main/resources/enum_fr-CH.properties
index 455ef397721..24428f05498 100644
--- a/sormas-api/src/main/resources/enum_fr-CH.properties
+++ b/sormas-api/src/main/resources/enum_fr-CH.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_fr-FR.properties b/sormas-api/src/main/resources/enum_fr-FR.properties
index 81e657a7437..b379752459e 100644
--- a/sormas-api/src/main/resources/enum_fr-FR.properties
+++ b/sormas-api/src/main/resources/enum_fr-FR.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Gérer les modèles d'e-mail
UserRight.EXTERNAL_EMAIL_SEND=Envoyer des e-mails externes
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Joindre des documents aux e-mails externes
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Capable de gérer les modèles d'e-mail
UserRight.Desc.EXTERNAL_EMAIL_SEND=Capable d'envoyer des e-mails externes
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Capable de joindre des documents à des e-mails externes
diff --git a/sormas-api/src/main/resources/enum_fr-TN.properties b/sormas-api/src/main/resources/enum_fr-TN.properties
index fee97038e88..0b4268d50bd 100644
--- a/sormas-api/src/main/resources/enum_fr-TN.properties
+++ b/sormas-api/src/main/resources/enum_fr-TN.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_hi-IN.properties b/sormas-api/src/main/resources/enum_hi-IN.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_hi-IN.properties
+++ b/sormas-api/src/main/resources/enum_hi-IN.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_hr-HR.properties b/sormas-api/src/main/resources/enum_hr-HR.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_hr-HR.properties
+++ b/sormas-api/src/main/resources/enum_hr-HR.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_it-CH.properties b/sormas-api/src/main/resources/enum_it-CH.properties
index 5c4ae7e1726..e531aae5c28 100644
--- a/sormas-api/src/main/resources/enum_it-CH.properties
+++ b/sormas-api/src/main/resources/enum_it-CH.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_it-IT.properties b/sormas-api/src/main/resources/enum_it-IT.properties
index 30b8a7f37b3..3d870fa1a7c 100644
--- a/sormas-api/src/main/resources/enum_it-IT.properties
+++ b/sormas-api/src/main/resources/enum_it-IT.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_ja-JP.properties b/sormas-api/src/main/resources/enum_ja-JP.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_ja-JP.properties
+++ b/sormas-api/src/main/resources/enum_ja-JP.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_ne-NP.properties b/sormas-api/src/main/resources/enum_ne-NP.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_ne-NP.properties
+++ b/sormas-api/src/main/resources/enum_ne-NP.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_nl-NL.properties b/sormas-api/src/main/resources/enum_nl-NL.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_nl-NL.properties
+++ b/sormas-api/src/main/resources/enum_nl-NL.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_no-NO.properties b/sormas-api/src/main/resources/enum_no-NO.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_no-NO.properties
+++ b/sormas-api/src/main/resources/enum_no-NO.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_pl-PL.properties b/sormas-api/src/main/resources/enum_pl-PL.properties
index 5da3af65949..7cdd984388f 100644
--- a/sormas-api/src/main/resources/enum_pl-PL.properties
+++ b/sormas-api/src/main/resources/enum_pl-PL.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_ps-AF.properties b/sormas-api/src/main/resources/enum_ps-AF.properties
index 205cd4f4008..341abb1c0aa 100644
--- a/sormas-api/src/main/resources/enum_ps-AF.properties
+++ b/sormas-api/src/main/resources/enum_ps-AF.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_pt-PT.properties b/sormas-api/src/main/resources/enum_pt-PT.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_pt-PT.properties
+++ b/sormas-api/src/main/resources/enum_pt-PT.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_ro-RO.properties b/sormas-api/src/main/resources/enum_ro-RO.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_ro-RO.properties
+++ b/sormas-api/src/main/resources/enum_ro-RO.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_ru-RU.properties b/sormas-api/src/main/resources/enum_ru-RU.properties
index ea3d90d12bb..4aa47fbadad 100644
--- a/sormas-api/src/main/resources/enum_ru-RU.properties
+++ b/sormas-api/src/main/resources/enum_ru-RU.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_sv-SE.properties b/sormas-api/src/main/resources/enum_sv-SE.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_sv-SE.properties
+++ b/sormas-api/src/main/resources/enum_sv-SE.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_sw-KE.properties b/sormas-api/src/main/resources/enum_sw-KE.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_sw-KE.properties
+++ b/sormas-api/src/main/resources/enum_sw-KE.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_tr-TR.properties b/sormas-api/src/main/resources/enum_tr-TR.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_tr-TR.properties
+++ b/sormas-api/src/main/resources/enum_tr-TR.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_uk-UA.properties b/sormas-api/src/main/resources/enum_uk-UA.properties
index d35b6f4fc91..a470fa223b8 100644
--- a/sormas-api/src/main/resources/enum_uk-UA.properties
+++ b/sormas-api/src/main/resources/enum_uk-UA.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_ur-PK.properties b/sormas-api/src/main/resources/enum_ur-PK.properties
index d6e6398422b..186192e1801 100644
--- a/sormas-api/src/main/resources/enum_ur-PK.properties
+++ b/sormas-api/src/main/resources/enum_ur-PK.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/enum_zh-CN.properties b/sormas-api/src/main/resources/enum_zh-CN.properties
index 1b60829c8be..e2d538c91aa 100644
--- a/sormas-api/src/main/resources/enum_zh-CN.properties
+++ b/sormas-api/src/main/resources/enum_zh-CN.properties
@@ -1585,6 +1585,9 @@ UserRight.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Edit environment samples receival i
UserRight.ENVIRONMENT_SAMPLE_DELETE = Delete environment samples from the system
UserRight.ENVIRONMENT_SAMPLE_IMPORT = Import environment samples
UserRight.ENVIRONMENT_SAMPLE_EXPORT = Export environment samples
+UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE = Create environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT = Edit environment sample pathogen tests
+UserRight.ENVIRONMENT_PATHOGEN_TEST_DELETE = Delete environment sample pathogen tests
UserRight.EMAIL_TEMPLATE_MANAGEMENT=Manage email templates
UserRight.EXTERNAL_EMAIL_SEND=Send external emails
UserRight.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Attach documents to external emails
@@ -1783,6 +1786,9 @@ UserRight.Desc.ENVIRONMENT_SAMPLE_EDIT_RECEIVAL = Able to edit environment sampl
UserRight.Desc.ENVIRONMENT_SAMPLE_DELETE = Able to delete environment samples from the system
UserRight.Desc.ENVIRONMENT_SAMPLE_IMPORT = Able to import environment samples
UserRight.Desc.ENVIRONMENT_SAMPLE_EXPORT = Able to export environment samples
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_CREATE = Able to create environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_EDIT = Able to edit environment sample pathogen tests
+UserRight.Desc.ENVIRONMENT_PATHOGEN_TEST_DELETE = Able to delete environment sample pathogen tests
UserRight.Desc.EMAIL_TEMPLATE_MANAGEMENT=Able to manage email templates
UserRight.Desc.EXTERNAL_EMAIL_SEND=Able to send external emails
UserRight.Desc.EXTERNAL_EMAIL_ATTACH_DOCUMENTS=Able to attach documents to external emails
diff --git a/sormas-api/src/main/resources/strings.properties b/sormas-api/src/main/resources/strings.properties
index 6188641d36f..4c5d537912f 100644
--- a/sormas-api/src/main/resources/strings.properties
+++ b/sormas-api/src/main/resources/strings.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_ar-SA.properties b/sormas-api/src/main/resources/strings_ar-SA.properties
index e4e38383b71..2d0700018e9 100644
--- a/sormas-api/src/main/resources/strings_ar-SA.properties
+++ b/sormas-api/src/main/resources/strings_ar-SA.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_cs-CZ.properties b/sormas-api/src/main/resources/strings_cs-CZ.properties
index c9571bc9a7b..a9bf85558be 100644
--- a/sormas-api/src/main/resources/strings_cs-CZ.properties
+++ b/sormas-api/src/main/resources/strings_cs-CZ.properties
@@ -59,6 +59,7 @@ quarantineEnd = Karanténa končí na konci následných opatření
quarterShort = Q
reportedBy = Nahlášeno
reportedOn = Nahlášeno dne
+reportingUser = Reporting user\:
step = Krok
setTo = Nastavit na
toCase = k případu
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = Klasifikace případu %s se změnila na %s.
notificationCaseInvestigationDone = Vyšetřování případu %s bylo dokončeno.
diff --git a/sormas-api/src/main/resources/strings_de-CH.properties b/sormas-api/src/main/resources/strings_de-CH.properties
index cad56da96fb..c4cc70667da 100644
--- a/sormas-api/src/main/resources/strings_de-CH.properties
+++ b/sormas-api/src/main/resources/strings_de-CH.properties
@@ -59,6 +59,7 @@ quarantineEnd = Isolation endet mit dem Ende des Follow-Ups
quarterShort = Q
reportedBy = Gemeldet von
reportedOn = Gemeldet am
+reportingUser = Reporting user\:
step = Step
setTo = Festlegen auf
toCase = \ gehört zu Fall
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = Die Falldefinitionskategorie des Falls %s wurde auf %s geändert.
notificationCaseInvestigationDone = Die Untersuchung des Falls %s wurde durchgeführt.
diff --git a/sormas-api/src/main/resources/strings_de-DE.properties b/sormas-api/src/main/resources/strings_de-DE.properties
index 607d769fc35..b43aab471fc 100644
--- a/sormas-api/src/main/resources/strings_de-DE.properties
+++ b/sormas-api/src/main/resources/strings_de-DE.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantäne endet mit dem Ende des Follow-Ups
quarterShort = Q
reportedBy = Gemeldet von
reportedOn = Gemeldet am
+reportingUser = Reporting user\:
step = Schritt
setTo = gesetzt auf
toCase = zu Fall
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = Die Falldefinitionskategorie des Falls %s wurde auf %s geändert.
notificationCaseInvestigationDone = Die Untersuchung des Falls %s wurde durchgeführt.
diff --git a/sormas-api/src/main/resources/strings_en-AF.properties b/sormas-api/src/main/resources/strings_en-AF.properties
index b7aaf4b74f9..f4b0caca1f3 100644
--- a/sormas-api/src/main/resources/strings_en-AF.properties
+++ b/sormas-api/src/main/resources/strings_en-AF.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_en-GH.properties b/sormas-api/src/main/resources/strings_en-GH.properties
index f055ff748bb..f3cf428cf05 100644
--- a/sormas-api/src/main/resources/strings_en-GH.properties
+++ b/sormas-api/src/main/resources/strings_en-GH.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_en-NG.properties b/sormas-api/src/main/resources/strings_en-NG.properties
index d8d8b151b91..dd4efa2a14d 100644
--- a/sormas-api/src/main/resources/strings_en-NG.properties
+++ b/sormas-api/src/main/resources/strings_en-NG.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_es-CU.properties b/sormas-api/src/main/resources/strings_es-CU.properties
index c371292f522..45e01fe437f 100644
--- a/sormas-api/src/main/resources/strings_es-CU.properties
+++ b/sormas-api/src/main/resources/strings_es-CU.properties
@@ -59,6 +59,7 @@ quarantineEnd = La cuarentena termina al final del seguimiento
quarterShort = T
reportedBy = Informado por
reportedOn = Informado en
+reportingUser = Usuario informante\:
step = Paso
setTo = Establecer como
toCase = para el caso
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=Sin archivos adjuntos
messageCustomizableEnumValueSaved = Valor de enumeración personalizable guardado
messageExternalEmailAttachmentPassword=Por favor, utilice esta contraseña para abrir los documentos que se le envíen por correo electrónico desde SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=No se pueden adjuntar documentos porque el cifrado no sería posible. Para cifrar documentos, la persona debe tener un carnet de identidad, o un número de teléfono móvil con capacidad de enviar SMS especificado en este sistema.
+messagePersonNationalHealthIdInvalid=El carnet de identidad introducido no parece ser correcto
# Notifications
notificationCaseClassificationChanged = La clasificación del caso %s se cambió a %s.
notificationCaseInvestigationDone = La investigación del caso %s fue realizada.
diff --git a/sormas-api/src/main/resources/strings_es-ES.properties b/sormas-api/src/main/resources/strings_es-ES.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_es-ES.properties
+++ b/sormas-api/src/main/resources/strings_es-ES.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_fa-AF.properties b/sormas-api/src/main/resources/strings_fa-AF.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_fa-AF.properties
+++ b/sormas-api/src/main/resources/strings_fa-AF.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_fi-FI.properties b/sormas-api/src/main/resources/strings_fi-FI.properties
index 4a7eecaf1f5..05ce1403ee8 100644
--- a/sormas-api/src/main/resources/strings_fi-FI.properties
+++ b/sormas-api/src/main/resources/strings_fi-FI.properties
@@ -59,6 +59,7 @@ quarantineEnd = Karanteeni päättyy seurannan lopussa
quarterShort = N
reportedBy = Ilmoittaja
reportedOn = Ilmoitettu
+reportingUser = Reporting user\:
step = Vaihe
setTo = Set to
toCase = potilaalle
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = Potilaan %s luokitus on muuttunut luokkaan %s.
notificationCaseInvestigationDone = Potilaan %s selvittely tehty.
diff --git a/sormas-api/src/main/resources/strings_fil-PH.properties b/sormas-api/src/main/resources/strings_fil-PH.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_fil-PH.properties
+++ b/sormas-api/src/main/resources/strings_fil-PH.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_fj-FJ.properties b/sormas-api/src/main/resources/strings_fj-FJ.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_fj-FJ.properties
+++ b/sormas-api/src/main/resources/strings_fj-FJ.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_fr-CD.properties b/sormas-api/src/main/resources/strings_fr-CD.properties
index b073e6e7b55..aa31e536daf 100644
--- a/sormas-api/src/main/resources/strings_fr-CD.properties
+++ b/sormas-api/src/main/resources/strings_fr-CD.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_fr-CH.properties b/sormas-api/src/main/resources/strings_fr-CH.properties
index 20643553e04..2ec96563590 100644
--- a/sormas-api/src/main/resources/strings_fr-CH.properties
+++ b/sormas-api/src/main/resources/strings_fr-CH.properties
@@ -59,6 +59,7 @@ quarantineEnd = L'isolation se termine à la fin du suivi
quarterShort = Q
reportedBy = Signalé par
reportedOn = Signalé le
+reportingUser = Reporting user\:
step = Etape
setTo = Set to
toCase = au cas
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = La classification du cas %s a changé en %s.
notificationCaseInvestigationDone = L'enquête du cas %s a été effectuée.
diff --git a/sormas-api/src/main/resources/strings_fr-FR.properties b/sormas-api/src/main/resources/strings_fr-FR.properties
index 9fd7c416320..b415fde8883 100644
--- a/sormas-api/src/main/resources/strings_fr-FR.properties
+++ b/sormas-api/src/main/resources/strings_fr-FR.properties
@@ -59,6 +59,7 @@ quarantineEnd = La quarantaine se termine à la fin du suivi
quarterShort = Q
reportedBy = Signalée par
reportedOn = Signalé le
+reportingUser = Reporting user\:
step = Etape
setTo = Régler sur
toCase = au cas
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Valeur de l'énumération personnalisable enregistrée
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = La classification du cas %s a changé en %s.
notificationCaseInvestigationDone = L'enquête du cas %s a été effectuée.
diff --git a/sormas-api/src/main/resources/strings_fr-TN.properties b/sormas-api/src/main/resources/strings_fr-TN.properties
index ed5d948b958..05a108a14d1 100644
--- a/sormas-api/src/main/resources/strings_fr-TN.properties
+++ b/sormas-api/src/main/resources/strings_fr-TN.properties
@@ -59,6 +59,7 @@ quarantineEnd = La quarantaine se termine à la fin du suivi
quarterShort = Q
reportedBy = Signalée par
reportedOn = Signalé le
+reportingUser = Reporting user\:
step = Etape
setTo = Régler sur
toCase = au cas
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = La classification du cas %s a changé en %s.
notificationCaseInvestigationDone = L'enquête du cas %s a été effectuée.
diff --git a/sormas-api/src/main/resources/strings_hi-IN.properties b/sormas-api/src/main/resources/strings_hi-IN.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_hi-IN.properties
+++ b/sormas-api/src/main/resources/strings_hi-IN.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_hr-HR.properties b/sormas-api/src/main/resources/strings_hr-HR.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_hr-HR.properties
+++ b/sormas-api/src/main/resources/strings_hr-HR.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_it-CH.properties b/sormas-api/src/main/resources/strings_it-CH.properties
index f4e1bf2b82f..9994005645d 100644
--- a/sormas-api/src/main/resources/strings_it-CH.properties
+++ b/sormas-api/src/main/resources/strings_it-CH.properties
@@ -59,6 +59,7 @@ quarantineEnd = La quarantena termina alla fine del follow-up
quarterShort = Q
reportedBy = Segnalato da
reportedOn = Segnalato il
+reportingUser = Reporting user\:
step = Fase
setTo = Set to
toCase = nel caso
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = La classificazione del caso %s è cambiata in %s.
notificationCaseInvestigationDone = La ricerca sul caso %s è stata effettuata.
diff --git a/sormas-api/src/main/resources/strings_it-IT.properties b/sormas-api/src/main/resources/strings_it-IT.properties
index 4cb759c9270..7c5a3cdbb60 100644
--- a/sormas-api/src/main/resources/strings_it-IT.properties
+++ b/sormas-api/src/main/resources/strings_it-IT.properties
@@ -59,6 +59,7 @@ quarantineEnd = La quarantena termina alla fine del follow-up
quarterShort = Q
reportedBy = Segnalato da
reportedOn = Segnalato il
+reportingUser = Reporting user\:
step = Fase
setTo = Set to
toCase = nel caso
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = La classificazione del caso %s è cambiata in %s.
notificationCaseInvestigationDone = La ricerca sul caso %s è stata effettuata.
diff --git a/sormas-api/src/main/resources/strings_ja-JP.properties b/sormas-api/src/main/resources/strings_ja-JP.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_ja-JP.properties
+++ b/sormas-api/src/main/resources/strings_ja-JP.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_ne-NP.properties b/sormas-api/src/main/resources/strings_ne-NP.properties
index e4e38383b71..2d0700018e9 100644
--- a/sormas-api/src/main/resources/strings_ne-NP.properties
+++ b/sormas-api/src/main/resources/strings_ne-NP.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_nl-NL.properties b/sormas-api/src/main/resources/strings_nl-NL.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_nl-NL.properties
+++ b/sormas-api/src/main/resources/strings_nl-NL.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_no-NO.properties b/sormas-api/src/main/resources/strings_no-NO.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_no-NO.properties
+++ b/sormas-api/src/main/resources/strings_no-NO.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_pl-PL.properties b/sormas-api/src/main/resources/strings_pl-PL.properties
index 0021767deb7..d6c192f1ec0 100644
--- a/sormas-api/src/main/resources/strings_pl-PL.properties
+++ b/sormas-api/src/main/resources/strings_pl-PL.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_ps-AF.properties b/sormas-api/src/main/resources/strings_ps-AF.properties
index eac76349a27..1ca076e3e47 100644
--- a/sormas-api/src/main/resources/strings_ps-AF.properties
+++ b/sormas-api/src/main/resources/strings_ps-AF.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_pt-PT.properties b/sormas-api/src/main/resources/strings_pt-PT.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_pt-PT.properties
+++ b/sormas-api/src/main/resources/strings_pt-PT.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_ro-RO.properties b/sormas-api/src/main/resources/strings_ro-RO.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_ro-RO.properties
+++ b/sormas-api/src/main/resources/strings_ro-RO.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_ru-RU.properties b/sormas-api/src/main/resources/strings_ru-RU.properties
index 4694646b208..71fde68a288 100644
--- a/sormas-api/src/main/resources/strings_ru-RU.properties
+++ b/sormas-api/src/main/resources/strings_ru-RU.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_sv-SE.properties b/sormas-api/src/main/resources/strings_sv-SE.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_sv-SE.properties
+++ b/sormas-api/src/main/resources/strings_sv-SE.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_sw-KE.properties b/sormas-api/src/main/resources/strings_sw-KE.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_sw-KE.properties
+++ b/sormas-api/src/main/resources/strings_sw-KE.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_tr-TR.properties b/sormas-api/src/main/resources/strings_tr-TR.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_tr-TR.properties
+++ b/sormas-api/src/main/resources/strings_tr-TR.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_uk-UA.properties b/sormas-api/src/main/resources/strings_uk-UA.properties
index 1a5e1ed321c..0091ff3dc78 100644
--- a/sormas-api/src/main/resources/strings_uk-UA.properties
+++ b/sormas-api/src/main/resources/strings_uk-UA.properties
@@ -59,6 +59,7 @@ quarantineEnd = Quarantine ends at the end of follow-up
quarterShort = Q
reportedBy = Reported By
reportedOn = Reported on
+reportingUser = Reporting user\:
step = Step
setTo = Set to
toCase = to case
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/strings_ur-PK.properties b/sormas-api/src/main/resources/strings_ur-PK.properties
index f1129df9b04..97e988efb1e 100644
--- a/sormas-api/src/main/resources/strings_ur-PK.properties
+++ b/sormas-api/src/main/resources/strings_ur-PK.properties
@@ -59,6 +59,7 @@ quarantineEnd = فالو اپ کے اختتام پر قرنطینہ ختم ہو
quarterShort = Q
reportedBy = رپورٹ کنندہ
reportedOn = پر رپورٹ کیا
+reportingUser = Reporting user\:
step = قدم
setTo = پر سیٹ کریں
toCase = کیس کے لئے
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = کیس %s کی درجہ بندی %s میں تبدیل ہو گئی ہے۔
notificationCaseInvestigationDone = کیس %s کی تفتیش ہو چکی ہے۔
diff --git a/sormas-api/src/main/resources/strings_zh-CN.properties b/sormas-api/src/main/resources/strings_zh-CN.properties
index d104d9d8c6f..d0e2835ccad 100644
--- a/sormas-api/src/main/resources/strings_zh-CN.properties
+++ b/sormas-api/src/main/resources/strings_zh-CN.properties
@@ -59,6 +59,7 @@ quarantineEnd = 检疫在后续行动结束时结束
quarterShort = Q
reportedBy = 报告由
reportedOn = 报告于
+reportingUser = Reporting user\:
step = 步骤
setTo = 设置为
toCase = 对案例
@@ -1497,6 +1498,7 @@ messageExternalEmailNoAttachments=No attachments
messageCustomizableEnumValueSaved = Customizable enum value saved
messageExternalEmailAttachmentPassword=Please use this password to open the documents sent to you via email from SORMAS\: %s
messageExternalEmailAttachmentNotAvailableInfo=Attaching documents is disabled because encryption would not be possible. To encrypt documents, the person needs to have either a national health ID specified, or a primary mobile phone number set with SMS sending set up on this system.
+messagePersonNationalHealthIdInvalid=The entered national health ID does not seem to be correct
# Notifications
notificationCaseClassificationChanged = The classification of case %s has changed to %s.
notificationCaseInvestigationDone = The investigation of case %s has been done.
diff --git a/sormas-api/src/main/resources/validations.properties b/sormas-api/src/main/resources/validations.properties
index 5e92dd5e38c..2f55e0e2a24 100644
--- a/sormas-api/src/main/resources/validations.properties
+++ b/sormas-api/src/main/resources/validations.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_ar-SA.properties b/sormas-api/src/main/resources/validations_ar-SA.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_ar-SA.properties
+++ b/sormas-api/src/main/resources/validations_ar-SA.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_cs-CZ.properties b/sormas-api/src/main/resources/validations_cs-CZ.properties
index 48002e8c4b2..54c85230e7d 100644
--- a/sormas-api/src/main/resources/validations_cs-CZ.properties
+++ b/sormas-api/src/main/resources/validations_cs-CZ.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Hodnota se může skládat pouze z velk
customizableEnumValueEmptyTranslations = Vyberte jazyky a zadejte popisky pro všechny překlady v seznamu.
customizableEnumValueDuplicateLanguage = Přidejte pouze jeden překlad pro každý jazyk.
customizableEnumValueDuplicateValue = Hodnota %s již existuje pro datový typ %s. Hodnoty Enum musí být jedinečné.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_de-CH.properties b/sormas-api/src/main/resources/validations_de-CH.properties
index bc8fa7f9aad..1a9b00623e3 100644
--- a/sormas-api/src/main/resources/validations_de-CH.properties
+++ b/sormas-api/src/main/resources/validations_de-CH.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_de-DE.properties b/sormas-api/src/main/resources/validations_de-DE.properties
index b49531cf805..13cccfc2159 100644
--- a/sormas-api/src/main/resources/validations_de-DE.properties
+++ b/sormas-api/src/main/resources/validations_de-DE.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_en-AF.properties b/sormas-api/src/main/resources/validations_en-AF.properties
index 78cc9588ad2..9c415edd895 100644
--- a/sormas-api/src/main/resources/validations_en-AF.properties
+++ b/sormas-api/src/main/resources/validations_en-AF.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_en-GH.properties b/sormas-api/src/main/resources/validations_en-GH.properties
index 73c9e715bef..083ea9a7118 100644
--- a/sormas-api/src/main/resources/validations_en-GH.properties
+++ b/sormas-api/src/main/resources/validations_en-GH.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_en-NG.properties b/sormas-api/src/main/resources/validations_en-NG.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_en-NG.properties
+++ b/sormas-api/src/main/resources/validations_en-NG.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_es-CU.properties b/sormas-api/src/main/resources/validations_es-CU.properties
index 9f845f0fbc7..c4eb9f4e8e1 100644
--- a/sormas-api/src/main/resources/validations_es-CU.properties
+++ b/sormas-api/src/main/resources/validations_es-CU.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = El valor sólo puede consistir en letra
customizableEnumValueEmptyTranslations = Por favor, seleccione idiomas e introduzca leyendas para todas las traducciones de la lista.
customizableEnumValueDuplicateLanguage = Por favor, sólo añada una traducción por idioma.
customizableEnumValueDuplicateValue = El valor %s ya existe para el tipo de datos %s. Los valores de enumeración deben ser únicos.
-attachedDocumentNotRelatedToEntity=El documento adjunto no está relacionado con la entidad.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=El documento adjunto no está relacionado con la entidad.
+invalidNationalHealthId=Este valor no parece ser un carnet de identidad correcto
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_es-ES.properties b/sormas-api/src/main/resources/validations_es-ES.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_es-ES.properties
+++ b/sormas-api/src/main/resources/validations_es-ES.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fa-AF.properties b/sormas-api/src/main/resources/validations_fa-AF.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_fa-AF.properties
+++ b/sormas-api/src/main/resources/validations_fa-AF.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fi-FI.properties b/sormas-api/src/main/resources/validations_fi-FI.properties
index 1869e2e301d..353764dc451 100644
--- a/sormas-api/src/main/resources/validations_fi-FI.properties
+++ b/sormas-api/src/main/resources/validations_fi-FI.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fil-PH.properties b/sormas-api/src/main/resources/validations_fil-PH.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_fil-PH.properties
+++ b/sormas-api/src/main/resources/validations_fil-PH.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fj-FJ.properties b/sormas-api/src/main/resources/validations_fj-FJ.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_fj-FJ.properties
+++ b/sormas-api/src/main/resources/validations_fj-FJ.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fr-CD.properties b/sormas-api/src/main/resources/validations_fr-CD.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_fr-CD.properties
+++ b/sormas-api/src/main/resources/validations_fr-CD.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fr-CH.properties b/sormas-api/src/main/resources/validations_fr-CH.properties
index b340452e185..af79483ed48 100644
--- a/sormas-api/src/main/resources/validations_fr-CH.properties
+++ b/sormas-api/src/main/resources/validations_fr-CH.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fr-FR.properties b/sormas-api/src/main/resources/validations_fr-FR.properties
index c07fe009fb6..935dcabc62f 100644
--- a/sormas-api/src/main/resources/validations_fr-FR.properties
+++ b/sormas-api/src/main/resources/validations_fr-FR.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = La valeur ne peut contenir que des lett
customizableEnumValueEmptyTranslations = Veuillez sélectionner les langues et saisir des légendes pour toutes les traductions de la liste.
customizableEnumValueDuplicateLanguage = Veuillez ajouter une seule traduction par langue.
customizableEnumValueDuplicateValue = La valeur %s existe déjà pour le type de données %s. Les valeurs Enum doivent être uniques.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_fr-TN.properties b/sormas-api/src/main/resources/validations_fr-TN.properties
index 45397dd1196..764a4b0c535 100644
--- a/sormas-api/src/main/resources/validations_fr-TN.properties
+++ b/sormas-api/src/main/resources/validations_fr-TN.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_hi-IN.properties b/sormas-api/src/main/resources/validations_hi-IN.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_hi-IN.properties
+++ b/sormas-api/src/main/resources/validations_hi-IN.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_hr-HR.properties b/sormas-api/src/main/resources/validations_hr-HR.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_hr-HR.properties
+++ b/sormas-api/src/main/resources/validations_hr-HR.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_it-CH.properties b/sormas-api/src/main/resources/validations_it-CH.properties
index 4de9dcf0978..e410535ef83 100644
--- a/sormas-api/src/main/resources/validations_it-CH.properties
+++ b/sormas-api/src/main/resources/validations_it-CH.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_it-IT.properties b/sormas-api/src/main/resources/validations_it-IT.properties
index ccb2b2817e8..53948a0f676 100644
--- a/sormas-api/src/main/resources/validations_it-IT.properties
+++ b/sormas-api/src/main/resources/validations_it-IT.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_ja-JP.properties b/sormas-api/src/main/resources/validations_ja-JP.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_ja-JP.properties
+++ b/sormas-api/src/main/resources/validations_ja-JP.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_ne-NP.properties b/sormas-api/src/main/resources/validations_ne-NP.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_ne-NP.properties
+++ b/sormas-api/src/main/resources/validations_ne-NP.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_nl-NL.properties b/sormas-api/src/main/resources/validations_nl-NL.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_nl-NL.properties
+++ b/sormas-api/src/main/resources/validations_nl-NL.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_no-NO.properties b/sormas-api/src/main/resources/validations_no-NO.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_no-NO.properties
+++ b/sormas-api/src/main/resources/validations_no-NO.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_pl-PL.properties b/sormas-api/src/main/resources/validations_pl-PL.properties
index dded0ebca59..296d58a2806 100644
--- a/sormas-api/src/main/resources/validations_pl-PL.properties
+++ b/sormas-api/src/main/resources/validations_pl-PL.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_ps-AF.properties b/sormas-api/src/main/resources/validations_ps-AF.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_ps-AF.properties
+++ b/sormas-api/src/main/resources/validations_ps-AF.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_pt-PT.properties b/sormas-api/src/main/resources/validations_pt-PT.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_pt-PT.properties
+++ b/sormas-api/src/main/resources/validations_pt-PT.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_ro-RO.properties b/sormas-api/src/main/resources/validations_ro-RO.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_ro-RO.properties
+++ b/sormas-api/src/main/resources/validations_ro-RO.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_ru-RU.properties b/sormas-api/src/main/resources/validations_ru-RU.properties
index 897e32acb26..8d7fbfb7092 100644
--- a/sormas-api/src/main/resources/validations_ru-RU.properties
+++ b/sormas-api/src/main/resources/validations_ru-RU.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_sv-SE.properties b/sormas-api/src/main/resources/validations_sv-SE.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_sv-SE.properties
+++ b/sormas-api/src/main/resources/validations_sv-SE.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_sw-KE.properties b/sormas-api/src/main/resources/validations_sw-KE.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_sw-KE.properties
+++ b/sormas-api/src/main/resources/validations_sw-KE.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_tr-TR.properties b/sormas-api/src/main/resources/validations_tr-TR.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_tr-TR.properties
+++ b/sormas-api/src/main/resources/validations_tr-TR.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_uk-UA.properties b/sormas-api/src/main/resources/validations_uk-UA.properties
index aea21edec85..a2113fed499 100644
--- a/sormas-api/src/main/resources/validations_uk-UA.properties
+++ b/sormas-api/src/main/resources/validations_uk-UA.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_ur-PK.properties b/sormas-api/src/main/resources/validations_ur-PK.properties
index d5ecdc4714c..3719965a46d 100644
--- a/sormas-api/src/main/resources/validations_ur-PK.properties
+++ b/sormas-api/src/main/resources/validations_ur-PK.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-api/src/main/resources/validations_zh-CN.properties b/sormas-api/src/main/resources/validations_zh-CN.properties
index 3d7687efa5e..26ade444ac6 100644
--- a/sormas-api/src/main/resources/validations_zh-CN.properties
+++ b/sormas-api/src/main/resources/validations_zh-CN.properties
@@ -291,4 +291,5 @@ customizableEnumValueAllowedCharacters = Value may only consist of uppercase let
customizableEnumValueEmptyTranslations = Please select languages and enter captions for all translations in the list.
customizableEnumValueDuplicateLanguage = Please only add one translation per language.
customizableEnumValueDuplicateValue = The value %s already exists for data type %s. Enum values have to be unique.
-attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
\ No newline at end of file
+attachedDocumentNotRelatedToEntity=The attached document is not related to the entity.
+invalidNationalHealthId=This value does not seem to be a correct national health ID
\ No newline at end of file
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseDao.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseDao.java
index dba95207911..e208e9a2c11 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseDao.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseDao.java
@@ -701,6 +701,17 @@ public void deleteCaseAndAllDependingEntities(String caseUuid) throws SQLExcepti
deleteCascade(caze);
}
+ public List getByPerson(Person person) {
+ try {
+ QueryBuilder qb = queryBuilder();
+ qb.where().eq(Case.PERSON, person);
+ return qb.query();
+ } catch (SQLException e) {
+ Log.e(getTableName(), "Could not perform queryByCriteria on Contact");
+ throw new RuntimeException(e);
+ }
+ }
+
public List getSimilarCases(CaseSimilarityCriteria criteria) {
try {
QueryBuilder queryBuilder = queryBuilder();
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionBooleanValidator.java
index 2eda6522496..a5df9821794 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionBooleanValidator.java
@@ -43,10 +43,19 @@ public Boolean isRootInJurisdiction() {
return isInJurisdictionByJurisdictionLevel(userJurisdiction.getJurisdictionLevel());
}
- @Override
- public Boolean isRootInJurisdictionOrOwned() {
- return userJurisdiction.getUuid().equals(caseJurisdiction.getReportingUserUuid()) || inJurisdiction();
- }
+ @Override
+ public Boolean isRootInJurisdictionOrOwned() {
+ return getReportedByCurrentUser() || inJurisdiction();
+ }
+
+ private boolean getReportedByCurrentUser() {
+ return userJurisdiction.getUuid().equals(caseJurisdiction.getReportingUserUuid());
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ return getReportedByCurrentUser() || userJurisdiction.getUuid().equals(caseJurisdiction.getSurveillanceOfficerUuid());
+ }
@Override
protected Disease getDisease() {
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionDto.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionDto.java
index c05cff34c43..6c1b75dd0de 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionDto.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/caze/CaseJurisdictionDto.java
@@ -34,6 +34,7 @@ public class CaseJurisdictionDto implements Serializable {
private String healthFacilityUuid;
private String pointOfEntryUuid;
private List sampleLabUuids;
+ private String surveillanceOfficerUuid;
public CaseJurisdictionDto() {
}
@@ -118,4 +119,13 @@ public List getSampleLabUuids() {
public void setSampleLabUuids(List sampleLabUuids) {
this.sampleLabUuids = sampleLabUuids;
}
+
+ public String getSurveillanceOfficerUuid() {
+ return surveillanceOfficerUuid;
+ }
+
+ public CaseJurisdictionDto setSurveillanceOfficerUuid(String surveillanceOfficerUuid) {
+ this.surveillanceOfficerUuid = surveillanceOfficerUuid;
+ return this;
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/DatabaseHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/DatabaseHelper.java
index fe774f6b16d..1d87f17f965 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/DatabaseHelper.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/common/DatabaseHelper.java
@@ -190,7 +190,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public static final String DATABASE_NAME = "sormas.db";
// any time you make changes to your database objects, you may have to increase the database version
- public static final int DATABASE_VERSION = 357;
+ public static final int DATABASE_VERSION = 359;
private static DatabaseHelper instance = null;
@@ -3170,6 +3170,15 @@ public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int
currentVersion = 356;
getDao(PathogenTest.class).executeRaw("ALTER TABLE pathogenTest ADD COLUMN testedPathogenDetails varchar(512);");
+ case 357:
+ currentVersion = 357;
+ getDao(CustomizableEnumValue.class).executeRaw("ALTER TABLE customizableEnumValue ADD COLUMN active boolean default true;");
+
+ case 358:
+ currentVersion = 358;
+ getDao(UserRole.class)
+ .executeRaw("ALTER TABLE userroles ADD COLUMN restrictAccessToAssignedEntities boolean NOT NULL DEFAULT false;");
+
// ATTENTION: break should only be done after last version
break;
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactDao.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactDao.java
index 15211b359fe..67c548a0da0 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactDao.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactDao.java
@@ -196,6 +196,17 @@ public List queryByCriteria(ContactCriteria criteria, long offset, long
}
}
+ public List getByPerson(Person person) {
+ try {
+ QueryBuilder qb = queryBuilder();
+ qb.where().eq(Contact.PERSON, person);
+ return qb.query();
+ } catch (SQLException e) {
+ Log.e(getTableName(), "Could not perform queryByCriteria on Contact");
+ throw new RuntimeException(e);
+ }
+ }
+
private QueryBuilder buildQueryBuilder(ContactCriteria contactCriteria) throws SQLException {
QueryBuilder queryBuilder = queryBuilder();
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionBooleanValidator.java
index b85b5c546bd..f403de6e02a 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionBooleanValidator.java
@@ -46,11 +46,20 @@ public Boolean isRootInJurisdiction() {
return isInJurisdictionByJurisdictionLevel(userJurisdiction.getJurisdictionLevel());
}
- @Override
- public Boolean isRootInJurisdictionOrOwned() {
- return userJurisdiction.getUuid().equals(contactJurisdictionDto.getReportingUserUuid()) || inJurisdiction();
+ @Override
+ public Boolean isRootInJurisdictionOrOwned() {
+ return isReportedByCurrentUser() || inJurisdiction();
+ }
+
+ private boolean isReportedByCurrentUser(){
+ return userJurisdiction.getUuid().equals(contactJurisdictionDto.getReportingUserUuid());
}
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ return isReportedByCurrentUser() || userJurisdiction.getUuid().equals(contactJurisdictionDto.getContactOfficerUuid());
+ }
+
@Override
protected Disease getDisease() {
return null;
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionDto.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionDto.java
index 0ffd8d9839a..5a87edade7b 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionDto.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/contact/ContactJurisdictionDto.java
@@ -45,6 +45,8 @@ public class ContactJurisdictionDto implements Serializable {
private CaseJurisdictionDto caseJurisdiction;
+ private String contactOfficerUuid;
+
public ContactJurisdictionDto() {
}
@@ -110,4 +112,13 @@ public List getSampleLabUuids() {
public void setSampleLabUuids(List sampleLabUuids) {
this.sampleLabUuids = sampleLabUuids;
}
+
+ public String getContactOfficerUuid() {
+ return contactOfficerUuid;
+ }
+
+ public ContactJurisdictionDto setContactOfficerUuid(String contactOfficerUuid) {
+ this.contactOfficerUuid = contactOfficerUuid;
+ return this;
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumCacheInfo.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumCacheInfo.java
new file mode 100644
index 00000000000..6804102ae2c
--- /dev/null
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumCacheInfo.java
@@ -0,0 +1,37 @@
+/*
+ * SORMAS® - Surveillance Outbreak Response Management & Analysis System
+ * Copyright © 2016-2023 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package de.symeda.sormas.app.backend.customizableenum;
+
+import java.util.Map;
+
+public class CustomizableEnumCacheInfo {
+
+ private final Map properties;
+ private final boolean active;
+
+ public CustomizableEnumCacheInfo(Map properties, boolean active) {
+ this.properties = properties;
+ this.active = active;
+ }
+
+ public Map getProperties() {
+ return properties;
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValue.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValue.java
index 0b2e890f8a3..d6273275b5a 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValue.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValue.java
@@ -68,6 +68,9 @@ public class CustomizableEnumValue extends AbstractDomainObject {
private String propertiesJson;
private Map properties;
+ @DatabaseField
+ private boolean active;
+
public CustomizableEnumType getDataType() {
return dataType;
}
@@ -232,6 +235,14 @@ public void setDefaultValue(boolean defaultValue) {
this.defaultValue = defaultValue;
}
+ public boolean isActive() {
+ return active;
+ }
+
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
@Override
public String getI18nPrefix() {
return I18N_PREFIX;
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDao.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDao.java
index 6bd3c74018b..6b345234cf3 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDao.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDao.java
@@ -15,11 +15,6 @@
package de.symeda.sormas.app.backend.customizableenum;
-import com.j256.ormlite.dao.Dao;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -27,6 +22,11 @@
import java.util.Optional;
import java.util.stream.Collectors;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import com.j256.ormlite.dao.Dao;
+
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.Language;
import de.symeda.sormas.api.customizableenum.CustomizableEnum;
@@ -53,10 +53,10 @@ public class CustomizableEnumValueDao extends AbstractAdoDao, Map>> enumValuesByDisease = new HashMap<>();
/**
- * Maps a customizable enum type to a map with all enum values of this type as its keys and the properties defined for these
- * enum values as its values.
+ * Maps a customizable enum type to a map with all enum values of this type as its keys and and info, e.g. properties and active status,
+ * defined for these enum values as its values.
*/
- private final Map>> enumProperties = new HashMap<>();
+ private final Map> enumInfo = new HashMap<>();
public CustomizableEnumValueDao(Dao innerDao) {
super(innerDao);
@@ -87,15 +87,19 @@ public T getEnumValue(CustomizableEnumType type, St
T enumValue = enumClass.newInstance();
enumValue.setValue(value);
enumValue.setCaption(enumValuesByLanguage.get(enumClass).get(language).get(value));
- enumValue.setProperties(enumProperties.get(type).get(value));
+ enumValue.setProperties(getEnumInfo(type, value).getProperties());
return enumValue;
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
- @SuppressWarnings("unchecked")
public List getEnumValues(CustomizableEnumType type, Disease disease) {
+ return getEnumValues(type, null, disease);
+ }
+
+ @SuppressWarnings("unchecked")
+ public List getEnumValues(CustomizableEnumType type, String selectedValue, Disease disease) {
if (customizableEnumsByType.isEmpty() || (long) customizableEnumsByType.values().stream().mapToInt(i -> i.size()).sum() != countOf()) {
loadData();
@@ -122,7 +126,7 @@ public List getEnumValues(CustomizableEnumType t
enumValue = enumClass.newInstance();
enumValue.setValue(value);
enumValue.setCaption(caption);
- enumValue.setProperties(enumProperties.get(type).get(value));
+ enumValue.setProperties(getEnumInfo(type, value).getProperties());
enumValues.add(enumValue);
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
@@ -131,13 +135,17 @@ public List getEnumValues(CustomizableEnumType t
return enumValues.stream()
.filter(
- e -> enumValuesByDisease.get(enumClass).get(disease).contains(e.getValue())
- || enumValuesByDisease.get(enumClass).get(null).contains(e.getValue()))
+ e -> (getEnumInfo(type, e.getValue()).isActive() || (selectedValue != null && selectedValue.equals(e.getValue())))
+ && (enumValuesByDisease.get(enumClass).get(disease).contains(e.getValue())
+ || enumValuesByDisease.get(enumClass).get(null).contains(e.getValue())))
.collect(Collectors.toList());
}
- public boolean hasEnumValues(CustomizableEnumType type, Disease disease) {
- return !getEnumValues(type, disease).isEmpty();
+ public void clearCache() {
+ customizableEnumsByType.clear();
+ enumValuesByLanguage.clear();
+ enumValuesByDisease.clear();
+ enumInfo.clear();
}
private void initCaches(CustomizableEnumType type, Language language) {
@@ -200,10 +208,7 @@ private void addValuesByDisease(CustomizableEnumTyp
}
private void loadData() {
- customizableEnumsByType.clear();
- enumValuesByLanguage.clear();
- enumValuesByDisease.clear();
- enumProperties.clear();
+ clearCache();
for (CustomizableEnumType enumType : CustomizableEnumType.values()) {
customizableEnumsByType.putIfAbsent(enumType, new ArrayList<>());
@@ -212,9 +217,16 @@ private void loadData() {
for (CustomizableEnumValue customizableEnumValue : queryForAll()) {
CustomizableEnumType enumType = customizableEnumValue.getDataType();
customizableEnumsByType.get(enumType).add(customizableEnumValue);
- enumProperties.putIfAbsent(enumType, new HashMap<>());
- enumProperties.get(enumType).putIfAbsent(customizableEnumValue.getValue(), customizableEnumValue.getProperties());
+ enumInfo.putIfAbsent(enumType, new HashMap<>());
+ enumInfo.get(enumType)
+ .putIfAbsent(
+ customizableEnumValue.getValue(),
+ new CustomizableEnumCacheInfo(customizableEnumValue.getProperties(), customizableEnumValue.isActive()));
}
}
+ private CustomizableEnumCacheInfo getEnumInfo(CustomizableEnumType type, String value) {
+ return enumInfo.get(type).get(value);
+ }
+
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDtoHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDtoHelper.java
index cbd48d03191..0483500d1bd 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDtoHelper.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/customizableenum/CustomizableEnumValueDtoHelper.java
@@ -20,6 +20,7 @@
import de.symeda.sormas.api.PostResponse;
import de.symeda.sormas.api.customizableenum.CustomizableEnumValueDto;
import de.symeda.sormas.app.backend.common.AdoDtoHelper;
+import de.symeda.sormas.app.backend.common.DatabaseHelper;
import de.symeda.sormas.app.rest.NoConnectionException;
import de.symeda.sormas.app.rest.RetroProvider;
import retrofit2.Call;
@@ -62,6 +63,7 @@ public void fillInnerFromDto(CustomizableEnumValue target, CustomizableEnumValue
target.setDescriptionTranslations(source.getDescriptionTranslations());
target.setProperties(source.getProperties());
target.setDefaultValue(source.isDefaultValue());
+ target.setActive(source.isActive());
}
@Override
@@ -69,6 +71,14 @@ public void fillInnerFromAdo(CustomizableEnumValueDto target, CustomizableEnumVa
// Not supported
}
+ @Override
+ protected void executeHandlePulledListAddition(int listSize) {
+ if (listSize > 0) {
+ // Clear the customizable enum value cache if values have changed
+ DatabaseHelper.getCustomizableEnumValueDao().clearCache();
+ }
+ }
+
@Override
protected long getApproximateJsonSizeInBytes() {
return 0;
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/EnvironmentJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/EnvironmentJurisdictionBooleanValidator.java
index cef4d1c6dd9..7ac7dea3d40 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/EnvironmentJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/EnvironmentJurisdictionBooleanValidator.java
@@ -32,9 +32,20 @@ public Boolean isRootInJurisdiction() {
@Override
public Boolean isRootInJurisdictionOrOwned() {
- return userJurisdiction.getUuid().equals(environmentJurisdiction.getReportingUserUuid())
- || userJurisdiction.getUuid().equals(environmentJurisdiction.getResponsibleUserUuid())
- || inJurisdiction();
+ return isReportedByCurrentUser() || isResponsibleByCurrentUser() || inJurisdiction();
+ }
+
+ private boolean isReportedByCurrentUser() {
+ return userJurisdiction.getUuid().equals(environmentJurisdiction.getReportingUserUuid());
+ }
+
+ private boolean isResponsibleByCurrentUser() {
+ return userJurisdiction.getUuid().equals(environmentJurisdiction.getResponsibleUserUuid());
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ return isReportedByCurrentUser() || isResponsibleByCurrentUser();
}
@Override
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionBooleanValidator.java
index a2fac30eba9..5711aef48bb 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionBooleanValidator.java
@@ -51,7 +51,16 @@ public Boolean isRootInJurisdiction() {
@Override
public Boolean isRootInJurisdictionOrOwned() {
- return userJurisdiction.getUuid().equals(environmentSampleJurisdiction.getReportingUserUuid()) || inJurisdiction();
+ return isReportedByCurrentUser() || inJurisdiction();
+ }
+
+ private boolean isReportedByCurrentUser() {
+ return userJurisdiction.getUuid().equals(environmentSampleJurisdiction.getReportingUserUuid());
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ return isReportedByCurrentUser() || userJurisdiction.getUuid().equals(environmentSampleJurisdiction.getEnvironmentResponsibleUser());
}
@Override
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionDto.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionDto.java
index 06cb2d78021..ed01eeabfff 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionDto.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/environment/environmentsample/EnvironmentSampleJurisdictionDto.java
@@ -23,6 +23,7 @@ public class EnvironmentSampleJurisdictionDto implements Serializable {
private String regionUuid;
private String districtUuid;
private String communityUuid;
+ private String environmentResponsibleUser;
public EnvironmentSampleJurisdictionDto() {
}
@@ -67,4 +68,11 @@ public void setCommunityUuid(String communityUuid) {
this.communityUuid = communityUuid;
}
+ public String getEnvironmentResponsibleUser() {
+ return environmentResponsibleUser;
+ }
+
+ public void setEnvironmentResponsibleUser(String environmentResponsibleUser) {
+ this.environmentResponsibleUser = environmentResponsibleUser;
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventDao.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventDao.java
index 9b44f2d9fd8..422f616f6fe 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventDao.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventDao.java
@@ -39,7 +39,9 @@
import de.symeda.sormas.app.backend.common.DaoException;
import de.symeda.sormas.app.backend.common.DatabaseHelper;
import de.symeda.sormas.app.backend.config.ConfigProvider;
+import de.symeda.sormas.app.backend.contact.Contact;
import de.symeda.sormas.app.backend.location.Location;
+import de.symeda.sormas.app.backend.person.Person;
import de.symeda.sormas.app.backend.task.Task;
import de.symeda.sormas.app.util.DiseaseConfigurationCache;
import de.symeda.sormas.app.util.LocationService;
@@ -260,4 +262,19 @@ private QueryBuilder buildQueryBuilder(EventCriteria criteria) thro
return queryBuilder;
}
+ public List getByEventParticipantPerson(Person person){
+ try {
+ QueryBuilder queryBuilder = queryBuilder();
+ QueryBuilder eventParticipantBuilder = DatabaseHelper.getEventParticipantDao().queryBuilder();
+ queryBuilder.leftJoin(eventParticipantBuilder);
+ Where where = eventParticipantBuilder.where();
+
+ where.eq(EventParticipant.PERSON + "_id", person.getId());
+
+ return queryBuilder.query();
+ } catch (SQLException e) {
+ Log.e(getTableName(), "Could not perform queryByCriteria on Event");
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionBooleanValidator.java
index 196b60c13e4..0e36bdcd101 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionBooleanValidator.java
@@ -43,10 +43,23 @@ public Boolean isRootInJurisdiction() {
return isInJurisdictionByJurisdictionLevel(userJurisdiction.getJurisdictionLevel());
}
- @Override
- public Boolean isRootInJurisdictionOrOwned() {
- return userJurisdiction.getUuid().equals(eventJurisdictionDto.getReportingUserUuid()) || userJurisdiction.getUuid().equals(eventJurisdictionDto.getResponsibleUserUuid()) || inJurisdiction();
- }
+ @Override
+ public Boolean isRootInJurisdictionOrOwned() {
+ return getReportedByCurrentUser() || isCurrentUserResponsible() || inJurisdiction();
+ }
+
+ private boolean getReportedByCurrentUser() {
+ return userJurisdiction.getUuid().equals(eventJurisdictionDto.getReportingUserUuid());
+ }
+
+ public boolean isCurrentUserResponsible() {
+ return userJurisdiction.getUuid().equals(eventJurisdictionDto.getResponsibleUserUuid());
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ return getReportedByCurrentUser() || isCurrentUserResponsible();
+ }
@Override
protected Disease getDisease() {
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionDto.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionDto.java
index aa44b8437cb..4ed06b2256a 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionDto.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventJurisdictionDto.java
@@ -56,8 +56,9 @@ public String getResponsibleUserUuid() {
return responsibleUserUuid;
}
- public void setResponsibleUserUuid(String responsibleUserUuid) {
+ public EventJurisdictionDto setResponsibleUserUuid(String responsibleUserUuid) {
this.responsibleUserUuid = responsibleUserUuid;
+ return this;
}
public String getRegionUuid() {
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantDao.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantDao.java
index 9e53fb24180..b151b28bd2f 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantDao.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantDao.java
@@ -21,11 +21,11 @@
import com.j256.ormlite.dao.Dao;
import android.util.Log;
-
import de.symeda.sormas.app.backend.caze.Case;
import de.symeda.sormas.app.backend.common.AbstractAdoDao;
import de.symeda.sormas.app.backend.common.AbstractDomainObject;
import de.symeda.sormas.app.backend.config.ConfigProvider;
+import de.symeda.sormas.app.backend.person.Person;
public class EventParticipantDao extends AbstractAdoDao {
@@ -66,6 +66,34 @@ public List getByEvent(Event event) {
}
}
+ public List getByEventAndPerson(Event event, Person person) {
+
+ if (event.isSnapshot()) {
+ throw new IllegalArgumentException("Does not support snapshot entities");
+ }
+
+ try {
+ return queryBuilder().where()
+ .eq(EventParticipant.EVENT + "_id", event)
+ .and()
+ .eq(AbstractDomainObject.SNAPSHOT, false)
+ .and()
+ .eq(EventParticipant.PERSON + "_id", person)
+ .query();
+ } catch (SQLException e) {
+ Log.e(getTableName(), "Could not perform getByEventAndPerson on EventParticipant");
+ throw new RuntimeException(e);
+ }
+ }
+
+ public boolean eventParticipantAlreadyExists(Event event, Person person) {
+ if (event.isSnapshot()) {
+ throw new IllegalArgumentException("Does not support snapshot entities");
+ }
+
+ return getByEventAndPerson(event, person).size() > 0;
+ }
+
public Long countByEvent(Event event) {
if (event.isSnapshot()) {
throw new IllegalArgumentException("Does not support snapshot entities");
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionBooleanValidator.java
index cf36d72997e..704dbc8c653 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionBooleanValidator.java
@@ -48,7 +48,16 @@ public Boolean isRootInJurisdiction() {
@Override
public Boolean isRootInJurisdictionOrOwned() {
- return userJurisdiction.getUuid().equals(eventParticipantJurisdictionDto.getReportingUserUuid()) || inJurisdiction();
+ return getReportedByCurrentUser() || inJurisdiction();
+ }
+
+ private boolean getReportedByCurrentUser() {
+ return userJurisdiction.getUuid().equals(eventParticipantJurisdictionDto.getReportingUserUuid());
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ return getReportedByCurrentUser() || userJurisdiction.getUuid().equals(eventParticipantJurisdictionDto.getEventResponsibleUserUuid());
}
@Override
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionDto.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionDto.java
index c5880f62388..094343a4ee5 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionDto.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/event/EventParticipantJurisdictionDto.java
@@ -28,6 +28,7 @@ public class EventParticipantJurisdictionDto implements Serializable {
private String districtUuid;
private String eventUuid;
private EventJurisdictionDto eventJurisdictionDto;
+ private String eventResponsibleUserUuid;
public EventParticipantJurisdictionDto() {
}
@@ -96,4 +97,12 @@ public EventJurisdictionDto getEventJurisdictionDto() {
public void setEventJurisdictionDto(EventJurisdictionDto eventJurisdictionDto) {
this.eventJurisdictionDto = eventJurisdictionDto;
}
+
+ public String getEventResponsibleUserUuid() {
+ return eventResponsibleUserUuid;
+ }
+
+ public void setEventResponsibleUserUuid(String eventResponsibleUserUuid) {
+ this.eventResponsibleUserUuid = eventResponsibleUserUuid;
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionBooleanValidator.java
index 7de10c4d76a..4bdb9c35d9c 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionBooleanValidator.java
@@ -15,9 +15,14 @@
package de.symeda.sormas.app.backend.immunization;
+import java.util.ArrayList;
+import java.util.List;
+
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.utils.DataHelper;
+import de.symeda.sormas.app.backend.caze.CaseJurisdictionDto;
import de.symeda.sormas.app.backend.caze.ResponsibleJurisdictionDto;
+import de.symeda.sormas.app.backend.person.PersonJurisdictionBooleanValidator;
import de.symeda.sormas.app.util.BooleanJurisdictionValidator;
import de.symeda.sormas.app.util.UserJurisdiction;
@@ -48,6 +53,13 @@ public Boolean isRootInJurisdictionOrOwned() {
return userJurisdiction.getUuid().equals(immunizationJurisdiction.getReportingUserUuid()) || inJurisdiction();
}
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ PersonJurisdictionBooleanValidator personJurisdictionBooleanValidator = new PersonJurisdictionBooleanValidator(userJurisdiction, immunizationJurisdiction.getPersonJurisdiction());
+
+ return isRootInJurisdictionOrOwned() && personJurisdictionBooleanValidator.isRootInJurisdictionForRestrictedAccess();
+ }
+
@Override
protected Disease getDisease() {
return null;
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionDto.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionDto.java
index 0efa6fa1175..1299991e94b 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionDto.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/immunization/ImmunizationJurisdictionDto.java
@@ -21,12 +21,13 @@
import java.io.Serializable;
import de.symeda.sormas.app.backend.caze.ResponsibleJurisdictionDto;
+import de.symeda.sormas.app.backend.person.PersonJurisdictionDto;
public class ImmunizationJurisdictionDto implements Serializable {
private String reportingUserUuid;
private ResponsibleJurisdictionDto responsibleJurisdiction;
-
+ private PersonJurisdictionDto personJurisdiction;
public ImmunizationJurisdictionDto() {
}
@@ -52,4 +53,12 @@ public ResponsibleJurisdictionDto getResponsibleJurisdiction() {
public void setResponsibleJurisdiction(ResponsibleJurisdictionDto responsibleJurisdiction) {
this.responsibleJurisdiction = responsibleJurisdiction;
}
+
+ public PersonJurisdictionDto getPersonJurisdiction() {
+ return personJurisdiction;
+ }
+
+ public void setPersonJurisdiction(PersonJurisdictionDto personJurisdiction) {
+ this.personJurisdiction = personJurisdiction;
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/person/PersonJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/person/PersonJurisdictionBooleanValidator.java
new file mode 100644
index 00000000000..54bec46e25e
--- /dev/null
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/person/PersonJurisdictionBooleanValidator.java
@@ -0,0 +1,103 @@
+package de.symeda.sormas.app.backend.person;
+
+import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.app.backend.caze.CaseJurisdictionDto;
+import de.symeda.sormas.app.backend.contact.ContactJurisdictionDto;
+import de.symeda.sormas.app.backend.event.EventJurisdictionDto;
+import de.symeda.sormas.app.core.NotImplementedException;
+import de.symeda.sormas.app.util.BooleanJurisdictionValidator;
+import de.symeda.sormas.app.util.UserJurisdiction;
+
+public class PersonJurisdictionBooleanValidator extends BooleanJurisdictionValidator {
+
+ private final PersonJurisdictionDto personJurisdiction;
+ protected final UserJurisdiction userJurisdiction;
+
+ public PersonJurisdictionBooleanValidator(UserJurisdiction userJurisdiction, PersonJurisdictionDto personJurisdiction) {
+ super(null, userJurisdiction);
+ this.personJurisdiction = personJurisdiction;
+ this.userJurisdiction = userJurisdiction;
+ }
+
+ @Override
+ protected Disease getDisease() {
+ return null;
+ }
+
+ @Override
+ public Boolean isRootInJurisdiction() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionOrOwned() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+
+ boolean currentUserIsSurveillanceOfficer = personJurisdiction.getCaseJurisdictions()
+ .stream()
+ .map(CaseJurisdictionDto::getSurveillanceOfficerUuid)
+ .anyMatch(surveillanceOfficer -> surveillanceOfficer.equals(userJurisdiction.getUuid()));
+
+ if (currentUserIsSurveillanceOfficer) {
+ return true;
+ }
+
+ boolean currentUserIsContactOfficer = personJurisdiction.getContactJurisdictions()
+ .stream()
+ .map(ContactJurisdictionDto::getContactOfficerUuid)
+ .anyMatch(contactOfficer -> contactOfficer.equals(userJurisdiction.getUuid()));
+
+ if (currentUserIsContactOfficer) {
+ return true;
+ }
+
+ return personJurisdiction.getEventJurisdictions()
+ .stream()
+ .map(EventJurisdictionDto::getResponsibleUserUuid)
+ .anyMatch(responsibleUser -> responsibleUser.equals(userJurisdiction.getUuid()));
+ }
+
+ @Override
+ protected Boolean whenNotAllowed() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ protected Boolean whenNationalLevel() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ protected Boolean whenRegionalLevel() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ protected Boolean whenDistrictLevel() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ protected Boolean whenCommunityLevel() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ protected Boolean whenFacilityLevel() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ protected Boolean whenPointOfEntryLevel() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+
+ @Override
+ protected Boolean whenLaboratoryLevel() {
+ throw new NotImplementedException("Person jurisdiction depends on linked core entity jurisdiction");
+ }
+}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/person/PersonJurisdictionDto.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/person/PersonJurisdictionDto.java
new file mode 100644
index 00000000000..f57a6db55bc
--- /dev/null
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/person/PersonJurisdictionDto.java
@@ -0,0 +1,65 @@
+package de.symeda.sormas.app.backend.person;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import de.symeda.sormas.app.backend.caze.CaseJurisdictionDto;
+import de.symeda.sormas.app.backend.contact.ContactJurisdictionDto;
+import de.symeda.sormas.app.backend.event.EventJurisdictionDto;
+import de.symeda.sormas.app.backend.immunization.ImmunizationJurisdictionDto;
+
+public class PersonJurisdictionDto implements Serializable {
+
+ private List caseJurisdictions = new ArrayList<>();
+ private List contactJurisdictions = new ArrayList<>();
+ private List eventJurisdictions = new ArrayList<>();
+ private List immunizationJurisdictions = new ArrayList<>();
+
+ public PersonJurisdictionDto() {
+
+ }
+
+ public PersonJurisdictionDto(
+ List caseJurisdictions,
+ List contactJurisdictions,
+ List eventJurisdictions,
+ List immunizationJurisdictions) {
+ this.caseJurisdictions = caseJurisdictions;
+ this.contactJurisdictions = contactJurisdictions;
+ this.eventJurisdictions = eventJurisdictions;
+ this.immunizationJurisdictions = immunizationJurisdictions;
+ }
+
+ public List getCaseJurisdictions() {
+ return caseJurisdictions;
+ }
+
+ public void setCaseJurisdictions(List caseJurisdictions) {
+ this.caseJurisdictions = caseJurisdictions;
+ }
+
+ public List getContactJurisdictions() {
+ return contactJurisdictions;
+ }
+
+ public void setContactJurisdictions(List contactJurisdictions) {
+ this.contactJurisdictions = contactJurisdictions;
+ }
+
+ public List getEventJurisdictions() {
+ return eventJurisdictions;
+ }
+
+ public void setEventJurisdictions(List eventJurisdictions) {
+ this.eventJurisdictions = eventJurisdictions;
+ }
+
+ public List getImmunizationJurisdictions() {
+ return immunizationJurisdictions;
+ }
+
+ public void setImmunizationJurisdictions(List immunizationJurisdictions) {
+ this.immunizationJurisdictions = immunizationJurisdictions;
+ }
+}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/sample/SampleJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/sample/SampleJurisdictionBooleanValidator.java
index 5a9364f0915..adf8711e39b 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/sample/SampleJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/sample/SampleJurisdictionBooleanValidator.java
@@ -74,6 +74,16 @@ public Boolean isRootInJurisdictionOrOwned() {
return userJurisdiction.getUuid().equals(sampleJurisdictionDto.getReportingUserUuid()) || inJurisdiction();
}
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+
+ boolean currentUserIsSurveilanceOfficer = userJurisdiction.getUuid().equals(sampleJurisdictionDto.getCaseJurisdiction().getSurveillanceOfficerUuid());
+ boolean currentUserIsContactOfficer = userJurisdiction.getUuid().equals(sampleJurisdictionDto.getContactJurisdiction().getContactOfficerUuid());
+ boolean currentUserIsResponsibleOfficer = userJurisdiction.getUuid().equals(sampleJurisdictionDto.getEventParticipantJurisdiction().getEventResponsibleUserUuid());
+
+ return currentUserIsSurveilanceOfficer || currentUserIsContactOfficer || currentUserIsResponsibleOfficer;
+ }
+
@Override
protected Disease getDisease() {
return null;
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/task/TaskJurisdictionBooleanValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/task/TaskJurisdictionBooleanValidator.java
index 788613b2b84..f44def5a56f 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/task/TaskJurisdictionBooleanValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/task/TaskJurisdictionBooleanValidator.java
@@ -69,7 +69,20 @@ public Boolean isRootInJurisdiction() {
@Override
public Boolean isRootInJurisdictionOrOwned() {
- return userJurisdiction.getUuid().equals(taskJurisdictionDto.getCreatorUserUuid()) || userJurisdiction.getUuid().equals(taskJurisdictionDto.getAssigneeUserUuid()) || inJurisdiction();
+ return getCreatedByCurrentUser() || getAssignedToCurrentUser() || inJurisdiction();
+ }
+
+ private boolean getAssignedToCurrentUser() {
+ return userJurisdiction.getUuid().equals(taskJurisdictionDto.getAssigneeUserUuid());
+ }
+
+ private boolean getCreatedByCurrentUser() {
+ return userJurisdiction. getUuid().equals(taskJurisdictionDto.getCreatorUserUuid());
+ }
+
+ @Override
+ public Boolean isRootInJurisdictionForRestrictedAccess() {
+ return isRootInJurisdictionOrOwned();
}
@Override
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDtoHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDtoHelper.java
index 647aa000902..eeb1ee3e4ba 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDtoHelper.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserDtoHelper.java
@@ -132,4 +132,10 @@ public static UserReferenceDto toReferenceDto(User ado) {
UserReferenceDto dto = new UserReferenceDto(ado.getUuid());
return dto;
}
+ public static boolean isRestrictedToAssignEntities(User user) {
+ if (user != null && !user.getUserRoles().isEmpty()) {
+ return user.getUserRoles().stream().allMatch(UserRole::isRestrictAccessToAssignedEntities);
+ }
+ return false;
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRole.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRole.java
index f4520cd7da9..715a009d80a 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRole.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRole.java
@@ -69,6 +69,8 @@ public class UserRole extends AbstractDomainObject {
private JurisdictionLevel jurisdictionLevel;
@Enumerated(EnumType.STRING)
private DefaultUserRole linkedDefaultUserRole;
+ @Column
+ private boolean restrictAccessToAssignedEntities;
public String getUserRightsJson() {
return userRightsJson;
@@ -147,6 +149,14 @@ public void setPortHealthUser(boolean portHealthUser) {
this.portHealthUser = portHealthUser;
}
+ public boolean isRestrictAccessToAssignedEntities() {
+ return restrictAccessToAssignedEntities;
+ }
+
+ public void setRestrictAccessToAssignedEntities(boolean restrictAccessToAssignedEntities) {
+ this.restrictAccessToAssignedEntities = restrictAccessToAssignedEntities;
+ }
+
public JurisdictionLevel getJurisdictionLevel() {
return jurisdictionLevel;
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRoleDtoHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRoleDtoHelper.java
index 951f76d4489..e4f1133b0f1 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRoleDtoHelper.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/user/UserRoleDtoHelper.java
@@ -63,6 +63,7 @@ public void fillInnerFromDto(UserRole target, UserRoleDto source) {
target.setHasOptionalHealthFacility(source.getHasOptionalHealthFacility());
target.setJurisdictionLevel(source.getJurisdictionLevel());
target.setLinkedDefaultUserRole(source.getLinkedDefaultUserRole());
+ target.setRestrictAccessToAssignedEntities(source.isRestrictAccessToAssignedEntities());
}
@Override
@@ -76,6 +77,7 @@ public void fillInnerFromAdo(UserRoleDto target, UserRole source) {
target.setHasOptionalHealthFacility(source.hasOptionalHealthFacility());
target.setJurisdictionLevel(source.getJurisdictionLevel());
target.setLinkedDefaultUserRole(source.getLinkedDefaultUserRole());
+ target.setRestrictAccessToAssignedEntities(source.isRestrictAccessToAssignedEntities());
}
@Override
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditActivity.java
index 2e4c69c19fb..0f727c9e8ee 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditActivity.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditActivity.java
@@ -23,13 +23,14 @@
import android.content.Context;
import android.os.AsyncTask;
import android.view.Menu;
-
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.caze.CaseClassification;
import de.symeda.sormas.api.caze.CaseOrigin;
import de.symeda.sormas.api.caze.CaseReferenceDto;
import de.symeda.sormas.api.feature.FeatureType;
import de.symeda.sormas.api.feature.FeatureTypeProperty;
+import de.symeda.sormas.api.i18n.I18nProperties;
+import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.user.UserRight;
import de.symeda.sormas.api.utils.DataHelper;
import de.symeda.sormas.api.utils.ValidationException;
@@ -345,15 +346,24 @@ private void linkEventToCase() {
EventPickOrCreateDialog.pickOrCreateEvent(caze, null, event -> {
if (event != null) {
- //link existing event to case
- EventParticipant eventParticipantToSave = DatabaseHelper.getEventParticipantDao().build();
- eventParticipantToSave.setPerson(caze.getPerson());
- eventParticipantToSave.setEvent(event);
- eventParticipantToSave.setResultingCaseUuid(caze.getUuid());
EventParticipantSaver eventParticipantSaver = new EventParticipantSaver(this);
+ //link existing event to case
if (!isEventLinkedToCase(caze, event)) {
- eventParticipantSaver.saveEventParticipantLinkedToCase(eventParticipantToSave);
+ boolean eventParticipantAlreadyExists =
+ DatabaseHelper.getEventParticipantDao().eventParticipantAlreadyExists(event, caze.getPerson());
+ EventParticipant eventParticipant;
+ if (eventParticipantAlreadyExists) {
+ eventParticipant = DatabaseHelper.getEventParticipantDao().getByEventAndPerson(event, caze.getPerson()).get(0);
+ NotificationHelper.showNotification(this, WARNING, I18nProperties.getString(Strings.messagePersonAlreadyEventParticipant));
+ } else {
+ eventParticipant = DatabaseHelper.getEventParticipantDao().build();
+ eventParticipant.setPerson(caze.getPerson());
+ eventParticipant.setEvent(event);
+ }
+ eventParticipant.setResultingCaseUuid(caze.getUuid());
+ eventParticipantSaver.saveEventParticipantLinkedToCase(eventParticipant, eventParticipantAlreadyExists);
+
} else {
NotificationHelper
.showNotification(this, WARNING, getString(R.string.message_Event_already_linked_to_Case) + " " + caze.getUuid());
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditFragment.java
index 03af89dd176..2d90b97b14b 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditFragment.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseEditFragment.java
@@ -21,13 +21,14 @@
import static de.symeda.sormas.api.caze.CaseConfirmationBasis.EPIDEMIOLOGICAL_CONFIRMATION;
import static de.symeda.sormas.api.caze.CaseConfirmationBasis.LABORATORY_DIAGNOSTIC_CONFIRMATION;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
import android.webkit.WebView;
import androidx.fragment.app.FragmentActivity;
-import java.util.Date;
-import java.util.List;
-
import de.symeda.sormas.api.CountryHelper;
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.caze.CaseClassification;
@@ -48,6 +49,7 @@
import de.symeda.sormas.api.caze.Trimester;
import de.symeda.sormas.api.caze.VaccinationStatus;
import de.symeda.sormas.api.contact.QuarantineType;
+import de.symeda.sormas.api.customizableenum.CustomizableEnum;
import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.event.TypeOfPlace;
@@ -340,8 +342,11 @@ record = getActivityRootData();
if (record.getDisease() != null && !diseases.contains(record.getDisease())) {
diseaseList.add(DataUtils.toItem(record.getDisease()));
}
- List diseaseVariants =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.DISEASE_VARIANT, record.getDisease());
+ List diseaseVariants = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.DISEASE_VARIANT,
+ Optional.ofNullable(record.getDiseaseVariant()).map(CustomizableEnum::getValue).orElse(null),
+ record.getDisease());
diseaseVariantList = DataUtils.toItems(diseaseVariants);
if (record.getDiseaseVariant() != null && !diseaseVariants.contains(record.getDiseaseVariant())) {
diseaseVariantList.add(DataUtils.toItem(record.getDiseaseVariant()));
@@ -671,7 +676,7 @@ public void onAfterLayoutBinding(final FragmentCaseEditLayoutBinding contentBind
contentBinding.caseDataClassifiedBy.setValue(getResources().getString(R.string.system));
}
- if(!isFieldAccessible(CaseDataDto.class, contentBinding.caseDataHealthFacility)){
+ if (!isFieldAccessible(CaseDataDto.class, contentBinding.caseDataHealthFacility)) {
FieldVisibilityAndAccessHelper.setFieldInaccessibleValue(contentBinding.facilityOrHome);
FieldVisibilityAndAccessHelper.setFieldInaccessibleValue(contentBinding.facilityTypeGroup);
} else if (record.getCaseOrigin() == CaseOrigin.POINT_OF_ENTRY && record.getHealthFacility() == null) {
@@ -710,8 +715,11 @@ public void onAfterLayoutBinding(final FragmentCaseEditLayoutBinding contentBind
}
private void updateDiseaseVariantsField(FragmentCaseEditLayoutBinding contentBinding) {
- List diseaseVariants =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.DISEASE_VARIANT, record.getDisease());
+ List diseaseVariants = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.DISEASE_VARIANT,
+ Optional.ofNullable(record.getDiseaseVariant()).map(CustomizableEnum::getValue).orElse(null),
+ record.getDisease());
diseaseVariantList.clear();
diseaseVariantList.addAll(DataUtils.toItems(diseaseVariants));
contentBinding.caseDataDiseaseVariant.setSpinnerData(diseaseVariantList);
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewActivity.java
index 86b7bac1a83..05223153c56 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewActivity.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/caze/edit/CaseNewActivity.java
@@ -227,7 +227,7 @@ public void saveData() {
// Person selection can be skipped if the case was created from a contact or event participant
if (contactUuid == null && eventParticipantUuid == null) {
- SelectOrCreatePersonDialog.selectOrCreatePerson(caze.getPerson(), person -> {
+ SelectOrCreatePersonDialog.selectOrCreatePerson(caze.getPerson(), caze, person -> {
if (person != null) {
caze.setPerson(person);
pickOrCreateCaseAndSave(caze, fragment);
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/component/dialog/SynchronizationDialog.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/component/dialog/SynchronizationDialog.java
index f5c359956fb..d74ac042c45 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/component/dialog/SynchronizationDialog.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/component/dialog/SynchronizationDialog.java
@@ -369,6 +369,16 @@ private void showPushNewProgressItems() {
Strings.entityEventParticipants,
allowedEntities,
DtoFeatureConfigHelper.isFeatureConfigForEventParticipantsEnabled());
+ addEntityIfEditAllowed(
+ EnvironmentDto.class,
+ Strings.entityEnvironments,
+ allowedEntities,
+ DtoFeatureConfigHelper.isFeatureConfigForEnvironmentEnabled());
+ addEntityIfEditAllowed(
+ EnvironmentSampleDto.class,
+ Strings.entityEnvironmentSamples,
+ allowedEntities,
+ DtoFeatureConfigHelper.isFeatureConfigForEnvironmentSamplesEnabled());
addEntityIfEditAllowed(SampleDto.class, Strings.entitySamples, allowedEntities, DtoFeatureConfigHelper.isFeatureConfigForSampleEnabled());
addEntityIfEditAllowed(
PathogenTestDto.class,
@@ -380,16 +390,6 @@ private void showPushNewProgressItems() {
Strings.entityAdditionalTests,
allowedEntities,
DtoFeatureConfigHelper.isFeatureConfigForAdditionalTestsEnabled());
- addEntityIfEditAllowed(
- EnvironmentDto.class,
- Strings.entityEnvironments,
- allowedEntities,
- DtoFeatureConfigHelper.isFeatureConfigForEnvironmentEnabled());
- addEntityIfEditAllowed(
- EnvironmentSampleDto.class,
- Strings.entityEnvironmentSamples,
- allowedEntities,
- DtoFeatureConfigHelper.isFeatureConfigForEnvironmentSamplesEnabled());
addEntityIfEditAllowed(ContactDto.class, Strings.entityContacts, allowedEntities, DtoFeatureConfigHelper.isFeatureConfigForContactsEnabled());
addEntityIfEditAllowedWithFeatureDependencies(
VisitDto.class,
@@ -530,6 +530,16 @@ private void showSynchronizeProgressItems() {
Strings.entityEventParticipants,
allowedEntities,
DtoFeatureConfigHelper.isFeatureConfigForEventParticipantsEnabled());
+ addEntityIfViewOrEditAllowed(
+ EnvironmentDto.class,
+ Strings.entityEnvironments,
+ allowedEntities,
+ DtoFeatureConfigHelper.isFeatureConfigForEnvironmentEnabled());
+ addEntityIfViewOrEditAllowed(
+ EnvironmentSampleDto.class,
+ Strings.entityEnvironmentSamples,
+ allowedEntities,
+ DtoFeatureConfigHelper.isFeatureConfigForEnvironmentSamplesEnabled());
addEntityIfViewOrEditAllowed(
SampleDto.class,
Strings.entitySamples,
@@ -545,16 +555,6 @@ private void showSynchronizeProgressItems() {
Strings.entityAdditionalTests,
allowedEntities,
DtoFeatureConfigHelper.isFeatureConfigForAdditionalTestsEnabled());
- addEntityIfViewOrEditAllowed(
- EnvironmentDto.class,
- Strings.entityEnvironments,
- allowedEntities,
- DtoFeatureConfigHelper.isFeatureConfigForEnvironmentEnabled());
- addEntityIfViewOrEditAllowed(
- EnvironmentSampleDto.class,
- Strings.entityEnvironmentSamples,
- allowedEntities,
- DtoFeatureConfigHelper.isFeatureConfigForEnvironmentSamplesEnabled());
addEntityIfViewOrEditAllowed(
ContactDto.class,
Strings.entityContacts,
@@ -611,6 +611,16 @@ private void showPullModifiedProgressItems() {
Strings.entityEventParticipants,
allowedEntities,
DtoFeatureConfigHelper.isFeatureConfigForEventParticipantsEnabled());
+ addEntityIfViewAllowed(
+ EnvironmentDto.class,
+ Strings.entityEnvironments,
+ allowedEntities,
+ DtoFeatureConfigHelper.isFeatureConfigForEnvironmentEnabled());
+ addEntityIfViewAllowed(
+ EnvironmentSampleDto.class,
+ Strings.entityEnvironmentSamples,
+ allowedEntities,
+ DtoFeatureConfigHelper.isFeatureConfigForEnvironmentSamplesEnabled());
addEntityIfViewAllowed(SampleDto.class, Strings.entitySamples, allowedEntities, DtoFeatureConfigHelper.isFeatureConfigForSampleEnabled());
addEntityIfViewAllowed(
PathogenTestDto.class,
@@ -622,16 +632,6 @@ private void showPullModifiedProgressItems() {
Strings.entityAdditionalTests,
allowedEntities,
DtoFeatureConfigHelper.isFeatureConfigForAdditionalTestsEnabled());
- addEntityIfViewAllowed(
- EnvironmentDto.class,
- Strings.entityEnvironments,
- allowedEntities,
- DtoFeatureConfigHelper.isFeatureConfigForEnvironmentEnabled());
- addEntityIfViewAllowed(
- EnvironmentSampleDto.class,
- Strings.entityEnvironmentSamples,
- allowedEntities,
- DtoFeatureConfigHelper.isFeatureConfigForEnvironmentSamplesEnabled());
addEntityIfViewAllowed(ContactDto.class, Strings.entityContacts, allowedEntities, DtoFeatureConfigHelper.isFeatureConfigForContactsEnabled());
addEntityIfViewAllowedWithFeatureDependencies(
VisitDto.class,
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/contact/edit/ContactNewActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/contact/edit/ContactNewActivity.java
index 0610f469e51..6db81a6d4bd 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/contact/edit/ContactNewActivity.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/contact/edit/ContactNewActivity.java
@@ -177,7 +177,7 @@ public void saveData() {
return;
}
- SelectOrCreatePersonDialog.selectOrCreatePerson(contactToSave.getPerson(), new Consumer() {
+ SelectOrCreatePersonDialog.selectOrCreatePerson(contactToSave.getPerson(), contactToSave, new Consumer() {
@Override
public void accept(Person person) {
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/environmentsample/edit/EnvironmentSampleEditPathogenTestListFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/environmentsample/edit/EnvironmentSampleEditPathogenTestListFragment.java
index c16d9aa5f84..a40e53c1d8c 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/environmentsample/edit/EnvironmentSampleEditPathogenTestListFragment.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/environmentsample/edit/EnvironmentSampleEditPathogenTestListFragment.java
@@ -104,6 +104,6 @@ public boolean isShowSaveAction() {
@Override
public boolean isShowNewAction() {
- return ConfigProvider.hasUserRight(UserRight.PATHOGEN_TEST_CREATE);
+ return ConfigProvider.hasUserRight(UserRight.ENVIRONMENT_PATHOGEN_TEST_CREATE);
}
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditFragment.java
index f2cedd9fc70..bbf24f45553 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditFragment.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditFragment.java
@@ -19,11 +19,13 @@
import static android.view.View.VISIBLE;
import static de.symeda.sormas.app.core.notification.NotificationType.ERROR;
-import android.view.View;
-
import java.util.List;
+import java.util.Optional;
+
+import android.view.View;
import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.api.customizableenum.CustomizableEnum;
import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.event.DiseaseTransmissionMode;
@@ -189,14 +191,20 @@ record = getActivityRootData();
if (record.getDisease() != null && !diseases.contains(record.getDisease())) {
diseaseList.add(DataUtils.toItem(record.getDisease()));
}
- List diseaseVariants =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.DISEASE_VARIANT, record.getDisease());
+ List diseaseVariants = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.DISEASE_VARIANT,
+ Optional.ofNullable(record.getDiseaseVariant()).map(CustomizableEnum::getValue).orElse(null),
+ record.getDisease());
diseaseVariantList = DataUtils.toItems(diseaseVariants);
if (record.getDiseaseVariant() != null && !diseaseVariants.contains(record.getDiseaseVariant())) {
diseaseVariantList.add(DataUtils.toItem(record.getDiseaseVariant()));
}
- List specificRisks =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.SPECIFIC_EVENT_RISK, record.getDisease());
+ List specificRisks = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.SPECIFIC_EVENT_RISK,
+ Optional.ofNullable(record.getSpecificRisk()).map(CustomizableEnum::getValue).orElse(null),
+ record.getDisease());
specificRiskList = DataUtils.toItems(specificRisks);
if (record.getSpecificRisk() != null && !specificRisks.contains(record.getSpecificRisk())) {
specificRiskList.add(DataUtils.toItem(record.getSpecificRisk()));
@@ -305,8 +313,11 @@ public void onAfterLayoutBinding(FragmentEventEditLayoutBinding contentBinding)
private void updateCustomizableEnumFields(FragmentEventEditLayoutBinding contentBinding) {
// Disease variant
DiseaseVariant selectedVariant = (DiseaseVariant) contentBinding.eventDiseaseVariant.getValue();
- List diseaseVariants =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.DISEASE_VARIANT, record.getDisease());
+ List diseaseVariants = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.DISEASE_VARIANT,
+ Optional.ofNullable(record.getDiseaseVariant()).map(CustomizableEnum::getValue).orElse(null),
+ record.getDisease());
diseaseVariantList.clear();
diseaseVariantList.addAll(DataUtils.toItems(diseaseVariants));
contentBinding.eventDiseaseVariant.setSpinnerData(diseaseVariantList);
@@ -319,8 +330,11 @@ private void updateCustomizableEnumFields(FragmentEventEditLayoutBinding content
// Specific risk
SpecificRisk selectedRisk = (SpecificRisk) contentBinding.eventSpecificRisk.getValue();
- List specificRisks =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.SPECIFIC_EVENT_RISK, record.getDisease());
+ List specificRisks = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.SPECIFIC_EVENT_RISK,
+ Optional.ofNullable(record.getSpecificRisk()).map(CustomizableEnum::getValue).orElse(null),
+ record.getDisease());
specificRiskList.clear();
specificRiskList.addAll(DataUtils.toItems(specificRisks));
contentBinding.eventSpecificRisk.setSpinnerData(specificRiskList);
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditPersonsInvolvedListFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditPersonsInvolvedListFragment.java
index 1198573e91b..db6fa03a322 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditPersonsInvolvedListFragment.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventEditPersonsInvolvedListFragment.java
@@ -15,6 +15,8 @@
package de.symeda.sormas.app.event.edit;
+import java.util.List;
+
import android.os.Bundle;
import android.view.View;
@@ -23,10 +25,10 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
-import java.util.List;
-
+import de.symeda.sormas.api.user.UserRight;
import de.symeda.sormas.app.BaseEditFragment;
import de.symeda.sormas.app.R;
+import de.symeda.sormas.app.backend.config.ConfigProvider;
import de.symeda.sormas.app.backend.event.Event;
import de.symeda.sormas.app.backend.event.EventParticipant;
import de.symeda.sormas.app.core.adapter.databinding.OnListItemClickListener;
@@ -35,6 +37,7 @@
import de.symeda.sormas.app.event.eventparticipant.edit.EventParticipantEditActivity;
import de.symeda.sormas.app.event.eventparticipant.list.EventParticipantListAdapter;
import de.symeda.sormas.app.event.eventparticipant.list.EventParticipantListViewModel;
+import de.symeda.sormas.app.event.eventparticipant.read.EventParticipantReadActivity;
public class EventEditPersonsInvolvedListFragment extends BaseEditFragment, Event>
implements OnListItemClickListener {
@@ -106,8 +109,13 @@ public boolean isShowNewAction() {
@Override
public void onListItemClick(View view, int position, Object item) {
+
EventParticipant o = (EventParticipant) item;
- EventParticipantEditActivity
- .startActivity(getContext(), o.getUuid(), getActivityRootData().getUuid(), EventParticipantSection.EVENT_PARTICIPANT_INFO);
+ if (ConfigProvider.hasUserRight(UserRight.EVENTPARTICIPANT_EDIT)) {
+ EventParticipantEditActivity
+ .startActivity(getContext(), o.getUuid(), getActivityRootData().getUuid(), EventParticipantSection.EVENT_PARTICIPANT_INFO);
+ } else {
+ EventParticipantReadActivity.startActivity(getContext(), o.getUuid(), getActivityRootData().getUuid());
+ }
}
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventNewActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventNewActivity.java
index b024977ac19..bb275c23ca8 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventNewActivity.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/edit/EventNewActivity.java
@@ -175,7 +175,7 @@ protected void onPostExecute(AsyncTaskResult taskResult) {
eventParticipantToSave.setEvent(eventToSave);
eventParticipantToSave.setResultingCaseUuid(linkedCase.getUuid());
EventParticipantSaver eventParticipantSaver = new EventParticipantSaver(EventNewActivity.this);
- eventParticipantSaver.saveEventParticipantLinkedToCase(eventParticipantToSave);
+ eventParticipantSaver.saveEventParticipantLinkedToCase(eventParticipantToSave, false);
} else {
EventEditActivity.startActivity(getContext(), eventToSave.getUuid(), EventSection.EVENT_PARTICIPANTS);
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/EventParticipantSaver.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/EventParticipantSaver.java
index 0e39523a2b3..d4a8ccbd1d0 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/EventParticipantSaver.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/EventParticipantSaver.java
@@ -15,7 +15,7 @@ public EventParticipantSaver(BaseActivity parentActivity) {
this.parentActivity = parentActivity;
}
- public void saveEventParticipantLinkedToCase(EventParticipant eventParticipantToSave) {
+ public void saveEventParticipantLinkedToCase(EventParticipant eventParticipantToSave, boolean eventParticipantAlreadyExists) {
new SavingAsyncTask(parentActivity.getRootView(), eventParticipantToSave) {
@@ -32,7 +32,11 @@ protected void doInBackground(TaskResultHolder resultHolder) throws Exception {
@Override
protected void onPostExecute(AsyncTaskResult taskResult) {
parentActivity.hidePreloader();
- super.onPostExecute(taskResult);
+
+ if (!eventParticipantAlreadyExists) {
+ super.onPostExecute(taskResult);
+ }
+
if (taskResult.getResultStatus().isSuccess()) {
parentActivity.finish();
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantNewActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantNewActivity.java
index 07a3c1e1711..1a2e2e77980 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantNewActivity.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/event/eventparticipant/edit/EventParticipantNewActivity.java
@@ -135,7 +135,9 @@ public void saveData() {
return;
}
- SelectOrCreatePersonDialog.selectOrCreatePerson(eventParticipantToSave.getPerson(), new Consumer() {
+ final Event event = DatabaseHelper.getEventDao().queryUuid(eventUuid);
+
+ SelectOrCreatePersonDialog.selectOrCreatePerson(eventParticipantToSave.getPerson(), event, new Consumer() {
@Override
public void accept(Person person) {
@@ -151,7 +153,6 @@ protected void onPreExecute() {
@Override
protected void doInBackground(TaskResultHolder resultHolder) throws Exception {
DatabaseHelper.getPersonDao().saveAndSnapshot(eventParticipantToSave.getPerson());
- final Event event = DatabaseHelper.getEventDao().queryUuid(eventUuid);
eventParticipantToSave.setEvent(event);
DatabaseHelper.getEventParticipantDao().saveAndSnapshot(eventParticipantToSave);
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/immunization/edit/ImmunizationNewActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/immunization/edit/ImmunizationNewActivity.java
index 6a83ddd6e4f..d022496404c 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/immunization/edit/ImmunizationNewActivity.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/immunization/edit/ImmunizationNewActivity.java
@@ -182,7 +182,7 @@ public void saveData() {
if (caseUuid != null || contactUuid != null || eventParticipantUuid != null) {
pickOrCreateImmunizationAndSave(immunization, fragment);
} else {
- SelectOrCreatePersonDialog.selectOrCreatePerson(immunization.getPerson(), person -> {
+ SelectOrCreatePersonDialog.selectOrCreatePerson(immunization.getPerson(), immunization, person -> {
if (person != null) {
immunization.setPerson(person);
pickOrCreateImmunizationAndSave(immunization, fragment);
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/edit/PathogenTestEditFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/edit/PathogenTestEditFragment.java
index 2b53851e327..71e97a7f938 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/edit/PathogenTestEditFragment.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/edit/PathogenTestEditFragment.java
@@ -20,11 +20,13 @@
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Collectors;
import android.view.View;
import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.api.customizableenum.CustomizableEnum;
import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.environment.environmentsample.Pathogen;
@@ -101,14 +103,21 @@ record = getActivityRootData();
diseaseList.add(DataUtils.toItem(record.getTestedDisease()));
}
- List diseaseVariants =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.DISEASE_VARIANT, record.getTestedDisease());
+ List diseaseVariants = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.DISEASE_VARIANT,
+ Optional.ofNullable(record.getTestedDiseaseVariant()).map(CustomizableEnum::getValue).orElse(null),
+ record.getTestedDisease());
diseaseVariantList = DataUtils.toItems(diseaseVariants);
if (record.getTestedDiseaseVariant() != null && !diseaseVariants.contains(record.getTestedDiseaseVariant())) {
diseaseVariantList.add(DataUtils.toItem(record.getTestedDiseaseVariant()));
}
- List pathogens = DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.PATHOGEN, null);
+ List pathogens = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.PATHOGEN,
+ Optional.ofNullable(record.getTestedPathogen()).map(CustomizableEnum::getValue).orElse(null),
+ null);
pathogenList = DataUtils.toItems(pathogens);
if (record.getTestedPathogen() != null && !diseaseVariants.contains(record.getTestedPathogen())) {
pathogenList.add(DataUtils.toItem(record.getTestedPathogen()));
@@ -239,8 +248,11 @@ public void onChange(ControlPropertyField field) {
private void updateDiseaseVariantsField(FragmentPathogenTestEditLayoutBinding contentBinding) {
DiseaseVariant selectedVariant = (DiseaseVariant) contentBinding.pathogenTestTestedDiseaseVariant.getValue();
- List diseaseVariants =
- DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.DISEASE_VARIANT, record.getTestedDisease());
+ List diseaseVariants = DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.DISEASE_VARIANT,
+ Optional.ofNullable(record.getTestedDiseaseVariant()).map(CustomizableEnum::getValue).orElse(null),
+ record.getTestedDisease());
diseaseVariantList.clear();
diseaseVariantList.addAll(DataUtils.toItems(diseaseVariants));
contentBinding.pathogenTestTestedDiseaseVariant.setSpinnerData(diseaseVariantList);
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/read/PathogenTestReadActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/read/PathogenTestReadActivity.java
index a62a71abd0d..2d81523f9bb 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/read/PathogenTestReadActivity.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/pathogentest/read/PathogenTestReadActivity.java
@@ -56,7 +56,10 @@ protected BaseReadFragment buildReadFragment(PageMenuItem menuItem, PathogenTest
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getEditMenu().setTitle(R.string.action_edit_pathogen_test);
- getEditMenu().setVisible(ConfigProvider.hasUserRight(UserRight.PATHOGEN_TEST_EDIT));
+ getEditMenu().setVisible(
+ getStoredRootEntity().getSample() != null
+ ? ConfigProvider.hasUserRight(UserRight.PATHOGEN_TEST_EDIT)
+ : ConfigProvider.hasUserRight(UserRight.ENVIRONMENT_PATHOGEN_TEST_EDIT));
return true;
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/person/SelectOrCreatePersonDialog.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/person/SelectOrCreatePersonDialog.java
index 87caa38f439..361b26142c0 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/person/SelectOrCreatePersonDialog.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/person/SelectOrCreatePersonDialog.java
@@ -21,20 +21,22 @@
import android.content.Context;
import android.view.View;
-
import androidx.databinding.Observable;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.databinding.ViewDataBinding;
import androidx.databinding.library.baseAdapters.BR;
import androidx.fragment.app.FragmentActivity;
-
+import de.symeda.sormas.api.i18n.I18nProperties;
+import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.person.PersonHelper;
import de.symeda.sormas.api.person.PersonNameDto;
import de.symeda.sormas.api.person.PersonSimilarityCriteria;
import de.symeda.sormas.app.BaseActivity;
import de.symeda.sormas.app.R;
import de.symeda.sormas.app.backend.common.DatabaseHelper;
+import de.symeda.sormas.app.backend.common.PseudonymizableAdo;
+import de.symeda.sormas.app.backend.event.Event;
import de.symeda.sormas.app.backend.person.Person;
import de.symeda.sormas.app.component.controls.ControlButton;
import de.symeda.sormas.app.component.dialog.AbstractDialog;
@@ -61,9 +63,11 @@ public class SelectOrCreatePersonDialog extends AbstractDialog {
private Callback createCallback;
private final ObservableField selectedPerson = new ObservableField<>();
+ private View selectedPersonItemView;
+
// Static methods
- public static void selectOrCreatePerson(final Person person, final Consumer resultConsumer) {
+ public static void selectOrCreatePerson(final Person person, PseudonymizableAdo ado, final Consumer resultConsumer) {
final SelectOrCreatePersonDialog personDialog = new SelectOrCreatePersonDialog(BaseActivity.getActiveActivity(), person);
if (!personDialog.hasSimilarPersons()) {
@@ -73,7 +77,20 @@ public static void selectOrCreatePerson(final Person person, final Consumer {
if (personDialog.getSelectedPerson() != null) {
- resultConsumer.accept(personDialog.getSelectedPerson());
+ if (ado instanceof Event
+ && DatabaseHelper.getEventParticipantDao().eventParticipantAlreadyExists((Event) ado, personDialog.getSelectedPerson())) {
+ personDialog.suppressNextDismiss();
+ personDialog.setSelectedPerson(null);
+ personDialog.setSelectedPersonItemView(null);
+
+ NotificationHelper.showDialogNotification(
+ personDialog,
+ NotificationType.WARNING,
+ I18nProperties.getString(Strings.messageAlreadyEventParticipant));
+
+ } else {
+ resultConsumer.accept(personDialog.getSelectedPerson());
+ }
} else {
personDialog.suppressNextDismiss();
NotificationHelper.showDialogNotification(personDialog, NotificationType.ERROR, R.string.info_select_create_person);
@@ -150,8 +167,10 @@ private void setUpControlListeners() {
if (itemViewId == vId && v.isSelected()) {
itemView.setSelected(false);
+ setSelectedPerson(personItem);
} else if (itemViewId == vId && !v.isSelected()) {
itemView.setSelected(true);
+ setSelectedPersonItemView(itemView);
setSelectedPerson(personItem);
} else {
itemView.setSelected(false);
@@ -193,6 +212,10 @@ public void onPropertyChanged(Observable observable, int i) {
if (getSelectedPerson() == null) {
btnCreate.setVisibility(View.VISIBLE);
btnSelect.setVisibility(View.GONE);
+
+ if (selectedPersonItemView != null) {
+ selectedPersonItemView.setSelected(false);
+ }
} else {
btnCreate.setVisibility(View.GONE);
btnSelect.setVisibility(View.VISIBLE);
@@ -229,4 +252,8 @@ private Person getSelectedPerson() {
private void setSelectedPerson(Person selectedPerson) {
this.selectedPerson.set(selectedPerson);
}
+
+ public void setSelectedPersonItemView(View selectedPersonItemView) {
+ this.selectedPersonItemView = selectedPersonItemView;
+ }
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/person/edit/PersonEditFragment.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/person/edit/PersonEditFragment.java
index 281dd1a408b..263e3de8287 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/person/edit/PersonEditFragment.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/person/edit/PersonEditFragment.java
@@ -23,6 +23,7 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
+import java.util.Optional;
import android.view.View;
import android.view.ViewGroup;
@@ -32,6 +33,7 @@
import de.symeda.sormas.api.CountryHelper;
import de.symeda.sormas.api.Disease;
+import de.symeda.sormas.api.customizableenum.CustomizableEnum;
import de.symeda.sormas.api.customizableenum.CustomizableEnumType;
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Strings;
@@ -157,8 +159,12 @@ private void setUpLayoutBinding(final BaseEditFragment fragment, final Person re
List- initialPlaceOfBirthFacilities =
InfrastructureDaoHelper.loadFacilities(record.getPlaceOfBirthDistrict(), record.getPlaceOfBirthCommunity(), null);
- List
- occupationTypeList =
- DataUtils.toItems(DatabaseHelper.getCustomizableEnumValueDao().getEnumValues(CustomizableEnumType.OCCUPATION_TYPE, null));
+ List
- occupationTypeList = DataUtils.toItems(
+ DatabaseHelper.getCustomizableEnumValueDao()
+ .getEnumValues(
+ CustomizableEnumType.OCCUPATION_TYPE,
+ Optional.ofNullable(record.getOccupationType()).map(CustomizableEnum::getValue).orElse(null),
+ null));
List
- placeOfBirthFacilityTypeList = DataUtils.toItems(FacilityType.getPlaceOfBirthTypes(), true);
List
- countryList = InfrastructureDaoHelper.loadCountries();
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/util/BooleanJurisdictionValidator.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/util/BooleanJurisdictionValidator.java
index 5bdbee6f159..2a47be84acf 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/util/BooleanJurisdictionValidator.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/util/BooleanJurisdictionValidator.java
@@ -21,13 +21,15 @@
import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.utils.jurisdiction.JurisdictionValidator;
+import de.symeda.sormas.app.backend.config.ConfigProvider;
+import de.symeda.sormas.app.backend.user.UserDtoHelper;
public abstract class BooleanJurisdictionValidator extends JurisdictionValidator {
private final UserJurisdiction userJurisdiction;
public BooleanJurisdictionValidator(List associatedJurisdictionValidators, UserJurisdiction userJurisdiction) {
- super(associatedJurisdictionValidators);
+ super(associatedJurisdictionValidators, UserDtoHelper.isRestrictedToAssignEntities(ConfigProvider.getUser()));
this.userJurisdiction = userJurisdiction;
}
diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/util/JurisdictionHelper.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/util/JurisdictionHelper.java
index 51bf97b6bc5..df50cbc7573 100644
--- a/sormas-app/app/src/main/java/de/symeda/sormas/app/util/JurisdictionHelper.java
+++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/util/JurisdictionHelper.java
@@ -21,6 +21,8 @@
import de.symeda.sormas.app.backend.immunization.Immunization;
import de.symeda.sormas.app.backend.immunization.ImmunizationJurisdictionDto;
import de.symeda.sormas.app.backend.location.Location;
+import de.symeda.sormas.app.backend.person.Person;
+import de.symeda.sormas.app.backend.person.PersonJurisdictionDto;
import de.symeda.sormas.app.backend.region.Community;
import de.symeda.sormas.app.backend.region.District;
import de.symeda.sormas.app.backend.region.Region;
@@ -93,6 +95,9 @@ public static CaseJurisdictionDto createCaseJurisdictionDto(Case caze) {
dto.setSampleLabUuids(
samples.stream().filter(sample -> sample.getLab() != null).map(sample -> sample.getLab().getUuid()).collect(Collectors.toList()));
}
+ if (caze.getSurveillanceOfficer() != null) {
+ dto.setSurveillanceOfficerUuid(caze.getSurveillanceOfficer().getUuid());
+ }
return dto;
}
@@ -118,6 +123,9 @@ public static ContactJurisdictionDto createContactJurisdictionDto(Contact contac
dto.setCaseJurisdiction(JurisdictionHelper.createCaseJurisdictionDto(caseOfContact));
}
+ if (contact.getContactOfficer() != null) {
+ dto.setContactOfficerUuid(contact.getContactOfficer().getUuid());
+ }
return dto;
}
@@ -139,9 +147,43 @@ public static ImmunizationJurisdictionDto createImmunizationJurisdictionDto(Immu
immunization.getHealthFacility());
immunizationJurisdictionDto.setResponsibleJurisdiction(responsibleJurisdiction);
+ Person immunizationPerson = immunization.getPerson();
+ immunizationJurisdictionDto.setPersonJurisdiction(createPersonJurisdictionDto(immunizationPerson));
+
return immunizationJurisdictionDto;
}
+ public static PersonJurisdictionDto createPersonJurisdictionDto(Person person) {
+ if (person == null) {
+ return null;
+ }
+
+ PersonJurisdictionDto personJurisdiction = new PersonJurisdictionDto();
+
+ personJurisdiction.setCaseJurisdictions(
+ DatabaseHelper.getCaseDao()
+ .getByPerson(person)
+ .stream()
+ .map(surveillanceOfficer -> new CaseJurisdictionDto().setSurveillanceOfficerUuid(surveillanceOfficer.getUuid()))
+ .collect(Collectors.toList()));
+
+ personJurisdiction.setContactJurisdictions(
+ DatabaseHelper.getContactDao()
+ .getByPerson(person)
+ .stream()
+ .map(contactOfficer -> new ContactJurisdictionDto().setContactOfficerUuid(contactOfficer.getUuid()))
+ .collect(Collectors.toList()));
+
+ personJurisdiction.setEventJurisdictions(
+ DatabaseHelper.getEventDao()
+ .getByEventParticipantPerson(person)
+ .stream()
+ .map(responsibleUser -> new EventJurisdictionDto().setResponsibleUserUuid(responsibleUser.getUuid()))
+ .collect(Collectors.toList()));
+
+ return personJurisdiction;
+ }
+
public static EventJurisdictionDto createEventJurisdictionDto(Event event) {
if (event == null) {
return null;
@@ -199,6 +241,10 @@ public static EventParticipantJurisdictionDto createEventParticipantJurisdiction
jurisdiction.setEventJurisdictionDto(JurisdictionHelper.createEventJurisdictionDto(event));
}
+ if (event.getResponsibleUser() != null) {
+ jurisdiction.setEventResponsibleUserUuid(event.getResponsibleUser().getUuid());
+ }
+
return jurisdiction;
}
@@ -261,6 +307,10 @@ public static EnvironmentSampleJurisdictionDto createEnvironmentSampleJurisdicti
}
}
+ if (sample.getEnvironment().getResponsibleUser() != null) {
+ environmentSampleJurisdiction.setEnvironmentResponsibleUser(sample.getEnvironment().getResponsibleUser().getUuid());
+ }
+
return environmentSampleJurisdiction;
}
diff --git a/sormas-app/pom.xml b/sormas-app/pom.xml
index fed197cc482..b32c643205b 100644
--- a/sormas-app/pom.xml
+++ b/sormas-app/pom.xml
@@ -3,7 +3,7 @@
sormas-base
de.symeda.sormas
- 1.93.0
+ 1.94.0
../sormas-base
4.0.0
diff --git a/sormas-backend/pom.xml b/sormas-backend/pom.xml
index c179f7898b4..566bb487cfa 100644
--- a/sormas-backend/pom.xml
+++ b/sormas-backend/pom.xml
@@ -3,7 +3,7 @@
sormas-base
de.symeda.sormas
- 1.93.0
+ 1.94.0
../sormas-base
4.0.0
@@ -213,11 +213,11 @@
slf4j-api
-
- org.apache.pdfbox
- pdfbox
-
-
+
+ org.apache.pdfbox
+ pdfbox
+ 3.0.0
+
diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionService.java
index 8cc84e7bb73..12698b51144 100644
--- a/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionService.java
+++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionService.java
@@ -296,7 +296,7 @@ public List getEventActionIndexList(EventCriteria criteria,
List actions = new ArrayList<>();
IterableHelper.executeBatched(indexListIds, ModelConstants.PARAMETER_LIMIT, batchedIds -> {
final CriteriaBuilder cb = em.getCriteriaBuilder();
- final CriteriaQuery